@hyperb1iss/plan

Use this skill when decomposing complex work into structured tasks before implementation. Activates on mentions of write a plan, create a plan, break this down, task decomposition, implementation plan, what are the steps, plan the work, spec this out, or decompose this feature.

View in AI SkillSafe app
0 downloads
0 stars
0 demos
SKILL.md
nameplan
descriptionUse this skill when decomposing complex work into structured tasks before implementation. Activates on mentions of write a plan, create a plan, break this down, task decomposition, implementation plan, what are the steps, plan the work, spec this out, or decompose this feature.

Structured Planning

Verification-driven task decomposition with Sibyl-native tracking. Mined from 200+ real planning sessions: the plans that actually survived contact with code.

Core insight: Plans fail when steps can't be verified. Decomposition that lands in concrete checks survives contact with reality; abstract bullets don't. And a plan is a durable artifact consumed by autonomous runs and other agents, not chat exhaust — tracking in Sibyl and the repo lets it outlive the context window that produced it.

How to read this skill: the first plan is a hypothesis, and replanning is the rule rather than evidence the plan was bad. The Phase 1 scale table is the real dial — it decides whether you plan at all.

The shape: SCOPE → EXPLORE → DECOMPOSE → VERIFY & APPROVE → TRACK, with a loop back to DECOMPOSE when review finds gaps.


Phase 1: SCOPE

Bound the work before decomposing it. The goal is calibrating planning depth to actual scope, not generating a deliverable.

Common moves

  • Search Sibyl for related tasks, decisions, and prior plans: sibyl search "<feature keywords>", sibyl task list -s todo. Cheap and often surfaces an already-decomposed predecessor.

  • Define success criteria in measurable terms ("tests pass", "endpoint returns X", "p95 latency < 200ms") instead of vague goals like "improve performance".

  • Write completion criteria an autonomous run can consume: complete AND validated — what proves each wave, plus review gates at wave checkpoints when stakes warrant. A run that can't close every gate ends blocked with receipts and a runbook for the remaining gates; blocked-cleanly is a legitimate terminal state, fake-done is not.

  • Identify constraints: files that shouldn't change, dependencies to respect, timeline or budget pressure.

  • Calibrate planning depth to scope:

    Scale Description Planning depth
    Quick fix < 3 files, clear solution Skip planning, go build
    Feature 3-10 files, known patterns Light plan (this skill)
    Epic 10+ files, new patterns Full plan + orchestration
    Redesign Architecture change Full plan + research first

If the work is a quick fix, stop planning and go build. Planning a five-minute change is pure overhead.


Phase 2: EXPLORE

Understand the codebase surface before decomposing it. Plans built from filenames alone fall apart at contact with the actual code.

Common moves

  • Map the impact surface: which files and modules will this touch? Read the actual code rather than guessing from names; spawn an Explore agent when scope is genuinely uncertain.
  • Identify existing patterns: how does similar functionality already work? What conventions apply (naming, file structure, test patterns)?
  • Trace dependencies: what must exist before this can work, and what breaks if we change X?
  • Dig up the repo's real gate commands — package scripts, hooks, CI jobs — so every task's Verify field can name a copy-paste runnable command instead of vague "run CI".

You're aiming for a mental model you can articulate: "this touches module A (new endpoint), module B (type changes), module C (tests); pattern follows existing feature X; depends on infrastructure Y being available." If you can't write that sentence, decomposition will rest on guesses.


Phase 3: DECOMPOSE

Break the work into steps you can actually verify. The discipline that separates plans-that-survive from plans-that-fail is connecting each step to a concrete check.

Measure twice: look for the reframe first

The most expensive plan is one that faithfully decomposes the wrong shape: tidy tasks, clean DAG, all building something that didn't need to exist. Before breaking work down, spend one pass hunting the judo move that shrinks it.

  • Can a reframe collapse the task list? A different shape might turn ten tasks into three. Reframe before you decompose, not after you've built.
  • Does the codebase already own this? Reusing an existing pattern, module, or canonical helper beats decomposing a bespoke build of the same thing.
  • What can we not build? The cheapest task is the one you strike from the plan. Delete a mode, a layer, a config surface rather than scheduling work to construct it.

Ambition of the destination and complexity of the mechanism are separate dials — pressure-test both. Plans get bounced for timidity as often as implementations get bounced for sprawl; the bar is usefulness, not smallness. Two questions calibrate the mechanism: how long does this live? (a two-week component earns no release pipeline) and what's the riskiest narrow path? — slice canary-first, one concrete end-to-end proof before generalizing.

Measure twice, cut once: confirm this is the simplest shape that reaches the real destination, then decompose it.

The verification heuristic

A step without a verification method is a hope, not a step. Push every task toward a concrete check before considering it decomposed. For each task, the useful fields are:

Field Description
What Specific implementation action
Files Exact files to create/modify
Verify How to confirm it works
Depends on Which tasks must complete first

Name the real gates

"Verify: tests pass" is a placeholder; moon run core:test && moon run core:lint is a gate. Use the repo's actual commands — found during EXPLORE — so every Verify field is copy-paste runnable. Reserve manual verification for surfaces with genuinely no automation, and say why.

Decomposition heuristics

  • Slice size is a negotiated dial, not a constant. Small slices verify tightly; larger slices buy throughput but decay corrections faster and drift scope further, so they need proportionally stronger pinned invariants and wave-boundary recall. And slice size only matters if progress integrates — parallel work that can't merge makes worktrees, not cumulative progress.
  • One concern per task. "Add endpoint AND write tests" is two tasks; treat conjunctions in task titles as splitting hints.
  • Mark parallelizable tasks. Tasks with no shared files can run simultaneously, which matters once you hand off to orchestration.

Pin what priors will erase

Deliberately-open decisions ("the result is 0..N PRs, agent's choice") are exactly what models re-narrow to conventional shapes over long runs. Write them into the plan as named invariants, verbatim, with rejected alternatives preserved rather than deleted — then re-read them at wave boundaries and before touching adjacent surface. When the user drops a constraint mid-planning, it lands in the plan the same turn it's spoken: conversational corrections decay, pinned ones don't.

Task Format

## Task [N]: [Imperative title]

**Files:** `src/path/file.ts`, `tests/path/file.test.ts`
**Depends on:** Task [M]
**Parallel:** Yes/No (can run alongside Task [X])

### Implementation

[2-4 bullet points of what to do]

### Verify

- [ ] `pnpm typecheck` passes
- [ ] `pnpm test -- file.test.ts` passes
- [ ] [specific assertion about behavior]

Phase 4: VERIFY & APPROVE

Sanity-check the plan before presenting it. The goal isn't ceremony; it's catching the obvious failure modes that turn plans into churn.

Worth confirming before presenting

  • Every task has a verification method (the most common gap)
  • Dependencies form a DAG, no cycles
  • No two parallel tasks touch the same files
  • Total scope still matches the success criteria from Phase 1
  • Nothing snuck in that you don't actually need yet (YAGNI)
  • No task survives that a reframe could delete (the judo check from Phase 3)
  • The plan names its non-goals — the adjacent things it deliberately does not build. Downstream gates measure correctness, not sprawl; the fence is what wave-boundary checks read.

Fact-audit before build

A plan handed to implementation is a set of claims, not orders. Before executing — yours or inherited — label each load-bearing claim VERIFIED / STALE / WRONG against the live repo and deployment, veto phases whose premises fail, and fold findings into the plan itself: patch the spec, don't comment on it. A plan older than the tree it describes gets this pass automatically.

Iterate the plan to convergence. Spec defects are the most expensive class, so review a plan until it holds up ("until we love it"), not until an iteration counter expires — the caps on code-review loops exist to stop re-litigating the same finding and don't apply here.

Present for Approval

Show the plan as a structured list with waves:

## Plan: [Feature Name]

**Success criteria:** [measurable outcome]
**Non-goals:** [adjacent things this deliberately does not build]
**Estimated tasks:** [N] across [M] waves

### Wave 1: Foundation

- [ ] Task 1: [title] → verify: [method]
- [ ] Task 2: [title] → verify: [method]

### Wave 2: Core Implementation

- [ ] Task 3: [title] → verify: [method] (depends: 1)
- [ ] Task 4: [title] → verify: [method] (depends: 2)

### Wave 3: Integration

- [ ] Task 5: [title] → verify: [method] (depends: 3, 4)

Gap analysis

Once the plan is on the page, ask whether anything's missing, whether tasks should be combined or split further, and whether the success criteria still feel right. The user often spots gaps you can't because they hold context you don't.


Phase 5: TRACK

Make the plan durable. Skip this only when losing the plan would cost nothing to reconstruct — compaction, crashes, and other agents needing pickup all count as "spanning sessions" even inside one sitting.

The plan doc is durable state, not chat exhaust. For anything spanning compactions, sessions, or agents, the plan lives in the repo (graduate it from scratch dirs once it's load-bearing) and doubles as the progress ledger: current stack truth, wave-numbered statuses, the named next step, a memory checkpoint id. Write decisions into it before executing them — a decision that lives only in conversation doesn't survive the context window.

Mirror the plan into Sibyl as an epic with linked tasks and a pinned plan note ("[N] tasks across [M] waves, key decisions, critical path"); the sibyl skill carries the current invocation shapes. Task subjects mirror the plan's own IDs (R1.1, Wave 3) so the graph and the doc stay joinable.

Adaptive replanning

Plans meet reality and reality usually wins. When a task surfaces unexpected complexity, pause and reassess instead of forcing through. Adjust the task list, update Sibyl, and surface the change: "task 3 revealed X, adjusting plan: [changes]." Replanning is a feature of the workflow, not evidence the original plan was bad.

After any pivot or section fix, thread it through the whole artifact: sweep for the dead vocabulary and stale table rows until every remaining hit is provably intentional — rejected-alternatives sections are the legitimate survivors. The dominant spec-revision failure is fixing one section without threading it through the others.


Execution Handoff

Once the plan is approved, hand off to the right tool:

Situation Handoff
3-5 simple tasks, user present Execute directly with verification gates
5-15 tasks, mixed parallel /hyperskills:orchestrate with wave strategy
Large epic, 15+ tasks Orchestrate with Epic Parallel Build strategy
Needs more research first /hyperskills:research before executing

Package by review surface, not action count. Phases become rollout gates inside one PR unless reviewer domains or behavior isolation force a split. Over-serialization is compliance theater; a ten-PR plan is as wrong as a one-blob plan.

Wave-boundary shape check

Tests and reviews measure correctness; nothing downstream measures sprawl unless the plan gave it a fence. At each wave boundary, classify the branch diff by top-level path against the mission and ask which pieces prove the MVP, not which pieces merely exist:

git diff --name-only origin/${BASE:-main}...HEAD | awk -F/ '{print $1"/"$2}' | sort | uniq -c | sort -nr   # BASE = the PR's actual base ref

The next-spec-gap loop is the engine of unattended work and the engine of accidental empires; the non-goals fence from Phase 4 is what this check reads.

Trust gradient for execution

Heavy review on every task accumulates noise; zero review accumulates risk. Lean toward heavier review early and lighter review once patterns prove stable:

Review level What it includes When it applies
Full ceremony Implement + spec review + cross-model-review Early waves, high stakes, unproven patterns
Standard Implement + spec review Mid-plan waves once patterns stabilize
Light Implement + quick verify Late waves on established patterns

This is earned confidence, not cutting corners. The gradient resets if a task departs from the established pattern. Stay heavy for anything touching auth, payments, migrations, or data integrity regardless of where you are in the plan.

More review is not free: review-fix loops are a monotonic scope ratchet unless responses triage blockers from follow-ups and the fix pass carries a pre-declared file budget.


Anti-Patterns

Anti-Pattern Fix
Planning a five-minute fix Build directly and verify
Tasks without verification Add a concrete check or split the task
Parallel tasks touching the same files Sequence them or repartition ownership
Planning from filenames only Read the actual code path before decomposing
Decomposing a bad shape into tasks Hunt the judo move before you decompose
Treating the first plan as permanent Replan when reality reveals new constraints
Plan doc that lives only in chat Write it to the repo before executing
Open decision left unpinned Prior drift re-narrows it; pin it verbatim
Green gates as proof of shape Wave-boundary diff check against non-goals

What This Skill is NOT

  • Not required for simple tasks. If the solution is obvious, just build it.
  • Not an architecture essay — and not a bare checklist either. The plan carries decisions, pinned invariants, and rejected alternatives (the things prior-drift erases), and never its own making-of: review sausage and version stories stay out of the artifact.
  • Not a blocker. If the user says "just start building," start building. You can plan in parallel.
  • Not rigid. Plans adapt. The first plan is a hypothesis.

Embed badges

Add these to your README to show the skill's verification status.

SkillSafe verified badge
Verified badge
[![SkillSafe verified badge](https://api.skillsafe.ai/v1/badge/@hyperb1iss/plan/verified)](https://skillsafe.ai/skill/@hyperb1iss/plan/)
Installs badge
Installs badge
[![Installs badge](https://api.skillsafe.ai/v1/badge/@hyperb1iss/plan/installs)](https://skillsafe.ai/skill/@hyperb1iss/plan/)
Scan badge
Scan badge
[![Scan badge](https://api.skillsafe.ai/v1/badge/@hyperb1iss/plan/scan)](https://skillsafe.ai/skill/@hyperb1iss/plan/)
Eval pass rate badge
Eval pass rate
[![Eval pass rate badge](https://api.skillsafe.ai/v1/badge/@hyperb1iss/plan/eval)](https://skillsafe.ai/skill/@hyperb1iss/plan/)