/flow-next-capture
Synthesize the current conversation context into a flow-next spec at `.flow/specs/<spec-id>.md` via `flowctl spec create --plan-file` — agent-native, source-tagged, with a saved-spec summary and editor follow-up. Triggers on /flow-next:capture, "capture spec", "lock down what we
Claude Code
$ npx -y skills add gmickel/flow-next --skill flow-next-capture --agent claude-code
Codex
$ npx skills add gmickel/flow-next --skill flow-next-capture -a codex -y
Cursor
$ npx skills add gmickel/flow-next --skill flow-next-capture -a cursor -y
Gemini CLI
$ npx skills add gmickel/flow-next --skill flow-next-capture -a gemini-cli -y
GitHub Copilot
$ npx skills add gmickel/flow-next --skill flow-next-capture -a github-copilot -y
OpenCode
$ npx skills add gmickel/flow-next --skill flow-next-capture -a opencode -y
Windsurf
$ npx skills add gmickel/flow-next --skill flow-next-capture -a windsurf -y
SKILL.md
flow-next-capture.SKILL.mdname: flow-next-capture
description: Synthesize the current conversation context into a flow-next spec at `.flow/specs/<spec-id>.md` via `flowctl spec create --plan-file` — agent-native, source-tagged, with a saved-spec summary and editor follow-up. Triggers on /flow-next:capture, "capture spec", "lock down what we discussed", "make a spec from this conversation", "convert conversation to spec". Optional `mode:autofix` token runs without questions and requires `--yes` to write. Optional `--rewrite <spec-id>` overwrites an existing spec; `--from-compacted-ok` overrides the incomplete-evidence refusal after compaction; `--override-strategy` proceeds despite a contradiction with an active STRATEGY.md track (and prompts to record the override as a decision); `--no-plan` sets the spec-level `no_plan` field after the write (explicit opt-in on a user invocation, never inferred there); `from:flow` marks a run dispatched by `/flow-next:flow`, where capture applies the shared plan-versus-no-plan rule and sets the field itself when the rule resolves to direct; `from:goal` marks a `/flow-next:flow --goal` run, which writes without asking from a goal source or for a goal's child.
user-invocable: false
allowed-tools: AskUserQuestion, Read, Bash, Grep, Glob, Write, Edit, Task
/flow-next:capture — agent-native conversation → spec
A discussion (or a `/flow-next:prospect` survivor) often holds a complete spec that never gets written down, and the next session loses it. Capture is the synthesis step: the host agent extracts the user's turns, drafts a spec against the resolved template, **tags only what it paraphrased or inferred** (`[paraphrase]` / `[inferred]` / `[strategy:<track>]`; the user's verbatim words stay untagged), writes it through flowctl, prints a compact summary, and offers the saved file in the editor ([docs/read-back.md](../../docs/read-back.md)). The capture request authorizes the write; substantive choices still get short questions. No Python synthesizer, no model subprocess.
flowctl supplies thin plumbing (`spec create`, `spec set-plan`, `spec set-branch`, `memory search`) plus the `chart link-spec` callback after a chart-briefing capture. Capture never writes chart files or a chart's `ready` flag; chart never writes `.flow/specs`.
Clear ideas and finished chart briefings route here; capture never manufactures a chart for clear work. Unsure: `/flow-next:flow --explain`.
**Read [workflow.md](workflow.md) for the phases and [phases.md](phases.md) for the source tags.** Branch-specific machinery lives in `references/*.md`, loaded only when its gate fires.
Read [working-rules.md](../../references/working-rules.md) first unless you already have this run; it holds for every step of this skill.
Preamble
**CRITICAL: flowctl is BUNDLED — NOT installed globally.** `which flowctl` will fail (expected). workflow.md's Preamble defines `$FLOWCTL`; later blocks (there and in `phases.md`) use it.
**Inline skill (no `context: fork`)** — `AskUserQuestion` must stay reachable across phases; subagents cannot call blocking question tools.
Mode Detection
Parse `$ARGUMENTS` for the literal tokens `mode:autofix`, `from:flow` and `from:goal` and the flags `--rewrite <spec-id>`, `--from-compacted-ok`, `--yes`, `--override-strategy`, `--no-plan`. Strip recognized tokens; the remainder is ignored (the conversation is the input), except under `from:goal`, where it names the goal or its source.
RAW_ARGS="$ARGUMENTS"
MODE="interactive"
REWRITE_TARGET=""
FROM_COMPACTED_OK=0
COMMIT_YES=0
OVERRIDE_STRATEGY=0
if [[ "$RAW_ARGS" == *"mode:autofix"* ]]; then
MODE="autofix"
RAW_ARGS="${RAW_ARGS//mode:autofix/}"
fi
if [ -n "${ZSH_VERSION:-}" ]; then setopt BASH_REMATCH KSH_ARRAYS; fi # zsh: bash-style regex captures
if [[ "$RAW_ARGS" =~ --rewrite[[:space:]]+([^[:space:]]+) ]]; then
REWRITE_TARGET="${BASH_REMATCH[1]}"
RAW_ARGS="${RAW_ARGS//--rewrite ${REWRITE_TARGET}/}"
fi
if [[ "$RAW_ARGS" == *"--from-compacted-ok"* ]]; then
FROM_COMPACTED_OK=1
RAW_ARGS="${RAW_ARGS//--from-compacted-ok/}"
fi
# --yes (autofix write gate), --override-strategy, --no-plan, from:flow and
# from:goal authorize durable writes, so they are EXACT-token matches: lookalikes
# ("--yesterday", "--no-planning", "from:flowchart", "from:goals") stay in the remainder.
NO_PLAN_OPT=0
FROM_FLOW=0
FROM_GOAL=0
CLEANED_ARGS=""
for TOK in $(printf '%s\n' "$RAW_ARGS"); do
if [ "$TOK" = "--yes" ]; then
COMMIT_YES=1
elif [ "$TOK" = "--override-strategy" ]; then
OVERRIDE_STRATEGY=1
elif [ "$TOK" = "--no-plan" ]; then
NO_PLAN_OPT=1
elif [ "$TOK" = "from:flow" ]; then
FROM_FLOW=1
elif [ "$TOK" = "from:goal" ]; then
FROM_GOAL=1
else
CLEANED_ARGS="$CLEANED_ARGS $TOK"
fi
done
RAW_ARGS="$CLEANED_ARGS"
# from:goal is an unattended write the --goal invocation already consented to.
if [ "$FROM_GOAL" = "1" ]; then
MODE="autofix"
COMMIT_YES=1
echo "GATE ACTIVE — STOP. Read references/from-goal.md before continuing."
fi
if [ "$MODE" = "autofix" ]; then
echo "GATE ACTIVE — STOP. Read references/autofix-mode.md before continuing."
fi # default branch: bare no-op — NO link, NO read path| Mode | When | Behavior | |------|------|----------| | **Interactive** (default) | User is at the terminal | Asks on duplicates and must-ask cases; writes the spec, shows its summary, offers the editor; no generic write approval | | **Autofix** (`mode:autofix`) | Batch or scripted invocation | No questions; every ask becomes exit 2; writes only with `--yes` |
When the sentinel prints, read [references/autofix-mode.md](references/autofix-mode.md) before Phase 0; it owns the per-phase autofix rules. Under `from:goal`, read [references/from-goal.md](references/from-goal.md) as well; it says where a goal run's source differs. On the interactive path, read nothing.
Questions (interactive only)
Interactive capture follows the working rules' attended contract, plus:
- Use `AskUserQuestion` (load
Read more
name: flow-next-capture description: Synthesize the current conversation context into a flow-next spec at `.flow/specs/<spec-id>.md` via `flowctl spec create --plan-file` — agent-native, source-tagged, with a saved-spec summary and editor follow-up. Triggers on /flow-next:capture, "capture spec", "lock down what we discussed", "make a spec from this conversation", "convert conversation to spec". Optional `mode:autofix` token runs without questions and requires `--yes` to write. Optional `--rewrite <spec-id>` overwrites an existing spec; `--from-compacted-ok` overrides the incomplete-evidence refusal after compaction; `--override-strategy` proceeds despite a contradiction with an active STRATEGY.md track (and prompts to record the override as a decision); `--no-plan` sets the spec-level `no_plan` field after the write (explicit opt-in on a user invocation, never inferred there); `from:flow` marks a run dispatched by `/flow-next:flow`, where capture applies the shared plan-versus-no-plan rule and sets the field itself when the rule resolves to direct; `from:goal` marks a `/flow-next:flow --goal` run, which writes without asking from a goal source or for a goal's child. user-invocable: false allowed-tools: AskUserQuestion, Read, Bash, Grep, Glob, Write, Edit, Task
/flow-next:capture — agent-native conversation → spec
A discussion (or a `/flow-next:prospect` survivor) often holds a complete spec that never gets written down, and the next session loses it. Capture is the synthesis step: the host agent extracts the user's turns, drafts a spec against the resolved template, **tags only what it paraphrased or inferred** (`[paraphrase]` / `[inferred]` / `[strategy:<track>]`; the user's verbatim words stay untagged), writes it through flowctl, prints a compact summary, and offers the saved file in the editor ([docs/read-back.md](../../docs/read-back.md)). The capture request authorizes the write; substantive choices still get short questions. No Python synthesizer, no model subprocess.
flowctl supplies thin plumbing (`spec create`, `spec set-plan`, `spec set-branch`, `memory search`) plus the `chart link-spec` callback after a chart-briefing capture. Capture never writes chart files or a chart's `ready` flag; chart never writes `.flow/specs`.
Clear ideas and finished chart briefings route here; capture never manufactures a chart for clear work. Unsure: `/flow-next:flow --explain`.
**Read [workflow.md](workflow.md) for the phases and [phases.md](phases.md) for the source tags.** Branch-specific machinery lives in `references/*.md`, loaded only when its gate fires.
Read [working-rules.md](../../references/working-rules.md) first unless you already have this run; it holds for every step of this skill.
Preamble
**CRITICAL: flowctl is BUNDLED — NOT installed globally.** `which flowctl` will fail (expected). workflow.md's Preamble defines `$FLOWCTL`; later blocks (there and in `phases.md`) use it.
**Inline skill (no `context: fork`)** — `AskUserQuestion` must stay reachable across phases; subagents cannot call blocking question tools.
Mode Detection
Parse `$ARGUMENTS` for the literal tokens `mode:autofix`, `from:flow` and `from:goal` and the flags `--rewrite <spec-id>`, `--from-compacted-ok`, `--yes`, `--override-strategy`, `--no-plan`. Strip recognized tokens; the remainder is ignored (the conversation is the input), except under `from:goal`, where it names the goal or its source.
RAW_ARGS="$ARGUMENTS"
MODE="interactive"
REWRITE_TARGET=""
FROM_COMPACTED_OK=0
COMMIT_YES=0
OVERRIDE_STRATEGY=0
if [[ "$RAW_ARGS" == *"mode:autofix"* ]]; then
MODE="autofix"
RAW_ARGS="${RAW_ARGS//mode:autofix/}"
fi
if [ -n "${ZSH_VERSION:-}" ]; then setopt BASH_REMATCH KSH_ARRAYS; fi # zsh: bash-style regex captures
if [[ "$RAW_ARGS" =~ --rewrite[[:space:]]+([^[:space:]]+) ]]; then
REWRITE_TARGET="${BASH_REMATCH[1]}"
RAW_ARGS="${RAW_ARGS//--rewrite ${REWRITE_TARGET}/}"
fi
if [[ "$RAW_ARGS" == *"--from-compacted-ok"* ]]; then
FROM_COMPACTED_OK=1
RAW_ARGS="${RAW_ARGS//--from-compacted-ok/}"
fi
# --yes (autofix write gate), --override-strategy, --no-plan, from:flow and
# from:goal authorize durable writes, so they are EXACT-token matches: lookalikes
# ("--yesterday", "--no-planning", "from:flowchart", "from:goals") stay in the remainder.
NO_PLAN_OPT=0
FROM_FLOW=0
FROM_GOAL=0
CLEANED_ARGS=""
for TOK in $(printf '%s\n' "$RAW_ARGS"); do
if [ "$TOK" = "--yes" ]; then
COMMIT_YES=1
elif [ "$TOK" = "--override-strategy" ]; then
OVERRIDE_STRATEGY=1
elif [ "$TOK" = "--no-plan" ]; then
NO_PLAN_OPT=1
elif [ "$TOK" = "from:flow" ]; then
FROM_FLOW=1
elif [ "$TOK" = "from:goal" ]; then
FROM_GOAL=1
else
CLEANED_ARGS="$CLEANED_ARGS $TOK"
fi
done
RAW_ARGS="$CLEANED_ARGS"
# from:goal is an unattended write the --goal invocation already consented to.
if [ "$FROM_GOAL" = "1" ]; then
MODE="autofix"
COMMIT_YES=1
echo "GATE ACTIVE — STOP. Read references/from-goal.md before continuing."
fi
if [ "$MODE" = "autofix" ]; then
echo "GATE ACTIVE — STOP. Read references/autofix-mode.md before continuing."
fi # default branch: bare no-op — NO link, NO read path| Mode | When | Behavior | |------|------|----------| | **Interactive** (default) | User is at the terminal | Asks on duplicates and must-ask cases; writes the spec, shows its summary, offers the editor; no generic write approval | | **Autofix** (`mode:autofix`) | Batch or scripted invocation | No questions; every ask becomes exit 2; writes only with `--yes` |
When the sentinel prints, read [references/autofix-mode.md](references/autofix-mode.md) before Phase 0; it owns the per-phase autofix rules. Under `from:goal`, read [references/from-goal.md](references/from-goal.md) as well; it says where a goal run's source differs. On the interactive path, read nothing.
Questions (interactive only)
Interactive capture follows the working rules' attended contract, plus:
- Use `AskUserQuestion` (load
Faster than your agent alone. And better. A workflow plugin that takes a bug, idea or ticket to a verified pull request: specs, cross-model review by risk, live QA, receipts in your repo. Claude Code · Codex · Cursor · Droid · Grok Build · OpenCode · Muse Code.
Other skills on flow-next.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about flow-next-capture.
- Which coding agents can use flow-next-capture?
- flow-next-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.

