Brief
Use when starting any new feature or product request, before writing a plan or code — turns an idea into a short approved spec by surfacing the decisions that will hurt later. Depth scales with risk tier.From its SKILL.md
npx -y skills add AbdurRafay2004/handoff --skill briefAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 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
5.4 KB, as published. Nobody here has run it
Brief
Part of the Brief phase — see the workflow skill for tiers and sequencing.
Turn an idea into a clear, approved spec through collaborative dialogue. The user speaks as PM/architect (what and why); you interrogate as the senior engineer until the 2–3 decisions that would hurt later are settled — scope, edge cases, failure paths — then STOP. Don't design the universe.
Tier scaling
- T1 (trivial): skip this skill entirely. Just do the task.
- T2 (standard): a few targeted questions in chat, a 3–6 line spec summary, user says "yes, that's what I want." No document needed.
- T3 (risky — money/auth/data/migrations): full interrogation, written spec, explicit approval before planning.
The process
Understand the context first. Check current project state — files, docs,
recent commits, .handoff/ state if present. If a question can be answered
by exploring the codebase, explore the codebase instead of asking.
If that exploration turns broad (vs. a few targeted greps), it's a delegate trigger — ask the user delegate-or-inline first (
delegateskill).
Read the code before you ask. Before asking anything the code could
answer, gather at least one piece of evidence — grep the symbol, read the
file — and cite path:line in the question itself: not "does this touch the
database?" but "orders/service.ts:142 writes to orders directly — new
column there, or a separate table?" Grounded questions get grounded answers.
If you truly find nothing, say what you searched and proceed as greenfield.
Assess scope before refining details. If the request describes multiple independent subsystems ("build a platform with chat, billing, and analytics"), flag it immediately and help decompose into sub-projects: what are the independent pieces, how do they relate, what order? Then brief the first sub-project. Each sub-project gets its own brief → plan → build cycle.
Ask questions one at a time. Multiple questions at once are bewildering. Prefer multiple choice when possible; open-ended is fine too. For each question, provide your recommended answer — the user corrects a recommendation faster than they produce an answer from scratch. Focus on purpose, constraints, success criteria, and what happens when things fail (empty states, bad input, the payment that doesn't go through).
T3 depth — interrogate relentlessly. Walk down each branch of the design tree, resolving dependencies between decisions one by one, until you reach shared understanding. Stress-test the plan's premises, not just its details.
Propose 2–3 approaches with trade-offs, in plain product language. Lead with your recommendation and why. YAGNI ruthlessly — strike features the goal doesn't need.
Present the design, scaled to complexity — a few sentences for simple work, sections for nuanced work (architecture, components, data flow, error handling, testing). Ask after each section whether it looks right. Go back and clarify when something doesn't make sense.
Design for isolation and clarity. Break the system into units with one clear purpose each, communicating through well-defined interfaces. For each unit: what does it do, how do you use it, what does it depend on? If you can't change a unit's internals without breaking consumers, the boundaries need work. Smaller, well-bounded units are also easier to build reliably — a file that grows large is usually doing too much.
In existing codebases: follow established patterns. Where existing code has problems that affect this work, include targeted improvements in the design — but don't propose unrelated refactoring.
Writing the spec (T3)
Open with a one-line impact/effort call (high-impact/low-effort → do now; low-impact/high-effort → question the spec itself) so the reader knows whether the work earns its cost. Give every requirement testable acceptance criteria — numbered, pass/fail, no subjective language:
- ✅ "Expired orders return HTTP 410 for all 4 user roles"
- ❌ "The feature works correctly" / "edge cases are handled"
Save to docs/specs/YYYY-MM-DD-<topic>.md (user preferences override) and
self-review it with fresh eyes:
- Placeholder scan — any "TBD"/"TODO"/vague requirements? Fix them.
- Internal consistency — do sections contradict each other?
- Scope check — focused enough for a single plan, or needs decomposition?
- Ambiguity check — could any requirement be read two ways? Pick one, make it explicit.
Fix issues inline, then ask the user to review the spec before proceeding.
Only move to the plan skill once they approve.
Key principles
- One question at a time; multiple choice preferred; recommendation attached.
- Explore the codebase instead of asking what it can answer.
- YAGNI ruthlessly. Explore 2–3 alternatives before settling.
- Incremental validation — approval per section, not one big reveal.
- Surface failure paths early; they are where specs go wrong.
- Stop when the load-bearing decisions are settled.
Adapted from superpowers (MIT, © 2025 Jesse Vincent), mattpocock-skills (MIT, © 2026 Matt Pocock), gstack (MIT, © Garry Tan), and rampstack-skills (MIT, © 2026 RampStack Co.); see ATTRIBUTION.md.