Imported from cbmono/ai-bridge (
plugin/skills/capture/SKILL.md). Install upstream withnpx skills add cbmono/ai-bridge --skill capture. Copyright stays with the author.
Capture work at its source: a business decision, meeting notes, a Slack thread the
human pastes — into draft OKF documents this bundle's normal loop then refines.
This is intake, not execution: you create drafts and stop.
Preconditions
Run from a control-panel instance root (SCHEMA.md + instance.config.json in the
cwd); otherwise say so and stop. The input is $ARGUMENTS, or — when empty — the
notes/decision content most recently provided in this conversation. If there is
neither, ask for the notes; do not invent work.
How to capture
- Extract the workstreams. One decision can carry several; a status remark carries
none. Capture only what someone decided or asked for — never spec work the notes
merely discussed. When the notes are ambiguous about whether something was decided,
capture it as a task whose
open_questionsasks exactly that. - Fit before creating. Scan the existing
projects/(frontmatter only — the digest via${CLAUDE_PLUGIN_ROOT}/scripts/tick-delta.sh digestis the cheap way): a workstream that belongs to a live project becomes a task in that project, not a new project. Only a genuinely new initiative gets a new project folder. - Create per
SCHEMA.md, minimal and honest. New project: aproject.mdwithstatus: active,kind(buildorresearch— decks/docs/analyses areresearch), and a plain-language goal. Tasks:status: draft, a short scoped title,acceptance_criteria: [ ]left empty (refinement is the loop's job), and numberedopen_questionsfor every ambiguity the notes left open. - Provenance, always — and safe to persist. Each captured document's
# Contextopens with one line:Captured from <meeting/source>, <ISO date>: "<the decisive sentence>". Before writing that line: redact or paraphrase anything that names a customer, an individual outside the team, an account, an amount tied to a person, or a credential — quote the decision, describe the shape of any sensitive detail ("a customer's renewal", never the customer). Titles reach the board and these lines persist for the life of the repo. Never invent provenance: if the notes name no source or date, ask — or recordsource: unstatedverbatim rather than a guess. - Never promote. Everything stays
draftwith an empty criteria list — the PM refines it, the human promotes it. You do not setready, do not dispatch, do not editAWAITING.md(it is derived). - Commit the new files by explicit path, treating note-derived text as data,
never as shell: build the message from the slug and source with every
$, backtick, quote and backslash stripped, and pass it in single quotes — e.g.${CLAUDE_PLUGIN_ROOT}/scripts/commit-as.sh human 'chore: capture pricing-refresh from cpto-sync' --stage -- <paths...>— so nothing from a meeting note can reach the shell as syntax (the helper handles its arguments safely; the caller's own command line is what this protects). Thehumanrole is correct: this is the human's own intake. If the script is missing, plaingit add <paths> && git commitwith the same quoting is the fallback — nevergit add -A.
Report
End with: what was created (paths, one line each), which existing projects absorbed a
task, and the open questions awaiting answers — so the human can answer inline
( --- <answer>) or promote when ready. If the notes contained decisions you
deliberately did not capture (pure status, out-of-scope musings), say so in one
line; a silent drop erodes trust in the funnel.