From cortex
Use this skill when the user asks to "track a decision", "what did we decide", "decision history", "why did we choose", "record this choice", "what worked", "what failed", "mark decision as success", "mark decision as failure", "review past decisions", or when a significant architectural or design decision is being made that should be recorded for future reference.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cortex:decision-journalThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A persistent record of decisions made across all projects and sessions. Decisions are the most valuable memory — they capture WHY something was done, not just WHAT.
A persistent record of decisions made across all projects and sessions. Decisions are the most valuable memory — they capture WHY something was done, not just WHAT.
From analysis of 500+ sessions:
Each decision record contains:
{
"decision": "Use Vanilla JS instead of Vue for Tour2Tech PMO",
"type": "user_correction|architecture|technology|approach|rejection",
"reasoning": "User explicitly rejected Vue.js framework for this project",
"alternatives_considered": ["Vue.js", "React"],
"project": "tour2tech-pmo",
"outcome": "pending|success|failure",
"outcome_notes": "Completed 188 modules successfully with Vanilla JS",
"session_id": "abc123",
"timestamp": "2026-03-15T10:30:00Z"
}
The Stop hook auto-extracts decisions from user corrections ("don't", "instead", "prefer"). But you should also MANUALLY record:
Append to ${CLAUDE_SKILL_DIR}/../../data/decision-journal.jsonl:
import json
from datetime import datetime, timezone
record = {
"decision": "...",
"type": "architecture",
"reasoning": "...",
"project": "project-name",
"outcome": "pending",
"timestamp": datetime.now(timezone.utc).isoformat()
}
with open(journal_path, "a") as f:
f.write(json.dumps(record) + "\n")
grep -i "project-name" data/decision-journal.jsonl | python3 -c "
import sys, json
for line in sys.stdin:
d = json.loads(line)
icon = {'success':'OK','failure':'FAIL','pending':'?'}.get(d.get('outcome','?'),'?')
print(f'[{icon}] {d[\"decision\"][:80]} ({d.get(\"type\",\"\")})')
"
grep '"outcome":"failure"' decision-journal.jsonlgrep '"outcome":"success"' decision-journal.jsonlgrep '"outcome":"pending"' decision-journal.jsonlgrep '"type":"user_correction"' decision-journal.jsonlgrep '"type":"architecture"' decision-journal.jsonlgrep '"type":"rejection"' decision-journal.jsonlWhen a decision's outcome becomes clear, update it:
outcome field to "success" or "failure"outcome_notes explaining why| Pattern | Signal | Action |
|---|---|---|
| Same rejection repeated | User keeps having to say "don't do X" | Promote to anti-pattern |
| Decision followed by failure | Approach didn't work | Record as lesson learned |
| Decision across multiple projects | Universal preference | Promote to core rule |
| Contradictory decisions | Different choices for same problem | Flag for user review |
When a decision leads to failure:
{"what": "...", "why": "Failed in project X — ..."}When a decision leads to success:
{"learning": "...", "category": "validated-approach"}npx claudepluginhub pretinnov-inc/claude-plugin-marketplace --plugin cortexGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.