/gog-email-send
Send email messages with explicit user confirmation. Requires the exact confirmation string "YES, SEND" before executing send operations. Logs all sends to audit trail. Use ONLY when user explicitly confirms they want to send an email, never auto-invoke. This is a critical write
$ npx -y skills add evolution-foundation/evo-nexus --skill gog-email-send --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/gog-email-send
Context preview
The summary Claude sees to decide when to auto-load this skill.
Send email messages with explicit user confirmation. Requires the exact confirmation string "YES, SEND" before executing send operations. Logs all sends to audit trail. Use ONLY when user explicitly confirms they want to send an email, never auto-invoke. This is a critical write
SKILL.md
gog-email-send.SKILL.mdname: gog-email-send
description: Send email messages with explicit user confirmation. Requires the exact confirmation string "YES, SEND" before executing send operations. Logs all sends to audit trail. Use ONLY when user explicitly confirms they want to send an email, never auto-invoke. This is a critical write operation requiring human approval.
compatibility: Requires gog CLI tool with email send permissions
metadata:
author: gog-skills
version: "1.0"
disable-model-invocation: true
requires-explicit-confirmation: true
allowed-tools: Bash(gog:*) Read
Email Sending with Confirmation
**⚠️ CRITICAL: This skill sends emails. It MUST NOT be invoked without explicit user confirmation.**
Send emails only after receiving the exact confirmation string: **"YES, SEND"**
When to Use
Use this skill **ONLY** when:
- User has reviewed a draft and explicitly confirms they want to send it
- User provides the confirmation string "YES, SEND" in their message
- All draft content has been approved by the user
**NEVER** use this skill:
- Automatically after drafting an email
- Based on implied intent ("sounds good", "ok", "sure")
- Without showing the user exactly what will be sent
- Without receiving "YES, SEND" confirmation
Confirmation Requirements
The ONLY Acceptable Confirmation
User MUST type exactly: **"YES, SEND"**
**Acceptable variations** (all must include "YES, SEND"):
- "YES, SEND this email"
- "YES, SEND it"
- "YES, SEND the draft"
- "Confirmed. YES, SEND"
**NOT acceptable**:
- "Yes" / "OK" / "Sure" / "Go ahead" / "Send it"
- "Looks good, send it"
- "Please send"
- Any paraphrase that doesn't include the exact phrase "YES, SEND"
Workflow
Step 1: Verify Confirmation String
Before ANY sending operation, check:
Does the user's message contain the EXACT string "YES, SEND"?
- YES → Proceed to Step 2
- NO → STOP and request confirmation
If confirmation is missing, respond:
⚠️ **Confirmation Required**
To send this email, please confirm by typing exactly:
**YES, SEND**
I need this explicit confirmation to ensure you've reviewed the email and want it sent.
**Reminder**: This will send email to:
- [List recipients]
- Subject: [Subject line]
**STOP HERE.** Do not proceed until confirmation is received.
Step 2: Display Final Summary
Show the user exactly what will be sent:
📧 **Ready to Send**
**From**: [Your email address, if known]
**To**: [recipient1@example.com, recipient2@example.com]
**CC**: [cc recipients, if any]
**Subject**: [Subject line]
**Body**:
[First 200 characters of body...] [Body continues for N more characters...]
**Attachments**: [List attachments if any, or "None"]
---
Is this correct? If yes, I'll send it now.
Step 3: Execute Send
Determine send method:
**Option A: Send existing draft**
If user has a draft_id:
gog gmail drafts send <draft_id> --json
**Option B: Direct send**
If composing directly (less common):
# Save body to temp file
cat > /tmp/email_body_$$.txt << 'EOF'
Email body content
EOF
gog gmail send \
--to "recipient1@example.com,recipient2@example.com" \
--cc "cc@example.com" \
--subject "Subject line" \
--body /tmp/email_body_$$.txt \
--json
# Clean up temp file
rm /tmp/email_body_$$.txt
Step 4: Log to Audit Trail
Immediately after sending (success or failure), log the action:
# Source logging utility
source "$(dirname "$0")/../../_shared/scripts/log.sh"
# Log successful send
log_action "gog-email-send" "email-send" "success" "$MESSAGE_ID" \
"{\"to\":[\"recipient@example.com\"],\"subject\":\"$SUBJECT\",\"confirmation\":\"YES, SEND\"}"
# OR log failed send
log_action "gog-email-send" "email-send" "failure" "" \
"{\"to\":[\"recipient@example.com\"],\"subject\":\"$SUBJECT\",\"error\":\"$ERROR_MSG\"}"Audit log entry should include:
- Timestamp (automatic)
- Skill name: "gog-email-send"
- Action: "email-send"
- Status: "success" or "failure"
- Entity ID: message_id (if successful)
- Details: to addresses, subject, confirmation string
Step 5: Confirm Completion
**If successful:**
✅ **Email Sent Successfully**
Message ID: msg_abc123
Sent at: [timestamp]
Recipients: [list]
The email has been sent and logged to your audit trail.
Next steps:
- Track response with follow-up? (gog-followups skill)
- Send another email?
**If failed:**
❌ **Send Failed**
Error: [Error message from GOG]
The email was NOT sent. Common issues:
- Authentication expired (run: gog auth login)
- Invalid recipient email address
- Network connectivity issues
- Insufficient permissions
Would you like to:
- Retry sending?
- Save as draft for later?
- Edit the email?
Output Format (Strict)
Before Sending (Awaiting Confirmation)
⚠️ **Confirmation Required**
To send this email, please type: **YES, SEND**
**Email Summary**:
- To: [recipients]
- Subject: [subject]
- Body: [snippet...]
I'm waiting for your explicit confirmation before sending.
After Sending (Success)
✅ **Email Sent**
Message ID: [msg_id]
Recipients: [list]
Timestamp: [ISO8601]
Logged to: ~/.gog-assistant/audit.log
After Sending (Failure)
❌ **Send Failed**
Error: [error message]
The email was NOT sent. [Troubleshooting guidance]
Examples
Example 1: Send Draft (Correct Flow)
**User**: "I've reviewed the draft. YES, SEND"
**Assistant**:
[Confirmation string detected: "YES, SEND" ✓]
📧 **Ready to Send**
**To**: client@acme.com
**Subject**: Re: Q2 Proposal
**Body**:
Hi Sarah,
Thank you for your patience. I've reviewed the Q2 proposal and have a few questions...
[287 more characters]
Sending now...
[Executes: gog gmail drafts send draft_abc123 --json] [Logs to audit trail]
✅ **Email Sent Successfully**
Message ID: msg_xyz789 Sent at: 2026-01-28T15:30:00Z Recipients: client@acme.com
The email has been sent
Read more
name: gog-email-send description: Send email messages with explicit user confirmation. Requires the exact confirmation string "YES, SEND" before executing send operations. Logs all sends to audit trail. Use ONLY when user explicitly confirms they want to send an email, never auto-invoke. This is a critical write operation requiring human approval. compatibility: Requires gog CLI tool with email send permissions metadata: author: gog-skills version: "1.0" disable-model-invocation: true requires-explicit-confirmation: true allowed-tools: Bash(gog:*) Read
Email Sending with Confirmation
**⚠️ CRITICAL: This skill sends emails. It MUST NOT be invoked without explicit user confirmation.**
Send emails only after receiving the exact confirmation string: **"YES, SEND"**
When to Use
Use this skill **ONLY** when:
- User has reviewed a draft and explicitly confirms they want to send it
- User provides the confirmation string "YES, SEND" in their message
- All draft content has been approved by the user
**NEVER** use this skill:
- Automatically after drafting an email
- Based on implied intent ("sounds good", "ok", "sure")
- Without showing the user exactly what will be sent
- Without receiving "YES, SEND" confirmation
Confirmation Requirements
The ONLY Acceptable Confirmation
User MUST type exactly: **"YES, SEND"**
**Acceptable variations** (all must include "YES, SEND"):
- "YES, SEND this email"
- "YES, SEND it"
- "YES, SEND the draft"
- "Confirmed. YES, SEND"
**NOT acceptable**:
- "Yes" / "OK" / "Sure" / "Go ahead" / "Send it"
- "Looks good, send it"
- "Please send"
- Any paraphrase that doesn't include the exact phrase "YES, SEND"
Workflow
Step 1: Verify Confirmation String
Before ANY sending operation, check:
Does the user's message contain the EXACT string "YES, SEND"? - YES → Proceed to Step 2 - NO → STOP and request confirmation
If confirmation is missing, respond:
⚠️ **Confirmation Required** To send this email, please confirm by typing exactly: **YES, SEND** I need this explicit confirmation to ensure you've reviewed the email and want it sent. **Reminder**: This will send email to: - [List recipients] - Subject: [Subject line]
**STOP HERE.** Do not proceed until confirmation is received.
Step 2: Display Final Summary
Show the user exactly what will be sent:
📧 **Ready to Send** **From**: [Your email address, if known] **To**: [recipient1@example.com, recipient2@example.com] **CC**: [cc recipients, if any] **Subject**: [Subject line] **Body**:
[First 200 characters of body...] [Body continues for N more characters...]
**Attachments**: [List attachments if any, or "None"] --- Is this correct? If yes, I'll send it now.
Step 3: Execute Send
Determine send method:
**Option A: Send existing draft**
If user has a draft_id:
gog gmail drafts send <draft_id> --json
**Option B: Direct send**
If composing directly (less common):
# Save body to temp file cat > /tmp/email_body_$$.txt << 'EOF' Email body content EOF gog gmail send \ --to "recipient1@example.com,recipient2@example.com" \ --cc "cc@example.com" \ --subject "Subject line" \ --body /tmp/email_body_$$.txt \ --json # Clean up temp file rm /tmp/email_body_$$.txt
Step 4: Log to Audit Trail
Immediately after sending (success or failure), log the action:
# Source logging utility
source "$(dirname "$0")/../../_shared/scripts/log.sh"
# Log successful send
log_action "gog-email-send" "email-send" "success" "$MESSAGE_ID" \
"{\"to\":[\"recipient@example.com\"],\"subject\":\"$SUBJECT\",\"confirmation\":\"YES, SEND\"}"
# OR log failed send
log_action "gog-email-send" "email-send" "failure" "" \
"{\"to\":[\"recipient@example.com\"],\"subject\":\"$SUBJECT\",\"error\":\"$ERROR_MSG\"}"Audit log entry should include:
- Timestamp (automatic)
- Skill name: "gog-email-send"
- Action: "email-send"
- Status: "success" or "failure"
- Entity ID: message_id (if successful)
- Details: to addresses, subject, confirmation string
Step 5: Confirm Completion
**If successful:**
✅ **Email Sent Successfully** Message ID: msg_abc123 Sent at: [timestamp] Recipients: [list] The email has been sent and logged to your audit trail. Next steps: - Track response with follow-up? (gog-followups skill) - Send another email?
**If failed:**
❌ **Send Failed** Error: [Error message from GOG] The email was NOT sent. Common issues: - Authentication expired (run: gog auth login) - Invalid recipient email address - Network connectivity issues - Insufficient permissions Would you like to: - Retry sending? - Save as draft for later? - Edit the email?
Output Format (Strict)
Before Sending (Awaiting Confirmation)
⚠️ **Confirmation Required** To send this email, please type: **YES, SEND** **Email Summary**: - To: [recipients] - Subject: [subject] - Body: [snippet...] I'm waiting for your explicit confirmation before sending.
After Sending (Success)
✅ **Email Sent** Message ID: [msg_id] Recipients: [list] Timestamp: [ISO8601] Logged to: ~/.gog-assistant/audit.log
After Sending (Failure)
❌ **Send Failed** Error: [error message] The email was NOT sent. [Troubleshooting guidance]
Examples
Example 1: Send Draft (Correct Flow)
**User**: "I've reviewed the draft. YES, SEND"
**Assistant**:
[Confirmation string detected: "YES, SEND" ✓] 📧 **Ready to Send** **To**: client@acme.com **Subject**: Re: Q2 Proposal **Body**:
Hi Sarah,
Thank you for your patience. I've reviewed the Q2 proposal and have a few questions...
[287 more characters]
Sending now...
[Executes: gog gmail drafts send draft_abc123 --json] [Logs to audit trail]
✅ **Email Sent Successfully**
Message ID: msg_xyz789 Sent at: 2026-01-28T15:30:00Z Recipients: client@acme.com
The email has been sent
Other skills on evo-nexus.
- /ai-image-creator
Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, proxied through Cloudflare AI Gateway BYOK). Also analyze/describe existing images using multimodal AI vision. Use when user asks to "generate an image",
Open skill - /create-agent
Create a new custom agent for the workspace. Guides the user through defining agent name, domain, personality, skills, model, and memory folder. Use when the user says 'create an agent', 'new agent', 'add an agent', 'I need a custom agent', or wants to create a specialized agent
Open skill - /create-command
Create a new slash command for Claude Code. Guides the user through defining the command name, what it does, and generates the markdown file in .claude/commands/. Use when the user says 'create a command', 'new command', 'add a slash command', 'I want a shortcut for', or wants
Open skill - /create-goal
Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST
Open skill - /create-heartbeat
Create a new heartbeat (proactive agent scheduled with a decision prompt) for EvoNexus. Guides the user through picking an agent, setting interval, wake triggers, and the decision prompt that governs when the agent acts. Writes to config/heartbeats.yaml with pydantic validation.
Open skill - /create-integration
Create a new custom integration (API/service wrapper) for the workspace. Guides the user through defining the integration's slug, display name, description, category, and required env keys. Writes .claude/skills/custom-int-{slug}/SKILL.md via POST /api/integrations/custom. Use
Open skill

