Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Two-layer memory architecture for board meeting decisions. Manages raw transcripts (Layer 1) and approved decisions (Layer 2). Use when logging decisions after a board meeting, reviewing past decisions with /cs:decisions, or checking overdue action items with /cs:review. Invoked automatically by the board-meeting skill after Phase 5 founder approval.
.claude/skills/alirezarezvani-decision-logger/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 24% | 0% |
Two-layer memory system. Layer 1 stores everything. Layer 2 stores only what the founder approved. Future meetings read Layer 2 only — this prevents hallucinated consensus from past debates bleeding into new deliberations.
decision log, memory, approved decisions, action items, board minutes, /cs:decisions, /cs:review, conflict detection, DO_NOT_RESURFACE
bashpython scripts/decision_tracker.py --demo # See sample output python scripts/decision_tracker.py --summary # Overview + overdue python scripts/decision_tracker.py --overdue # Past-deadline actions python scripts/decision_tracker.py --conflicts # Contradiction detection python scripts/decision_tracker.py --owner "CTO" # Filter by owner python scripts/decision_tracker.py --search "pricing" # Search decisions
| Command | Effect | |---------|--------| | /cs:decisions | Last 10 approved decisions | | /cs:decisions --all | Full history | | /cs:decisions --owner CMO | Filter by owner | | /cs:decisions --topic pricing | Search by keyword | | /cs:review | Action items due within 7 days | | /cs:review --overdue | Items past deadline |
Storage follows the canonical two-layer decision memory (see ../agent-protocol/SKILL.md → "Decision Memory (Canonical Layout)") — the same layout /cs:decide writes.
Location: ~/.claude/decisions/raw/YYYY-MM-DD-<slug>.md
~/.claude/decisions/raw/archive/YYYY/Location: ~/.claude/decisions/approved/ — one record per decision (YYYY-MM-DD-<slug>.md) plus the append-only index decisions.md
Migration: a legacy memory/board-meetings/ folder may exist from earlier versions; read it for history but write all new entries to ~/.claude/decisions/.
markdown## [YYYY-MM-DD] — [AGENDA ITEM TITLE] **Decision:** [One clear statement of what was decided.] **Owner:** [One person or role — accountable for execution.] **Deadline:** [YYYY-MM-DD] **Review:** [YYYY-MM-DD] **Rationale:** [Why this over alternatives. 1-2 sentences.] **User Override:** [If founder changed agent recommendation — what and why. Blank if not applicable.] **Rejected:** - [Proposal] — [reason] [DO_NOT_RESURFACE] **Action Items:** - [ ] [Action] — Owner: [name] — Due: [YYYY-MM-DD] — Review: [YYYY-MM-DD] **Supersedes:** [DATE of previous decision on same topic, if any] **Superseded by:** [Filled in retroactively if overridden later] **Raw transcript:** ~/.claude/decisions/raw/[DATE]-<slug>.md
Before logging, Chief of Staff checks for:
When a conflict is found:
⚠️ DECISION CONFLICT
New: [text]
Conflicts with: [DATE] — [existing text]
Options: (1) Supersede old (2) Merge (3) Defer to founderDO_NOT_RESURFACE enforcement:
🚫 BLOCKED: "[Proposal]" was rejected on [DATE]. Reason: [reason].
To reopen: founder must explicitly say "reopen [topic] from [DATE]".~/.claude/decisions/raw/YYYY-MM-DD-<slug>.md~/.claude/decisions/approved/decisions.md~/.claude/decisions/approved/YYYY-MM-DD-<slug>.md and append to the index decisions.mdmarkdown- [x] [Action] — Owner: [name] — Completed: [DATE] — Result: [one sentence]
Never delete completed items. The history is the record.
~/.claude/decisions/
├── raw/YYYY-MM-DD-<slug>.md # Layer 1: full transcript per meeting
├── raw/archive/YYYY/ # Raw files after 90 days
├── approved/YYYY-MM-DD-<slug>.md # Layer 2: one record per approved decision
└── approved/decisions.md # Layer 2 index: append-only, founder-approvedtemplates/decision-entry.md — single entry template with field rulesscripts/decision_tracker.py — CLI parser, overdue tracker, conflict detector| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | pass→pass | 23,824 | 25,210 | +6% | 1 | 1 | 0% | 5,256 | 6,849 | +30% | 0 | 0 | — |
case-01 | fail→fail | 4,526 | 9,411 | +108% | 1 | 1 | 0% | 763 | 2,740 | +259% | 0 | 0 | — |
case-02 | fail→fail | 7,360 | 5,080 | -31% | 1 | 1 | 0% | 1,254 | 1,706 | +36% | 0 | 0 | — |
case-03 | fail→fail | 3,015 | 5,831 | +93% | 1 | 1 | 0% | 426 | 1,654 | +288% | 0 | 0 | — |
case-04 | fail→pass | 9,955 | 2,584 | -74% | 1 | 1 | 0% | 1,567 | 1,869 | +19% | 0 | 0 | — |
case-05 | fail→pass | 13,012 | 4,061 | -69% | 1 | 1 | 0% | 2,012 | 2,106 | +5% | 0 | 0 | — |
case-06 | fail→pass | 12,232 | 4,069 | -67% | 1 | 1 | 0% | 1,973 | 2,116 | +7% | 0 | 0 | — |
case-07 | fail→pass | 10,358 | 13,320 | +29% | 1 | 1 | 0% | 1,629 | 1,709 | +5% | 0 | 0 | — |
case-08 | fail→pass | 8,246 | 2,183 | -74% | 1 | 1 | 0% | 1,393 | 1,733 | +24% | 0 | 0 | — |
case-09 | fail→pass | 10,560 | 4,420 | -58% | 1 | 1 | 0% | 1,692 | 2,151 | +27% | 0 | 0 | — |
case-10 | fail→pass | 9,335 | 1,805 | -81% | 1 | 1 | 0% | 1,556 | 1,661 | +7% | 0 | 0 | — |
case-11 | fail→pass | 5,130 | 1,869 | -64% | 1 | 1 | 0% | 842 | 1,659 | +97% | 0 | 0 | — |
case-12 | fail→pass | 4,934 | 1,495 | -70% | 1 | 1 | 0% | 814 | 1,621 | +99% | 0 | 0 | — |
case-13 | fail→pass | 10,729 | 2,300 | -79% | 1 | 1 | 0% | 1,690 | 1,699 | +1% | 0 | 0 | — |
case-14 | fail→pass | 8,093 | 2,816 | -65% | 1 | 1 | 0% | 1,370 | 1,853 | +35% | 0 | 0 | — |
case-15 | fail→pass | 10,080 | 3,529 | -65% | 1 | 1 | 0% | 1,573 | 2,020 | +28% | 0 | 0 | — |
case-16 | fail→pass | 11,977 | 2,059 | -83% | 1 | 1 | 0% | 1,973 | 1,664 | -16% | 0 | 0 | — |
case-17 | fail→pass | 11,092 | 2,792 | -75% | 1 | 1 | 0% | 1,829 | 1,856 | +1% | 0 | 0 | — |
case-18 | fail→fail | 9,364 | 1,995 | -79% | 1 | 1 | 0% | 1,503 | 1,722 | +15% | 0 | 0 | — |
case-19 | pass→fail | 6,389 | 2,478 | -61% | 1 | 1 | 0% | 1,016 | 1,840 | +81% | 0 | 0 | — |
case-20 | pass→pass | 9,499 | 6,417 | -32% | 1 | 1 | 0% | 1,583 | 2,363 | +49% | 0 | 0 | — |
case-22 | pass→pass | 11,617 | 10,317 | -11% | 1 | 1 | 0% | 2,171 | 3,133 | +44% | 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 20 counted toward the lift figure. The other 2 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 +59 percentage points is the difference between those two pass rates over the 20 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.