plugins/pm/skills/meeting-cleanup/SKILL.md
Batch process multiple meetings from a single day. Consolidates action items and insights across meetings.
npx skillsauth add coalesce-labs/catalyst meeting-cleanupInstall 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.
Upload or paste all of today's meeting transcripts, and I'll:
Shortcut: Just paste your transcripts and say /meeting-cleanup -- I'll handle the rest.
Process all your meetings in one batch at the end of the day using AI.
Automatic Context Checks: When this skill is invoked, immediately check:
| Source | Files/Folders | Search Terms | What to Extract |
| -------------------- | -------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------- |
| Business Info | thoughts/shared/pm/context/business-info-template.md | company, product, team | Company context for interpreting discussions |
| Stakeholder Profiles | thoughts/shared/pm/context/stakeholder-template.md | attendees' names | Communication preferences, roles, decision authority |
| Active PRDs | thoughts/shared/pm/prds/*.md | features discussed | Link action items to active PRDs |
| Previous Meetings | thoughts/shared/product/meeting-notes/ | same meeting name, same attendees | Carry-over items, open questions from last time |
| Strategy | thoughts/shared/pm/frameworks/*.md | strategic pillars, OKRs | Align decisions to strategic context |
| Decisions | thoughts/shared/product/decisions/*.md | related decisions | Check for conflicts with past decisions |
Context Priority:
Tools: transcription tool or Lindy + Claude When: End of day with 3+ meetings
From transcription tool:
From Zoom/Meet/Teams:
claude "Process these meeting transcripts:
[upload all transcripts]
For each meeting:
1. Summary (3 bullets)
2. Decisions made
3. Action items (with owners)
4. Open questions
5. Follow-up needed
Then: Consolidated action item list across ALL meetings"
For each meeting processed, verify:
thoughts/shared/pm/frameworks/ when relevantUsing Lindy or Relay:
Trigger: End of day (6pm)
Actions:
Setup once, runs forever.
# Meeting Cleanup - [Date]
## Quick Stats
- Meetings attended: [X]
- Total time in meetings: [Y hours]
- Action items generated: [Z]
## Meeting 1: [Title] ([Time])
**Attendees:** [Names]
**Summary:** [3 bullets]
**Decisions:**
- [Decision 1]
- [Decision 2]
**Action Items:**
- [ ] [Action] - Owner: [Name] - Due: [Date]
- [ ] [Action] - Owner: [Name] - Due: [Date]
**Follow-up:** [Schedule next meeting? Send docs?]
---
[Repeat for each meeting]
---
## My Action Items (Consolidated)
1. [ ] [Action from Meeting 1]
2. [ ] [Action from Meeting 3]
3. [ ] [Action from Meeting 5]
## Waiting On Others
1. [Name] to [action] by [date]
2. [Name] to [action] by [date]
## Parking Lot (Questions/Ideas)
- [Question raised but not resolved]
- [Idea mentioned for later discussion]
---
## Cross-Meeting Intelligence
### Recurring Topics (with Priority Tags)
Tag each recurring topic with severity:
- **HIGH** -- Topic involves: CPO/CEO escalation, revenue-impacting deadline, at-risk OKR, or blocker affecting multiple teams
- **NORMAL** -- Topic involves: standard progress tracking, routine decisions, information sharing
- **LOW** -- Topic involves: nice-to-have discussions, future planning without urgency
Format: "[HIGH] [Topic]" came up in [Meeting 1] and [Meeting 3] -- consider scheduling a dedicated session
Example: "[HIGH] D30 Retention -- discussed in 3/4 meetings this week, CPO escalating to CEO"
### Stakeholder Load
[Who has the most action items across all meetings?]
| Person | Action Items | Meetings Involved |
|--------|-------------|-------------------|
| [Name] | [Count] | [Meeting list] |
| [Name] | [Count] | [Meeting list] |
**Overloaded?** If someone has 5+ action items across meetings, flag: "Consider whether [Name] can realistically deliver all of these by their deadlines."
### Timeline Conflicts
[Are any deadlines unrealistic given the workload?]
- [Name] has items due [Date A] (from Meeting 1) and [Date A] (from Meeting 3) -- are both achievable?
- [Feature] has conflicting timelines: Meeting 2 said "end of sprint" but Meeting 4 said "next quarter"
### Missing Follow-Ups
[Check previous weeks' meeting notes for action items that should have been discussed today but weren't]
- From [Date]: "[Action item]" assigned to [Name] -- not mentioned in today's meetings. Still open?
### Decisions Summary
[All decisions made across all meetings in one place]
| Decision | Made In | Owner | Strategic Alignment |
|----------|---------|-------|-------------------|
| [Decision] | [Meeting] | [Name] | [Pillar/OKR] |
### Cross-Meeting Conflict Detection
When the same topic or deliverable is discussed in multiple meetings, check for conflicts:
**Timeline conflicts:** Meeting A says "2 weeks" but Meeting B says "3 weeks" for the same deliverable
-> Flag: "CONFLICT: [Deliverable] timeline -- [Person A] estimated [X] (Meeting 1) vs [Y] (Meeting 2). Confirm which is accurate."
**Scope conflicts:** Meeting A scoped feature as X, but Meeting B expanded to X+Y without noting the change
-> Flag: "CONFLICT: Feature scope expanded in Meeting 2 without updating the original agreement from Meeting 1."
**Owner conflicts:** Meeting A assigned task to Person X, Meeting B assigned the same task to Person Y
-> Flag: "CONFLICT: Task '[Task name]' assigned to both [Person X] (Meeting 1) and [Person Y] (Meeting 2). Confirm owner."
**Priority conflicts:** Meeting A called feature P0, Meeting B called same feature P1
-> Flag: "CONFLICT: Feature priority downgraded from P0 (Meeting 1) to P1 (Meeting 2). Was this intentional?"
Always surface conflicts with the format:
"WARNING -- CONFLICT DETECTED: [description] -- Requires resolution by [suggested owner]"
Action items tracked: 100% Follow-through rate: +40%
When the PM uses /meeting-cleanup, I automatically:
Source: All meeting transcripts provided
Source: All meeting transcripts
/decision-doc if significantSource: Linear MCP, Linear MCP, task management systems
Source: All transcripts analyzed together
Source: MCPs if task management connected
Routing logic:
/decision-doc for formal documentationBefore delivering the meeting cleanup, verify:
thoughts/shared/product/meeting-notes/cleanup-[date].mdIf any check fails, revise before delivering.
development
Migrate a single-harness repo to the dual-harness layout so both Claude Code and Codex load the same instructions and skills — AGENTS.md as the portable canonical doc, a thin CLAUDE.md `@AGENTS.md` bridge, and a `.agents/skills` dir with a `.claude/skills` symlink onto it. Use when asked to migrate to dual-harness, make this repo work in both Claude and Codex, or for agent metadata cleanup.
tools
Goal-driven senior-engineer pipeline-unstick sweep (CTL-1176 rung 3). Given the stuck/failed/needs-human set (or ONE ticket handed by the recovery router), its GOAL is to get the pipeline MOVING again — not to fix one ticket's review findings (that is phase-remediate). It runs AFTER the eyes (diagnostician evidence) and the hands (deterministic unstuck-sweep seams) have already tried, and it CONSUMES their output from a recovery-pass.json brief rather than re-diagnosing or redoing their narrow work. It acts like a senior engineer with full tool access — it resolves merge conflicts, rebases, force-pushes, merges green PRs, and re-dispatches stalled phases AUTONOMOUSLY — and escalates to the operator ONLY for a genuine value judgment / something that degrades other functionality / a real cost-benefit trade-off / a serious architecture change / an ADR conflict. On escalation it AUTHORS the operator inbox row + the push notification (executive-voiced). Dispatched as a `claude --bg` job by phase-agent-dispatch via slash command, AND invocable bare by the operator as a sweep — hence `user-invocable: true`. Ships behind CATALYST_RECOVERY_PASS (off by default — no live behavior change until shadow/enforce).
tools
Diagnose and fix Catalyst setup issues. Validates tools, database, config, OTel, direnv, and thoughts. Automatically fixes what it can — creates directories, initializes the database, sets WAL mode, runs migrations. Use for new installs, upgrades, or when something isn't working.
tools
--- name: phase-triage description: Phase agent that triages a Linear ticket — expands acronyms, classifies (feature/bug/docs/refactor/chore), identifies genuine blockers (a semantic second-pass over the backlog — NOT a prose scrape; CTL-838), 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.fai