plugins/pm-ops/skills/daily-plan/SKILL.md
Generate PM daily plan with context
npx skillsauth add coalesce-labs/catalyst daily-planInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
What to provide: Nothing required. Just run it.
/daily-plan → Compact daily plan (default: TL;DR + Top 3 + Schedule + Heads Up)
/daily-plan full → Full daily plan with all sections (metrics, email, strategic alignment)
/daily-plan tomorrow → Preview tomorrow's plan (evening planning)
What you get: A prioritized daily plan with meeting context, tasks, and flags. Pulls from your PRDs, meetings, stakeholder profiles, and connected MCPs automatically.
Time: 2-5 minutes. Faster with MCPs connected.
Before generating a new plan, check thoughts/shared/pm/reports/ for an existing plan from today.
If a same-day plan exists:
I see you already have a plan for today (`thoughts/shared/[filename]`).
Options:
1. **Update it** - I'll refresh with new context (meetings changed, priorities shifted)
2. **Replace it** - Start fresh (I'll archive the old one as `[filename]-v1.md`)
3. **Keep it** - No changes needed
Which would you prefer?
If no same-day plan exists: Proceed normally.
Start your day with a comprehensive plan that pulls together everything you need: meetings with attendee context, active PRDs, open tasks, metrics to monitor, and stakeholder intelligence.
Inspired by personal operating system patterns but tailored specifically for Product Managers.
/daily-plan - Create today's daily plan (compact mode by default)/daily-plan full - Full daily plan with all sections/daily-plan tomorrow - Preview tomorrow (evening planning)Check these files first:
thoughts/shared/pm/frameworks/ - Quarter priorities, OKRs, North Starthoughts/shared/pm/reports/ - This week's priorities (if /weekly-plan was run)thoughts/shared/pm/prds/ - Active PRDs and their stagesthoughts/shared/pm/context/stakeholder-*.md - Stakeholder profiles and communication stylesthoughts/shared/product/meeting-notes/ - Recent meeting contextthoughts/shared/pm/launches/ - Recently launched features (past 2 weeks)Integration Options (Multiple Paths):
Option 1: MCP Servers (Recommended - Automated)
Option 2: Direct API Access (If MCPs Not Available)
curl or PythonOption 3: Export/Import Workflow (Manual but Works)
Option 4: Browser Automation (Semi-Automated)
Option 5: Manual Input (Always Available)
Fallback Strategy: If no integrations available, I'll:
Determine target date:
Check for yesterday's plan (carry-over):
thoughts/shared/pm/reports/ for yesterday's plan fileCheck for weekly plan:
thoughts/shared/pm/reports/YYYY-WXX-weekly-plan.md for current week/weekly-plan)MCP availability check:
A. Calendar & Meetings (Calendar MCP or manual):
If Calendar MCP available:
Query: Get events for [target date]
Extract:
- Meeting times
- Meeting titles
- Attendee names/emails
- Meeting descriptions
For each meeting:
thoughts/shared/pm/context/stakeholder-*.mdthoughts/shared/product/meeting-notes/ for recent interactions with each personFlag issues:
If Calendar MCP not available:
B. Email Context (Gmail MCP or manual):
If Gmail MCP available:
Query: Get unread/important emails from past 24 hours
Filter:
- Emails from stakeholders (match against stakeholder profiles)
- Emails with keywords: "urgent", "decision", "review", "feedback"
- Thread participants you're meeting with today
Extract:
If Gmail MCP not available:
C. Active PRDs & Initiatives:
Scan thoughts/shared/pm/prds/:
For each active PRD:
Cross-reference with thoughts/shared/pm/frameworks/:
D. Tasks & Action Items (Linear MCP or files):
If Linear MCP available:
Query: Get tasks assigned to user, status != Done
Filter by priority/labels:
- P0 or "urgent" or "blocker"
- P1 or "important"
- P2 or default
If MCP not available:
thoughts/shared/product/meeting-notes/ for unchecked action itemsCategorize:
E. Metrics to Monitor (Analytics MCP or files):
Check thoughts/shared/pm/launches/ for features launched in past 2 weeks.
For each recent launch: If Analytics MCP available:
Query: Get key metrics for [feature]
Time range: Since launch date
Metrics: Adoption, engagement, conversion (based on PRD success criteria)
If MCP not available:
thoughts/shared/pm/metrics/Flag:
F. Stakeholder Intelligence:
For each person you're meeting today:
Profile lookup:
thoughts/shared/pm/context/stakeholder-*.md if existsRecent interaction history:
thoughts/shared/product/meeting-notes/ for past meetings with this personOpen loops:
Context for today:
Compact Mode (Default):
When the PM runs /daily-plan without the full flag, generate a compact plan showing ONLY:
This fits on one screen. No scrolling required.
Full Mode:
When the PM runs /daily-plan full or asks for "more detail," include ALL sections from the template below: TL;DR, Strategic Context, Today's Three, Schedule & Meeting Prep, detailed Meeting Context, Tasks by Priority, Metrics to Watch, Email/Communication Highlights, Heads Up, and Strategic Alignment Check.
Determine "Today's Three":
Rules for prioritization:
If heavy meeting day (4+ hours in meetings):
If light meeting day (< 2 hours):
Identify potential conflicts:
Create file: thoughts/shared/pm/reports/YYYY-MM-DD-daily-plan.md
Template:
---
date: YYYY-MM-DD
day: [Monday/Tuesday/etc]
week: YYYY-WXX
mcps_used: [Calendar, Gmail, Linear, Analytics]
---
# Daily Plan - [Day], [Month] [DD], [YYYY]
## TL;DR
- **Meetings:** [X] today ([Y] require prep)
- **P0 Tasks:** [Z]
- **Key Focus:** [One sentence - primary objective for the day]
---
## Strategic Context
**This Quarter's North Star:** [from strategy/]
**This Week's Priority:** [from weekly plan]
**Active Initiatives:**
| Initiative | Stage | Next Milestone | Owner |
|------------|-------|----------------|-------|
| [PRD Name] | [Stage] | [Next step] | [You/Team] |
---
## Today's Three
_If I only accomplish three things today:_
1. [ ] **[P0 Task/Meeting Outcome]** - Advances [Initiative/Priority]
2. [ ] **[P0 Task/Meeting Outcome]** - Unblocks [Team/Person]
3. [ ] **[Important Decision/Document]** - Aligns [Stakeholders]
_Why these three:_
- [Brief rationale for prioritization]
---
## Schedule & Meeting Prep
| Time | Meeting | Attendees | Prep Status | Context |
| ------- | ------- | --------- | ------------------------ | ---------------------------------- |
| 9:00am | [Topic] | [Names] | ✅ Ready / ⚠️ Needs prep | [Last met: Date, discussed: Topic] |
| 11:00am | [Topic] | [Names] | ✅ Ready | [Open items: Action 1, Action 2] |
| 2:00pm | [Topic] | [Names] | ⚠️ Needs prep | [New stakeholder - review profile] |
### Free Blocks
- **9:45am - 10:45am** (1 hour) → Suggested: [Deep work on P0 task]
- **12:00pm - 1:00pm** (1 hour) → Lunch + email catch-up
- **3:30pm - 5:00pm** (1.5 hours) → Suggested: [PRD review / Async work]
---
## Meeting Context
### 9:00am - [Meeting Title]
**Attendees:**
- **[Name]** ([Role]) - [Communication style from profile]
- Last interaction: [Date] - Discussed [Topic]
- Open items: [You owe them X, They owe you Y]
- Context: [Why this meeting matters today]
**Prep needed:**
- [ ] [Specific prep item]
- [ ] [Specific prep item]
**Your goal for this meeting:**
- [Clear objective - decision to make, alignment to get, feedback to gather]
---
### 11:00am - [Meeting Title]
**Attendees:**
- **[Name]** ([Role])
- [Context...]
[Repeat for each meeting]
---
## Tasks by Priority
### P0 - Must Do Today
- [ ] **[Task from Linear]** - [Why urgent / Who's blocked]
- Context: [Relevant PRD, stakeholder, deadline]
- Time estimate: [X hours]
- Suggested time: [Specific free block]
### P1 - Important This Week
- [ ] **[Task]** - [Why it matters]
- Advances: [Weekly priority / Quarter goal]
- Can defer to: [Tomorrow/Day X if needed]
### P2 - If Time Allows
- [ ] **[Task]** - [Nice-to-have / Low urgency]
---
## Metrics to Watch
[Only include if features launched recently]
### [Feature Name] (Launched [Date])
**Success Criteria (from PRD):**
- [Metric 1]: Target [X], Current [Y] ([+/- %])
- [Metric 2]: Target [A], Current [B] ([+/- %])
**Status:** ✅ On track / ⚠️ Needs attention / ❌ Below target
**Action needed:**
[If metrics concerning, suggest next step]
---
## Email/Communication Highlights
[Only if Gmail/Slack MCP provided important context]
**Needs Response:**
- **From [Name]:** [Subject] - [Why important]
- **Thread with [Team]:** [Topic] - [Decision needed]
**FYI (context for meetings):**
- [Email/thread that provides background for today's discussions]
---
## Heads Up
⚠️ **Potential Issues:**
- **Back-to-back meetings 9am-12pm** - No break, may run over
- **P0 task "[Task]" has no time blocked** - Risk of not completing
- **Metrics for [Feature] trending down** - May need discussion in [Meeting]
- **Waiting on [Stakeholder] decision for [PRD]** - Follow up if not addressed
- **[Person] expects [Deliverable] today** - Currently not in Top 3
**Recommendations:**
- [Specific suggestion to address each issue]
---
## Consider Delegating
**Delegation Section Trigger Logic:**
Include this section when ANY of these are true:
- PM's role is VP, Director, or Head of [function] (check `thoughts/shared/pm/context/personal-context-pm-background.md` or `thoughts/shared/pm/context/business-info-template.md`)
- PM has direct reports or manages PM leads (check stakeholder profiles for reports)
- PM explicitly asks for delegation suggestions
Skip this section when:
- PM is an IC (Individual Contributor) PM with no reports
- PM's role level is unclear -- ask before including: "Do you manage any direct reports? I can add delegation suggestions if helpful."
When including, add a brief note explaining why: _"Including delegation suggestions because you manage [X] direct reports."_
When excluding, no note needed -- just omit the section silently.
These tasks from today's list could be handled by someone on your team:
| Task | Suggested Delegate | Why | What You'd Still Own |
| ------ | ----------------------------------------- | -------------------------------------- | ------------------------ |
| [Task] | [Name from stakeholder profiles] ([Role]) | [They have context / skill / capacity] | [Review/approve/unblock] |
| [Task] | [Name] ([Role]) | [Reason] | [Your remaining piece] |
**Delegation tip:** Delegating doesn't mean disappearing. Stay available for questions and set a check-in time.
---
## Strategic Alignment Check
**How today advances weekly priorities:**
- Priority 1: [How today's work contributes]
- Priority 2: [How today's work contributes]
- Priority 3: [Coverage gap or not addressed today]
**Quarter goals progress:**
- [If today's work moves any goal forward, note it]
---
_Generated: [Timestamp]_
_MCPs used: [List which MCPs provided data]_
_Next: Run `/meeting-notes` after meetings to capture outcomes_
Before presenting the daily plan, verify:
thoughts/shared/pm/reports/YYYY-MM-DD-daily-plan.mdSave the daily plan file
Display summary to user:
Offer follow-up actions:
/weekly-plan to set priorities?"When user runs /daily-plan tomorrow:
thoughts/shared/pm/reports/YYYY-MM-DD-draft.mdGoogle Calendar MCP:
1. Run: /catalyst-pm-ops:connect-mcps connect to google-calendar
2. I'll first check for official remote MCP server
3. If remote server available: Guide you to use `claude mcp add --transport http`
4. If not: Walk you through OAuth setup (credentials from Google Cloud Console)
5. Test: I'll fetch today's events to confirm it works
6. Done! Future /catalyst-pm-ops:daily-plan calls will auto-fetch meetings
Gmail MCP:
1. Run: /catalyst-pm-ops:connect-mcps connect to gmail
2. Similar priority: Check remote server first, then OAuth flow
3. Permissions needed: Read email (not send)
4. I'll fetch unread/important emails for daily context
Linear MCP:
1. Run: /catalyst-pm-ops:connect-mcps connect to linear (or linear)
2. I'll check for remote servers, then fall back to API keys
3. You'll need: API key from Linear settings (if no remote server)
4. I'll query your assigned tasks daily
Analytics MCP (PostHog/PostHog):
1. Run: /catalyst-pm-ops:connect-mcps connect to posthog (or posthog)
2. I'll check remote servers first, then manual setup
3. You'll need: API key + Project ID (if manual)
4. I'll pull metrics for recently launched features
Priority order: Remote servers > Local servers > Manual OAuth/API tokens
If MCPs aren't available, I can call APIs directly using Bash/Python.
Google Calendar API Setup:
# Step 1: Get API credentials
# Go to: https://console.cloud.google.com/apis/credentials
# Create OAuth 2.0 Client ID → Download JSON
# Step 2: I'll help you authenticate
# Run this (I'll guide you):
python3 -c "
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
import datetime
# Auth flow
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json',
scopes=['https://www.googleapis.com/auth/calendar.readonly']
)
creds = flow.run_local_server(port=0)
# Test: Fetch today's events
service = build('calendar', 'v3', credentials=creds)
now = datetime.datetime.utcnow().isoformat() + 'Z'
events_result = service.events().list(
calendarId='primary',
timeMin=now,
maxResults=10,
singleEvents=True,
orderBy='startTime'
).execute()
for event in events_result.get('items', []):
print(f\"{event['start'].get('dateTime', event['start'].get('date'))} - {event['summary']}\")
"
# Step 3: Save credentials
# I'll store the token for future use
Once set up:
/daily-plan is calledLinear API Setup:
# Step 1: Get API key
# Go to: Linear Settings → API → Personal API Keys → Create
# Step 2: Test query
curl https://api.linear.app/graphql \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "{ viewer { assignedIssues(filter: { state: { type: { nin: [\"completed\", \"canceled\"] } } }) { nodes { title priority state { name } } } } }"
}'
# Step 3: I'll parse and format tasks
I'll help you:
For Google Calendar:
1. Open Google Calendar
2. Click today's date
3. Click ⋮ (three dots) → "Print"
4. Save as PDF or take screenshot
5. Share the file/screenshot with me
6. I'll parse it using vision and extract:
- Meeting times
- Attendees
- Meeting titles
For Linear:
1. Go to your Linear board
2. Filter: Assigned to you, Status != Done
3. Export to CSV (or screenshot the view)
4. Share CSV/screenshot
5. I'll extract tasks and priorities
For Gmail:
1. Search: is:unread OR is:important (in Gmail)
2. Screenshot the list
3. Share with me
4. I'll identify which emails need attention today
For Analytics (PostHog/PostHog):
1. Open your key dashboard
2. Screenshot the metrics for recently launched features
3. I'll analyze with vision and extract:
- Metric values
- Trends (up/down)
- Anomalies
Trade-off:
If you have Claude in Chrome MCP installed:
1. I can open tabs and navigate to your tools
2. Extract data directly from the web UI
3. Parse and integrate into daily plan
Example flow:
When you run /daily-plan:
1. I open Google Calendar in browser
2. Navigate to today's view
3. Scrape meeting list
4. Open Linear in new tab
5. Navigate to your assigned tasks
6. Scrape task list
7. Close tabs and generate plan
Setup required:
1. Ensure Claude in Chrome MCP is installed
2. Stay logged into Google Calendar, Linear, etc. in Chrome
3. Give me permission to access these tabs
4. I'll automate the rest
Trade-off:
If no integrations available, I'll ask focused questions:
When you run /daily-plan, I ask:
1. "What meetings do you have today?"
→ You: "9am product sync, 2pm stakeholder review"
2. "Who's attending each?"
→ You: "Product sync: Sarah, John. Stakeholder review: VP Eng"
3. "What P0 tasks are on your plate?"
→ You: "Finish PRD for X, review metrics for Y"
4. "Any metrics you need to check?"
→ You: "Feature Z launched Monday, check adoption"
5. "Anything urgent from email/Slack?"
→ You: "Customer escalation from Support team"
Total time: 2 minutes
I'll then:
thoughts/shared/pm/prds/thoughts/shared/pm/launches/Trade-off:
Week 1: Start Manual
/daily-plan with manual inputWeek 2: Add One Integration
/daily-plan with partial automationWeek 3: Expand Integrations
Week 4: Full Automation
/daily-plan → full plan in secondsPhilosophy:
If Calendar MCP not connected:
/catalyst-pm-ops:connect-mcps connect to google-calendar"If Gmail MCP not connected:
/catalyst-pm-ops:connect-mcps connect to gmail"If Linear MCP not connected:
thoughts/shared/product/meeting-notes/ for unchecked action itemsIf Analytics MCP not connected:
If Stakeholder profiles don't exist:
thoughts/shared/pm/context/"Before /daily-plan:
/weekly-plan - Sets weekly priorities that inform today's focusAfter /daily-plan:
/meeting-notes - Capture outcomes from today's meetings/create-tickets - Convert action items to Linear tasks/daily-review - (If created) Reflect on what got doneParallel use:
/prd-draft - Today's work might include PRD writing/prototype - Today might be prototype iteration dayFirst time setup:
Daily ritual:
/daily-plan first thing in morning (before email/Slack)Weekly rhythm:
/weekly-plan before /daily-plan/daily-plan/daily-plan then /weekly-review at end of dayPower user moves:
/daily-plan tomorrow to prepBefore this:
/weekly-plan - Set weekly priorities/catalyst-pm-ops:connect-mcps - Connect to Calendar, Gmail, LinearAfter this:
/meeting-notes - Capture meeting outcomes/create-tickets - Track action items/weekly-review - End-of-week synthesisParallel use:
/prd-draft - Write PRDs during free blocks/impact-sizing - Analyze features during planning timetesting
Phase-agent that fixes a failing verify verdict so the pipeline self-heals instead of stalling to needs-human (CTL-653). Reads `${ORCH_DIR}/workers/<ticket>/verify.json`, fixes the `findings[]` (every severity:"high" plus the regression_risk drivers) directly via Edit/Write, commits the remediation, and emits `phase.remediate.complete.<ticket>`. The scheduler's router then re-dispatches `verify` to re-check (the verify⇄remediate cycle, cap 3). Dispatched as a `claude --bg` job by `phase-agent-dispatch`, which invokes it via slash command — hence `user-invocable: true`.
development
Phase agent for the verify step of the 9-phase orchestrator pipeline (CTL-450). NEW skill — has no canonical wrapper. Runs read-only adversarial verification against the implement-phase diff: tsc, tests, lint, security scan, reward-hacking scan, code review, test coverage, silent-failure hunt. Writes ${ORCH_DIR}/workers/<TICKET>/verify.json then emits phase.verify.complete.<ticket>. Reads phase-implement.json as its prior-phase artifact. NEVER writes application code — only test files allowed. Spawned via phase-agent-dispatch via slash command — hence `user-invocable: true`.
tools
--- name: phase-triage description: Phase agent that triages a Linear ticket — expands acronyms, classifies (feature/bug/docs/refactor/chore), identifies dependencies, estimates scope, writes triage.json, and posts a triage analysis comment to Linear. Triage completion is signaled by that comment plus the local triage.json — there is no `triaged` label. Emits phase.triage.complete.<TICKET> on success and phase.triage.failed.<TICKET> on error. Dispatched by the phase-agent orchestrator (CTL-452)
testing
Phase agent for the review step of the 9-phase orchestrator pipeline (CTL-450). Wraps the /review skill (gstack) — explicitly skips /ultrareview per user decision. Reads verify.json from the prior phase, runs /review against the diff, writes ${ORCH_DIR}/workers/<TICKET>/review.json, and creates a remediation commit for any HIGH-severity finding that has a deterministic fix. Emits phase.review.complete.<ticket>. Spawned via phase-agent-dispatch via slash command — hence `user-invocable: true`.