Skip to content
Development
Skill

/cad-capture

Capture a phase-linked todo, a seed idea for a future milestone, or a note, without losing your place - .planning/CAPTURE.md, or --cadence for friction with Cadence itself

From plugin
cadence
834 skills30 agents3 hooks

Claude Code

$ npx -y skills add crenshawdev/cadence --skill cad-capture --agent claude-code

SKILL.md

cad-capture.SKILL.md
name: cad-capture
description: "Capture a phase-linked todo, a seed idea for a future milestone, or a note, without losing your place - .planning/CAPTURE.md, or --cadence for friction with Cadence itself"
argument-hint: "[todo | seed | note] <text> [--phase N] [--cadence]"
allowed-tools:
  - Read
  - AskUserQuestion

<objective> Get a thought out of your head and into the right place without derailing. Three kinds, landing in `.planning/CAPTURE.md` - or, with `--cadence`, in Cadence's own queue (step 4), because friction with CADENCE noticed while working on somebody else's project has to leave that project to reach Cadence:

  • **todo** - an actionable item, tagged to a phase, so it resurfaces where it

matters. This is the phase-linked queue mem-* lacks and the reason this exists.

  • **seed** - an idea for a future phase or milestone, parked in the backlog.
  • **note** - a free note; lands in the file like the rest. With

`memory.backend: builtin` (the default) the note becomes recallable - it is still written here, `builtin` only reads `.planning/` back, never relocates the write. </objective>

<process> 1. **Parse** `$ARGUMENTS`: leading `todo | seed | note` (default `todo` if omitted), the text, an optional `--phase N`, and an optional `--cadence` - this note is about CADENCE, not about the project you are in, so it goes to step 4 instead of steps 2-3. If a todo has no `--phase`, default to the current phase from the STATE cursor (`cursor get`); if the cursor is absent or unparseable, capture it unphased - pass no `--phase` at all - rather than guessing a phase or stopping. Under `--cadence` skip the cursor: a phase number belongs to this project's roadmap and means nothing in Cadence's queue.

2. **Capture through the seam** - one call, and the only way this command reaches `.planning/CAPTURE.md`:

   node "${CLAUDE_PLUGIN_ROOT}/cadence-core/bin/planning.mjs" capture --kind <kind> --text-file <path> --phase <N>

Write the sentence to a scratch file and pass the PATH, never interpolate it (caller-derived text - `cadence-core/references/conventions.md`). `--text` remains for a human at a shell.

Pass `--phase` only with `--kind todo`, and leave it off entirely when step 1 found no phase. The seam owns every byte: it creates the file with its headings when absent, puts the bullet under the one heading that kind owns, stamps a note's date itself, and holds a lock so a concurrent writer cannot erase the line. Do not compose the bullet yourself and do not reach that file with any other tool - a second statement of the format is how the queue's writer and its reader drifted apart, and five filed items were lost to it.

An `ok:false` return STOPS the capture: report its `reason` back with the user's own sentence, so nothing is lost and they can re-run it, and skip step 3. A bullet that did not land is never reported as captured. `capture-locked` means another writer holds the queue at this instant, and running the call again is the whole fix.

3. **Persist** - the project-directed arm only, never under `--cadence`. Stage ONLY `.planning/CAPTURE.md` and commit `docs: capture <kind>` (protected-branch guard applies) - this never touches the user's in-flight changes. Report the one line captured and where.

4. **`--cadence`: the note is about Cadence itself.** REPLACES steps 2-3.

  • **The queue** sits beside the global config layer: `CAPTURE.md` in the

directory part of `CADENCE_GLOBAL_CONFIG` when that variable is set, in `~/.claude/cadence/` otherwise - the resolution `cadence-core/bin/lib/config-merge.mjs` performs for the config file. Never `${CLAUDE_PLUGIN_ROOT}`: the next upgrade orphans a write there. Resolve that path yourself and hand it to the same seam, which creates the file and its directory when absent, so one writer serves both queues:

     node "${CLAUDE_PLUGIN_ROOT}/cadence-core/bin/planning.mjs" capture --kind <kind> --text-file <path> --file <resolved dir>/CAPTURE.md
  • **The entry** is the user's own sentence plus two fields, carried inside

the `--text-file` sentence and never a phase: `<text> (host: <host>, command: /cad-<name>)`. HOST: this repo's `origin` URL (`git remote get-url origin`), else the basename of the root from `git rev-parse --show-toplevel`, else the absolute working directory when this is not a repo - `origin` first because a worktree and a detached checkout both still resolve through it. COMMAND: the `/cad-*` whose behaviour caused the friction, from the invocation when the user names one, asked for once when not.

  • **Quote nothing else from this tree** - no diff, no file contents, no path

out of the user's own work. The seam strips URL credentials from the entry on this arm, and nothing else; this rule covers everything else.

  • **Three rails.** (a) NO commit - not in this repo, not in the global

directory, which is not a working tree at all - so step 3 does not run. (b) Nothing is transmitted; a note meant for a maintainer who is not the user stays a manual export the user makes. (c) If that directory cannot be resolved (`homedir()` throws under an arbitrary UID) or the seam refuses the path, say so and STOP - NEVER fall back to `.planning/CAPTURE.md`, since a note landing in the host repo is the failure this arm exists to close. Report the one line captured and the file it landed in. </process>

<guardrails>

  • Do not act on the item now - capture is parking, not doing. A todo is queued,

not executed.

  • Stage only CAPTURE.md; never sweep the user's working changes into the commit.

</guardrails>

Read more
@crenshawdev
Ships withcadence

Appearance is cheap. Verification is the work. Cadence is for developers using Claude Code on software they will still own after the session ends. Claude can write a convincing plan, produce working code, and tell you the job is finished.

834 skills30 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
8
Star history of crenshawdev/cadence on GitHub, a chart by star-history.com

Other skills on cadence.

cad-adopt

cad-adopt

Initialize .planning/ from a repo that already exists - PROJECT.md, REQUIREMENTS.md and a remaining-work ROADMAP.md derived from…

@crenshawdev@crenshawdevInstall Skill
cad-audit

cad-audit

Pre-ship traceability audit - every requirement traced to a phase, plan and verification, orphan detection both directions, a…

@crenshawdev@crenshawdevInstall Skill
cad-config

cad-config

Configure Cadence's config.json - workflow toggles, the per-role model and effort interview, and interactive cross-model review…

@crenshawdev@crenshawdevInstall Skill
cad-context

cad-context

Gather phase context before planning - codebase assumptions, locked decisions, falsifiable acceptance criteria - in one pass

@crenshawdev@crenshawdevInstall Skill
cad-coverage

cad-coverage

Find a completed phase's requirements with no failing-capable test coverage and generate tests to close the gaps, in the…

@crenshawdev@crenshawdevInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about cad-capture.

Which coding agents can use cad-capture?
cad-capture installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.