A structured workflow system for Claude Code.
Spec interviews. Agent-team execution. Session handoffs. Compounding knowledge.
npx flow-ccOne command. Installs skills, hooks, templates, and configures your statusLine. Works on Mac, Linux, and Windows.
Claude Code is powerful but unstructured. Without a system, you lose context between sessions, repeat mistakes, and waste tokens re-explaining what you've already decided.
Flow gives Claude Code a memory system and execution framework:
- Spec interviews extract decisions upfront so agents execute instead of guessing
- Per-project PRDs in
.planning/prds/become execution contracts — spec future projects in parallel - Wave-based agent teams execute milestones autonomously with built-in verification
- Session handoffs preserve full context across fresh sessions — no more "where was I?"
- Lessons compound — mistakes get captured, refined, and promoted into permanent rules
One-time setup, then a repeating build cycle:
/flow:setup → /flow:triage → /flow:spec → /flow:go → /flow:done
(once) (intake) (plan) (build) (wrap)
/flow:setup— Scaffolds your project with planning docs and execution rules/flow:spec— Interviews you, then writes an executable PRD with milestones, acceptance criteria, and agent-team structure/flow:go— Spawns parallel agent teams to build the next milestone, verifies, commits/flow:done— Updates docs, captures lessons, generates a handoff prompt so the next session starts instantly
Run /flow:go repeatedly until all milestones are done, then /flow:done to wrap up. Next session, paste the handoff prompt and keep going.
|
Before (single PRD) Finish or archive the current project before speccing the next. Serial bottleneck on large roadmaps. |
Now (per-project PRDs) Spec any project at any time. Execute the current one while planning ahead. |
How it works:
/flow:specwrites PRDs to.planning/prds/{slug}.md— one file per project/flow:spec Paymentstargets a specific future project without changing your current position- PRD resolution matches the current git branch against each PRD's
**Branch:**header — STATE.md "Active PRD" is fallback - Smart resolution: user argument > STATE.md > slug derivation > legacy fallback
- Existing
PRD.mdat root? Still works — legacy files are consumed transparently and migrated on archive
| Command | When | What it does |
|---|---|---|
/flow:setup |
Once per project | Creates .planning/, CLAUDE.md, templates, full roadmap |
/flow:spec |
Once per project | Interview that produces an executable PRD in .planning/prds/ |
/flow:go |
Once per milestone | Executes the next milestone with wave-based agent teams |
/flow:done |
End of session | Updates docs, captures lessons, generates handoff prompt |
| Command | When | What it does |
|---|---|---|
/flow:task |
Anytime | Bug fixes, cleanup, small features — no PRD needed |
/flow:triage |
Anytime | Brain dump → categorized Linear issues, milestones, ROADMAP entries, lessons |
| Command | When | What it does |
|---|---|---|
/flow:intro |
First time | Walkthrough of the entire system |
/flow:status |
Anytime | Where am I? What's next? Shows PRD inventory |
/flow:update |
Anytime | Update Flow to the latest version |
Every Flow project gets this structure via /flow:setup:
your-project/
├── CLAUDE.md # Execution rules + learned rules
├── .claude/
│ └── memory/
│ └── session-{branch}.md # Per-branch session state (gitignored)
├── .planning/
│ ├── STATE.md # Project-level GPS — shared across developers
│ ├── ROADMAP.md # Project milestones and progress tracking
│ ├── prds/ # Per-project PRD specs
│ │ ├── user-auth.md # One file per project
│ │ └── dashboard.md # Pre-spec future projects anytime
│ └── archive/ # Completed projects and archived PRDs
└── tasks/
└── lessons.md # Active lessons (max 10) → promoted to CLAUDE.md
~/.claude/
├── commands/flow/
│ ├── flow-setup.md # 9 skill files
│ ├── flow-spec.md
│ ├── flow-go.md
│ ├── flow-task.md
│ ├── flow-done.md
│ ├── flow-status.md
│ ├── flow-intro.md
│ ├── flow-triage.md
│ ├── flow-update.md
│ ├── VERSION
│ └── templates/ # Project scaffolding templates
│ ├── CLAUDE.md.template
│ ├── STATE.md.template
│ ├── ROADMAP.md.template
│ ├── lessons.md.template
│ └── session.md.template
├── hooks/
│ ├── flow-check-update.js # Notifies when updates are available
│ └── flow-statusline.js # Shows project context in statusLine
└── settings.json # statusLine configured automatically
Flow's knowledge compounding is what makes it get better over time:
- Capture — Mistake happens, one-liner written to
tasks/lessons.md(max 10 active) - Promote — When full, most battle-tested lesson moves to
CLAUDE.md ## Learned Rules(max 15 permanent)
Hard caps prevent context bloat. Total worst-case: ~30 lines of lessons context per session.
Flow supports multiple developers on the same repo without conflicts:
- Branch-scoped sessions — Each branch gets its own session file at
.claude/memory/session-{branch-slug}.md(gitignored). Multiple terminals on different branches never conflict. Same-branch conflicts are prevented by Linear assignment (one dev per issue/branch). - Branch-based PRD resolution — Skills match the current git branch against each PRD's
**Branch:**header to find the active PRD. STATE.md "Active PRD" is fallback. - Cross-developer awareness —
/flow:statusshows all active sessions across branches./flow:gowarns if another developer was recently active on the same branch. STATE.md— Shared project-level state in.planning/STATE.md. Updated at project boundaries only (not every session), so conflicts are rare.
Flow optionally integrates with Linear via MCP for issue tracking:
/flow:speccan create Linear issues automatically from PRD milestones/flow:donecan post progress comments to Linear issues/flow:triagesorts unstructured brain dumps into categorized Linear issues, ROADMAP entries, and lessons- Branch convention
feat/msig-{issue#}-descauto-links PRs to Linear issues - Auto-close —
Closes MSIG-XXin PR body triggers Linear status transition on merge
Requires the Linear MCP server to be configured.
Flow uses the same .planning/ directory structure as GSD. You can use /gsd:debug, /gsd:map-codebase, and other GSD commands alongside Flow without conflict.
Claude Code CLI with skills support.
- Changelog — what changed in each version
- Contributing — how to report bugs, suggest features, submit PRs
- Design — architecture decisions and system design
MIT