Notes & Handoffs
dot includes a repository notes system used by the OpenCode note commands. Notes live in a notes vault git repo (~/Documents/notes by default, overridable with the NOTES environment variable). Inside the vault, notes are filed per repository under repo-notes/{owner}/{repo}/, keyed off the current git remote and branch.
There are two ways into the same vault:
- The
dot notes/dot noteCLI below, for humans browsing and editing notes directly. - The OpenCode integration (slash commands, plugins, and the handoff skill), for agents creating and loading notes during a session.
Browse notes
Section titled “Browse notes”dot notes # two-pane repository notes browser (TUI)dot notes --all # browse every repo-notes directory (or press g in the TUI)dot notes list --all # CLI listing grouped by repoUtility subcommands:
dot notes root # print the notes vault rootdot notes root --repo-notes # print the repository notes directorydot notes context --command <name> # print the OpenCode notes context blockdot notes list --format json # list current repo notes as JSONHandoffs
Section titled “Handoffs”Handoffs are notes tagged handoff, used to pass context between agents or sessions.
dot handoffs # notes browser filtered to handoff notes (TUI)dot handoffs --all # handoffs across every repodot handoffs --list # list handoff notes to stdoutdot handoff is an alias for dot handoffs.
Read / write note files
Section titled “Read / write note files”dot note read --path <path> # print a note filedot note write --path <path> --stdin # write stdin to a note file and commit itdot note delete --path <path> # delete a note file and commit itWrites and deletes are committed to the notes vault when possible.
OpenCode integration
Section titled “OpenCode integration”Agents do not touch the vault with the dot note CLI directly. The same files are created and loaded inside an OpenCode session through a set of slash commands, backed by two plugins.
Slash commands
Section titled “Slash commands”| Command | What it does |
|---|---|
/note-create | Summarise the current conversation into a new note for this repo. |
/note-append | Add new content to an existing note (pick from a ranked list). |
/note-reference | Load one or more notes, any skills they reference, and suggested next steps into context. |
/notes-list | List this repo’s notes, optionally filtered by tag. |
/notes-search | Rank this repo’s notes against a topic, keyword, or tag. |
/handoff | Write a handoff document for the next agent session. |
/handoffs-list | List handoff notes for this repo (equivalent to /notes-list handoff). |
See the commands reference for the full list.
How it works
Section titled “How it works”Two OpenCode plugins wire the commands to the vault:
repo-notesinjects a<repo-note-context>block at the top of each note command. It runsdot notes context --command <name>, which resolves the owner, repo, and branch from git and reports the target notes path. For listing and search commands it also includes existing note metadata;/note-referenceadditionally gets the full note bodies. The plugin also registers thenote_read,note_write,note_delete, andnote_listtools, each a thin wrapper over thedot noteCLI.notes-guardblocks the built-inread,write,edit,grep,glob,list, andbashtools from touching the vault, so thenote_*tools are the only way in.
So a typical create flow is: run /note-create → repo-notes injects the repo context → the command summarises the conversation and calls note_write → dot note write validates the path, writes the file, and commits it to the vault.
Handoffs
Section titled “Handoffs”/handoff defers to the handoff skill, which compacts the conversation into a handoff-{slug}.md note tagged handoff. For work spanning multiple phases, branches, or PRs, the skill offers to split the handoff rather than writing one combined note, using a shared handoff-{feature}-{phase} naming convention so related handoffs group together under dot handoffs --list.
Configuration
Section titled “Configuration”NOTES— notes vault git repo (preferred; default~/Documents/notes).DOT_NOTES_DIR— compatibility override used whenNOTESis unset.