skills/goal-setting/SKILL.md
PM-GATED. Turns raw vision into ratified OKRs plus roadmap-seed stubs.
npx skillsauth add oduffy-delphi/coordinator-claude goal-settingInstall 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.
Posture: vision-in, OKR-out. Neither rubber-stamp nor idea-crushing gate. Each KR must be weekly-perceptible (can an agent or PM observe it move this week?); one that fails is a later-impact aspiration, surfaced as a shaping question, not a rejection.
Entry points:
kind: goal-seed stub; run this skill on the captured
vision.coordinator:sizing hands an optional
state/sizings/<id>.yaml entry contract ahead of Step 1, on three arrival shapes
(route: pm-decision+xl_exit: roadmap, legacy route: roadmap, or direct-routed
route: goal-setting XXL). No sizing-object present means Step 1 runs exactly as today — see
wiki for the full field-crossing table.What this skill produces: a ratified OKR (one Objective + ≤5 Key Results, weekly-perceptible)
via coordinator-doc-new --type goal; kind: roadmap-seed stubs pre-tagged to the goal, one per
roadmap-worth-of-work; optionally kind: goal-seed stubs for deferred vision-slices; an OFFER to
chain into /roadmap-planning (PM-gated, never auto-run).
coordinator:shape or
coordinator:brainstorming first.coordinator:plan./roadmap-planning directly.The PM names the Objective (qualitative, direction-setting) and one or more candidate KRs (raw is fine). Do NOT prompt for a specific format — the ceremony imposes structure through critique, not intake.
When a sizing-object is present (see Entry point 3), it pre-populates part of this step's raw
framing in body prose only, never new frontmatter: intent → opening vision statement;
appetite → context only, never a KR or stub cost:; estimate.tshirt+estimate.provisional
together → routing signal only; scout_evidence → framing pointers; route(+xl_exit) → the
recorded reason this ceremony opened. Full field-by-field detail and does/doesn't-cross list:
wiki.
PM-assent record for a direct-routed XXL: that shape emits no xl_exit, so once this step's
PM utterance happens, write pm_resolution.xl_route_assent on the sizing-object recording it as
the assent — this does not reintroduce a PM halt above goal-setting (Step 1's own utterance
already is the gate). Detail: wiki.
If the PM's vision names or implies a domain, check state/strategic/self-description.yaml's
competitors[] first — skip the offer silently if already populated (same discipline as
workweek-start/repo-setup Phase 3l nudges). Otherwise offer once:
This reads like <inferred domain> work — want me to record inspirations / peers / competitors / aspirational-targets? Goes in your repo's strategic self-description. (Skip freely.)
On opt-in, record via coordinator:strategic-self-description-refresh's scaffold path (schema:
coordinator/schemas/strategic-self-description.schema.json; provenance: curated) — never a
second marking store. On decline, proceed to Step 2 without repeating the offer.
Dispatch via Agent(subagent_type: "coordinator:vp-product", model: "opus"). Inline verbatim:
You are the VP-Product Reviewer (VP of Product, they/them). You are reviewing a draft OKR set for strategic rigor. Your job is to act as a full OKR critic, not a rubber-stamp.
Assess: (1) Is the Objective a real Objective — qualitative, direction-setting, not a metric or tactic in disguise? (2) Are the KRs real Key Results — measurable outcomes, not activity/output proxies? (3) Is the SET reasonable — ≤5 KRs; more means the Objective is unfocused? (4) Weekly-perceptibility per KR — can an agent or PM observe it move this week? If not, flag as a later-impact aspiration with a weekly-perceptible rewrite, or note the PM should defer it.
Return: verdict per element (PASS/FLAG/REJECT), specific rewrite suggestions for flagged/rejected elements, a SET-level verdict (GO/REVISE/REFRAME). Give the EM and PM the material to revise it themselves — do not rewrite the whole OKR yourself.
The artifact does not exist on disk yet. REJECT items are rewritten or dropped; FLAG items are
rewritten or consciously accepted with a stated rationale; weekly-perceptibility notes are
rewritten or deferred to a kind: goal-seed stub. This is a dialogue: EM presents the critique,
proposes a revised shape, and asks the PM to confirm.
Do NOT proceed to Step 4 without explicit PM confirmation on the revised OKR.
On a PowerShell host, invoke the .exe launcher by absolute path through the call operator
(Shape W) for every invocation in Steps 4-5. Ladder and shapes: snippets/resolve-coordinator-bin.md.
coordinator-doc-new --type goal --title "<objective-slug>", resolved per that ladder.
Fill: objective: (ratified text), key_results: (≤5, weekly-perceptible), period: (e.g.
Q3-2026), status: active.
5a. Roadmap-seed stubs — one per roadmap-worth-of-work (roughly: one /roadmap-planning
invocation, one coherent capability arc; when in doubt, fewer/larger — the PM can split at
pickup):
coordinator-doc-new --type roadmap-seed --goals "<goal-id>" --title "<roadmap-topic>",
resolved per snippets/resolve-coordinator-bin.md.
Each stub carries kind: roadmap-seed, origin_goal_id: FK (via --goals), deployment_state: awaiting_gate, a one-line title naming the capability arc.
5b. Goal-seed stubs (optional) — for vision-slices out of scope this period, or KRs deferred rather than rewritten:
coordinator-doc-new --type goal-seed --title "<deferred-vision-slice>",
resolved per snippets/resolve-coordinator-bin.md.
Each stub carries kind: goal-seed, deployment_state: awaiting_gate, and a brief body
capturing the vision-slice verbatim — raw over polished. These feed the pickup-from-goal-seed
entry point; they are vision preservation, not roadmap stubs.
"Goal artifact and {N} roadmap-seed stub(s) scaffolded. Want me to chain into
/roadmap-planningnow, or review the stubs first?"
Wait for PM response. Never invoke /roadmap-planning without explicit PM direction.
Stage only the goal artifact and stubs this run scaffolded — no blanket add:
Commit per snippets/scoped-commit-route.md, subject goal-setting: ratify <objective-slug> + scaffold {N} downstream stubs, pathspec exactly the goal artifact plus the stubs this run
scaffolded.
/roadmap-planning owns it; this skill scaffolds the stubs that feed
it. Auto-chaining bypasses the PM's multi-wave sequencing authority.goal.schema.json owns event emission.kind: goal-seed stub is dormant until the PM
picks it up via entry point 2.subagent_type: "coordinator:vp-product"coordinator-doc-new --type goalorigin_goal_id: FK and deployment_state: awaiting_gate/roadmap-planning was NOT auto-invoked — offered and PM-gatedtools
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.