From GTM Engine
Daily morning briefing that pulls calendar, tasks, pipeline, and outreach data into one view.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gtm-engine:good-morningThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Daily morning briefing that pulls calendar, tasks, pipeline, and outreach data into one view.
Daily morning briefing that pulls calendar, tasks, pipeline, and outreach data into one view.
/good-morning — Full morning briefing/good-morning --quick — Calendar + tasks only/good-morning --team — Only team outreach auditconfig/config.yaml exists (run /setup first)Parse the argument (if any) from $ARGUMENTS to determine mode:
$ARGUMENTS contains --quick → quick mode$ARGUMENTS contains --team → team-outreach-only modeFirst: Read config/config.yaml (relative to project root) to load all configuration. Extract:
config.linear.action_team — the team name for action tasks (e.g., "GTM")config.linear.pipeline_team — the team name for deal tracking (e.g., "Sales")config.linear.default_label — label applied to engine-created tasksconfig.linear.pipeline_stages — list of pipeline stage namesconfig.team — list of team members with roles and Linear user IDsconfig.ritual.labels — label names for daily-3, daily-2, parking-lotconfig.ritual.meaningful_count — number of meaningful tasks (default 3)config.ritual.light_count — number of light tasks (default 2)config.integrations.outreach_sheet — outreach spreadsheet settingsconfig.integrations.google_workspace.enabled — whether calendar is availableIdentify the default assignee = the team member with is_default_assignee: true.
Resolve Linear team IDs (required): Some Linear MCP servers (e.g., linear-mcp-server) hang indefinitely when issue searches are made without a teamId. Before any issue query:
mcp__linear__list_teams onceaction_team and pipeline_team names to their UUIDs{action_team_id} and {pipeline_team_id} for the rest of the sessionEvery Linear issue query below MUST include teamId (the UUID).
Start the briefing with a motivating quote. Pick a quote that is energizing, action-oriented, and relevant to building something from scratch — entrepreneurship, sales, persistence, courage, or doing hard things. Rotate quotes so the user doesn't see the same one twice in a row. Draw from founders, athletes, philosophers, writers — anyone whose words light a fire.
Format:
> "{quote}"
> — {attribution}
mcp__google-workspace__time_getCurrentDate to get today's date
config.integrations.google_workspace.enabled is false, use the current date from context and skip the calendar sectionmcp__google-workspace__calendar_listEvents with calendarId: "primary", timeMin = start of today (00:00:00 in local TZ), timeMax = end of today (23:59:59 in local TZ)| Time | Event |Using the action team name from config:
mcp__linear__list_issues with assignee: "me", teamId: "{action_team_id}", state: "In Progress" — show all in-progress tasksmcp__linear__list_issues with assignee: "me", teamId: "{action_team_id}", state: "Todo" — show all todo tasksmcp__linear__list_issues with assignee: "me", teamId: "{action_team_id}", state: "Backlog" — check for any with today's due date| Task | Priority | Status | Due |Read the ritual label names from config.ritual.labels (meaningful label, light label, parking lot label).
Read the meaningful count (default 3) and light count (default 2) from config.ritual.
Show the tasks planned last night for today:
mcp__linear__list_issues with teamId: "{action_team_id}", assignee: "me", label: "{meaningful_label}" — filter to tasks with due date = todaymcp__linear__list_issues with teamId: "{action_team_id}", assignee: "me", label: "{light_label}" — filter to tasks with due date = today### Today's {meaningful_count}+{light_count}
**Meaningful:**
1. [ ] {task}
2. [ ] {task}
3. [ ] {task}
**Light:**
1. [ ] {task}
2. [ ] {task}
meaningful_count meaningful tasks are tagged for today, flag: "Only X meaningful tasks planned for today. Want to add more?"Monday bonus: On Mondays, also surface ALL parking lot items:
mcp__linear__list_issues with teamId: "{action_team_id}", label: "{parking_lot_label}", state: "Backlog"Streak display:
memory/daily_streak.md (relative to project root)Nudge system: Check if any template files in my-context/ are empty or do not exist:
my-context/icp-definition.md → "You haven't filled your ICP yet. Run /setup --icp to do it — takes 5 min."my-context/persona-pain-map.md → "Your persona map is empty. Run /setup --personas."my-context/company-overview.md → "Company overview isn't filled in. Run /setup --company."my-context/signal-playbook.md → "No signal playbook set up. Run /setup --signals."Only show ONE nudge per session (pick the first empty one). Stop nudging once all are filled.
If --quick mode, STOP HERE. Output calendar + tasks + 3+2 sections and finish.
Using the pipeline team name and pipeline stages from config:
mcp__linear__list_issues with teamId: "{pipeline_team_id}", state: "POC" — active POCs (only if "POC" is in pipeline_stages)mcp__linear__list_issues with teamId: "{pipeline_team_id}", state: "Agreement" — deals in agreement (only if "Agreement" is in pipeline_stages)mcp__linear__list_issues with teamId: "{pipeline_team_id}", state: "Demo Scheduled" — upcoming demos (only if "Demo Scheduled" is in pipeline_stages)| Deal | Stage | Owner | Next Action |Only run this step if config.team contains at least one member with role: "sdr" AND config.integrations.outreach_sheet.enabled is true. Otherwise skip entirely.
Find the SDR team member(s) from config. Use their linear_user_id for assignment and the config.integrations.outreach_sheet.spreadsheet_id for sheet access.
Outreach sheet audit:
mcp__google-workspace__sheets_getRange with the configured spreadsheet ID, range based on the sheet's column mapping from config"17 Feb", "18Feb" (no space), and ISO "2026-03-04" formatsSDR daily task check:
mcp__linear__list_issues with assignee: "{sdr_linear_user_id}", teamId: "{action_team_id}", state: "Backlog" or state: "Todo"mcp__linear__save_issue:
title: "Daily outreach — reach out to 5 new profiles ({today's date})"
teamId: "{action_team_id}"
assignee: "{sdr_linear_user_id}"
labels: ["{default_label}"]
state: "Backlog"
dueDate: "{today's date}"
description: |
Daily outreach task. Target: 5 new connection requests/messages today.
Check the outreach tracking sheet for pending profiles.
If --team mode, STOP HERE. Output only the team outreach audit section.
mcp__linear__list_issues with teamId: "{action_team_id}", assignee: "me", label: "{default_label}" — check due dates| Follow-up | Lead | Due | Status |Based on all gathered data, suggest a priority-ordered list:
## Good Morning — {date}
### Calendar
| Time | Event |
|------|-------|
| ... | ... |
### Tasks — In Progress
| Task | Priority | Due |
|------|----------|-----|
| ... | ... | ... |
### Tasks — Due Today
| Task | Priority | Status |
|------|----------|--------|
| ... | ... | ... |
### Today's {meaningful_count}+{light_count}
**Meaningful:**
1. [ ] {task}
2. [ ] {task}
3. [ ] {task}
**Light:**
1. [ ] {task}
2. [ ] {task}
**Streak: X days with {meaningful_count}/{meaningful_count} meaningful**
### Overdue
| Task | Priority | Due | Days Late |
|------|----------|-----|-----------|
| ... | ... | ... | ... |
### Pipeline — Active Deals
| Deal | Stage | Next Action |
|------|-------|-------------|
| ... | ... | ... |
### Team Outreach Audit
- Profiles added this week: X
- Connection pending: X (Y stale >7 days)
- Messages sent: X
- Issues: [list specific names and problems]
- Daily task: [Created / Already exists]
### Follow-ups Due
| Follow-up | Lead | Due |
|-----------|------|-----|
| ... | ... | ... |
### Suggested Priority Order
1. ...
2. ...
3. ...
enabled: false), skip team audit entirelynpx claudepluginhub himanshusaleria/gtm-engine --plugin gtm-engineEnd-of-day review that summarizes accomplishments, drafts EOD message, previews tomorrow, and optionally syncs call recordings.
Generates a prioritized daily sales briefing from user-provided meetings and deals, optionally enhanced with calendar, CRM, and email connectors.
Produces a daily prioritized briefing over monday CRM data and publishes it as a monday artifact. Handles pipelines, contacts, accounts, leads, or no board.