/gog-followups
Track follow-ups from sent emails, detect stale threads, and generate reminder drafts. Maintains local store of pending follow-ups with nudge dates. Identifies emails awaiting responses and suggests gentle reminder messages. Use when user wants to track responses, follow up on
$ npx -y skills add evolution-foundation/evo-nexus --skill gog-followups --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-followups
Context preview
The summary Claude sees to decide when to auto-load this skill.
Track follow-ups from sent emails, detect stale threads, and generate reminder drafts. Maintains local store of pending follow-ups with nudge dates. Identifies emails awaiting responses and suggests gentle reminder messages. Use when user wants to track responses, follow up on
SKILL.md
gog-followups.SKILL.mdname: gog-followups
description: Track follow-ups from sent emails, detect stale threads, and generate reminder drafts. Maintains local store of pending follow-ups with nudge dates. Identifies emails awaiting responses and suggests gentle reminder messages. Use when user wants to track responses, follow up on sent emails, or review what's waiting for replies. Requires confirmation before updating follow-up store.
compatibility: Requires gog CLI tool with email access
metadata:
author: gog-skills
version: "1.0"
allowed-tools: Bash(gog:*) Read Write
Follow-up & Nudge Tracking
Never lose track of emails awaiting responses. Track follow-ups, detect stale threads, and generate timely reminders.
When to Use
Use this skill when:
- User wants to "track follow-up" for a sent email
- User asks "what emails am I waiting on"
- User mentions "check pending follow-ups"
- User wants to "send a reminder" or "nudge [person]"
- User says "review stale threads"
Follow-up Store
Follow-ups are tracked in a local JSON file:
~/.gog-assistant/followups.json
**Structure**:
[
{
"id": "followup_001",
"email_id": "msg_abc123",
"thread_id": "thread_xyz",
"person": "client@acme.com",
"topic": "Q2 pricing proposal",
"context": "Sent proposal on Jan 20, they said they'd review by end of week",
"last_touch": "2026-01-20T16:00:00Z",
"next_nudge_date": "2026-01-30",
"nudge_count": 0,
"status": "pending",
"priority": "high",
"created_at": "2026-01-20T16:05:00Z"
}
]**Dynamic Context** (if file exists):
!`cat ~/.gog-assistant/followups.json 2>/dev/null || echo "[]"`
Workflow
Adding Follow-up Tracking
When user says "track follow-up for email [id]" or "remind me to follow up with [person]":
1. **Fetch email if ID provided**:
gog gmail get <email_id> --json
2. **Extract follow-up details**:
- Person: Primary recipient (or user specifies)
- Topic: Email subject
- Last touch: Email send date
- Context: Key points from email
3. **Ask for follow-up parameters**:
Let me set up follow-up tracking. A few questions:
1. **Who are you waiting to hear from?** [Extracted: client@acme.com]
2. **What's this about?** [Extracted: Q2 pricing proposal]
3. **When should I remind you?**
- In 3 days (standard)
- In 1 week
- Custom date
4. **Priority**: High, Medium, or Low?
5. **Any context?** Brief note about what you're waiting for.4. **Present proposed follow-up**:
## Proposed Follow-up
**Person**: client@acme.com (John Doe)
**Topic**: Q2 pricing proposal
**Context**: Sent detailed proposal on Jan 20, awaiting their review and feedback
**Last contact**: January 20, 2026
**Next nudge**: January 30, 2026 (10 days from now)
**Priority**: High
**Email**: msg_abc123
Does this look correct?
5. **Request confirmation**: "Ready to add this follow-up?"
6. **Add to store** when user confirms:
# Read existing store
STORE=~/.gog-assistant/followups.json
if [ ! -f "$STORE" ]; then
echo "[]" > "$STORE"
chmod 600 "$STORE"
fi
# Generate new follow-up entry
NEW_ENTRY=$(jq -n \
--arg id "followup_$(date +%s)" \
--arg email_id "msg_abc123" \
--arg person "client@acme.com" \
--arg topic "Q2 pricing proposal" \
--arg context "Sent proposal..." \
--arg last_touch "2026-01-20T16:00:00Z" \
--arg nudge_date "2026-01-30" \
--arg status "pending" \
--arg priority "high" \
--arg created "2026-01-20T16:05:00Z" \
'{id:$id, email_id:$email_id, person:$person, topic:$topic, context:$context, last_touch:$last_touch, next_nudge_date:$nudge_date, nudge_count:0, status:$status, priority:$priority, created_at:$created}')
# Append to store
jq ". + [$NEW_ENTRY]" "$STORE" > "$STORE.tmp" && mv "$STORE.tmp" "$STORE"7. **Confirm addition**:
✅ **Follow-up Added**
Tracking ID: followup_001
Person: client@acme.com
Next reminder: January 30, 2026
I'll remind you to follow up in 10 days.
View all follow-ups: "Show pending follow-ups"
Reviewing Follow-ups
Show All Pending
When user says "show pending follow-ups" or "what am I waiting on":
1. **Read follow-up store**:
jq '.[] | select(.status == "pending")' ~/.gog-assistant/followups.json
2. **Present formatted list**:
# Pending Follow-ups ([N] total)
## High Priority
1. **Q2 pricing proposal** → client@acme.com
- Last contact: Jan 20 (8 days ago)
- Next nudge: Jan 30 (in 2 days)
- Context: Awaiting review and feedback on proposal
- Email: msg_abc123
2. **Contract review** → legal@vendor.com
- Last contact: Jan 18 (10 days ago)
- Next nudge: **OVERDUE** (was Jan 25)
- Context: Sent redlined contract, need their signoff
- Email: msg_def456
## Medium Priority
3. **Feature request feedback** → product@company.com
- Last contact: Jan 22 (6 days ago)
- Next nudge: Feb 1 (in 4 days)
- Context: Asked about roadmap for feature X
- Email: msg_ghi789
---
**Summary**:
- Total pending: 3
- Overdue: 1 (legal@vendor.com)
- Due this week: 1 (client@acme.com)
**Suggested actions**:
- Send nudge to legal@vendor.com (overdue)
- Prepare nudge draft for client@acme.com (due soon)Show Follow-ups Due This Week
When user says "review follow-ups due this week":
1. **Filter by next_nudge_date**:
TODAY=$(date +%Y-%m-%d)
WEEK_FROM_NOW=$(date -v+7d +%Y-%m-%d)
jq --arg today "$TODAY" --arg week "$WEEK_FROM_NOW" \
'.[] | select(.status == "pending" and .next_nudge_date >= $today and .next_nudge_date <= $week)' \
~/.gog-assistant/followups.json2. **Present list** (similar format as above)
Generating Nudge Drafts
When user says "g
Read more
name: gog-followups description: Track follow-ups from sent emails, detect stale threads, and generate reminder drafts. Maintains local store of pending follow-ups with nudge dates. Identifies emails awaiting responses and suggests gentle reminder messages. Use when user wants to track responses, follow up on sent emails, or review what's waiting for replies. Requires confirmation before updating follow-up store. compatibility: Requires gog CLI tool with email access metadata: author: gog-skills version: "1.0" allowed-tools: Bash(gog:*) Read Write
Follow-up & Nudge Tracking
Never lose track of emails awaiting responses. Track follow-ups, detect stale threads, and generate timely reminders.
When to Use
Use this skill when:
- User wants to "track follow-up" for a sent email
- User asks "what emails am I waiting on"
- User mentions "check pending follow-ups"
- User wants to "send a reminder" or "nudge [person]"
- User says "review stale threads"
Follow-up Store
Follow-ups are tracked in a local JSON file:
~/.gog-assistant/followups.json
**Structure**:
[
{
"id": "followup_001",
"email_id": "msg_abc123",
"thread_id": "thread_xyz",
"person": "client@acme.com",
"topic": "Q2 pricing proposal",
"context": "Sent proposal on Jan 20, they said they'd review by end of week",
"last_touch": "2026-01-20T16:00:00Z",
"next_nudge_date": "2026-01-30",
"nudge_count": 0,
"status": "pending",
"priority": "high",
"created_at": "2026-01-20T16:05:00Z"
}
]**Dynamic Context** (if file exists):
!`cat ~/.gog-assistant/followups.json 2>/dev/null || echo "[]"`
Workflow
Adding Follow-up Tracking
When user says "track follow-up for email [id]" or "remind me to follow up with [person]":
1. **Fetch email if ID provided**:
gog gmail get <email_id> --json
2. **Extract follow-up details**:
- Person: Primary recipient (or user specifies)
- Topic: Email subject
- Last touch: Email send date
- Context: Key points from email
3. **Ask for follow-up parameters**:
Let me set up follow-up tracking. A few questions:
1. **Who are you waiting to hear from?** [Extracted: client@acme.com]
2. **What's this about?** [Extracted: Q2 pricing proposal]
3. **When should I remind you?**
- In 3 days (standard)
- In 1 week
- Custom date
4. **Priority**: High, Medium, or Low?
5. **Any context?** Brief note about what you're waiting for.4. **Present proposed follow-up**:
## Proposed Follow-up **Person**: client@acme.com (John Doe) **Topic**: Q2 pricing proposal **Context**: Sent detailed proposal on Jan 20, awaiting their review and feedback **Last contact**: January 20, 2026 **Next nudge**: January 30, 2026 (10 days from now) **Priority**: High **Email**: msg_abc123 Does this look correct?
5. **Request confirmation**: "Ready to add this follow-up?"
6. **Add to store** when user confirms:
# Read existing store
STORE=~/.gog-assistant/followups.json
if [ ! -f "$STORE" ]; then
echo "[]" > "$STORE"
chmod 600 "$STORE"
fi
# Generate new follow-up entry
NEW_ENTRY=$(jq -n \
--arg id "followup_$(date +%s)" \
--arg email_id "msg_abc123" \
--arg person "client@acme.com" \
--arg topic "Q2 pricing proposal" \
--arg context "Sent proposal..." \
--arg last_touch "2026-01-20T16:00:00Z" \
--arg nudge_date "2026-01-30" \
--arg status "pending" \
--arg priority "high" \
--arg created "2026-01-20T16:05:00Z" \
'{id:$id, email_id:$email_id, person:$person, topic:$topic, context:$context, last_touch:$last_touch, next_nudge_date:$nudge_date, nudge_count:0, status:$status, priority:$priority, created_at:$created}')
# Append to store
jq ". + [$NEW_ENTRY]" "$STORE" > "$STORE.tmp" && mv "$STORE.tmp" "$STORE"7. **Confirm addition**:
✅ **Follow-up Added** Tracking ID: followup_001 Person: client@acme.com Next reminder: January 30, 2026 I'll remind you to follow up in 10 days. View all follow-ups: "Show pending follow-ups"
Reviewing Follow-ups
Show All Pending
When user says "show pending follow-ups" or "what am I waiting on":
1. **Read follow-up store**:
jq '.[] | select(.status == "pending")' ~/.gog-assistant/followups.json
2. **Present formatted list**:
# Pending Follow-ups ([N] total)
## High Priority
1. **Q2 pricing proposal** → client@acme.com
- Last contact: Jan 20 (8 days ago)
- Next nudge: Jan 30 (in 2 days)
- Context: Awaiting review and feedback on proposal
- Email: msg_abc123
2. **Contract review** → legal@vendor.com
- Last contact: Jan 18 (10 days ago)
- Next nudge: **OVERDUE** (was Jan 25)
- Context: Sent redlined contract, need their signoff
- Email: msg_def456
## Medium Priority
3. **Feature request feedback** → product@company.com
- Last contact: Jan 22 (6 days ago)
- Next nudge: Feb 1 (in 4 days)
- Context: Asked about roadmap for feature X
- Email: msg_ghi789
---
**Summary**:
- Total pending: 3
- Overdue: 1 (legal@vendor.com)
- Due this week: 1 (client@acme.com)
**Suggested actions**:
- Send nudge to legal@vendor.com (overdue)
- Prepare nudge draft for client@acme.com (due soon)Show Follow-ups Due This Week
When user says "review follow-ups due this week":
1. **Filter by next_nudge_date**:
TODAY=$(date +%Y-%m-%d)
WEEK_FROM_NOW=$(date -v+7d +%Y-%m-%d)
jq --arg today "$TODAY" --arg week "$WEEK_FROM_NOW" \
'.[] | select(.status == "pending" and .next_nudge_date >= $today and .next_nudge_date <= $week)' \
~/.gog-assistant/followups.json2. **Present list** (similar format as above)
Generating Nudge Drafts
When user says "g
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

