Decompose multi-step work into a revisable subgoal plan with stable step IDs, checkpointing, and plan-ahead execution. Load when a task needs explicit planning before action, subgoal decomposition, plan checkpointing, or ReCAP-style plan-ahead execution. Also triggers on "structured plan", "plan with steps", "subgoal graph", "revise the plan", "checkpoint plan", or multi-step tasks where naive one-shot execution would be fragile. Skips trivial single-step tasks. Pairs with dynamic-routing on ...
Scanned 9/11/2026
Install to Claude Code
npx -y skills add dvy1987/agent-loom --skill structured-planning --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Structured Planning?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dvy1987-structured-planning)More formats (shields.io, HTML) on the badges page.
---
name: structured-planning
description: >
Decompose multi-step work into a revisable subgoal plan with stable step IDs,
checkpointing, and plan-ahead execution. Load when a task needs explicit
planning before action, subgoal decomposition, plan checkpointing, or
ReCAP-style plan-ahead execution. Also triggers on "structured plan",
"plan with steps", "subgoal graph", "revise the plan", "checkpoint plan",
or multi-step tasks where naive one-shot execution would be fragile. Skips
trivial single-step tasks. Pairs with dynamic-routing on failure. Distinct
from process-decomposer (registry/triage) and problem-to-plan (doc deliverables).
license: MIT
metadata:
author: dvy1987
version: "1.0"
category: project-specific
sources: Anthropic Building Effective Agents, ReCAP NeurIPS 2025, DyFlow, GAP, NaviAgent
resources:
references:
- PATTERNS.md
- PLAN-SCHEMA.md
- examples.md
scripts:
- plan_lint.py
---
# Structured Planning
You plan before you act: emit a subgoal checklist with stable ids (`S1`, `S1.1`), execute **one step against ground truth**, record observations, refine the remainder. On failure, hand off to `dynamic-routing` — do not blind-retry.
## Hard Rules
Trivial tasks (single step, obvious outcome) → skip formal plan; state "trivial — plan skipped."
Non-trivial tasks → write plan to `.agent-loom/plans/<task-id>.md` per `references/PLAN-SCHEMA.md`.
Generate full plan once; execute only the first pending step per cycle (ReCAP commit-one).
Every step records: goal, action, precondition, expected observation, status, evidence.
Run `scripts/plan_lint.py` after each plan write.
Append plan changes to **Plan delta log** with reason — never silent edits.
---
## Workflow
### Step 1 — Triage complexity
| Signal | Route |
|--------|-------|
| Single tool call / one file / clear outcome | Skip plan — execute directly |
| Multi-step, failure-prone, or user asked to plan | Continue |
### Step 2 — Draft full plan
1. Assign `task_id` slug and stable step ids.
2. Fill all fields per PLAN-SCHEMA.
3. Write file; run `plan_lint.py`.
### Step 3 — Execute one step
1. Mark step `in-progress`.
2. Run the action; capture **actual** observation in `evidence:`.
3. Mark `done` or `failed`.
### Step 4 — Refine remainder
Before the next step: update preconditions/expected fields for pending steps using new evidence. Log deltas.
### Step 5 — On failure
Invoke `dynamic-routing` with failed step id + evidence. Apply revised plan; lint again.
### Step 6 — Complete
All steps `done` or explicit `aborted`. Emit final plan path.
---
## Gotchas
- Executing the whole plan without observation updates recreates one-shot fragility.
- Reusing step ids after revision breaks trace cross-reference with `run-trace`.
- Plans in chat only — not auditable; always persist to `.agent-loom/plans/`.
---
## Output Format
```markdown
## Structured plan — [task_id]
Plan file: `.agent-loom/plans/[task_id].md`
Steps: N total | done: N | pending: N | failed: N
Current step: **Sx** — [goal]
Observation: [actual vs expected]
Delta (if any): [step] [from→to] — [reason]
Next: execute **Sy** | invoke dynamic-routing | complete
```
---
## Examples
Teaser: 4-step API feature → full plan written → S1 done (migration applied) → S2 preconditions updated after observing schema conflict.
Full pairs: `references/examples.md`
---
## Common Rationalizations
| Excuse | Reality |
|--------|---------|
| "Planning is overhead" | Rework from a failed one-shot costs more. |
| "I'll keep the plan in my head" | Not handoff-safe; write the file. |
| "Execute all steps then fix" | Violates commit-one; observations won't flow. |
| "process-decomposer already planned" | That produces process entries; this is runtime execution state. |
| "problem-to-plan wrote a plan doc" | docs/plans/ is spec; this is live execution tracking. |
## Verification
- [ ] Plan file exists at `.agent-loom/plans/<task-id>.md`
- [ ] plan_lint.py passes
- [ ] Only one step executed per cycle
- [ ] Delta log updated on revision
## Red Flags
- Multi-step work with no plan file
- Failed step without delta log entry
- Blind retry of same action after failure
## Prune Log
Last pruned: 2026-07-05
- Initial release from high-leverage skill spec (Skill 1 family)
## Impact Report
```
Plan: [task_id] | Steps: N/M done | Lint: [pass/fail] | Current: [step id]
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!