Claude Skill

maestro-design

Settle unknowns and lock decisions before implementation - pick the mode per unknown (grill, research, prototype, model, wayfind), recall past bundles, walk one fork at a time, record every settled choice with a rationale, and open the bundle only when a Full trigger holds.

LLM Mart · 0 points · 6 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download ReinaMacCredy-maestro-src_plugins_skills_maestro-design-50ef3cd.zip · 9 KB
Part of reinamaccredy/maestro — 4 skills

Install

skills CLI npx skills add https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-design
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install reinamaccredy-maestro@llmmart
Git git clone https://github.com/ReinaMacCredy/maestro.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole reinamaccredy/maestro collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

maestro-design

Use when a material choice blocks the next slice. Read Decisions and readiness and Authorization boundaries. Design is read-only toward production code and authorizes nothing.

Mode per unknown

Identify what kind of unknown blocks progress, then load only the reference that resolves it:

The unknown Mode Reference
Decisions only the user can make, several and interdependent grill references/grilling.md
A decision owned by someone not in the conversation route to maestro-questionnaire
A fact in docs, APIs, or source outside this repo research maestro-explore (research mode)
"Does this state model feel right?" or "What should it look like?" prototype maestro-explore (prototype mode)
Fuzzy terminology, or a hard-to-reverse choice worth recording model references/domain-modeling.md
The effort exceeds one session and is wrapped in fog, or the user does not know what to do next wayfind references/wayfinder.md

Facts are yours to find; material product and scope choices are the user's. Never ask the user for anything you could look up. Modes compose: grill runs with the glossary in hand; wayfind dispatches grill, research, and prototype per child work item. Each design pass must close at least one fork; a pass that closes none surfaces the blocker to the user instead of looping.

Intake

Pin the problem before choosing a method:

For [who], reach [observable outcome] within [boundary], because [impact], without [excluded effect].

Route uncertainty to a lane:

Current uncertainty Lane
state unknown scout, no-write
several architectures two or three decision lanes
contract clear delivery
candidate needs breaking challenge
hard-to-reverse fork council

Weigh the ROI of independent judgment on five questions:

  1. Would wrong framing be costly?
  2. Is the decision hard to reverse?
  3. Is the domain new to the owner?
  4. Can independent judgment produce a materially different option?
  5. Is human attention fragmented?

Mostly no: the direct session. Mixed: a Lead plus one peer. Mostly yes: several lanes. Yes on every question including hard to reverse: a council. Before launching any lane, pin the branch and commit, active writers, and dirty paths.

Recall pass first

Before proposing anything, search the store for precedent:

maestro search "<topic keyword>"        # hits labeled work/decision/note/bundle
maestro bundle show <id>                # deep-read a bundle hit
maestro decision list                   # locked choices that bind this scope

A past bundle that settled the same fork is evidence; cite it instead of re-deriving the argument.

Working method

  • Read the current maestro work show, linked decisions, notes, and source.
  • Present a blocking user-owned fork with a concrete recommendation; resolve reversible implementation details within the approved scope directly.
  • Record durable decisions under WORKFLOW.md's threshold: maestro decision draft "<choice>" --rationale "<why, with the rejected alternative>" --work <id> then maestro decision lock <id>. Supersede an old decision with --supersedes; never rewrite its history.
  • Keep acceptance, non-goals, and authority visible on the work item.
  • Do not edit code during a design-only engagement.

Council

A hard-to-reverse fork with wide blast radius runs the maestro-council protocol: neutral brief, sealed seats, one premise verifier on unanimity, bounded verifiers, one cross-examination round, an audit by tier, and one binding verdict recorded with maestro decision draft --rationale carrying the dissent. The candidate under review stays frozen; a new finding creates a new candidate.

Readiness gate and exit

Check readiness of the next bounded slice, not the number of open questions about the whole project. Keep later questions visible without blocking an independent slice. If the problem itself is unclear, wayfind. Forks already settled are synthesized, never re-asked. An external claim entering a decision (API behavior, library semantics, versions) comes from research against primary sources, never from memory.

Then exit by Tiers:

  • Light: design ends with a work item with clear acceptance, maestro work add "<title>" --acceptance "<observable result>" --kind <kind>, plus any durable decisions. Kind routes the policies: feature, task, bug, chore, implement are execution units; idea and research are scope notes under a parent and never hold it open. The why lives in the title or acceptance; when it needs a paragraph, add maestro work note <id> "why: <paragraph>", and record findings from the research mode as research: <finding> notes (what policy-research reads when enabled). No SPEC is required; the work is verified inline by maestro-work. A quickfix never reaches design.
  • Full: maestro bundle open <id> --work <workId>, opened in the store whose checkout will change (a walk run in the Hub room still opens its bundle where the code lives; note the bundle on the Hub map and the map on the bundle's work item), then fill SPEC.md as a pure contract: Problem, Solution, Scope, Anti-goals (each traces to a real risk in this repo and gets a matching VERIFY.md check; an anti-goal that cannot be checked is a wish, not a constraint), Decisions (ids only, Hub decisions as hub:<id>; maestro bundle show <id> renders them). Plan checks using Testing discipline, including existing checks and necessary new tests, not a test quota. Draft VERIFY.md from acceptance, relevant risks, and anti-goals; seed NOTES.md with Current State, Next Action, original authorization, and Base:.

If the next slice's acceptance or authority needs guessing, resolve that blocker. Otherwise continue implementation when the user's original request already authorizes it; do not ask again merely because design is complete. For a design-only request, finish with the proposed scope and implementation gate. A SPEC authorizes nothing.

For unattended/away-mode design constraints, read references/unattended.md.

Files (maestro)
  • references
    • domain-modeling.md 2.6 KB
      # Domain modeling
      
      Actively build and sharpen the project's domain model as you design: challenge
      terms, invent edge-case scenarios, and record the glossary and decisions the
      moment they crystallise. Merely reading the glossary for vocabulary is a
      one-line habit any skill can do; this reference is for when you are changing
      the model, not just consuming it.
      
      ## Where it lives
      
      Both artifacts live in the maestro store, so they sit in the recall path every
      session already reads:
      
      ```
      maestro term add <name> "<definition>" [--work <id>]   # record or redefine a term
      maestro term list | maestro term show <name>            # the glossary
      maestro decision draft "<choice>" --rationale "<why + rejected alternative>" --work <id>
      maestro decision lock <id>                              # the recorded decision
      maestro search "<word>"                                 # terms, decisions, work, bundles
      ```
      
      There is no glossary file to create; the first `term add` is the glossary.
      
      ## During the session
      
      ### Challenge against the glossary
      
      When the user uses a term that conflicts with an existing definition, call it
      out immediately. "The glossary defines 'cancellation' as X, but you seem to
      mean Y. Which is it?"
      
      ### Sharpen fuzzy language
      
      When the user uses vague or overloaded terms, propose a precise canonical
      term. "You are saying 'account'. Do you mean the Customer or the User? Those
      are different things."
      
      ### Discuss concrete scenarios
      
      When domain relationships are being discussed, stress-test them with specific
      scenarios. Invent scenarios that probe edge cases and force the user to be
      precise about the boundaries between concepts.
      
      ### Cross-reference with code
      
      When the user states how something works, check whether the code agrees. If
      you find a contradiction, surface it: "The code cancels entire Orders, but you
      just said partial cancellation is possible. Which is right?"
      
      ### Record terms inline
      
      When a term is resolved, `maestro term add` right there. Do not batch these
      up; capture them as they happen. A definition is domain language only: no
      implementation details, no file paths, no decisions. Redefining a term is a
      new `term add` with the same name; say why in the conversation.
      
      ### Lock decisions sparingly
      
      Apply [Decisions and readiness](~/maestro/WORKFLOW.md#decisions-and-readiness)
      to distinguish a durable domain choice from a reversible implementation detail.
      Do not create a decision record for every answer or fact found during modeling.
      
      The rationale carries the rejected alternative and the why; a later reversal
      is a new decision with `--supersedes <id>`, never an edit.
      
    • grilling.md 2.5 KB
      # Grilling
      
      Apply [Decisions and readiness](~/maestro/WORKFLOW.md#decisions-and-readiness).
      Interview on material user-owned choices blocking the next slice, not routine
      implementation details. Map their dependencies as a **design tree**.
      
      Work the tree in **rounds**. The **frontier** is every decision whose
      prerequisites are already settled — the questions you can ask _now_ without
      guessing at answers you haven't heard yet. Ask the frontier in plain prose,
      one decision at a time when the forks are heavy, or as a short numbered list
      when they are independent and light. Then wait for the user's answers before
      the next round.
      
      For each question:
      
      - Lead with **what this does** — the consequence of the decision in this
        repo, before any option list.
      - Present the options as prose, each with its concrete trade-off. When a
        layout or structure is easier to see than to describe, include a small
        ASCII sketch per option.
      - End with a `my rec:` line — your recommended answer and the one-line why.
      - No emoji, no batching questions that depend on each other's answers. When
        the harness offers a question card, use it: one decision per card, "what
        this does" first, the sketch per option, the `my rec:` line on every fork.
      - Record durable decisions under the shared workflow's threshold:
        `maestro decision draft "<choice>" --rationale "<why + rejected alternative>" --work <id>`
        then `maestro decision lock <id>`. An answer to a fork is
        never an implementation order, even when the chosen option is
        itself an artifact (a script, a schema, a prototype); building starts only
        on an explicit request.
      
      Each round the user answers reshapes the tree — settled decisions push the
      frontier outward and unblock questions that depended on them. Recompute the
      frontier and ask the next round. A question whose answer depends on another
      question still open in this round belongs to a _later_ round, not this one.
      
      Finding _facts_ is your job, never the user's. Investigate directly; delegate
      only when independent work or context isolation warrants it. Do not ask the
      user for anything you could look up yourself.
      Don't block on it: a running exploration is an unsettled prerequisite, so
      only the questions downstream of it wait for the sub-agent to report — ask
      the rest of the frontier now. The _decisions_ are the user's — put each to
      them and wait.
      
      Finish when the next slice meets the shared readiness rule. Record deferred
      questions; they need not all be settled now. Continue only within verified
      implementation authority. A design-only request stops at the design result.
      
    • unattended.md 1.1 KB
      # Unattended
      
      Use this recipe when an external driver is authorized to keep advancing local
      accepted work while the user is away. Maestro records state; it does not own a
      hidden scheduler or a second lifecycle.
      
      ## Loop anatomy
      
      ### Perceive
      
      Reconstruct state from `maestro status`, `maestro ready`, `maestro work show`, decisions, and handbacks.
      Do not rely on conversational memory.
      
      ### Choose
      
      Select exactly one ready item whose authority and acceptance are already
      settled. If none is safe, return dry or blocked instead of inventing work.
      
      ### Act
      
      Use `maestro recipe show work` to drive that one item. Stay within local reversible
      actions unless the unattended grant explicitly covers a named external action.
      
      ### Observe
      
      Verify the item through its real consumer path and record completion evidence.
      Stop on approval prompts, secrets, destructive git, or exhausted failure
      budget.
      
      ### Learn
      
      Record only sourced corrections that will help a later session resume safely.
      
      ### Continue
      
      The external driver may select the next ready item after the current unit is
      verified. Return one of: next item, dry, blocked, or hard stop.
      
    • wayfinder.md 6.1 KB
      # Wayfinding
      
      A loose idea has arrived: too big for one agent session, and wrapped in fog.
      The way from here to the **destination** is not visible yet. Wayfinding finds
      that way instead of charging at the destination. It charts the way as a
      **map** in the maestro store, then works its **decision tickets** (questions
      whose resolution is a decision, not slices of a build to execute) one at a
      time until the route is clear.
      
      The destination varies per effort, and naming it is the first act of
      charting. It might be a SPEC to hand off, a decision to lock before planning
      starts, or a change made in place like a data-structure migration.
      
      ## Plan, don't do
      
      Wayfinding is **planning** by default: each ticket resolves a decision, and
      the map is done when nothing is left to decide before someone goes and does
      the thing. The pull to just do the work is usually the signal you have reached
      the edge of the map and it is time to hand off. Absent an explicit override
      in the map's notes, produce decisions, not deliverables.
      
      ## The map in maestro terms
      
      | Wayfinding | maestro |
      |---|---|
      | the map | a parent work item, `maestro work add "<destination>" --kind idea --acceptance "<what reaching the end looks like>"` |
      | a ticket | a child, `maestro work add "<question>" --parent <mapId> --kind research\|idea\|task` |
      | blocking | `--blocked-by <ticketId>` on the child (repeatable), or `maestro work block <ticketId> --by <ticketId>` once both exist |
      | the frontier | `maestro ready`: open, unblocked children |
      | claim | `maestro work start <ticketId>`; the lease is the claim |
      | resolve | `maestro decision draft ... --work <ticketId>`, `decision lock`, then `maestro work done <ticketId> --claim "<answer>" --proof "<evidence>"` |
      | decisions so far | `maestro work show <mapId>` lists the closed children; `maestro bundle show` renders their decisions |
      | not yet specified | `maestro work note <mapId> "fog: <suspected question>"` |
      | out of scope | `maestro work cancel <ticketId> --reason "beyond the destination: <why>"` |
      
      Refer to tickets by their title in everything the human reads; ids ride
      inside, they never stand in for a name.
      
      ## Ticket types
      
      Every ticket is either **HITL** (worked with a human who speaks for
      themselves) or **AFK** (driven by the agent alone). A HITL ticket only
      resolves through that live exchange; the agent never stands in for the
      human's side of it.
      
      - **research** (AFK): a fact outside the working directory that a decision
        waits on. Resolved by `maestro-explore` in research mode.
      - **prototype** (HITL): raise the fidelity of the discussion with a cheap,
        concrete artifact to react to, via `maestro-explore` prototype mode; link
        the artifact from the ticket's note.
      - **grilling** (HITL): conversation. The default case; always with
        [grilling.md](grilling.md) and [domain-modeling.md](domain-modeling.md).
      - **task** (HITL or AFK): manual work that must happen before a decision can
        be made (signing up for a service, provisioning access, moving data so its
        shape can be seen). The one type that does rather than decides; it earns
        its place by unblocking a decision. The answer records what was done and
        the facts later tickets depend on.
      
      ## Fog of war
      
      The map is deliberately incomplete: do not chart what you cannot yet see. The
      test between fog and ticket is whether you can state the question precisely
      now, not whether you can answer it now. Ticket when the question is sharp,
      even if blocked; fog note when you cannot phrase it that sharply. A fog note
      names the tool result or store id it rests on, or carries the word
      `unverified`; a note written from summarized memory has survived whole maps
      after the fact it described had already changed. Before a fog note graduates
      into a ticket or is restated in a later note, re-check it against the store or
      the repository. Resolving a ticket clears the fog ahead of it; graduate
      whatever is now specifiable into fresh tickets and append a note
      `fog cleared by <id>: <what replaced it>`. Work notes are append-only, so the
      latest note wins; nothing is removed.
      
      Work beyond the destination is out of scope, not fog: cancel it with the
      reason and leave it out of the decisions list. It returns only if the
      destination is redrawn, and then as a fresh effort.
      
      ## Invocation
      
      Unattended, resolve at most one ticket per session (research tickets
      excepted): the rule keeps an AFK agent from deciding a whole map alone.
      With the owner present, continue on the owner's word and stop only at fog,
      a research ticket, or the end of the frontier.
      
      ### Chart the map
      
      1. **Name the destination.** Grill with the domain model in hand until the
         destination is one or two sentences; it becomes the parent's acceptance.
         When the owner brings an example, ask whether the example is the
         destination or one instance of it; when the owner names a reference tool,
         read how that tool answers the question before presenting options.
      2. **Map the frontier.** Grill again, breadth-first: fan out across the whole
         space, surfacing the open decisions and the first steps takeable now. If
         this surfaces no fog and the whole journey fits one session, you do not
         need a map: stop and ask the user how they would like to proceed.
      3. **Create the parent**, then the tickets you can specify now as children;
         wire the edges with `maestro work block` once the ids exist. Fog goes into
         parent notes.
      4. **Fire the research agents** for each research ticket, in parallel.
      5. Stop. Charting is one session's work; it resolves nothing by hand.
      
      ### Work through the map
      
      1. `maestro work show <mapId>` for the low-resolution view, then
         `maestro ready` for the frontier.
      2. Choose the ticket: the one the user named, else the first frontier ticket.
         `maestro work start` it before any work.
      3. Resolve it, zooming into related or closed tickets on demand.
      4. Record the resolution as a locked decision and close the ticket with the
         answer as its claim.
      5. Add newly surfaced tickets, graduate fog, cancel anything the answer shows
         sits beyond the destination, and update tickets the decision invalidates.
      
      Other sessions may be working unblocked tickets in parallel; the lease on a
      ticket is what keeps two sessions off the same question.
      
  • SKILL.md 6.6 KB
    ---
    name: maestro-design
    description: Resolve material unknowns blocking the next authorized slice, using research, grilling, prototypes, models, or wayfinding. Record durable decisions and apply the shared workflow tier rule.
    review-date: 2026-11-28
    ---
    <!-- maestro-skill-version: dev -->
    
    # maestro-design
    
    Use when a material choice blocks the next slice. Read
    [Decisions and readiness](~/maestro/WORKFLOW.md#decisions-and-readiness) and
    [Authorization boundaries](~/maestro/WORKFLOW.md#authorization-boundaries).
    Design is read-only toward production code and authorizes nothing.
    
    ## Mode per unknown
    
    Identify what kind of unknown blocks progress, then load only the reference
    that resolves it:
    
    | The unknown | Mode | Reference |
    |---|---|---|
    | Decisions only the user can make, several and interdependent | grill | [references/grilling.md](references/grilling.md) |
    | A decision owned by someone not in the conversation | route to `maestro-questionnaire` | |
    | A fact in docs, APIs, or source outside this repo | research | `maestro-explore` (research mode) |
    | "Does this state model feel right?" or "What should it look like?" | prototype | `maestro-explore` (prototype mode) |
    | Fuzzy terminology, or a hard-to-reverse choice worth recording | model | [references/domain-modeling.md](references/domain-modeling.md) |
    | The effort exceeds one session and is wrapped in fog, or the user does not know what to do next | wayfind | [references/wayfinder.md](references/wayfinder.md) |
    
    Facts are yours to find; material product and scope choices are the user's.
    Never ask the user for anything you could look up. Modes compose: grill runs with the glossary in
    hand; wayfind dispatches grill, research, and prototype per child work item.
    Each design pass must close at least one fork; a pass that closes none
    surfaces the blocker to the user instead of looping.
    
    ## Intake
    
    Pin the problem before choosing a method:
    
    > For [who], reach [observable outcome] within [boundary], because [impact],
    > without [excluded effect].
    
    Route uncertainty to a lane:
    
    | Current uncertainty | Lane |
    |---|---|
    | state unknown | scout, no-write |
    | several architectures | two or three decision lanes |
    | contract clear | delivery |
    | candidate needs breaking | challenge |
    | hard-to-reverse fork | council |
    
    Weigh the ROI of independent judgment on five questions:
    
    1. Would wrong framing be costly?
    2. Is the decision hard to reverse?
    3. Is the domain new to the owner?
    4. Can independent judgment produce a materially different option?
    5. Is human attention fragmented?
    
    Mostly no: the direct session. Mixed: a Lead plus one peer. Mostly yes:
    several lanes. Yes on every question including hard to reverse: a council.
    Before launching any lane, pin the branch and commit, active writers, and
    dirty paths.
    
    ## Recall pass first
    
    Before proposing anything, search the store for precedent:
    
    ```
    maestro search "<topic keyword>"        # hits labeled work/decision/note/bundle
    maestro bundle show <id>                # deep-read a bundle hit
    maestro decision list                   # locked choices that bind this scope
    ```
    
    A past bundle that settled the same fork is evidence; cite it instead of
    re-deriving the argument.
    
    ## Working method
    
    - Read the current `maestro work show`, linked decisions, notes, and source.
    - Present a blocking user-owned fork with a concrete recommendation;
      resolve reversible implementation details within the approved scope directly.
    - Record durable decisions under WORKFLOW.md's threshold:
      `maestro decision draft "<choice>" --rationale "<why, with the rejected alternative>" --work <id>`
      then `maestro decision lock <id>`. Supersede an old decision with
      `--supersedes`; never rewrite its history.
    - Keep acceptance, non-goals, and authority visible on the work item.
    - Do not edit code during a design-only engagement.
    
    ## Council
    
    A hard-to-reverse fork with wide blast radius runs the `maestro-council`
    protocol: neutral brief, sealed seats, one premise verifier on unanimity,
    bounded verifiers, one cross-examination round, an audit by tier, and one
    binding verdict recorded with `maestro decision draft --rationale` carrying
    the dissent. The candidate under review stays frozen; a new finding creates
    a new candidate.
    
    ## Readiness gate and exit
    
    Check readiness of the next bounded slice, not the number of open questions
    about the whole project. Keep later questions visible without blocking an
    independent slice. If the problem itself is unclear, wayfind. Forks already
    settled are synthesized, never re-asked. An external claim entering a decision
    (API behavior, library semantics, versions) comes from research against
    primary sources, never from memory.
    
    Then exit by [Tiers](~/maestro/WORKFLOW.md#tiers):
    
    - Light: design ends with a work item with clear acceptance,
      `maestro work add "<title>" --acceptance "<observable result>" --kind <kind>`,
      plus any durable decisions. Kind routes the policies: `feature`, `task`,
      `bug`, `chore`, `implement` are execution units; `idea` and `research` are
      scope notes under a parent and never hold it open. The why lives in the
      title or acceptance; when it needs a paragraph, add
      `maestro work note <id> "why: <paragraph>"`, and record findings from the
      research mode as `research: <finding>` notes (what `policy-research` reads
      when enabled). No SPEC is required; the work is verified inline by
      `maestro-work`. A quickfix never reaches design.
    - Full: `maestro bundle open <id> --work <workId>`, opened in the
      store whose checkout will change (a walk run in the Hub room still opens
      its bundle where the code lives; note the bundle on the Hub map and the map
      on the bundle's work item), then fill SPEC.md as a pure contract: Problem,
      Solution, Scope, Anti-goals (each traces to a real risk in this repo and gets a matching
      VERIFY.md check; an anti-goal that cannot be checked is a wish, not a
      constraint), Decisions (ids only, Hub decisions as `hub:<id>`;
      `maestro bundle show <id>` renders them). Plan checks using
      [Testing discipline](~/maestro/WORKFLOW.md#testing-discipline), including
      existing checks and necessary new tests, not a test quota. Draft VERIFY.md
      from acceptance, relevant risks, and anti-goals; seed NOTES.md with Current
      State, Next Action, original authorization, and `Base:`.
    
    If the next slice's acceptance or authority needs guessing, resolve that
    blocker. Otherwise continue implementation when the user's original request
    already authorizes it; do not ask again merely because design is complete.
    For a design-only request, finish with the proposed scope and implementation
    gate. A SPEC authorizes nothing.
    
    For unattended/away-mode design constraints, read
    [references/unattended.md](references/unattended.md).
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related