Decision logger
Two-layer memory architecture for board meeting decisions.
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/decision-logger, including the files SKILL.md points to. - Describe your job in plain words. Claude Code follows the skill from there.
npx degit alirezarezvani/claude-skills/c-level-advisor/skills/decision-logger#main ~/.claude/skills/decision-loggerFor one project only, change the path to .claude/skills/decision-logger. This skill also uses decisions.md — copying SKILL.md alone won't be enough. See the folder on GitHub.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Source of Decision logger
Show the full text155 lines
| name | description | license | metadata |
|---|---|---|---|
| decision-logger | 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. | MIT | version: 1.0.0 author: Alireza Rezvani category: c-level domain: decision-memory updated: 2026-03-05 python-tools: scripts/decision_tracker.py |
Decision Logger
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.
Keywords
decision log, memory, approved decisions, action items, board minutes, /cs:decisions, /cs:review, conflict detection, DO_NOT_RESURFACE
Quick Start
python 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
Commands
| 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 |
Two-Layer Architecture
Storage follows the canonical two-layer decision memory (see ../agent-protocol/SKILL.md → "Decision Memory (Canonical Layout)") — the same layout /cs:decide writes.
Layer 1 — Raw Transcripts
Location: ~/.claude/decisions/raw/YYYY-MM-DD-<slug>.md
- Full Phase 2 agent contributions, Phase 3 critique, Phase 4 synthesis
- All debates, including rejected arguments
- NEVER auto-loaded. Only on explicit founder request.
- Archive after 90 days →
~/.claude/decisions/raw/archive/YYYY/
Layer 2 — Approved Decisions
Location: ~/.claude/decisions/approved/ — one record per decision (YYYY-MM-DD-<slug>.md) plus the append-only index decisions.md
- ONLY founder-approved decisions, action items, user corrections
- Loaded automatically in Phase 1 of every board meeting
- Append-only. Decisions are never deleted — only superseded.
- Managed by Chief of Staff after Phase 5. Never written by agents directly.
Migration: a legacy memory/board-meetings/ folder may exist from earlier versions; read it for history but write all new entries to ~/.claude/decisions/.
Decision Entry Format
## [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
Conflict Detection
Before logging, Chief of Staff checks for:
- DO_NOT_RESURFACE violations — new decision matches a rejected proposal
- Topic contradictions — two active decisions on same topic with different conclusions
- Owner conflicts — same action assigned to different people in different decisions
When a conflict is found:
⚠️ DECISION CONFLICT
New: [text]
Conflicts with: [DATE] — [existing text]
Options: (1) Supersede old (2) Merge (3) Defer to founder
DO_NOT_RESURFACE enforcement:
🚫 BLOCKED: "[Proposal]" was rejected on [DATE]. Reason: [reason].
To reopen: founder must explicitly say "reopen [topic] from [DATE]".
Logging Workflow (Post Phase 5)
- Founder approves synthesis
- Write Layer 1 raw transcript →
~/.claude/decisions/raw/YYYY-MM-DD-<slug>.md - Check conflicts against
~/.claude/decisions/approved/decisions.md - Surface conflicts → wait for founder resolution
- Write the approved record to
~/.claude/decisions/approved/YYYY-MM-DD-<slug>.mdand append to the indexdecisions.md - Confirm: decisions logged, actions tracked, DO_NOT_RESURFACE flags added
Marking Actions Complete
- [x] [Action] — Owner: [name] — Completed: [DATE] — Result: [one sentence]
Never delete completed items. The history is the record.
File Structure
~/.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-approved
References
templates/decision-entry.md— single entry template with field rulesscripts/decision_tracker.py— CLI parser, overdue tracker, conflict detector
| 1 | |
| 2 | name "decision-logger" |
| 3 | description "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." |
| 4 | license MIT |
| 5 | metadata |
| 6 | version 1.0.0 |
| 7 | author Alireza Rezvani |
| 8 | category c-level |
| 9 | domain decision-memory |
| 10 | updated 2026-03-05 |
| 11 | python-tools scripts/decision_tracker.py |
| 12 | |
| 13 | |
| 14 | # Decision Logger |
| 15 | |
| 16 | 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. |
| 17 | |
| 18 | ## Keywords |
| 19 | decision log, memory, approved decisions, action items, board minutes, /cs:decisions, /cs:review, conflict detection, DO_NOT_RESURFACE |
| 20 | |
| 21 | ## Quick Start |
| 22 | |
| 23 | |
| 24 | python scripts/decision_tracker.py --demo # See sample output |
| 25 | python scripts/decision_tracker.py --summary # Overview + overdue |
| 26 | python scripts/decision_tracker.py --overdue # Past-deadline actions |
| 27 | python scripts/decision_tracker.py --conflicts # Contradiction detection |
| 28 | python scripts/decision_tracker.py --owner "CTO" # Filter by owner |
| 29 | python scripts/decision_tracker.py --search "pricing" # Search decisions |
| 30 | |
| 31 | |
| 32 | |
| 33 | |
| 34 | ## Commands |
| 35 | |
| 36 | | Command | Effect | |
| 37 | |---------|--------| |
| 38 | | `/cs:decisions` | Last 10 approved decisions | |
| 39 | | `/cs:decisions --all` | Full history | |
| 40 | | `/cs:decisions --owner CMO` | Filter by owner | |
| 41 | | `/cs:decisions --topic pricing` | Search by keyword | |
| 42 | | `/cs:review` | Action items due within 7 days | |
| 43 | | `/cs:review --overdue` | Items past deadline | |
| 44 | |
| 45 | |
| 46 | |
| 47 | ## Two-Layer Architecture |
| 48 | |
| 49 | Storage follows the canonical two-layer decision memory (see `../agent-protocol/SKILL.md` → "Decision Memory (Canonical Layout)") — the same layout `/cs:decide` writes. |
| 50 | |
| 51 | ### Layer 1 — Raw Transcripts |
| 52 | **Location:** `~/.claude/decisions/raw/YYYY-MM-DD-<slug>.md` |
| 53 | Full Phase 2 agent contributions, Phase 3 critique, Phase 4 synthesis |
| 54 | All debates, including rejected arguments |
| 55 | **NEVER auto-loaded.** Only on explicit founder request. |
| 56 | Archive after 90 days → `~/.claude/decisions/raw/archive/YYYY/` |
| 57 | |
| 58 | ### Layer 2 — Approved Decisions |
| 59 | **Location:** `~/.claude/decisions/approved/` — one record per decision (`YYYY-MM-DD-<slug>.md`) plus the append-only index `decisions.md` |
| 60 | ONLY founder-approved decisions, action items, user corrections |
| 61 | **Loaded automatically in Phase 1 of every board meeting** |
| 62 | Append-only. Decisions are never deleted — only superseded. |
| 63 | Managed by Chief of Staff after Phase 5. Never written by agents directly. |
| 64 | |
| 65 | Migration: a legacy `memory/board-meetings/` folder may exist from earlier versions; read it for history but write all new entries to `~/.claude/decisions/`. |
| 66 | |
| 67 | |
| 68 | |
| 69 | ## Decision Entry Format |
| 70 | |
| 71 | |
| 72 | ## [YYYY-MM-DD] — [AGENDA ITEM TITLE] |
| 73 | |
| 74 | **Decision:** [One clear statement of what was decided.] |
| 75 | **Owner:** [One person or role — accountable for execution.] |
| 76 | **Deadline:** [YYYY-MM-DD] |
| 77 | **Review:** [YYYY-MM-DD] |
| 78 | **Rationale:** [Why this over alternatives. 1-2 sentences.] |
| 79 | |
| 80 | **User Override:** [If founder changed agent recommendation — what and why. Blank if not applicable.] |
| 81 | |
| 82 | **Rejected:** |
| 83 | - [Proposal] — [reason] [DO_NOT_RESURFACE] |
| 84 | |
| 85 | **Action Items:** |
| 86 | - [ ] [Action] — Owner: [name] — Due: [YYYY-MM-DD] — Review: [YYYY-MM-DD] |
| 87 | |
| 88 | **Supersedes:** [DATE of previous decision on same topic, if any] |
| 89 | **Superseded by:** [Filled in retroactively if overridden later] |
| 90 | **Raw transcript:** ~/.claude/decisions/raw/[DATE]-<slug>.md |
| 91 | |
| 92 | |
| 93 | |
| 94 | |
| 95 | ## Conflict Detection |
| 96 | |
| 97 | Before logging, Chief of Staff checks for: |
| 98 | **DO_NOT_RESURFACE violations** — new decision matches a rejected proposal |
| 99 | **Topic contradictions** — two active decisions on same topic with different conclusions |
| 100 | **Owner conflicts** — same action assigned to different people in different decisions |
| 101 | |
| 102 | When a conflict is found: |
| 103 | |
| 104 | ⚠️ DECISION CONFLICT |
| 105 | New: [text] |
| 106 | Conflicts with: [DATE] — [existing text] |
| 107 | |
| 108 | Options: (1) Supersede old (2) Merge (3) Defer to founder |
| 109 | |
| 110 | |
| 111 | **DO_NOT_RESURFACE enforcement:** |
| 112 | |
| 113 | 🚫 BLOCKED: "[Proposal]" was rejected on [DATE]. Reason: [reason]. |
| 114 | To reopen: founder must explicitly say "reopen [topic] from [DATE]". |
| 115 | |
| 116 | |
| 117 | |
| 118 | |
| 119 | ## Logging Workflow (Post Phase 5) |
| 120 | |
| 121 | Founder approves synthesis |
| 122 | Write Layer 1 raw transcript → `~/.claude/decisions/raw/YYYY-MM-DD-<slug>.md` |
| 123 | Check conflicts against `~/.claude/decisions/approved/decisions.md` |
| 124 | Surface conflicts → wait for founder resolution |
| 125 | Write the approved record to `~/.claude/decisions/approved/YYYY-MM-DD-<slug>.md` and append to the index `decisions.md` |
| 126 | Confirm: decisions logged, actions tracked, DO_NOT_RESURFACE flags added |
| 127 | |
| 128 | |
| 129 | |
| 130 | ## Marking Actions Complete |
| 131 | |
| 132 | |
| 133 | - [x] [Action] — Owner: [name] — Completed: [DATE] — Result: [one sentence] |
| 134 | |
| 135 | |
| 136 | Never delete completed items. The history is the record. |
| 137 | |
| 138 | |
| 139 | |
| 140 | ## File Structure |
| 141 | |
| 142 | |
| 143 | ~/.claude/decisions/ |
| 144 | ├── raw/YYYY-MM-DD-<slug>.md # Layer 1: full transcript per meeting |
| 145 | ├── raw/archive/YYYY/ # Raw files after 90 days |
| 146 | ├── approved/YYYY-MM-DD-<slug>.md # Layer 2: one record per approved decision |
| 147 | └── approved/decisions.md # Layer 2 index: append-only, founder-approved |
| 148 | |
| 149 | |
| 150 | |
| 151 | |
| 152 | ## References |
| 153 | `templates/decision-entry.md` — single entry template with field rules |
| 154 | `scripts/decision_tracker.py` — CLI parser, overdue tracker, conflict detector |
| 155 |
Discussion
Browse more free Claude skills or everything in Product.