Capture A Decision
Use this when the user makes or asks to record a durable choice. A decision is a choice with rationale and consequences, not a casual preference. This is the deliberate version of the basic-memory output style's decision-capture reflex — it works whether or not that style is enabled.
Steps
-
Resolve config: read the
basicMemoryblock with the same precedence the hooks use. For the user-level base, appendsettings.jsonto the literal value ofCLAUDE_CONFIG_DIRwhen that environment variable is present; do not trim it, expand~, or treat an empty value as unset. Use~/.claude/settings.jsononly when the variable is absent. Then the project's.claude/settings.jsonand.claude/settings.local.jsonoverride it per key:- write to
primaryProjectwhen set (pass it asproject, or asproject_idif it's anexternal_idUUID) - follow
placementConventionsfor the directory when they are specific - otherwise use
decisions
Apply the
bm-writingskill before drafting the note. - write to
-
Clarify only if the choice itself is ambiguous. Do not ask for every field if the conversation already contains the rationale.
-
Write a
type: decisionnote (note_type: decision):status: openunless the user says it is accepted, superseded, or rejecteddecided: <ISO timestamp when known>project: <primaryProject if known>
-
Include:
- the decision
- context
- rationale
- alternatives considered
- consequences
- affected files, specs, issues, PRs, or notes
-
Confirm with the permalink. If this supersedes an older decision, update the old note or link it as
supersedes.

