skills/shape/SKILL.md
Converge with the PM on a problem's shape before any solutioning. Invoke coordinator:sizing first if unsized.
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).
Strategic ceremony, not tactical clarification. Operates at the altitude of product intent,
scope boundaries, and success criteria — questions only the PM can resolve. Tactical
uncertainties (naming, file structure, test framework, commit shape, refactor mechanics) are EM
remit and do NOT belong in a /shape exchange, however 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."
Dispatch authorization — invoking this skill IS the request. The dispatches named below are constitutive steps of this skill, not a separate thing to get cleared: invoking a skill requests the actions that skill performs. A harness line permitting dispatch "unless the user requested it" is therefore satisfied here, not overridden — no precedence claim is needed and none is made. Re-asking spends the very context the dispatch exists to protect. The rule attaches to skill entry and dissolves no PM-authored gate: keyword-gated skills gate entry, and every gate a skill names for itself still binds — per-session cross-repo-commit assent, ask-before-external-action, and any other this skill's own body names. Tripwire: UNATTRIBUTED-HARNESS-LINE-IS-NOT-PM.
coordinator:brainstorming.
Discriminator: PM has a problem and wants confirmation you understood it → /shape; PM
doesn't know what to build at all → brainstorming./shape, an existing approved spec, a known next-step
on a live workstream) → straight to the downstream skill (§ Transition)./shape and coordinator:brainstorming are siblings: brainstorming turns vague intent into a
design spec (docs/specs/); /shape converges on the problem (docs/problems/) and defers
solutioning entirely. Both chain into a downstream planning ceremony.
route: shape)coordinator:sizing sometimes routes here rather than straight to plan/roadmap-planning: (a)
large size with unclear JTBD, or (b) a well-trodden problem/solution space where the ask wants a
step-change. If the firing condition is known from the sizing exchange, name it; otherwise state
both as possible. A large-but-clear ask skips shape entirely — this is not a universal sizing
route. Shape keeps its own § Transition horizon-routing regardless — sizing routes INTO shape, it
does not perform shape's downstream routing. This is a receive-and-use-if-present detent: /shape
runs exactly as without a sizing-object, and sizing never gates or refuses a bare /shape
invocation.
route: shape sizing-object present,
open from its intent field verbatim rather than re-deriving the raw ask.coordinator:plan's job.estimated_horizon,
ratify with the PM, confirm the horizon, and chain into the downstream ceremony (§ 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. 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.Scaffold via (POSIX-host form; PowerShell hosts: Shape W, snippets/resolve-coordinator-bin.md):
coordinator-doc-new --type problem-set --title "<problem title>"
— emits docs/problems/YYYY-MM-DD-<slug>.md, status: draft, canonical skeleton. Tiny by
design: a bulleted problem list, not a design doc.
Fill and ratify:
## Problems (numbered, NOT prioritized — no P<n> prefix).## Out of scope (architectural reasons) with hard architectural
reasons, not "later."status: draft → ratified, fill ratified_by, ratified_date,
estimated_horizon, stamp > Ratified by PM <name> <date>.A problem-set without ratification is status: draft and does NOT count as an oracle. Plans link
it via problem_set:.
Once ratified, route by horizon — detect-then-confirm: surface your horizon read at ratification, let the PM confirm before chaining. Never pick a rung silently.
| estimated_horizon | Work shape | Downstream ceremony |
|---|---|---|
| session | One or two sessions | coordinator:plan — problem-set becomes the plan's coverage oracle (plan-coverage-checker). |
| week | ~week, bounded | coordinator:roadmap-planning — seeds a roadmap with sprint-sized stubs. |
| initiative | Weeks-to-quarters | coordinator:goal-setting — seeds an OKR-shaped goal artifact. May fan out 1→N goal-seed stubs when the vision decomposes into multiple goal-slices. |
Precedence: a PM axiom/directive naming a specific downstream skill, or a forced-articulation tier flag that resolves the horizon unambiguously, overrides the router — the router is the default for ambiguous or undirected convergence.
Ambiguous horizon: ask explicitly — "Does this feel like a session, a week, or an initiative?" Never pick silently.
tools
PM-GATED. Hold this repo's PM comms channel: gate what reaches the PM, reserve the push channel, carry rulings back as records.
tools
Census/launch/teardown lifecycle for a repo's declared app under coordinator.local.md's app_session config -- complementary to the platform's built-in run skill, not competing with it.
testing
Reconcile a self-description draft against the ratified one; never auto-commits.
development
Bounded spike — fuse web research with local study to a verdict.