Use when someone wants to decide whether a meeting is worth calling, price a meeting in dollars, build a timeboxed agenda with desired outcomes, or turn messy meeting notes into owned action items — or says "should this be a meeting", "/cs:meeting-prep", or "/cs:meeting-actions". Runs a cost gate (ASYNC / NOT-READY / MEET), builds a decision-first agenda, and extracts an owner + due-date checklist that flags every orphan.
76
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
—
The risk profile of this skill
Portability: Reasoning-led skill with 3 stdlib Python scripts. No external APIs, no LLM calls in scripts, nothing auto-sent. The scripts fix the discipline; the user runs the meeting.
Most meetings should be an email. This skill makes that testable: it prices a meeting in real dollars, refuses to let it exist without a decision + agenda + owner, builds a timeboxed decision-first agenda for the survivors, and afterwards turns raw notes into an owner + due-date checklist that flags every orphan. An ASYNC verdict is a win, not a failure.
1. Gate. Before starting, ask one clarifying question if the decision to be made is unstated — the gate cannot run honestly without it. Then price it and apply the three checks. No decision → ASYNC (exit 2): draft a memo instead, stop here. Decision but missing agenda/owner → NOT-READY (exit 3), naming the gap. All present → MEET (exit 0) with total cost and a cost-per-minute line.
2. Agenda. Only for MEET. Every topic needs a desired outcome — empty outcomes are refused by
name (exit 2). Decision topics (decide/choose/approve) sort before discuss/inform. Timeboxes plus
the mandatory 5-minute closing "actions recap" slot must fit --length, or the overflow is refused
with the exact overage (exit 3). Iterate — trim or split the named topic and re-run until it fits;
the stop condition is exit 0 (or the meeting goes async). Output includes a pre-read line.
3. Run. The user runs the meeting from the printed agenda. Hold the timeboxes; use the closing slot to read every action aloud with its owner and date.
4. Extract. Feed the raw notes to the extractor: checkboxes, ACTION:/TODO: lines,
"@name will …" and "Name will … by date" patterns become a checklist grouped by owner, with
ORPHAN (no owner) and NO-DUE flags plus summary counts. Assign every orphan before posting — the
meeting is done when every action has an owner and a date; that completion check closes the loop.
# 1. Gate: should this meeting exist?
python scripts/meeting_cost_calculator.py --attendees 6 --minutes 60 \
--avg-rate 90 --include-refocus --has-decision --has-agenda --has-owner
# 2. Agenda: timeboxed, decision-first, outcomes mandatory
python scripts/agenda_builder.py --length 45 \
--topic "Q3 pricing:Decide usage-based vs seat-based:15:maria" \
--topic "Launch risks:Discuss open launch blockers:15:sam"
# 4. Extract: raw notes -> owner + due-date checklist with ORPHAN/NO-DUE flags
python scripts/action_item_extractor.py --input notes.md| Script | Role |
|---|---|
scripts/meeting_cost_calculator.py | Dollars (attendees × minutes × rate, optional 23-min refocus overhead per attendee) + decision/agenda/owner gate → ASYNC / NOT-READY / MEET. |
scripts/agenda_builder.py | Timeboxed decision-first agenda; refuses empty outcomes and overflow; enforces pre-read line + 5-min closing actions-recap slot. |
scripts/action_item_extractor.py | Raw notes → owner-grouped markdown checklist with due dates, ORPHAN/NO-DUE flags, and summary counts. |
references/meeting_cost_canon.md — the real cost of meetings and the should-this-exist gate (7 sources)references/agenda_discipline.md — agendas as questions, timeboxing, decision-first ordering, pre-reads (7 sources)references/action_item_discipline.md — why meetings without owned actions are theater (6 sources)assets/example_agenda.md — a full worked timeboxed agenda (gate verdict → ordered topics → closing recap)assets/meeting_gate_worksheet.md — fillable should-this-be-a-meeting worksheetproject-management/ — team ceremonies, sprint cadence, Jira delivery flow. This gates one
meeting at a time for the person calling it.business-operations/internal-comms — org-level communication design. This never designs a
comms program and never sends anything.productivity/capture — triages a private brain-dump. This parses a shared meeting's notes.Version: 1.0.0 Build pattern: Path-B discipline skill — meeting-science canon preserved + deterministic gate/agenda/extraction scripts added.
19392f7
Also appears in
since Aug 28, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.