Skip to content
Skillv1.0.0

plan

Use when an approved, clarified spec must become a technical blueprint before any code — the SDD phase between clarify and tasks: architecture, contracts, data flow, testing strategy, sequencing and r

by ericrisco(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from ericrisco/rsc-harness (skills/plan/SKILL.md). Install upstream with npx skills add ericrisco/rsc-harness --skill plan. Copyright stays with the author.

Plan — the technical blueprint between spec and tasks

The spec says what and why. plan decides how: the components, the contracts between them, the data that flows, how each claim gets proven, and what is most likely to bite. It reads the clarified spec and the constitution, writes ONE artifact — 02-DOCS/wiki/sdd/plans/<slug>.md — and hands off to tasks, which slices it into an ordered, independently-verifiable checklist.

constitution → specify → clarify → [ plan ] → tasks → analyze → implement → verify → review → ship

Decide structure, not syntax

A plan names components, contracts, shapes and flows. It does not write the framework's route decorators, the ORM's session boilerplate or the test runner's flags — those are stack mechanics, owned by the stack skill (../fastapi/SKILL.md, ../nextjs/SKILL.md, ../go/SKILL.md, ../flutter/SKILL.md, ../postgresdb/SKILL.md) at implement time. This altitude is what makes a plan reviewable against intent and slice-able by tasks; drop it and you get code no one approved.

reservation.reserve(cartId: CartId) -> Reservation | OutOfStock | CartNotFound
  - idempotent on cartId (calling twice returns the same Reservation)
  - holds stock for 15 min, then auto-releases
  - never partially reserves: all lines or none

That is the altitude. The stack skill later decides whether it becomes a POST handler with a Pydantic model or a Go method on a struct — it can, because the contract is unambiguous.

Entry gate

  1. The spec02-DOCS/wiki/sdd/specs/<slug>.md. Missing → STOP, route to ../specify/SKILL.md. Still carrying [NEEDS CLARIFICATION] markers or open questions → STOP, route to ../clarify/SKILL.md. A plan built on an unclarified spec is a guess wearing a diagram, and every phase downstream inherits the guess.
  2. The constitution02-DOCS/wiki/sdd/constitution.md holds the project's non-negotiables (stack canon, quality bars, conventions). Every architectural choice must be consistent with it; where the design needs to bend a principle, say so with a reason instead of bending it silently.
  3. The Knowledge map02-DOCS/wiki/index.md points at 02-DOCS/wiki/stack/* and prior plans/decisions. Reusing what the project already settled is the difference between a plan and scope drift.
  4. The dial02-DOCS/wiki/harness/user-profile.md (see below).

What a plan contains

The sections of the artifact, in order; fill them top-down, later ones lean on earlier ones. The fill-in skeleton with per-section guidance is references/plan-template.md — use it verbatim.

§ Section The question it answers
0 Global constraints Which exact values must every task honor? (verbatim, not paraphrased — a context-isolated implementer and its reviewer see nothing else)
1 Context & constraints Which spec/constitution facts pin this design down? Cite (spec §Acceptance #3), don't re-paste
2 Architecture What are the components and how do they fit together?
3 Interfaces & contracts What does each component promise the others?
4 Data model & flow What data exists, where it lives, how it moves and changes?
5 Testing strategy How will we prove each part does what it claims?
6 Sequencing & dependencies In what order can this be built and verified?
7 Risks & open decisions What is most likely to be wrong, and what is still undecided?

Three of them carry the weight and fail quietly:

  • §2 Architecture — a box-and-arrow diagram, one sentence of single responsibility per component, internal vs. external marked (the arrows are the seams you will test and parallelize). State the one decision that matters most — sync vs. async, split service vs. monolith, read model vs. single table — and defend it against a constraint from §1. If two designs are genuinely viable, give both, the trade-off, and your recommendation; leaving the reader to choose is not a plan.
  • §5 Testing strategy — per acceptance criterion: the level that proves it (unit / contract / integration / e2e), what it asserts, what it fakes to stay fast. Deciding this before code exists is what makes implement's TDD possible. You choose the seams; the stack skill owns the tooling.
  • §7 Risks — ranked, each with trigger, impact, and the mitigation or spike that retires it. A plan claiming zero risk is the riskiest one. Significant decisions taken while planning also get appended to 02-DOCS/wiki/sdd/decisions.md, so later phases can trace the why.

The artifact

Write 02-DOCS/wiki/sdd/plans/<slug>.md, <slug> matching the spec's slug exactly — one plan per spec, same name, because that is how tasks, analyze and implement find it. Then index it in 02-DOCS/wiki/index.md (the Knowledge map; root CLAUDE.md keeps only a pointer). If a plan for this slug already exists, update it in place and note what changed — never fork a -v2.

Model tier — heavy (opt-in routing)

Architecture, interfaces, data flow and risk are the heaviest reasoning in the chain, so this phase's default tier is heavy. Routing is off unless models.enabled: true in 02-DOCS/wiki/sdd/config.yaml; the resolution order, the announce rule and the model table live in ../sdd/references/model-routing.md. Routing off or no profile → session model, silently.

Adapting to the dial

The accompaniment level in 02-DOCS/wiki/harness/user-profile.md (owned by ../init/SKILL.md) changes how much you say, never whether a section exists. Even at L0 the plan is complete; it is just quiet.

Level How plan behaves
L0 Terse plan, no narration in chat — write the file, point to it.
L1 Same artifact, one line of why on the top architectural decision.
L2 Justify each significant design choice in the artifact; surface the trade-offs weighed.
L3 Walk a non-technical user through the architecture in plain language, define terms inline, and ask about constraints you cannot infer — one focused question at a time.

Anti-patterns

Anti-pattern Why it fails / the fix
Writing the real code in the plan "because it's faster" You dropped an altitude. Syntax is the stack skill's job at implement. Pull back to contracts.
Planning around a spec that is "a bit fuzzy but I get the gist" A plan on an unclarified spec is a guess. STOP, route to clarify, then plan.
Testing strategy = "we'll write tests" Not a strategy. Name the level per acceptance criterion and what each test fakes.
Keeping risks short because they read negative The plan that claims no risk is the riskiest. Rank the real ones, give each a mitigation.
Picking the framework, ORM and config here Stack canon lives in the constitution; mechanics live in the stack skill. Stay above the seam.
Listing two designs and letting the reader choose Decide. Alternatives ship only with a trade-off and a recommendation matched to the constitution.
One big undifferentiated sequencing step Then tasks cannot slice it and nothing is independently verifiable. Order it into checkable steps.
Starting a fresh plan when one exists for the slug Forked plans rot and later phases read the wrong one. Update in place, note the change.

Always propose isolation before the build

Once the plan is written, always propose isolating the work in a git worktree/branch before any code is implemented — every feature, not just the risky ones. One line, calibrated to the dial:

"Antes de implementar, ¿aíslo este trabajo en un worktree/rama propia (../worktrees/SKILL.md) para no tocar tu rama actual? (recomendado)"

Accepted → hand to ../worktrees/SKILL.md first. Declined → note it and continue. Already on the default branch (main/master) → isolation is not optional: say so and route to worktrees regardless. (implement re-checks this as a hard gate before its first commit.)

When NOT to use

  • Fuzzy idea, no spec yet → ../specify/SKILL.md; ambiguity in an existing spec → ../clarify/SKILL.md; project-wide non-negotiables → ../constitution/SKILL.md.
  • Slicing an approved plan into an ordered checklist → ../tasks/SKILL.md.
  • Concrete framework/ORM/test-runner mechanics → the stack skill (../fastapi/SKILL.md, ../nextjs/SKILL.md, ../go/SKILL.md, ../flutter/SKILL.md, ../postgresdb/SKILL.md).

Result envelope

End with the parseable block every SDD phase shares, so the dispatcher can chain without interpreting prose (contract: ../sdd/SKILL.md):

{
  "status": "complete|blocked|failed",
  "executive_summary": "Technical plan derived from the clarified spec, with the isolation decision made.",
  "artifact": "02-DOCS/wiki/sdd/plans/<slug>.md",
  "next_recommended": "tasks",
  "risk": "low|medium|high",
  "skill_resolution": {
    "used": ["plan"],
    "missing": [],
    "fallback": [],
    "compact_rules": ["The plan answers HOW; the spec owns WHAT.", "Name the isolation choice before the build starts."]
  },
  "evidence": ["plan path exists", "each spec acceptance criterion has an approach", "risks and rollback stated"]
}

Next in the chain

Plan written, indexed, decisions logged → propose isolation (above), then hand off to ../tasks/SKILL.md, which turns §6 into an ordered task list with a done-check per task. If planning surfaced an ambiguity the spec never resolved, loop back to ../clarify/SKILL.md first.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/ericrisco-rsc-harness-plan/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

ericrisco-rsc-harness-plan.ocm.jsonjson
{
  "ocm": "1",
  "id": "ericrisco-rsc-harness-plan",
  "kind": "skill",
  "name": "plan",
  "description": "Use when an approved, clarified spec must become a technical blueprint before any code — the SDD phase between clarify and tasks: architecture, contracts, data flow, testing strategy, sequencing and risks, at structure altitude, never framework syntax. NOT the what/why spec (that is `specify`), NOT the ambiguity sweep (that is `clarify`), NOT the task breakdown (that is `tasks`), NOT the code (that is `implement`).",
  "publisher": "ericrisco",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "sdd",
      "plan",
      "design",
      "github"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Use when an approved, clarified spec must become a technical blueprint before any code — the SDD phase between clarify and tasks: architecture, contracts, data flow, testing strategy, sequencing and risks, at structure altitude, never framework syntax. NOT the what/why spec (that is `specify`), NOT the ambiguity sweep (that is `clarify`), NOT the task breakdown (that is `tasks`), NOT the code (that is `implement`)."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/ericrisco/rsc-harness",
      "path": "skills/plan/SKILL.md",
      "ref": "8cc4716ea549275ade1590ad270da01bdf837ab5",
      "url": "https://github.com/ericrisco/rsc-harness/blob/8cc4716ea549275ade1590ad270da01bdf837ab5/skills/plan/SKILL.md",
      "key": "ericrisco/rsc-harness/skills/plan/SKILL.md"
    }
  },
  "instructions": "# Plan — the technical blueprint between spec and tasks\n\nThe spec says **what** and **why**. `plan` decides **how**: the components, the contracts between\nthem, the data that flows, how each claim gets proven, and what is most likely to bite. It reads the\nclarified spec and the constitution, writes ONE artifact — `02-DOCS/wiki/sdd/plans/<slug>.md` — and\nhands off to `tasks`, which slices it into an ordered, independently-verifiable checklist.\n\n```text\nconstitution → specify → clarify → [ plan ] → tasks → analyze → implement → verify → review → ship\n```\n\n## Decide structure, not syntax\n\nA plan ",
  "cost": {
    "context_tokens": 2402
  }
}

Fetch it by URL: GET /api/v1/registry/ericrisco-rsc-harness-plan/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.