| name | journal |
| description | Capture rough notes locally with zero ceremony, then export them to their right permanent home. Use when the user wants to jot/park/stash a thought mid-task without derailing ("note to self", "remember to", "journal this"), or when they later want to export/file/route parked notes into an issue, spec, ADR, CONTEXT term, or docs. Capture is local and gitignored; export delegates to whichever existing skill owns the note's permanent home. |
Journal
Two clearly-separated halves:
- Capture — local, formless, git-free. A note drops into a gitignored
.journal/ folder. Zero ceremony, nothing to push.
- Export — a deliberate, opt-in dispatcher. When a note is ripe, propose the best-fit destination and hand it off to whichever existing skill already owns that kind of output.
The journal captures and routes only. It never reimplements formatting, ticketing, branching, or PRs, and never pushes or contacts GitHub itself — every outward action is owned by the export flow the user chose.
Terms Journal, entry, and category are defined in docs/agents/glossary.md.
Storage
.journal/ at the repo root, gitignored (kept separate from .context/, which holds cloned reference repos).
- Categories are subfolders that cluster related entries; entries are note files.
- Loose entries at the journal root are fine — capture stays frictionless.
Capture
Run the helper — it creates .journal/ if needed and writes a timestamped entry:
.claude/skills/journal/scripts/capture.sh -c <category> "note text"
Omit -c for a loose root entry; omit the text to create an empty entry to hand-edit. Capture never invokes git, GitHub, or any downstream skill — just write the file and report where it landed.
Export
The dispatcher. Work through these steps in order:
- Read the
.journal/ layout and the content of the entries.
- Propose grouping — for each note or cluster, one of:
- standalone — one entry → one output.
- merge (many-to-one) — a category's entries combine into one coherent output.
- split (one-to-many) — a single entry holding distinct notes fans out to several destinations.
Show the proposal; let the user adjust. Do not hand-sort silently.
- Pick the flow for each output (flow-picker below).
- Select the destination, biasing hard toward an existing docs area/section. A brand-new section is a last resort and is always surfaced for approval.
- Confirm gate (unconditional). Show the destination and the reshaped text, then wait for approval before anything is created — existing area or not. Nothing lands silently.
- Delegate to the chosen skill. Never reimplement its formatting, conventions, ticketing, or GitHub contact.
- Cleanup prompt. After a successful export, ask whether to delete the source entry. Default is keep.
Flow-picker
Every export destination is an existing skill. Match the note to the skill whose own description fits its permanent home, then delegate — the journal only routes. Read the available skills and how they fit the idea-to-ship flow in the Agent skills section of CLAUDE.md and each skill's own description; don't mirror that list here, it drifts as skills are added or renamed.
The delegated skill owns everything past the handoff — formatting, ticketing, GitHub contact, and its conventions (issue/label rules in docs/agents/issue-tracker.md, term definitions in docs/agents/glossary.md).
Guardrails
- Capture touches nothing but the filesystem under the gitignored
.journal/ folder at the repo root.
- The journal never pushes, opens PRs, or contacts GitHub on its own.
- Never create anything on export without passing the confirm gate first.
- Prefer an existing docs area over a new one; surface any new section for approval.