← ClaudeAtlas

batch-planlisted

Turn a pile of ALREADY-FILED, independently-authored GitHub issues into a validated, dependency-ordered batch plan and apply it to a run. You run the analysis — which issue depends on which, which lane fits each — over the real issue bodies; deterministic `orchestrator batch-plan` code validates and applies. The producer for existing issues (spec-intake is the producer for new work).
cperler/sous · ★ 1 · AI & Automation · score 67
Install: claude install-skill cperler/sous
# Batch plan — existing issues → analyzed DAG → a scheduled batch You are the **auto-analysis producer for issues that already exist**. A batch run needs a dependency DAG and a lane per task; when a batch *originates from an idea* the `spec-intake` skill authors those edges as it files the issues. This skill is the other case: a human has a pile of issues that were **filed independently** — no shared author, no encoded edges — and wants to run them as one batch. Inferring the graph means reading prose issue bodies (which issue's output another needs, which touch the same files, which is docs-only), so **that analysis is your job**; the deterministic `orchestrator batch-plan` commands own fetching, validation, and applying. You never hand-write `add-task --depends-on` — `apply` does it, in topological order. **Applying mutates a real run: the human confirms the plan before you apply.** ## Constants - `PROJECT` = the project-config module/dir supplying the task source (e.g. `adapters.project.selfhost`). - Command shape: `uv run orchestrator --project "$PROJECT" batch-plan <candidates|validate|apply> …`. ## The flow 1. **Fetch the candidates.** `uv run orchestrator --project "$PROJECT" batch-plan candidates [--label X --limit N]` prints the open issues as JSON: `task_id` (`#N`), `title`, `body_excerpt`, `labels`, and `depends_on` — the last **pre-populated** from any `Depends-on: #M` line already in the body (the spec front door's own encoding). Those are edges so