Do not make any changes until you have 95% confidence in what you need to build. Ask the user questions until you reach that confidence level. Write the plan out and confirm with the user before starting.
Run the relevant tests before finishing any edit:
npm run test:ts # TypeScript tests (must pass)
npm run test:tui # Go tests (must pass)
npm run typecheck # type checking (must pass)
npm run lint # all linting (advisory)Read @.agents/TESTING.md
Read @.agents/SETUP.md
Read @.agents/STRUCTURE.md
Read @.agents/PIPELINE.md
Read @.agents/TAPES.md
Read @.agents/TUI.md
Read @.agents/TUI_UI.md
Read @.agents/TIMELINE.md
Session memory lives in .claude/memory/. The index is .claude/memory/MEMORY.md.
Claude assists with release preparation but never commits or tags. The user handles all git operations. Before a release is ready, confirm:
- Version bump — update
package.jsonandpackage-lock.json(both the rootversionfield andpackages[""].version) to the new semver CHANGELOG.md— add a## [x.y.z] - YYYY-MM-DDheading as the first version entry, with a non-empty body. Add a comparison link at the bottomRELEASE_NOTES.md— for patch releases the title must be# Release notes — v<major>.<minor>.x; for minor/major it must be# Release notes — v<version>(exact). The body must be non-empty- Patch vs minor/major — patch releases (
x.y.ZwhereZ > 0) skip the release tape and archive requirements. Minor/major releases needstudio/demo/release/v<version>/tape.yamland a copy ofRELEASE_NOTES.mdin the same directory - Verify — run
npm run release:checkto confirm all metadata is aligned before handing back to the user to commit and tag
When something fails again and again, when the user has to re-explain or tell you off, or when you or the user find a workaround for a platform/tool limitation, add a one-line bullet point here. Keep each bullet point under 15 words. No explanations. Only add things that will save time in future sessions. Inform the user when you add new points.
- Stop rerunning validation after the user confirms it already passed.
- Never commit without explicit user instruction. One clean commit per PR.
__dirname ?? fallbackthrows in ESM — guard with an existence check, not??.test:smokeruns builtdist/cli.jsagainst real tapes;tsxmasks ESM-only bugs.- VHS
Typetypes characters verbatim —\\is two backslashes, not one. Don't escape\inescapeVhs. - VHS
Type "..."has no escape for"— schema rejects commands containing double quotes. release:checktape guard skips patch releases (x.y.Z > 0); only minor/major need a release video.- Shell escapes in
command:fields need$'\033c'not'\033c'— single quotes suppress escape sequences.