Skip to content

feat(sidenote): self-contained capture + checkbox lifecycle; ignore the parking file#21

Merged
pallaoro merged 6 commits into
mainfrom
sidenote-command-sometimes-i-think-about
Jul 17, 2026
Merged

feat(sidenote): self-contained capture + checkbox lifecycle; ignore the parking file#21
pallaoro merged 6 commits into
mainfrom
sidenote-command-sometimes-i-think-about

Conversation

@pallaoro

Copy link
Copy Markdown
Member

Problem

A sidenote is logged verbatim — which means it's full of deictic references ("this is racy", "fix it later", "here") that only resolve in the session that wrote them. Read cold by another session or agent, the note is meaningless. (Confirmed unsolved in Claude Code itself.)

Changes

  • Self-contained capture (commands/sidenote.md): each entry now carries a one-line anchor — task in progress · the file/area "this/here" points at · branch@sha — drawn only from context already in hand. Explicit guard: filling the anchor must not open files, grep, or investigate the note's subject, so the park contract holds.
  • Checkbox lifecycle: entries use - [ ] / - [x]. A bare /sidenote flushes everything not checked off (so older un-checkboxed bullets still surface — no silent drops).
  • .gitignore (new): excludes .claude/sidenotes.md. Guards against greybeard's own /merge SOP (git add -A) sweeping personal parked thoughts into shared history — a near-miss already occurred. Native primitive, 2 lines, reversible.
  • README: synced — mentions the anchor, and drops the stale "add it to .gitignore yourself" line (it's ignored by default now).

Decisions (via /scalable)

  • Dropped reusing Claude auto-memory for storage: fails Portability (Claude-only, greybeard targets 8 agents) and inherits the wrong behavior (auto-memory auto-applies as guidance; sidenotes must stay parked). Storage stays a plain per-worktree file.
  • The repo .gitignore guards greybeard's own repo only; a user-facing guard (store outside the working tree) is a separate, deferred product call.

Verification

npm run check-sync green (guidelines source untouched); parking file confirmed absent from git status; command reads coherently end-to-end. Prompt/doc change — no shell-out surface beyond that.

pallaoro added 6 commits July 17, 2026 08:55
… current task

A passing thought dropped mid-task reads as a new request, so the agent
rushes the big task to get to it. /sidenote reframes it as a parked
later-task: log it verbatim to .claude/sidenotes.md, one-line ack, resume
with scope and pace unchanged. Bare /sidenote flushes the list. Wired into
the installer (copy on install, remove on uninstall) and documented in
the README alongside /scalable, including the plain-text SIDENOTE: prefix
for agents without slash commands.
fenceInto only stripped its own <!-- karpathy-skills --> block before
re-appending, so running the installer against a file where the guidelines
were hand-merged (verbatim '## 1. Think Before Coding' heading, no markers)
appended a second full copy. Detect that heading outside our block and skip
with a warning instead; wire up the previously-dead --force flag as the
override. Mirrors the activate hook's dedup so both paths behave the same.
…he parking file

A verbatim thought parked mid-task is full of 'this / here / it' that dangles
when another session or agent reads it cold. Each entry now carries a one-line
anchor (task in progress, the file it points at, branch@sha) drawn only from
context already in hand — no investigating, so the park contract holds. Entries
use - [ ] / - [x]; a bare /sidenote flushes everything not checked off, so older
un-checkboxed bullets still surface. Add a repo .gitignore for .claude/sidenotes.md
so 'git add -A' can't sweep personal parked thoughts into shared history, and sync
the README to match.
@pallaoro
pallaoro merged commit aa23607 into main Jul 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant