Refine design
ONLY activated by explicit /refine-design slash command. Never auto-triggered by conversation content.From its SKILL.md
npx -y skills add fallguyconsulting/ok-planner --skill refine-designAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.9 KB, as published. Nobody here has run it
Refine Design
Specialization of brainstorm for resolving design tensions. The user
picks tensions to address, picks a resolution shape per tension, and
the skill hands off to brainstorm to produce a spec that covers both
the concept-doc mutations and the code reconciliation. From the spec
forward, the standard brainstorm → write-plan → execute-plan
pipeline applies.
Why this exists
The design docs under .ok-planner/design/ are the project's
canonical noun catalog. Code references the design at points of
enforcement (@concept: <slug> annotations, or equivalent); the
design owns the definition. When a concept's boundary drifts from
the code, that's a defect to fix — but the fix is rarely just
the code or just the concept doc. Usually it's both: the concept
gets sharpened, the code gets brought into line, the alias gets
retired across both surfaces.
brainstorm is the project's tool for "I have a change in mind,
help me design it." refine-design is brainstorm pointed at the
tensions catalog: the change in mind is "resolve these tensions,"
and the resulting spec covers both the design-doc work (under a
## Design changes section) and the code work as one coherent
piece. execute-plan then applies all of it.
This isn't a separate pipeline. It's brainstorm with a specialized intake.
Relationship to brainstorm
refine-design owns:
- Loading the tensions catalog + relevant concept files + review-notes
- Walking
review-notes.mdwith the user (read-only — entries are captured in the brief, not written back to the file) - Letting the user pick which tensions to address this session
- Letting the user pick a resolution shape per selected tension
- Constructing a brief for
brainstormthat captures every decision (tensions to resolve, picked shapes, tensions to reject, affected concept files, code paths to reconcile, review-notes outcomes)
brainstorm owns everything from there:
- Clarifying questions
- Design proposal
- Spec writing (with the
## Design changessection capturing all the tension-file moves, rejection moves, concept-file mutations, andreview-notes.mdrotation) - Spec review loop
- User approval
- Transition to
write-plan
execute-plan later applies the ## Design changes mutations as
part of carrying out the plan, alongside the code changes that
conform to them.
refine-design does NOT duplicate brainstorm's machinery. It sets
up context and invokes ok-planner:brainstorm.
Inputs
.ok-planner/design/tensions/— open tensions to choose from..ok-planner/design/concepts/— read for context; mutations happen duringexecute-plan, not now..ok-planner/design/review-notes.md— agent-confessed uncertainty from the lastdiscover-designrun..ok-planner/design/_discover/— referenced for evidence during the walk.
When to invoke
- After
discover-designhas producedconcepts/andtensions/, and the user is ready to start resolving. - When new tensions are added (by a later
discover-designre-run or by abrainstormspec that surfaced an unresolved concept question) and the user wants to address some.
Process
-
Run
ok-planner:affirmso the layout exists. -
Verify
.ok-planner/design/concepts/and.ok-planner/design/tensions/exist. If either is empty, tell the user to run/discover-designfirst and stop. -
Walk
review-notes.mdif present. Read-only — surface entries section by section. Per entry, capture the user's verdict in the brief:- Confirm the extractor's call (no action needed).
- Promote to this session's tension queue (which tension(s) it implies — a new tension to create, or attach to an existing one).
- Defer (note in the brief that the review-note should remain in the file for a future session).
- Reject (note in the brief that the review-note should be struck through with a one-line reason).
Do not modify
review-notes.mdduring this walk. The brief will record the outcomes, andexecute-planwill apply them (struck-through entries, file rotation, etc.) when it carries out the spec. -
Tension selection. Show the user the open tensions catalog grouped by category. Ask which they want to address this session. Defaults: smallest-first, by-affected-concept, by-category, or freeform pick. The user names tensions; the skill records them as the session queue.
-
Resolution-shape walkthrough. For each tension in the session queue:
- Display the tension entry (What is muddy / Why it matters / Resolution candidates).
- Quote the relevant concept file(s) and
_discover/material. - Present resolution shapes — the extractor's candidates, or
new ones if the user wants. Each shape should be stated as a
concrete change to one or more concept docs AND the code
path(s) that need reconciling. State the concept-doc change
at the concept level — which Definition / Boundaries /
Invariants text would change, and what the new text says —
following the concept self-containment rule from
skills/_shared/artifact-definitions.md. The new body text is path-free; the code-paths-needing-reconciling portion of the brief is a separate item (the code work), not part of the proposed concept body. - The user picks. Capture the verdict in the brief:
- pick shape X — record the pick.
- reject the tension — record that the tension should be
moved to
tensions/_rejected/withstatus: rejectedand arejection-reason. Drop from the session queue. - defer this one — drop from the session queue and leave
the tension as
status: openin the brief. (No action will be taken on this tension; it stays open for a future session.)
Do not mutate any tension file during this walkthrough. File moves and status changes are part of the spec's
## Design changessection, applied byexecute-plan. -
Construct the brief. Build a brief in the conversation that names:
- The session's tension queue (which tensions are being resolved, with the picked resolution shape for each).
- Tensions rejected during intake (slug + rejection reason for
each — these will move to
tensions/_rejected/via## Design changes). - Affected concept files and the code paths needing reconciling.
- Aliases being retired (if any).
- Review-notes outcomes (promote / defer / reject / confirm).
- A proposed spec slug (date + short summary, e.g.,
2026-05-10-vocabulary-cleanup) so brainstorm can name the spec consistently.
-
Hand off to brainstorm. Invoke
ok-planner:brainstorm. The brief is the seed context — brainstorm recognizes the goal is already established and proceeds directly to clarifying questions / design / spec writing.The spec brainstorm writes will include a
## Design changessection listing every concept-file mutation, tension-file move (resolved or rejected), new concept/tension file, and review-notes outcome from the brief. The rest of the spec (architecture, components, testing strategy) covers the code work as brainstorm normally handles it. -
brainstorm's downstream flow. From step 7 onward, the user is in brainstorm's flow: spec review subagent, user spec review, transition to
write-plan. -
What happens during execute-plan. When the plan eventually executes, it applies the code changes AND every entry in the spec's
## Design changessection. Tension files move totensions/_resolved/ortensions/_rejected/as the spec directs; concept files get their mutations;review-notes.mdgets its strikethroughs and is rotated toreview-notes-<date>.md.
Tension lifecycle
Tension files do not change state during the refine-design intake.
All state transitions happen during execute-plan as it applies
the spec's ## Design changes section.
open ← state after discover-design
↓ execute-plan applies a spec from refine-design
resolved ← moved to tensions/_resolved/
or
rejected ← moved to tensions/_rejected/
(alternative paths)
open → open ← user deferred; tension untouched
Between the refine-design intake and the execute-plan run, the
file stays status: open. The decision about its fate lives in
the spec, not in the file itself, until execute-plan applies the
mutation.
Session shape
A refine-design session produces one spec, just like brainstorm. If the session queue is broader than one spec can cover well, surface that to the user — they can either drop tensions from the queue or defer the broader scope to a follow-up session. Do not unilaterally split into multiple specs.
A session can resolve a single tension (small fix) or a cluster of
related tensions (the three Store / ClaimProducer aliases are one
cleanup; the three frame_resolution / mode vocabulary tensions
are one cleanup; etc.).
Mutability discipline (for execute-plan to follow)
When execute-plan applies the spec produced by this skill, the
## Design changes section is its instruction set:
- Concept files in
concepts/, story files instories/, and decision files indecisions/are mutated in place per each bullet (depending on which the tension resolution affects). The affected body section is rewritten to reflect the new state — no audit-trail entry is added to the artifact. The git commit carries the lineage; the artifact body is current-state only. - Resolved tensions move to
tensions/_resolved/<slug>.mdwithstatus: resolvedand aresolution:block. - Rejected tensions move to
tensions/_rejected/<slug>.mdwithstatus: rejectedand arejection-reason:field. - New tensions surfaced during brainstorm's dialogue (and captured
in
## Design changes) are written totensions/asstatus: open. review-notes.mdoutcomes apply: strikethroughs added per the spec, file rotated toreview-notes-<date>.mdif the spec directs.
What this skill does NOT do
- Doesn't mutate
concepts/,stories/,decisions/,tensions/, orreview-notes.mddirectly. All design-doc changes happen inexecute-planafter spec + plan approval, so the design changes ride alongside the code changes and stay reversible until then. - Doesn't write code. Brainstorm produces the spec; write-plan sequences the work; execute-plan does the writing.
- Doesn't re-do discovery. If the user finds that a tension can't be
resolved because discovery was thin in some area, they exit and run
/discover-designto back-fill, then return. - Doesn't auto-pick resolution shapes. Every shape requires a user verdict, full stop.
- Doesn't introduce code annotations. If the project adopts a
@concept:convention, that's a separate brainstorm in its own right.