5.1 KiB
5.1 KiB
Notes rules
Each project keeps its local working notes in .notes/ at the project root: design docs, work that spans sessions, and questions parked for later. The notes are never committed to the project. The notes skill does the mechanics (creating the dir, picking ids, close-out).
Layout
.notes/ # its own git repo, never pushed
README.md # one line pointing here
index.html # generated: the overview, links only
notes.css # generated: copy of the skill's stylesheet every page uses
_pages/ # generated: questions, briefs and other markdown rendered to pages
_out/ # generated: other/out/ made self-contained, css inlined, for sending
docs/ # dNNN-slug.html, or dNNN-slug/index.html with its assets
work/ # wNNN-slug/ while in flight, removed at close-out
questions/ # qNNN-slug.md, removed when settled
other/
in/ # placed by the user
out/ # prepared for someone else
- created on first need (the first doc, work item or question in a project), not up front
- the generated files are rebuilt by the skill's
notes.pyon every commit and never committed; browse every project's notes at once withnotes.py serve(one port, roots$NOTES_ROOTS, else~/git), or one project withpython -m http.server -d .notes - every page has a back link to the index; ids like
d007orq014in markdown become links
Numbering
<letter><NNN>-<slug>:ddocs,wwork,qquestions; each letter has its own counter, three digits, lowercase kebab slug- numbers are never reused, including numbers of deleted items: the next id is the highest ever used in that bucket (files plus
git -C .notes log --all --name-only) + 1 - refer to items by id everywhere: chat, other notes, commit subjects ("see q014", "per d007")
other/is not numbered
docs
- point-in-time design docs: plans, proposals, research, reviews; html per the output format rules
- one look for all docs: link
notes.css, startmain.pagewithnav.back, use only the components documented at the top ofnotes.css, no<style>or font links of their own; the skill shows the skeleton - a doc with assets becomes a folder:
dNNN-slug/index.htmlplus its files, linked relatively - a status line sits directly under the title as
<p class="status current|stale|superseded">…</p>(notes.pyreads it):status: current,status: partly stale (<what changed>, <date>)orstatus: superseded by dNNN (<date>), withdNNNa relative link to the newer doc - once done, a doc's body doesn't change; only its status line does. a new design gets a new doc
work
- one folder per piece of work that spans sessions; a single-session task gets none
- typical files:
brief.md(goal, done when, scope, decisions to ask),plan.html(the proposal to approve),report.md(what was built, what differs, leftovers), plus research the work needed - close-out runs in the same session the work ends (branch merged or work dropped):
- lasting design goes to
docs/: a new doc, or a status line on an existing one - leftovers go to
questions/, one each, withorigin: wNNN - delete the folder and commit
- lasting design goes to
- a folder untouched for weeks with no open branch gets flagged to the user, not closed silently
questions
- one file per item: something deferred, handed off or out of scope for the current session
- frontmatter:
created(date),origin(wNNN,dNNN, a branch, or<commit>:<path>in.notes),status: open - body: what is open, why it matters, what is known, where to look
- before acting on one, check the repo for whether it still applies
- settled: fold the outcome into a doc or a work item if it is worth keeping, delete the file, commit with a subject saying how it was settled
other
in/: read only when the user points at itout/: written for a person, not for later sessions; don't treat it as context- html in
out/uses the samenotes.cssand components as docs, without an id or status line; the copy that leaves is the generated self-contained one in_out/ out/holds documents and the few small files that go with them (a script, a config snippet); bulk output for a person (screenshot sets, builds, logs) does not go into.notes/at all: in a sandbox vm it goes to the host handoff mount once there is one, until then ask where
History
.notes/is its own git repo with no remote, its.gitignoreholding the generated files; commit after each change set, subject line only, naming the ids touched (q014: settled by a3f4573)- git history replaces archives: delete instead of moving to an archive folder, rewrite instead of keeping dated copies
- never stage
.notes/from the project repo: stage project paths explicitly, nevergit add .orgit add -Athere - the host's global gitignore hides
.notes/; where it shows up as untracked (sandbox vms), that is expected
What doesn't go in notes
- facts every session needs: the project's
AGENTS.md/CLAUDE.md, or memory when they are personal - anything teammates need: the project repo
- secrets
- committed project files never reference
.notes/paths