CDev Planner
Planning brain for one conditioned repository. Never implements code. The single-repo
counterpart of cdev-monorepo-planner: same two modes, scoped to this repo's own plan. Without
a clear argument, run both: gap analysis first, then materialize what is approved.
Requires a conditioned repo (docs/develop/ with SPRINTS.md, AGENT_PROGRESS.md, protocol,
clarity map). Not conditioned → propose the right bootstrap skill and stop; do not improvise a plan.
Mode 1 — Materialize an objective (objective → executable batches)
- Read the repo state first: repo guide → local protocol →
SPRINTS.md → last
AGENT_PROGRESS.md entries → git status and recent commits. If plan and git disagree,
flag and reconcile before planning on top — a plan built over a drifted state is poisoned.
- Locate the objective in the clarity map (
PRODUCT.md):
- DEFINED → plan it fully;
- PARTIAL → plan the clear part; record every assumption, dated, in
DECISIONS.md;
- ABSENT → do not plan it. Write the open question instead. Inventing an ABSENT area
is forbidden.
- Place work respecting the local order:
- an existing batch already covers it → adopt it, don't duplicate;
- fits the ACTIVE sprint's objective → append batches at the end of that sprint;
- belongs to a later phase → next
PENDING sprint, or a new sprint drafted as PROPOSAL
(a human ratifies; the planner never activates it). Never a second ACTIVE sprint,
never renumber.
- Write each batch executable as-is: acceptance criteria observable and written before the
work (not "endpoint implemented" but "this call returns this shape and this check proves
it"); verification per the repo's real protocol;
depends_on between batches where order
matters; sized to be finishable and provable in one sitting.
- Declare gates: any step whose blast radius exceeds the working branch (schema on a
shared database, deploy, publishing) is marked prepare-don't-execute, naming the human
decision required.
- Promote to
READY only when acceptance is observable, dependencies exist, and the plan
still satisfies the invariants (exactly one ACTIVE sprint, no unresolved placeholders).
- Record planning decisions, dated, in
DECISIONS.md.
Mode 2 — Gap analysis (find what to do, and what is silently missing)
Sweep the repo and produce actionable candidates, each with evidence:
- Verification debt, aggregated: batches
DONE with checks not-run, runtime evidence
missing where the protocol demands it, blocked verifications never re-run. Sum it and show
the total — individually honest entries add up to a plan that reads finished over work
never fully verified.
- Stale state:
BLOCKED batches whose blocker may have cleared, IN_PROGRESS with no
matching working tree, plan↔git divergence, registry-style claims no longer true.
- Coverage and parity: untested areas the protocol gates on, parity gaps between targets
(multi-target repos), marked debt (debt sections, deferred TODOs).
- Documentation consistency: operational docs that contradict each other — the loop trusts
instructions, so a contradiction is an incident waiting; clarity map stale against specs
that have since arrived; leftover placeholders.
- Plan health: no ACTIVE sprint (plan exhausted — natural next-sprint candidate),
acceptance criteria not observable, blocked units missing their named human decision.
Output: table candidate → evidence (file/line/commit) → proposal (draft batch or open
question). Approved candidates enter SPRINTS.md via Mode 1 as PROPOSAL/PENDING.
Findings not derivable from evidence are not invented — open question in DECISIONS.md.
Rules
- The repo is the source of truth; the planner reads, references and proposes — it never marks
work
DONE, never implements, never activates a PROPOSAL sprint.
- Self-directed planning stays inside DEFINED/PARTIAL areas of the clarity map.
- Every finding cites evidence (file/line/commit), never impressions.
- Invariant violations found while planning (two ACTIVE sprints,
DONE without evidence) are
reported as planning bugs with a proposed correction — not silently repaired.
1---2name: cdev-planner3description: Use when planning work inside a single CDev-conditioned repository — turning an objective into batches in the local SPRINTS.md with observable acceptance, or sweeping the repo for gaps (verification debt, stale blocks, coverage/parity holes, plan↔git divergence, contradictory docs) and proposing the next sprints. Also when the user invokes /cdev-planner or asks "plan this repo", "what's next here", "qué falta por hacer".4---56# CDev Planner78Planning brain for **one** conditioned repository. **Never implements code.** The single-repo9counterpart of `cdev-monorepo-planner`: same two modes, scoped to this repo's own plan. Without10a clear argument, run both: gap analysis first, then materialize what is approved.1112Requires a conditioned repo (`docs/develop/` with `SPRINTS.md`, `AGENT_PROGRESS.md`, protocol,13clarity map). Not conditioned → propose the right bootstrap skill and stop; do not improvise a plan.1415## Mode 1 — Materialize an objective (objective → executable batches)16171. **Read the repo state first**: repo guide → local protocol → `SPRINTS.md` → last18 `AGENT_PROGRESS.md` entries → `git status` and recent commits. If plan and git disagree,19 flag and reconcile before planning on top — a plan built over a drifted state is poisoned.202. **Locate the objective in the clarity map** (`PRODUCT.md`):21 - **DEFINED** → plan it fully;22 - **PARTIAL** → plan the clear part; record every assumption, dated, in `DECISIONS.md`;23 - **ABSENT** → do not plan it. Write the open question instead. Inventing an ABSENT area24 is forbidden.253. **Place work respecting the local order**:26 - an existing batch already covers it → **adopt** it, don't duplicate;27 - fits the ACTIVE sprint's objective → append batches at the end of that sprint;28 - belongs to a later phase → next `PENDING` sprint, or a new sprint drafted as `PROPOSAL`29 (a human ratifies; the planner never activates it). Never a second ACTIVE sprint,30 never renumber.314. **Write each batch executable as-is**: acceptance criteria observable and written before the32 work (not "endpoint implemented" but "this call returns this shape and this check proves33 it"); verification per the repo's real protocol; `depends_on` between batches where order34 matters; sized to be finishable and provable in one sitting.355. **Declare gates**: any step whose blast radius exceeds the working branch (schema on a36 shared database, deploy, publishing) is marked prepare-don't-execute, naming the human37 decision required.386. **Promote to `READY`** only when acceptance is observable, dependencies exist, and the plan39 still satisfies the invariants (exactly one ACTIVE sprint, no unresolved placeholders).407. **Record planning decisions**, dated, in `DECISIONS.md`.4142## Mode 2 — Gap analysis (find what to do, and what is silently missing)4344Sweep the repo and produce actionable candidates, each with evidence:45461. **Verification debt, aggregated**: batches `DONE` with checks `not-run`, runtime evidence47 missing where the protocol demands it, blocked verifications never re-run. Sum it and show48 the total — individually honest entries add up to a plan that reads finished over work49 never fully verified.502. **Stale state**: `BLOCKED` batches whose blocker may have cleared, `IN_PROGRESS` with no51 matching working tree, plan↔git divergence, registry-style claims no longer true.523. **Coverage and parity**: untested areas the protocol gates on, parity gaps between targets53 (multi-target repos), marked debt (debt sections, deferred TODOs).544. **Documentation consistency**: operational docs that contradict each other — the loop trusts55 instructions, so a contradiction is an incident waiting; clarity map stale against specs56 that have since arrived; leftover placeholders.575. **Plan health**: no ACTIVE sprint (plan exhausted — natural next-sprint candidate),58 acceptance criteria not observable, blocked units missing their named human decision.5960Output: table candidate → evidence (file/line/commit) → proposal (draft batch or open61question). Approved candidates enter `SPRINTS.md` via Mode 1 as `PROPOSAL`/`PENDING`.62**Findings not derivable from evidence are not invented** — open question in `DECISIONS.md`.6364## Rules6566- The repo is the source of truth; the planner reads, references and proposes — it never marks67 work `DONE`, never implements, never activates a `PROPOSAL` sprint.68- Self-directed planning stays inside DEFINED/PARTIAL areas of the clarity map.69- Every finding cites evidence (file/line/commit), never impressions.70- Invariant violations found while planning (two ACTIVE sprints, `DONE` without evidence) are71 reported as planning bugs with a proposed correction — not silently repaired.