Turns design documents or code into the implementation plan (one-commit units, grade, executor), or a fix plan from a test or audit report. Use for «составь план», «разбей на задачи», «исправь баги из отчёта».
Resources
2Install
npx skillscat add idontlikedrinkpivo/web-dev-pipeline-codex-plugin/plan Install via the SkillsCat registry.
Codex runtime. Before using this skill, read
../executor-catalog/references/codex-runtime.md. It defines tool mappings, named-agent dispatch and stage-chat orchestration; use it for inherited Claude Code terms below.
Implementation Plan with Executor Routing
Design documents say what and how it is shaped. This plan says in
what order it gets built, in what commits, and by whom. Its one distinctive
job: every unit carries a complexity grade and a named executor, so a rename
is told to apply a shape and a state machine is told to design the missing
part — and each gets the review roster that grade names.
This skill decides nothing the design already decided. It cites. Write the
plan in Russian. Do not translate U-ids, file paths, or executor names.
Template headings stay as this skill specifies.
Not this skill's job
| Not here | Owner |
|---|---|
| Product behavior, actors, acceptance criteria | srs-writer |
| Stack, layers, ports · rules · use-case flow | clean-architecture-design (foundation · domain model · scenarios) |
| Endpoint contracts · table shapes · screen behaviour | openapi-spec-generator · db-schema-design · screen-spec |
| Look of a screen | the Figma frame cited by fileKey / nodeId in the screen spec. A screen unit cites that id and does not restyle the product; a new look arrives only as the theme unit after a ui-design restyle |
| Directory tree, lint config, composition root | repo-scaffold |
| Compose topology · CI workflow | deploy-topology · ci-pipeline |
Document version fields and changelog rows |
doc-versioning, whose stamp is written automatically when a design stage closes; this skill does not call it. The service version is read from the open folder and its level re-checked here, per pipeline → Service version |
| Writing code, running tests, committing code | work |
If a design gap surfaces while planning, it goes to this plan's Open
questions file beside the plan, open-questions.md. Never close a design
gap by guessing inside a unit, and never add an open-questions section to the
plan. A finding the user asked to defer after review goes in that same file.
A gap the user settles instead — or a decision the user changes while the
plan is written or reviewed — goes into the design document first,
committed with no version change, and the plan is written or revised
against the fixed text (pipeline → references/decision-changes.md).
Modes
| MODE | When | The writer |
|---|---|---|
greenfield |
the product's first plan: the code is what repo-scaffold made |
slices everything the documents hold |
increment |
a version over code that runs — its documents changed; also a brownfield repo whose code is the design (no documents) | slices only what this version added or changed, against the inventory of the code it reaches |
fix |
a UI acceptance run returned DEFECTS, a security audit FIX, or a code audit's rows: the report rows the user chose to fix |
appends fix units to this version's plan.md, no bump unit; a code audit's fix plan is born in its own iteration, with one |
revise |
plan-review returned FIX_THEN_PROCEED or RETURN_TO_PLAN |
settles the blocking findings only |
What each mode changes — scope, inventory, citations, coverage:references/modes.md. The writer reads its MODE's section before its Step 1.
Inputs
Input (path under documentation/) |
Required | Read for |
|---|---|---|
Architecture foundation architecture/architecture.md |
yes | stack (§1), «Решения по NFR» (§1 — each row is applied by some unit), modules and areas (§2), ports and adapters and the configuration table (§4 — each variable is read and used by some unit), file tree (§5), lint and test plan (§6) |
Domain model architecture/domain.md |
yes | entities, value objects, named errors, the invariant table (§4) — every rule a unit enforces is cited from here |
Scenarios of the areas in scope architecture/scenarios/<area>/<group>.md |
yes | one unit per state-changing scenario; its steps, ports, transaction boundary and errors |
SRS requirements/srs/srs.md and every areas/*.md |
yes | UC / AC / BR / NFR ids the units must cite |
OpenAPI api/openapi.yaml with paths/ and components/ |
when the surface is HTTP | one unit per operation group; operationId names the unit |
DB schema db/schema.md + db/migrations/ |
when there is storage | migration units and their ordering: a schema change in scope is a unit that adds the next numbered file db-schema-design wrote to the app's migration run — never an edit of a committed file |
Screen specs ui/screen-specs/ (+ ui/frames-register.md) |
when there are screens | one unit per screen (a large screen: one per part, see Screen below): its elements, states, response outcomes and the Figma nodeId the unit cites; after a restyle, the register's «Визуальное направление» line and the 🎨 Tokens page for the theme unit |
A report — plans/<version>/test-run.md (DEFECTS), security-audit.md (FIX) or plans/code-audit-<date>.md |
MODE fix |
the rows the user chose to fix, by id (TC-n, F<n>, A<n>) |
| Scaffold state (the repo itself) | always | what already exists — never plan a unit that recreates it |
docs-consistency.md in the version folder is read for its first line and itschecked: hashes. Missing, not Verdict: PASS, or a hash that no longer
matches its file: say in the opening that the document set was not checked
as a whole since its last change, and ask about docs-consistency before
planning, per pipeline. A declined check is not a stop; name it in the
plan's §1 digest.
Missing a required input: stop and say which one. A plan built on a
guessed architecture routes work confidently in the wrong direction, which is
worse than no plan. The one exception is a repo whose code is the design
(brownfield, no docs, MODE increment): then the code stands in for the
docs — inventoried by code-explorer in the orchestrator, not read into
this session — and every unit's Документы cell reads code:<path> so
execution knows the citation is inferred, not specified. A code audit's fix plan
(MODE fix, rows A<n>) is the same case: its rows, the documents they revised and the code stand in.
Orchestrator (session)
The session writes no plan file. It grades which writer settles the plan,
asks, and dispatches. It does not slice units. Cite these steps as plan →
Orchestrator step ; the writer's own Steps 1–7 are another sequence
(references/writer.md).
This skill does not call doc-versioning, does not stamp a document, and
does not commit documentation. Pin sources: to the version already
written in each source file.
- Stop when a greenfield or increment plan has no architecture
foundation, domain model, or scenarios document for an area in scope.
Brownfield with no docs is allowed. Pick MODE (Modes). Read the inputs
far enough to run the grade below: level, risk, and the counts in the
cascade. Do not slice. - Read the iteration's version from the open
documentation/plans/<version>/(nosummary.md), or from the
iteration branchwhere_am_i.pynames when the folder is not here (a
fresh clone:open_iteration.py <version>only creates it). None open —
fix the number perpipeline→ Service version and open it:python3 "<folder of this SKILL.md>/../pipeline/scripts/open_iteration.py" <version>.
Then re-check the level against the iteration's typed changes: the
rows of this version, plus unstamped changes typed from the diff since
the last tag. A changed level is asked again. VERSION in the packet:
number, level, reason; MANIFEST: the manifest's currentversion. - Plugin code changes waiting (greenfield, increment, and a code audit's fix plan — the first plan of its iteration):
python3 "<folder of this SKILL.md>/../upgrade-docs/scripts/project_format.py" list . --kind code.
A changeupgrade-codeleft for «the first unit of the next iteration»
is lost unless this plan carries it. When the list is not empty, ask
one question (pipeline/references/question-format.md): put them into
this plan as its first units, or leave them forupgrade-code. A yes
fills DEFERRED in the packet — id, title andfixof each. - Increment, brownfield and a code audit's fix: the inventory. Resolve the
code-explorerrow and dispatch it underexecutor-catalog→ Dispatch
contract. Read that section's bullets and stop before its example. Ask
for: the entry points; the files that implement each id this version
adds or changes; the patterns a new unit would mirror; the storage
access shape; the test conventions; and every use — code, tests, e2e,
CI, documents — of each symbol a change removes or renames. Take back
paths and shapes only; they go into INVENTORY. - Read
executor-catalogandexecutor-catalog/references/plan-complexity.md. The cascade there
grades the plan, not a unit (fix: Grading a fix plan;revise:
Grading a revise). Before theAgentcall, writeGrade | Executor | subagent_typefor theplan-writerrow the
grade picked (plan-lite,plan-medium, orplan-hard), and dispatch
it without asking which model, withexecutor-catalog/references/plan-writer-prompt.md
assubagent_type: "<row>"with nomodel— the agent file holds
it; passmodelonly for an explicit user model pick. A missing
agent is a stop per the Dispatch contract, a rejected alias per Slug
hygiene. Do not write the plan on the session model. Do not dispatchdoc-typist. - Inspect the report. From
plan-mediumorplan-hard, aDELEGATED
that is notdoc-typist(the writer typed the plan itself) comes back,
until it is right;plan-liteprints the plan itself (executor-catalog
→ Nesting) and reportsnone; model slugs and
executor names areplan_lint.py's, in step 7. ABLOCKEDwith a
question for the user is asked and sent back to the same row; any
otherBLOCKED/HARDER_THAN_EXPECTEDescalates one tier per failure
(lite → medium → hard), and that dispatch asks again; the rounds go on
while each makes progress (pipeline→references/convergence.md). - Run
python3 "<folder of this SKILL.md>/scripts/plan_lint.py" <plan>: each error goes back to the writer
(revise, those lines) until it exits 0. Report the plan path and the writer's counts. Then runplan-reviewat
once, without asking — onfix, over the appended units (the report's
NEW UNITS): every product decision is already settled in the documents, so what the review finds is the pipeline's own work to fix (pipeline→references/gates.md).
It returns without asking the next stage. Branch on its verdict:FIX_THEN_PROCEEDorRETURN_TO_PLAN— grade the revise on its
own, not by the plan (plan-complexity.md→ Grading a revise: the
«Вид правки» of the blocking rows). Before theAgentcall writeRevise grade | Executor | subagent_type. Dispatch thatplan-*
row with MODErevise, the revise grade in COMPLEXITY, and the
blocking row numbers in FINDINGS, then re-runplan-reviewover
the changed units only. Revise and re-review repeat until the verdict
passes, while each round makes progress; when progress stops, take it to
the user (pipeline→references/convergence.md).STOP— stop and take it to the user. The user's answer is a changed
decision: it lands in its document (pipeline→references/decision-changes.md) before the revise round that follows.PASS— only then ask, perpipeline→ "Asking before a
transition", about the stage the table names after this one. Do not
name a next step from memory. A row ofopen-questions.mdclassedБлокирует стартgoes into that question, each with the units it
holds:workcannot start them until the user answers.
Writer (dispatched)
The writer half — Steps 1–7 (digest, slicing, order, unit fields, grading, executors, the hand-off todoc-typist), the output template, the quality gate and the report — is references/writer.md. The dispatchedplan-* writer reads it whole (its packet's SKILL slot names it), and so does doc-typist for the plan's shape,
headings and ids. The session does not read it.
References
references/modes.md— what greenfield, increment, fix and revise
change; a path this version retired; brownfield without documents. The
writer reads its MODE's section.references/writer.md— the writer half: Steps 1–7, the output
template, the quality gate, the report. The writer reads it; the session
does not.references/plan-template.md— the document template and its pins
(writer Step 7).references/unit-example.md— one filled unit, for calibration (writer
Step 4).references/files-field.md— the five cases of «Файлы» (writer Step 4).references/complexity.md— the unit grading cascade, the six signals,
the anti-inflation and anti-deflation gates, the split rule, and
calibrated examples per grade. The writer runs this. The session does
not.executor-catalog/references/plan-complexity.md— the cascade that
picksplan-lite/plan-medium/plan-hard. The session runs this
before the dispatch.executor-catalog/references/assignable-implementers.md— the only
legalИсполнительandВложенныйnames.executor-catalog(skill) — theplan-writerrows, thecode-explorer
row for the inventory, and the Dispatch contract.plan-review(skill) — the independent gate over this plan. The
session runs it at once, without asking, after the file exists
(Orchestrator step 7).
It reports; every fix it names is applied by a new dispatch of the
writer, not by the session.pipeline(skill) — where this stage sits, its gate, and what follows.
The session asks. The writer does not.