# Bm Decide

Capture a durable engineering decision in Basic Memory with rationale, alternatives...

- Repository: https://github.com/basicmachines-co/basic-memory (4440 stars)
- Category: Engineering
- License: AGPL-3.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add basicmachines-co/basic-memory --skill bm-decide -g -a claude-code -y`
Codex: `npx skills add basicmachines-co/basic-memory --skill bm-decide -g -a codex -y`
Cursor: `npx skills add basicmachines-co/basic-memory --skill bm-decide -g -a cursor -y`
Gemini CLI: `npx skills add basicmachines-co/basic-memory --skill bm-decide -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add basicmachines-co/basic-memory`

## Description

Capture a durable engineering decision in Basic Memory with rationale, alternatives, consequences, and affected work. Use when the user makes or asks to record a real choice, "let's go with X", "record this decision", or runs /basic-memory:bm-decide.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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

1. Resolve config: read the `basicMemory` block with the same precedence the
   hooks use. For the user-level base, append `settings.json` to the literal value
   of `CLAUDE_CONFIG_DIR` when that environment variable is present; do not trim
   it, expand `~`, or treat an empty value as unset. Use `~/.claude/settings.json`
   only when the variable is absent. Then the project's `.claude/settings.json`
   and `.claude/settings.local.json` override it per key:
   - write to `primaryProject` when set (pass it as `project`, including
     when it is an `external_id` UUID)
   - follow `placementConventions` for the directory when they are specific
   - otherwise use `decisions`

   Apply the `bm-writing` skill before drafting the note.

2. Clarify only if the choice itself is ambiguous. Do not ask for every field if
   the conversation already contains the rationale.

3. Write with `bm_write`: a `type: decision` note (`note_type: decision`):
   - `status: open` unless the user says it is accepted, superseded, or rejected
   - `decided: <ISO timestamp when known>`
   - `project: <primaryProject if known>`

4. Include:
   - the decision
   - context
   - rationale
   - alternatives considered
   - consequences
   - affected files, specs, issues, PRs, or notes

5. Confirm with the permalink. If this supersedes an older decision, update the old
   note or link it as `supersedes`.

