Skill v1.0.0
currentAutomated scan100/100name: planning-with-files description: Use when any non-trivial task (>20 LOC or >1 file) would otherwise be done without a persistent plan. Produces and maintains a markdown plan file that survives session compaction and restarts. Based on the Manus-style planning pattern popularized by OthmanAdi/planning-with-files (18.4k⭐). version: 1.0.0 trigger: > Intent matches planning, implementing, refactoring, or shipping a non-trivial feature. Also triggers when user explicitly mentions "plan", "planning", "plan file", "plans/", "PRD", "spec", or when @architect is invoked.
Planning With Files
You are the planning layer for this project. You turn vague intents into file-based plans that survive the session.
When to Run
- Any task > 20 lines of code or spanning > 1 file
- Any refactor, migration, or multi-step shipping task
- User mentions "plan", "planning", "plan file", "plans/", "PRD", or "spec"
@architectis invoked- A prior session's plan file exists for this task (resume from it, don't re-plan from scratch)
When NOT to Run
- One-liner bug fixes
- Docs-only typo fixes or wording changes
- Mechanical renames (
s/foo/bar/gacross the repo) - Reading / explaining code (no code changes → no plan needed)
Why File-Based Plans
- Survive `/compact` — in-memory plans get dropped when context compresses
- Survive session restarts — agent reads the file on the next session and resumes
- Survive worktrees — every parallel Cascade sees the same plan
- Reviewable — humans can read, diff, and edit the plan before you write code
- Git-tracked — PR reviewers see what was planned vs what shipped
Plan File Location & Naming
All plan files live in plans/ at the repo root:
plans/├── 2026-04-17-stripe-webhooks.md├── 2026-04-16-postgres-migration.md└── README.md # index of active plans
Filename convention: <YYYY-MM-DD>-<slug>.md. One plan = one PR = one merged commit.
Plan File Template
Every plan file MUST have these sections, in this order:
# <Title>Status: draft | approved | in-progress | blocked | doneOwner: <human name>Started: <YYYY-MM-DD>## GoalOne paragraph. What changes for a user or operator when this ships?## Non-GoalsBulleted list of what this deliberately does NOT do. The biggest source ofscope drift is an unwritten non-goal.## Constraints-From AGENTS.md invariants: ...-From user context: ...-Hard deadlines: ...## ApproachOne or two paragraphs explaining the chosen approach. Cite 2-3 alternativesconsidered with trade-offs.## Task Breakdown-[ ] 1. <one verb, one file-scope, one acceptance criterion>-[ ] 2. ...-[ ] 3. ...## Risks & Mitigations-**Risk:** ... **Mitigation:** ...## Rollback PlanIf this ships and breaks production, how do we back out in <10 minutes?## Session Log<!-- Append a line per session. No prose. -->-2026-04-17 14:02 — plan drafted, reviewer feedback pending-2026-04-17 15:45 — @reviewer LGTM, starting task 1
Operating Rules
- Never start coding without a plan file for tasks > 20 LOC or spanning > 1 file.
- Work one checkbox at a time. After each checkbox, update the plan file with
[x]and a one-line note in the Session Log. Run tests before moving to the next. - If a checkbox turns red, stop. Do not move to the next. Add a
## Blockersection, message the human, wait. - If you discover the plan is wrong mid-implementation, stop coding, update the plan, re-review with @reviewer before continuing.
- At session start, ALWAYS read the latest plan file in
plans/before opening any source file. The plan is the source of truth for intent. - Commit the empty plan first. The plan is the contract. Code that doesn't match the plan is a bug in one of them.
Integration With Cascade Modes
- Plan Mode produces an in-memory plan. Your job: persist it to a file before handing off.
- Code Mode with
@implementer: pass the plan file path. The implementer works checkbox-by-checkbox. - Ask Mode: never creates plans; only reads them.
Never
- Never start coding on a task > 20 LOC or spanning > 1 file without a plan file committed first
- Never mark a checkbox
[x]when tests are red, the lint is broken, or the build fails - Never skip the plan "just for this one" — that's how scope drift starts
- Never let a plan file exceed 800 lines — if it's that big, split it into multiple plans
- Never write a task without an acceptance criterion — "refactor auth" is not a task; "add
rotateToken()with tests" is - Never silently abandon a plan mid-implementation — update the plan, flag the pivot, re-review
Hand-Off
When the plan is drafted, hand to @reviewer for a plan-review pass before any implementation. Only @implementer touches code, and only after the plan is approved.
Credits
Inspired by OthmanAdi/planning-with-files (18.4k⭐) and Andrew Shu's markdown-plan-files pattern.