kanban-batch-run/SKILL.md
Run multiple kanban tasks end-to-end in Rolling Wave order — refine each task based on the prior card's actual implementation, then implement, then verify, then refine the next. Use for epic-level batch execution. --big-bang flag disables rolling wave for simple independent tasks.
npx skillsauth add cyanluna-git/cyanluna.skills kanban-batch-runInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Execute several kanban tasks as one orchestrated batch using Rolling Wave Planning by default.
Default loop per task:
refine(N) → implement(N) → verify(N) → refine(N+1) → implement(N+1) → ...
This skill is an orchestrator, not a shortcut. Every implement step hands off to kanban-run. Every refine step hands off to kanban-refine.
When running inside Codex, if a dedicated Skill tool is not available, invoke the inner runners by issuing slash command text directly:
$kanban-run <ID> / $kanban-run <ID> --auto$kanban-refine <ID>Treat these as the Codex-native equivalent of Skill(skill="kanban-run", ...) and Skill(skill="kanban-refine", ...).
Do not re-implement either pipeline manually when this command path is available.
/kanban-batch-run <selector> [--auto] [--big-bang]Run all tasks matching the selector in dependency order.
--auto: auto-approve all review checkpoints inside kanban-run. Refine and Verify always run.--big-bang: skip rolling wave — implement tasks directly without pre-refine or verify steps. Use only when tasks are fully refined upfront and independent./kanban-batch-run resume <start-ID> [--auto]Resume a previously stopped batch from the given task ID onward. Uses the same selector logic but skips all tasks before <start-ID>. Useful after fixing a blocker reported by a prior batch run.
500-504, 500~504, 500,501,504, or whitespace-separated IDs.504-500 are normalized to ascending order.../kanban/shared.md before any DB access.../kanban/principles.md — mandatory, not optional.kanban-run and kanban-refine for each task via the Skill tool when available.$kanban-run ... / $kanban-refine ... directly.scripts/plan_batch.py to normalize selectors, fetch task metadata, and produce phase-ordered candidates.references/parallel-rules.md when deciding whether tasks are safe to run in parallel.If task descriptions include any of these lines, use them as strong signals:
Depends on: #500, #501Parallel-safe: yesParallel-safe: noTouches: browse-data, header-navIf these hints are absent, fall back to conservative inference from phase, tags, title, and description.
Before any execution:
# DB reachability check
test -f "$DB" || { echo "Error: DB not found at $DB. Run /kanban-init first."; exit 1; }
sqlite3 "$DB" "SELECT count(*) FROM tasks WHERE project='$PROJECT'" > /dev/null
/kanban-init and stop.plan_batch.py fails, do not proceed — report the error and stop.Resolve the current project from .codex/kanban.json or .claude/kanban.json.
Run:
python3 scripts/plan_batch.py --project "$PROJECT" --tasks "<selector>" --db "$DB"
Read the returned task list and proposed groups.
phase:N tags when present.todo with a warning line per skipped task (e.g. ⚠ #502 skipped — status is impl). Continue the batch with remaining tasks. If all tasks are skipped, stop and report.resume <start-ID> was used, skip all tasks before that ID silently.Depends on: / Parallel-safe: metadata over heuristic guesses.For each task N in order:
A. Refine(N)
- Skill(skill="kanban-refine", args="<ID>") [Codex: $kanban-refine <ID>]
- kanban-refine auto-detects the prior card (N-1) via "Depends on:" tags or asks one question.
- First task in the batch (no prior card): regular user interview.
B. Implement(N)
- Invoke kanban-run (level-aware, see Inner Task Contract)
C. Verify(N)
- Check actual implementation: git diff, created/modified files, test results
- Append note to task: sqlite3 "$DB" json_insert on notes field → "Verified: [confirmed interface/schema]"
- Note anything that will affect N+1's refinement scope
→ Move to N+1
Loop exceptions:
--big-bang)Invoke kanban-run directly per task. No refine or verify steps.
Use only when all tasks were fully refined before the batch started.
Sequential group: invoke kanban-run for each task in order (see Inner Task Contract for level-aware invocation).
Parallel group:
kanban-run for all tasks in the group concurrently.$kanban-run ... invocations only if the runtime truly supports concurrent slash command execution; otherwise stay sequential.git status --porcelain
git diff --check # detect conflict markers
After each task or group: refresh board state by reading the task's current status from SQLite before continuing.
Stop the batch if any of these happen:
kanban-run).When stopped early, summarize:
Resume with: /kanban-batch-run resume <next-ID>.When finished, summarize:
kanban-run had happened. The batch runner must drive each task through kanban-run.kanban-run as the inner engine and kanban-batch-run as the outer scheduler.500-504, assume sequential unless the phase model proves otherwise.For every task selected in the batch, invoke kanban-run.
Skill(skill="kanban-run", args="...")$kanban-run ... directlyThe batch runner must inherit kanban-run's provider-aware model router, so Codex batch execution automatically uses the higher-tier Codex mappings from ../kanban/models.json.
| Level | Default mode | --auto flag |
|-------|-------------|---------------|
| L1 | Skill(skill="kanban-run", args="<ID> --auto") | same |
| L2 | Skill(skill="kanban-run", args="<ID>") | Skill(skill="kanban-run", args="<ID> --auto") |
| L3 | Skill(skill="kanban-run", args="<ID>") | Skill(skill="kanban-run", args="<ID> --auto") |
Codex direct-command equivalent:
| Level | Default mode | --auto flag |
|-------|-------------|---------------|
| L1 | $kanban-run <ID> --auto | same |
| L2 | $kanban-run <ID> | $kanban-run <ID> --auto |
| L3 | $kanban-run <ID> | $kanban-run <ID> --auto |
In default mode, L2/L3 tasks pause for user confirmation at review checkpoints. The batch runner waits for the Skill call to complete (including any user interaction) before moving to the next task.
After each Skill call completes, verify the outcome by checking the task's kanban status:
STATUS=$(sqlite3 "$DB" "SELECT status FROM tasks WHERE id=$ID AND project='$PROJECT'")
| Status | Interpretation | Action |
|--------|---------------|--------|
| done | Task completed successfully | Continue to next task |
| todo, plan, impl | Circuit breaker or rejection occurred | Stop batch, report blocker |
| plan_review, impl_review | Review pending (should not happen in --auto) | Stop batch, report |
kanban-run pipeline.$kanban-run ... in Codex when the Skill tool is unavailable.testing
Turn vague intent into a precise, executable spec through 5 structured phases, then optionally create a kanban task. Use when starting something new that needs proper scoping before refinement. Complements /kanban-refine (which refines existing tasks).
databases
--- name: kanban-local description: Local markdown-file kanban for toy and personal projects. No server, no PostgreSQL, no auth — all state lives in KANBAN.md in the project root. Use for solo/small projects where the remote kanban board is overkill. Auto-trigger when KANBAN.md exists and user says "태스크 추가", "add task", "칸반 보여줘", "다음 할 일", "task list", or similar task-management phrases. Sub-commands: init, list, add, move, done, show, edit, refine, run, rm, stats. --- # kanban-local 로컬 `KANBA
documentation
프로젝트의 전체 아키텍처, 목표, 주요 결정사항을 wiki/ 디렉토리에 합성하여 정리합니다. 첫 실행 시 전체 생성, update로 변경분 반영. 매 카드가 아닌 프로젝트 수준의 지식을 정리합니다.
devops
Manage project tasks in a local SQLite DB (~/.claude/kanban-dbs/{project}.db). Supports task CRUD (add, edit, move, remove), board viewing, session context persistence, and statistics. For pipeline orchestration use /kanban-run, for requirements refinement use /kanban-refine. Run /kanban-init first to create the local DB.