flow-continue

Clear the autonomous-flow halt set when the user spoke mid-flow. Invokes `bin/flow clear-halt` so the next assistant turn resumes execution. User-only: the model cannot invoke this skill.

12 stars

Best use case

flow-continue is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Clear the autonomous-flow halt set when the user spoke mid-flow. Invokes `bin/flow clear-halt` so the next assistant turn resumes execution. User-only: the model cannot invoke this skill.

Teams using flow-continue should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/flow-continue/SKILL.md --create-dirs "https://raw.githubusercontent.com/benkruger/flow/main/skills/flow-continue/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/flow-continue/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How flow-continue Compares

Feature / Agentflow-continueStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Clear the autonomous-flow halt set when the user spoke mid-flow. Invokes `bin/flow clear-halt` so the next assistant turn resumes execution. User-only: the model cannot invoke this skill.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# FLOW Continue

Resume an autonomous flow that paused because the user typed a message
mid-flow. The Stop hook's `check_autonomous_stop` predicate set
`_halt_pending=true` when it observed the user message; this skill
clears that flag so the next assistant turn proceeds. Works universally:
clears any pending halt and acts as a watermark over preceding
conversation, so the autonomous flow resumes whether it was paused by
a user message, a network error, or a rate-limit interrupt.

`/flow:flow-continue` is the ONLY path that clears `_halt_pending`.
The skill is in `USER_ONLY_SKILLS` — the model cannot invoke it, and
`bin/flow clear-halt` independently self-gates by checking the
persisted transcript for the user's slash-command invocation. The
two layers together make the halt durable: nothing the model can do
on its own resumes the flow.

## Usage

```text
/flow:flow-continue
```

No flags, no arguments. The skill takes a single mechanical action.

## Concurrency

This flow is one of potentially many running simultaneously — on this
machine (multiple worktrees) and across machines (multiple engineers).
Your state file (`.flow-states/<branch>/state.json`) is yours alone.
Never read or write another branch's state.

## Announce

Output the following banner in your response (not via Bash) inside a
fenced code block:

````markdown
```text
──────────────────────────────────────────────────
  FLOW v2.6.0 — flow:flow-continue — STARTING
──────────────────────────────────────────────────
```
````

## Step 1 — Detect current branch

Run `git worktree list --porcelain`. The `worktree` entry whose path
matches your current working directory carries a `branch
refs/heads/<name>` line — strip the `refs/heads/` prefix to get the
current branch. Hold the branch name in context for Step 2.

## Step 2 — Clear the halt

```bash
${CLAUDE_PLUGIN_ROOT}/bin/flow clear-halt --branch <branch>
```

Parse the JSON `status`:

- `"ok"` — halt cleared, autonomous execution resumes on the next
  assistant turn. Print "Halt cleared. Resuming."
- `"skipped"` with `"reason":"no_state_file"` — no active flow on
  this branch (state file absent). Nothing to clear. Print
  "No active flow on `<branch>` — nothing to clear."
- `"error"` — print the `message` field verbatim so the user sees
  the failure reason (`unauthorized`, `invalid_branch`,
  `no_transcript_path`, `state_write_failed`). The unauthorized
  branch fires when the most recent real user turn's
  `message.content` does not START with either of the two emission
  shapes Claude Code uses for the slash command — the two-line
  `<command-message>flow:flow-continue</command-message>\n<command-name>/flow:flow-continue</command-name>`
  (Claude Code 2.1.140+) or the legacy
  `<command-name>/flow:flow-continue</command-name>`. The walker
  accepts either via `starts_with` disjunction. A Bash-tool bypass
  attempt this skill makes impossible by definition.

## Done

Output the following banner in your response (not via Bash) inside a
fenced code block:

````markdown
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ✓ FLOW v2.6.0 — flow:flow-continue — COMPLETE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
````

Return to the user. The next assistant turn picks up the paused flow.

## Hard Rules

- Never use Bash to print banners — output them as text in your response
- Never use Bash for file reads — use Glob, Read, and Grep tools instead of ls, cat, head, tail, find, or grep
- Never use `cd <path> && git` — use `git -C <path>` for git commands in other directories
- Never cd before running `bin/flow` — it detects the project root internally

Related Skills

We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.