Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/alirezarezvani-meetings/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 185% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 174% | 0% |
> 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.
bash# 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 onemeeting at a time for the person calling it.
business-operations/internal-comms — org-level communication design. This never designs acomms 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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | pass→pass | 7,425 | 5,773 | -22% | 1 | 1 | 0% | 1,296 | 2,235 | +72% | 0 | 0 | — |
case-01 | fail→fail | 8,197 | 7,177 | -12% | 1 | 1 | 0% | 1,733 | 1,922 | +11% | 0 | 0 | — |
case-02 | fail→fail | 5,923 | 3,932 | -34% | 1 | 1 | 0% | 1,122 | 2,129 | +90% | 0 | 0 | — |
case-03 | fail→pass | 6,959 | 2,901 | -58% | 1 | 1 | 0% | 1,275 | 1,857 | +46% | 0 | 0 | — |
case-04 | pass→pass | 4,669 | 4,314 | -8% | 1 | 1 | 0% | 1,138 | 2,220 | +95% | 0 | 0 | — |
case-05 | fail→pass | 8,742 | 4,875 | -44% | 1 | 1 | 0% | 1,423 | 2,189 | +54% | 0 | 0 | — |
case-06 | pass→pass | 4,725 | 1,817 | -62% | 1 | 1 | 0% | 905 | 1,555 | +72% | 0 | 0 | — |
case-07 | pass→pass | 8,147 | 4,968 | -39% | 1 | 1 | 0% | 1,369 | 2,067 | +51% | 0 | 0 | — |
case-08 | pass→pass | 2,364 | 2,480 | +5% | 1 | 1 | 0% | 488 | 1,742 | +257% | 0 | 0 | — |
case-09 | fail→pass | 4,216 | 2,933 | -30% | 1 | 1 | 0% | 641 | 1,828 | +185% | 0 | 0 | — |
case-10 | pass→pass | 5,470 | 2,487 | -55% | 1 | 1 | 0% | 950 | 1,719 | +81% | 0 | 0 | — |
case-20 | pass→pass | 15,318 | 13,655 | -11% | 1 | 1 | 0% | 2,882 | 3,824 | +33% | 0 | 0 | — |
case-11 | fail→pass | 11,320 | 6,320 | -44% | 1 | 1 | 0% | 2,050 | 2,509 | +22% | 0 | 0 | — |
case-12 | pass→pass | 5,042 | 1,485 | -71% | 1 | 1 | 0% | 831 | 1,568 | +89% | 0 | 0 | — |
case-13 | fail→pass | 3,423 | 2,104 | -39% | 1 | 1 | 0% | 624 | 1,711 | +174% | 0 | 0 | — |
case-14 | fail→pass | 6,277 | 2,915 | -54% | 1 | 1 | 0% | 1,391 | 1,843 | +32% | 0 | 0 | — |
case-21 | pass→fail | 15,120 | 14,512 | -4% | 1 | 1 | 0% | 2,593 | 3,815 | +47% | 0 | 0 | — |
case-15 | fail→pass | 11,026 | 2,622 | -76% | 1 | 1 | 0% | 1,825 | 1,704 | -7% | 0 | 0 | — |
case-16 | fail→fail | 7,569 | 2,618 | -65% | 1 | 1 | 0% | 1,311 | 1,746 | +33% | 0 | 0 | — |
case-17 | fail→fail | 5,008 | 3,954 | -21% | 1 | 1 | 0% | 959 | 2,002 | +109% | 0 | 0 | — |
case-18 | fail→pass | 4,061 | 3,449 | -15% | 1 | 1 | 0% | 875 | 1,941 | +122% | 0 | 0 | — |
case-19 | pass→fail | 3,575 | 2,850 | -20% | 1 | 1 | 0% | 668 | 1,831 | +174% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.