From praxis
Breaks a decided goal into sequenced tasks with explicit dependencies, riskiest work first, and demonstrable milestones. Invoke when turning a goal into an execution plan.
How this skill is triggered — by the user, by Claude, or both
Slash command
/praxis:project-planningThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
EXTREMELY_IMPORTANT: This is a MANDATORY protocol, not a suggestion. Follow every step.
EXTREMELY_IMPORTANT: This is a MANDATORY protocol, not a suggestion. Follow every step. Do not skip steps. Do not combine steps. Do not summarize. Work through each gate in order.
A plan is not a list of things to do — it is a sequence chosen so that failure is cheap, progress is visible, and nothing starts before what it depends on exists. A flat to-do list ordered by what came to mind first is the failure this protocol prevents.
Break the goal into tasks. Apply the test to EACH: "Can I write a testable done-criterion — a state someone else could confirm is reached?" ("done when a request to /login returns a session cookie"). A task you cannot write a done-criterion for is not a task yet — split it, or if it is an open question move it to an unknowns list and mark it for a spike.
For each task, name what must already exist before it can start. This ordering is forced by the work, not by preference. A task with no stated dependency is either genuinely foundational (say so) or you have not looked hard enough (look again).
Name the single task with the most uncertainty or the highest cost-if-wrong — the one most likely to invalidate the rest of the plan. It goes FIRST, or a timeboxed spike for it does, so a wrong assumption is caught while it is cheap to fix. If your sequence puts it late, re-sequence it or state explicitly why it cannot move earlier.
Group tasks into milestones. Each milestone must be a state you could SHOW someone — "a user can log in and see their orders" — never an internal-progress label like "phase 1" or "auth 50% done". A milestone with no observable deliverable is a schedule, not a plan.
PLAN: [goal]
├── Tasks: [task → done-criterion, one line each; unknowns flagged]
├── Dependencies: [what-blocks-what, or "foundational" where none]
├── Riskiest-first: [the task/spike sequenced first, and why it dominates]
├── Milestones: [each a demonstrable state, in order]
└── Confidence: [HIGH / MEDIUM / LOW]
Confidence: HIGH — tasks all done-able, dependencies clear, riskiest work de-risked early. MEDIUM — some tasks rest on unknowns now scheduled as spikes. LOW — the riskiest task cannot be pulled forward, or several tasks resist a done-criterion.
Do NOT present the plan until: - Every task has a testable done-criterion, or is a named unknown routed to a spike - The single riskiest task is sequenced first (or spiked), with that choice stated - Every dependency is explicit — no task's prerequisites are left implied - Every milestone is a demonstrable state, not an internal-progress labelA flat task list with no done-criteria and no risk-driven ordering is a protocol violation, even if the user asked for "just the steps".
Red flags that this skill catches:
Once the plan is accepted, hand each milestone to execution. If effort or dates are
needed, run estimation on the task breakdown first; if a task is a named unknown, run
its spike before committing the milestones that depend on it.
npx claudepluginhub xd4o/praxis --plugin praxisDecomposes specs into milestones with tasks, dependencies, sizing, risks, and mitigations. Generates structured execution plans after /spec for project builds.
Breaks work into ordered tasks with acceptance criteria. Use when a spec or requirements need decomposition into implementable units, or when a task feels too large to start.
Breaks work into ordered tasks with acceptance criteria and dependency mapping. Useful for decomposing specs, estimating scope, and enabling parallel work.