Skip to content
Back to skills

Flow Next Work

ASecurity

Execute a flow-next spec or task end-to-end with worker subagents, gates, and commits. Use when asked to work on, implement, or execute fn-N.

  • 705 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentsgoshellbashrailsgitbackend

Works with

  • cursor

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add gmickel/flow-next --skill flow-next-work --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Flow Next Work?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Flow Next Work
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gmickel-flow-next-work-flow-next/badge)](https://www.skillsdirectory.com/skills/gmickel-flow-next-work-flow-next)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: flow-next-work
description: Execute a flow-next spec or task end-to-end with worker subagents, gates, and commits. Use when asked to work on, implement, or execute fn-N.
user-invocable: false
---

# Flow work

Execute a plan systematically. Focus on finishing.

**`.flow/` is the only task tracker.** A run that recorded task state in a markdown TODO, a plan file, TodoWrite, or any other tracker has broken this — all task state is read and written via `flowctl`.

## Preamble

**CRITICAL: flowctl is BUNDLED — NOT installed globally.** `which flowctl` will fail (expected). Define once; subsequent blocks (here and in `phases.md`) use `$FLOWCTL`:

```bash
FLOWCTL="${CODEX_HOME:-$HOME/.codex}/scripts/flowctl"
[ -x "$FLOWCTL" ] || FLOWCTL="<plugin-root>/scripts/flowctl"   # <plugin-root> = the directory two levels above this skill's SKILL.md file (the harness gave you that file's absolute path when the skill loaded); substitute it literally
[ -x "$FLOWCTL" ] || FLOWCTL=".flow/bin/flowctl"
```

**Hard requirements (non-negotiable):**
- **Every completed task passes through `flowctl done` and a verified `done` status.** A task treated as finished while `flowctl show <task>` still reads `todo` or `in_progress` has broken this.
- **Staging is the files you changed plus `.flow/` (`git add -- <files> .flow/`), never `git add -A`** — `.flow/` carries the run's task state; files a test run or tool wrote stay out of the diff. A commit whose diff omits the run's `.flow/` writes has broken this.
- **Completion is claimed only after `flowctl show <task>` reports `status: done`.** A completion claim printed ahead of that read has broken this.
- **`$flow-next-impl-review` is dispatched only on a green tree.** A review sent while tests or Quick commands are red has broken this.

**Role**: execution lead, plan fidelity first.
**Goal**: complete every task in order with tests.

## Autonomous Mode (questions off, no receipt obligations)

Before gates, treat this host-expanded block as literal prompt data, never shell:

<work-arguments>
$ARGUMENTS
</work-arguments>

Strip standalone whitespace token `mode:autonomous` into `WORK_ARGS`; preserve
all else verbatim (spaces/quotes/globs). Set/export `AUTONOMOUS=1` if found or
`FLOW_AUTONOMOUS=1`; otherwise set/export `AUTONOMOUS=0`.

Continue with `WORK_ARGS`; carry the exported marker into later shell fragments.
If `AUTONOMOUS=1`: read [references/autonomous-defaults.md](references/autonomous-defaults.md)
before any question, and:

- **Branch defaults deterministically to `--branch=new`** when no explicit branch option is present — under autonomy "the user's answer" never exists, and defaulting to the current branch could commit straight to main. A chained spec (`flowctl spec chain` names a parent) forks from the parent's remote tip instead of main (phases.md Phase 2). **Name the new branch exactly the spec's `branch_name` field** (`$FLOWCTL show <spec-id> --json | jq -r '.branch_name'`) — the branch matrix of `flow --auto`, its all-done PR probe, and make-pr's branch-match spec detection all key on that name; an ad-hoc name breaks continuity across hops and invocations.

## Input

Full request after mode parsing: `$WORK_ARGS`

Accepts:
- Flow spec ID `fn-N-slug` (e.g., `fn-1-add-oauth`) or legacy `fn-N`/`fn-N-xxx` to work through all tasks
- Flow task ID `fn-N-slug.M` (e.g., `fn-1-add-oauth.2`) or legacy `fn-N.M`/`fn-N-xxx.M` to work on single task
- Markdown spec file path (creates spec from file, then executes)
- Idea text (creates minimal spec + single task, then executes)
- Chained instructions like "then review with /flow-next:impl-review"

If no input provided, ask for it.

## FIRST: Parse Options

### Option Parsing (skip questions if found in arguments)

Parse `WORK_ARGS` for these patterns. If found, use them and skip corresponding questions:

**Branch mode**:
- `--branch=current` or `--current` or "current branch" or "stay on this branch" → current branch
- `--branch=new` or `--new-branch` or "new branch" or "create branch" → new branch
- `--branch=worktree` or `--worktree` or "isolated worktree" or "worktree" → isolated worktree

**Review mode**:
- `--review=<codex|copilot|cursor|claude|host|none>`, or the same backend named in words
  ("review with codex", "host review", "skip review"); `--no-review` = `none`
- `--review=rp` or `--review=export` → removed: say "RepoPrompt review (rp, export) was removed in flow-next 8.0.0; review backends: claude, codex, copilot, cursor, host." once, never pass it as `REVIEW_MODE`, and continue as when no review backend is configured

(All non-`none` review modes route through `$flow-next-impl-review`, which resolves the
configured/overridden backend — codex, copilot, cursor, claude, or host — itself.)

**No-plan (direct spec execution)**:
- `--no-plan` or "no plan" or "skip planning" or "work directly without planning" → set `NO_PLAN=1`; it pre-answers Phase 1's zero-task fork so the fork's ask never fires when intent is stated
- Implementation review, coverage, completion policy and opt-in QA remain unchanged on this route.
- The fork's semantics (ask, autonomous refusal, durable choice, implicit-task mint) live in phases.md Phase 1's gated [references/no-plan-route.md](references/no-plan-route.md), read only when the fork fires

**Autonomous mode**:
- `AUTONOMOUS=1` → use the defaults above.

### If the options are absent from the arguments

**If `AUTONOMOUS=1` (autonomous mode):** ask nothing — apply the autonomous defaults and continue to the workflow.

**Otherwise (interactive)**: do not ask about the branch. Stay on the current branch when it is
not the default branch, otherwise create a new one (named for the spec's `branch_name`), and say
which in one line. Never ask about review either: the review step resolves the backend per task
(phases.md Phase 3).

Done when: the branch and review modes are resolved from arguments, these defaults, or the
autonomous defaults.

## Workflow

Read [working-rules.md](../../references/working-rules.md) first unless you already have this run; it holds on every phase and in every worker dispatch.

Once the modes are resolved, read [phases.md](phases.md) and execute each phase in order.

**One task is implemented inline by this conversation** (phases.md Phase 3). Several tasks, or a
task that goes to a worker, follow [references/multi-task.md](references/multi-task.md), which owns
scheduling (rolling or wave), workers, review ownership after integration, and the completion
review gate.

## Tracker sync (opt-in, off by default)

A tracker touchpoint fires only when `flowctl sync active --json` reports `active: true` and its
event is opted in; otherwise nothing happens and [references/tracker-touchpoints.md](references/tracker-touchpoints.md)
is never read. A tracker key (`wor-17`, `wor-17.1`) resolves to its linked spec or task through
`flowctl show`, never a new spec. Phase 5's `Tracker sync:` summary slot runs on every run.

## Guardrails

- **The branch is chosen before the run starts.** A run that began on an unresolved branch choice has broken this.
- **A plan or spec exists before implementation starts.** A run that began with no `.flow/` spec has broken this.
- **Tests run.** A task marked done before the focused tests for the code it changed ran has broken this.
- **No task is left half-done.** A run that ends with a task still `in_progress` and no `NEEDS_HUMAN`/blocked report has broken this.
- **Task tracking lives in `.flow/` via `flowctl`.** A run tracking tasks in TodoWrite, or writing a plan file outside `.flow/`, has broken this.

Files in this skill

  • SKILL.md13.1 KB
  • agents/openai.yaml203 B
  • phases.md43.4 KB
  • references/host-deferred-review.md3.9 KB
  • references/no-plan-route.md7.6 KB
  • references/plan-sync-dispatch.md2.6 KB
  • references/setup-questions.md1.6 KB
  • references/spec-id-mint.md2.9 KB
  • references/tracker-retro-fire.md2.3 KB
  • references/tracker-touchpoints.md10.1 KB
  • references/wave-join.md7.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.