Files
basicmachines-co-basic-memory/plugins/claude-code/schemas/decision.md
T
phernandez 3ff40d51fc feat(plugins): rebuild Claude Code plugin as the memory bridge (v0.4 Phase 1)
Reframes the Claude Code plugin as the bridge between Claude's working
memory and Basic Memory's durable graph, per plugins/claude-code/DESIGN.md.
This is the minimal-first vertical slice with a clean break from v0.3.x.

Added:
- hooks/session-start.sh — SessionStart brief: one structured `type: task`
  query against the configured (or default) project + always-on recall
  prompt. Plain stdout, silent if BM is absent.
- hooks/pre-compact.sh — PreCompact checkpoint: writes a `type: session`
  note before compaction (extractive). Only writes when primaryProject is
  set, so it never touches an un-opted-in graph.
- output-styles/basic-memory.md — capture reflexes (search-first, typed
  decision notes, cite permalinks); keep-coding-instructions: true.
- schemas/{session,decision,task}.md — picoschema seeds (validation: warn)
  so plugin-written notes are findable via metadata_filters. task mirrors
  the memory-tasks skill.
- settings.example.json — copyable config with sensible defaults.

Removed (clean break):
- the six bundled skills, the basic-memory-manager agent, the
  PreToolUse/PostToolUse write_note hooks, the basic-memory config-note
  convention, and PLUGIN.md. Equivalent workflows live in top-level skills/.

Other:
- Rewrote scripts/validate_claude_plugin.py for the new layout (hooks +
  output-style + schemas; agent dropped; skills optional). Passes
  `just package-check-claude-code` incl. `claude plugin validate --strict`.
- Rewrote README around the bridge story; updated CHANGELOG, marketplace
  descriptions, and the AGENTS.md package-check note.
- Hooks tested end-to-end against throwaway projects (brief surfaces tasks;
  checkpoint writes a queryable session note; both degrade silently).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-31 12:31:08 -05:00

1.7 KiB

title, type, entity, version, schema, settings
title type entity version schema settings
Decision schema Decision 1
decision rationale? alternative?(array) consequence?(array) context? affects?(array) supersedes?
string, the choice that was made string, why this choice over the alternatives string, options that were considered and not taken string, what this decision commits us to string, the situation that prompted the decision Entity, work or notes this decision bears on Entity, a prior decision this one replaces
validation frontmatter
warn
status?(enum, lifecycle of the decision) decided? project?
open
accepted
superseded
rejected
string, when the decision was made (ISO timestamp) string, the Basic Memory project this decision belongs to

Decision

A DecisionNote is a durable record of a real choice — one with alternatives and a rationale, not a passing preference. The Basic Memory plugin's output-style prompts Claude to capture these inline as decisions are made, and the future /basic-memory:decide command captures them explicitly.

Decisions are found by structured recall: search_notes(metadata_filters={"type": "decision", "status": "open"}).

What makes a good DecisionNote

  • decision — state the choice plainly.
  • rationale + alternative — why this, and what was rejected. This is the part that saves a future session from relitigating the same ground.
  • consequence — what the choice commits the work to.
  • affects / supersedes — relations that wire the decision into the graph.

Frontmatter

type: decision plus status make decisions queryable. Capture decisions sparingly — one note per genuine decision, not per opinion. Validation is warn, never blocking.