skills/shape/SKILL.md
Converge with the PM on the SHAPE of a problem (the PRD half) before any solutioning. Strategic, not tactical. Exit gate altitude-routes to plan/roadmap-planning/goal-setting based on work horizon.
npx skillsauth add oduffy-delphi/coordinator-claude shapeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Converge with the PM on what the problem actually is before the EM goes solo on how to solve it. Plans fuse a PM-owned PRD half (the problem, what "solved" means) with an EM-owned SDD half (architecture, fix-locus, sequencing); the pipeline has rigor for the SDD half and almost none for the PRD half. /shape is that missing front-half: a short, collaborative problem-convergence beat whose only exit is a ratified problem-set that altitude-routes to the horizon-appropriate downstream ceremony (coordinator:plan, coordinator:roadmap-planning, or coordinator:goal-setting).
/shape is a strategic ceremony, not a tactical clarification round. It operates at the altitude of product intent, scope boundaries, and success criteria — the questions only the PM can resolve. Tactical uncertainties (naming, file structure, which test framework, commit shape, refactor mechanics) are EM remit and do NOT belong in a /shape exchange, no matter how genuinely unsure the EM is — resolving them is the EM's job (global CLAUDE.md § PM Altitude).
Announce at start: "Using /shape to converge on the problem before we plan a solution."
coordinator:brainstorming. The discriminating test: if the PM HAS a problem and wants confirmation you understood it (vs. not knowing what to build at all) → coordinator:shape, not coordinator:brainstorming./shape, an existing approved spec, a known next-step on a live workstream) → straight to the appropriate downstream skill (see § Transition)./shape and coordinator:brainstorming are siblings, not twins: brainstorming turns vague intent into a design spec (a solution artifact in docs/specs/); /shape converges on the problem (a problem-set in docs/problems/) and defers solutioning entirely. Both chain into a downstream planning ceremony.
This gate is about finishing what you started. If the problem was already converged (prior /shape, existing spec, known workstream next-step), skip /shape entirely and go straight to the appropriate downstream skill. But once /shape starts, see it through.
</HARD-GATE>
coordinator:plan's job.coordinator-doc-new, fill its body, set estimated_horizon, and ratify with the PM, then confirm the horizon and chain into the appropriate downstream ceremony (see § Transition).A yes/no "do I have the shape? ✓" is a banned response shape — EM confidence is coupled with helpfulness, so it self-reports green every time and reveals nothing (the same failure mode that made plan-coverage-checker no-opt-out). Step 2 must instead produce the thing that reveals a misunderstanding:
global CLAUDE.md § PM Altitude. Resolving them is your job; surfacing them is noise.This does not make the mechanism un-gameable in absolute terms (no self-report is), but it raises the cost of the dodge above the cost of honest articulation — the right bar for an offer-shaped mechanism, per eager-agent-calibration.md § offer-shape.
Scaffold via: coordinator-doc-new --type problem-set --title "<problem title>" — emits docs/problems/YYYY-MM-DD-<slug>.md with status: draft and the canonical section skeleton. Tiny by design — a bulleted problem list, not a design doc. The scaffolder creates docs/problems/ if absent.
Fill the skeleton and ratify:
## Problems (numbered, NOT prioritized — no P<n> prefix; plain enumeration only, since these are unordered problem statements).## Out of scope (architectural reasons) with hard architectural reasons (not "later").status: draft → ratified, fill ratified_by, ratified_date, and estimated_horizon in the frontmatter, and stamp the > Ratified by PM <name> <date> blockquote.Integrity marker: status: ratified plus the > Ratified by PM … blockquote are what make this a real PM oracle rather than EM self-talk. A problem-set without ratification is status: draft and does NOT count as an oracle. Plans link it via the problem_set: frontmatter key.
Once the PM ratifies the problem-set, the altitude-router selects the downstream ceremony based on the work's horizon. The horizon is detect-then-confirm: surface your horizon read to the PM at ratification and let them confirm before chaining. Never pick a rung silently.
Horizon routing:
| estimated_horizon | Work shape | Downstream ceremony |
|---|---|---|
| session | One or two sessions of work | coordinator:plan — the ratified problem-set becomes the plan's coverage oracle (plan-coverage-checker consumes it). |
| week | Roughly a week, multi-session but bounded | coordinator:roadmap-planning — the problem-set seeds a roadmap with sprint-sized stubs. |
| initiative | Weeks-to-quarters, multi-goal scope | coordinator:goal-setting — the problem-set seeds an OKR-shaped goal artifact. When the vision decomposes into multiple goal-slices, /shape may fan out 1→N spinoff-goal stubs (deferred-baton fan-out) rather than chaining into a single goal-setting ceremony. |
Precedence: A PM axiom or directive to use a specific downstream skill, and an architectural-tier flag from the forced-articulation contract that resolves the horizon unambiguously, take precedence over the detect-then-confirm router. The router is the DEFAULT exit for ambiguous or undirected convergence.
Ambiguous horizon: If the horizon is genuinely unclear after the convergence exchange, ask explicitly: "Does this feel like a session, a week, or an initiative?" Do not silently pick.
Ceremony placement: /shape is the third vertex beside coordinator:brainstorming (vague what) and straight-to-the-downstream-ceremony (converged shape — altitude-router selects the rung), per ceremony-calibration.md. <!-- Review: code-reviewer F1 — reworded from "straight-to-coordinator:plan" to altitude-neutral phrasing; plan is one rung of the router, not the implied default exit --> <!-- code-reviewer F2: dropped dangling § anchor (vague-vs-concrete framing section does not exist in ceremony-calibration.md); keeping file reference, dropping dead section cite -->
tools
Orient session — preflight, load context, choose work
documentation
Wrap up finished work — capture lessons, update docs
testing
Use at cadence gates or to validate repo state. Resolves and runs the project's configured fast-test command.
development
Root-cause discipline for ONE identified bug, test failure, or unexpected behavior — pin the premise, reproduce, trace to source, fix at source, verify. For a single known issue, not a codebase sweep.