planlisted
Install: claude install-skill gitgitWi/council-flow
# flow:plan — Authoring plan.md and tasks.md
A flow plan is **a one-pager that explains the approach, not the code**. Inspired by Amazon's one-pager / six-pager: short, explicit, and self-contained. The reader should finish in five minutes and know what is going to be built and how.
## Prep precondition check (run first, every invocation)
Before writing anything, verify the worktree + branch + planning directory exist. If not, the user has skipped `flow:prep` and `plan.md` would land in the wrong place.
```bash
# 1. Are we in a flow worktree? (heuristic: parent dir name ends in .worktrees)
WT_PATH="$(git rev-parse --show-toplevel 2>/dev/null)" || { echo "not a git repo"; exit 1; }
WT_PARENT="$(basename "$(dirname "$WT_PATH")")"
case "$WT_PARENT" in *.worktrees) IN_WORKTREE=1;; *) IN_WORKTREE=0;; esac
# 2. Are we on a typed branch (feature/* | fix/* | chore/* | refactor/* | docs/*)?
BRANCH="$(git branch --show-current)"
case "$BRANCH" in feature/*|fix/*|chore/*|refactor/*|docs/*) ON_TASK_BRANCH=1;; *) ON_TASK_BRANCH=0;; esac
# 3. Is there a .planning/<date>-<task>/prepare.md to write into?
PREPARE="$(ls -1 .planning/*/prepare.md 2>/dev/null | head -n1)"
[[ -n "$PREPARE" ]] && HAS_PLANNING=1 || HAS_PLANNING=0
```
Decision matrix:
| In worktree | On task branch | Has `.planning/.../prepare.md` | Action |
|---|---|---|---|
| yes | yes | yes | Proceed. This is the normal post-prep state. |
| no | no | no | **Stop.** Tell the user prep was skipped and ask: (a) run `flow:pre