Write Useful Project Memory
Use this shared standard whenever a Claude Basic Memory skill or capture
reflex writes or substantially revises a note. This file is intentionally user-customizable:
edit the voice, emphasis, and preferred structure here to fit how you want to
remember your work.
Task-specific skills still own required metadata, schemas, evidence gathering,
and workflow. This skill shapes the note; it never overrides factual constraints.
Voice
- Write for a human or agent returning later and trying to understand what happened.
- Be clear, direct, warm, and technically honest.
- Prefer concrete observations over generic praise.
- Have a point of view when the evidence supports it. It is fine to call a
change elegant, messy, risky, boring, or satisfying when you explain why.
- Keep personality in service of memory, not performance.
Tell The Story
- Give the note a narrative spine: problem -> approach -> current state and impact.
- Explain why the approach works, how the system or workflow changed, and why
that difference matters.
- Name relevant tradeoffs, sharp edges, useful simplifications, removals, and
intentionally parked work.
- Prefer exact behavior, component names, paths, and commands over phrases such
as "made progress" or "updated the implementation."
- Use substantive prose for context and reasoning. Do not reduce the note to a
wall of bullets or a commit-by-commit changelog.
- Name the durable lesson when one exists — the constraint discovered, the
boundary made explicit, the shortcut future work should avoid. That is the
part that turns a status report into project memory.
- Match depth to the subject. A small remembered fact should remain small.
Anchor The Work
- When the note records repository work, capture where that work lives: the
project or repo, the git branch, and the PR or issue — plus the commit sha
when a specific commit matters.
- Put anchors the note's schema defines in frontmatter (coding-session
checkpoints require
repository, branch, and git_sha, with typed
pull-request fields); record the rest as observations, e.g.
- [branch] feat/bm-writing or - [pr] #1123.
- Only anchor what is relevant. A remembered fact with no repo context needs no
git anchors at all.
Preserve The Semantic Layer
- Distill durable facts under
## Observations as - [category] fact.
- Record decisions as
[decision] observations, not plain bullets in a separate
Decisions section.
- Put graph edges under
## Relations using - relation_type [[Target Note]].
Never represent a relation as an observation such as [relates_to].
- Add relations when they clarify context; do not manufacture targets merely to
make a note look connected.
Evidence Boundary
- Do not invent intent, impact, verification, decisions, or drama.
- State uncertainty and missing evidence plainly.
- Never claim a test or deployment passed unless it ran or the user supplied the result.
1---2name: bm-writing3description: Apply the user-customizable writing standard for Basic Memory notes created or substantially revised by Claude. Use with bm-remember, the basic-memory output style's decision captures, and other Basic Memory note-writing workflows.4---56# Write Useful Project Memory78Use this shared standard whenever a Claude Basic Memory skill or capture9reflex writes or substantially revises a note. This file is intentionally user-customizable:10edit the voice, emphasis, and preferred structure here to fit how you want to11remember your work.1213Task-specific skills still own required metadata, schemas, evidence gathering,14and workflow. This skill shapes the note; it never overrides factual constraints.1516## Voice1718- Write for a human or agent returning later and trying to understand what happened.19- Be clear, direct, warm, and technically honest.20- Prefer concrete observations over generic praise.21- Have a point of view when the evidence supports it. It is fine to call a22 change elegant, messy, risky, boring, or satisfying when you explain why.23- Keep personality in service of memory, not performance.2425## Tell The Story2627- Give the note a narrative spine: problem -> approach -> current state and impact.28- Explain why the approach works, how the system or workflow changed, and why29 that difference matters.30- Name relevant tradeoffs, sharp edges, useful simplifications, removals, and31 intentionally parked work.32- Prefer exact behavior, component names, paths, and commands over phrases such33 as "made progress" or "updated the implementation."34- Use substantive prose for context and reasoning. Do not reduce the note to a35 wall of bullets or a commit-by-commit changelog.36- Name the durable lesson when one exists — the constraint discovered, the37 boundary made explicit, the shortcut future work should avoid. That is the38 part that turns a status report into project memory.39- Match depth to the subject. A small remembered fact should remain small.4041## Anchor The Work4243- When the note records repository work, capture where that work lives: the44 project or repo, the git branch, and the PR or issue — plus the commit sha45 when a specific commit matters.46- Put anchors the note's schema defines in frontmatter (coding-session47 checkpoints require `repository`, `branch`, and `git_sha`, with typed48 pull-request fields); record the rest as observations, e.g.49 `- [branch] feat/bm-writing` or `- [pr] #1123`.50- Only anchor what is relevant. A remembered fact with no repo context needs no51 git anchors at all.5253## Preserve The Semantic Layer5455- Distill durable facts under `## Observations` as `- [category] fact`.56- Record decisions as `[decision]` observations, not plain bullets in a separate57 Decisions section.58- Put graph edges under `## Relations` using `- relation_type [[Target Note]]`.59 Never represent a relation as an observation such as `[relates_to]`.60- Add relations when they clarify context; do not manufacture targets merely to61 make a note look connected.6263## Evidence Boundary6465- Do not invent intent, impact, verification, decisions, or drama.66- State uncertainty and missing evidence plainly.67- Never claim a test or deployment passed unless it ran or the user supplied the result.