Create or update implementation-ready design proposals for Mistral Vibe under docs/design, including a bounded design-tree decision review before drafting. Use before implementing a substantial Vibe feature, migration, protocol or API change, runtime or persistence change, cross-component workflow, compatibility plan, or other work whose ownership, behavior, failure semantics, rollout, and validation need review.
68
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Produce a decision artifact that a reviewer can use to evaluate the proposal and an implementer can use as a completion checklist. Base it on product intent and the real code path, not on a plausible architecture invented from file names.
write-vibe-adr for a concise, durable architecture rule that future
changes must follow. A design may require a new or updated ADR, but it does
not replace one.docs/design/<descriptive-slug>.md.
Honor response-only or alternate-destination requests without creating a
repository artifact.README.md, AGENTS.md, the matching ADRs, and one or two nearby
design documents. Read the nearest AGENTS.md before examining a sibling
project.When updating an existing proposal, preserve accepted decisions that the user has not changed. Apply each correction throughout the document instead of appending a new section that contradicts old routes, diagrams, ownership, failure semantics, or acceptance checks.
Ask only about a missing decision that would materially change the design. For example, clarify whether a command runs before startup or inside an active session when that choice changes which failures it can diagnose. Otherwise, state a bounded assumption and continue.
Trace the production path end to end across every affected boundary, such as:
CLI / Textual / ACP / client -> app server -> owning port -> runtime/backend
-> effects/persistence -> public projectionAGENTS.md; ask for the path when a documented sibling is absent.Write the background, problem, goals, non-goals, terminology, and requirements before proposing modules. Make user-visible behavior explicit, including affordances, defaults, interrupts, retries, cancellation, and degraded states. Separate current limitations from intentional target behavior.
Once the core design seems coherent, pause before writing the implementation plan or drafting the document. Map the unresolved material decisions as a design tree: every decision branches into the decisions that depend on it. A decision is material when its answer changes user-visible behavior, ownership, contracts, state, failure semantics, compatibility, rollout, or acceptance criteria.
Work the tree in rounds. The frontier is every material decision whose prerequisites are settled: the questions you can ask now without guessing at answers you have not heard yet. Ask the whole frontier in one round, number each question, and give your recommended answer. Then wait for the user's answers before the next round.
Format each question like this:
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
➡️ <your recommended answer>Each round of 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. Do not ask for ceremonial agreement, facts already established by the source trace, or minor implementation choices that do not materially change the design.
Finding facts is your job, never the user's. When a frontier question needs a fact from the environment, dispatch a sub-agent to find it; do not ask the user for anything you could look up yourself. Do not 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.
The decision review is done when no unresolved material decision remains and the user confirms shared understanding. Record non-material details as bounded assumptions instead of extending the interview indefinitely. Do not write the implementation plan or draft the design until this gate is complete.
<details> block below that checklist. Focused passing tests and soft-failing
CI do not satisfy the complete acceptance boundary.Read DESIGN-DOC-TEMPLATE.md from this skill directory before drafting. Adapt
the template to the proposal, but preserve its decision, failure, rollout, and
validation coverage. Remove optional or irrelevant sections rather than adding
generic content. Do not leave placeholders in the finished document.
Use Sections 1 through 7, Alternatives, and Rollout as the reviewer path. Keep implementation-only material in the Implementation Plan, Validation Plan, or Appendix without hiding decisions that require reviewer approval. For documents around 500 lines, add a table of contents unless navigation is already clear.
Keep the document easy to scan:
Keep claims auditable:
After drafting, dispatch an independent sub-agent with the document and this
task: "Assume you must implement this proposal using /goal. What is missing,
ambiguous, contradictory, or untestable?"
Give the reviewer the document and relevant source artifacts, not your intended answer or prior conclusions. Reconcile every material finding. If a finding exposes a new user decision, return to step 5 and wait for confirmation before revising the design. Run at least one adversarial pass; repeat it only when the resulting revisions materially change the proposal.
Before handing off:
git diff --check -- <document-path>.
Skip file-only checks for a response-only draft.d4b3223
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.