Requirements Clarification skill for Claude Code

Five sharp questions before five days of wrong work. Before building on a vague request, Claude researches what the code, tickets and docs already answer, ranks the remaining unknowns by cost of being wrong, and asks one batch of questions with recommended defaults. The result is a one-page brief with testable acceptance criteria, scope, non-goals and an assumptions log the user confirms before any planning or code.

  • namerequirements-clarification
  • size148 lines · ≈1,650 tokens
  • files1
  • licenseMIT
  • updated

What Claude sees before loading it

This description is the only part of the skill that sits in context all the time. Claude reads it to decide when to load the full playbook below.

description: Turns a vague or one-line request into confirmed requirements before building, by researching the codebase first, asking a small batch of high-value questions with proposed defaults, keeping an assumptions log, and writing testable acceptance criteria, scope, and non-goals the user signs off on. Use when a request is ambiguous ("make it faster", "add export", "clean up auth"), when the user says "you decide" on something with real trade-offs, when estimates or designs depend on unknowns, or after work was rejected for missing the point.

Try asking

  • Add CSV export to the reports page
  • Make the dashboard faster — you decide what that means
  • Before you start on the auth cleanup, what do you need to know from me?

Use it when

  • A request is one line and could mean several different builds
  • The work touches money, data deletion, security, or public APIs
  • You were told 'you decide' on a choice with user-visible trade-offs
  • Previous work was rejected for missing what was actually wanted

Skip it when

  • Requirements are clear and you need an implementation plan — use task-decomposition-plans instead
  • You need a product-level document with goals and metrics — use prd-writing instead

How to check the result

The user explicitly confirms a brief whose acceptance criteria are observable and numeric where quality matters, with every assumption confirmed or flagged as a risk.

The common mistake it prevents

Asking the user questions the codebase already answers, or one question per message, which burns their patience before the high-cost unknowns get asked.

~/.claude/skills/requirements-clarification/SKILL.md

--- name: requirements-clarification description: Turns a vague or one-line request into confirmed requirements before building, by researching the codebase first, asking a small batch of… license: MIT ---

Clarification is done when the user has confirmed a one-page brief: the goal in one sentence, acceptance criteria that can be checked, explicit scope and non-goals, and an assumptions log where every assumption is either confirmed or marked as a known risk. The aim is the fewest questions that remove the most risk, not an interrogation.

When to clarify vs. just proceed

SituationAction
Clear request, one reasonable interpretation, cheap to changeProceed; state assumptions in one line
Several interpretations with different code, or expensive to redoClarify first
Touches money, security, data deletion, public APIs, migrationsClarify first, always
User said “you decide” and options differ in user-visible behaviorPropose a default with trade-offs; get a yes
You can answer it by reading the code, docs, or dataDo not ask; look it up

Workflow

- [ ] 1. Restate the request in one sentence; list every ambiguous noun and verb
- [ ] 2. Research what the codebase, docs, tickets, and data already answer
- [ ] 3. Rank remaining unknowns by (cost if wrong) x (likelihood of being wrong)
- [ ] 4. Ask 3-7 questions in one batch, each with a proposed default
- [ ] 5. Write the brief: goal, acceptance criteria, scope, non-goals, assumptions
- [ ] 6. Get explicit confirmation; then hand off to planning or implementation

1. Find the ambiguity

Underline words that hide decisions. “Add CSV export to the reports page”:

WordHidden decisions
addNew button, menu item, or API? Who can see it (roles)?
CSVDelimiter, encoding (UTF-8 with BOM for Excel?), date and number formats
exportCurrent filtered view or all data? Sync download or emailed file for large sets?
reports pageWhich of the 6 report types? All columns or visible ones?

Also check the five dimensions that most often go unstated: who (users, roles), when/scale (data volume, frequency), quality bars (latency, accuracy), failure behavior (errors, partial results, retries), constraints (deadline, compatibility, compliance).

2. Research before asking

rg -n "export|csv" src/ --glob '!**/*.test.*' | head -30     # existing patterns or half-built features
gh issue list --search "csv export" --state all --limit 10    # prior requests, decisions
ls docs/ docs/adr/ 2>/dev/null

Look at similar features for conventions (how other downloads work, permission checks, size limits). Every question you answer yourself is one the user does not have to.

3. Rank unknowns

Ask about high cost x high uncertainty first. Defer or assume the rest:

UnknownCost if wrongUncertaintyHandle
Filtered view vs. all rowsHigh (different query + perf)HighAsk
Max rowsHigh (sync vs. async design)MediumAsk with default
DelimiterLowLowAssume comma, log it
Button placementLowMediumAssume next to Filter, log it

4. Ask well

One message, numbered, each question answerable in a word or two, each with your recommended default and why. Offer options, not open-ended prompts.

Before I build CSV export, five decisions. My default is in bold; reply "defaults ok" or override by number.

1. Rows: **the current filtered view** / all rows in the report?
2. Size: largest reports have ~400k rows. **Sync download up to 50k rows, otherwise email a link** / always sync / always email?
3. Columns: **visible columns in current order** / all columns?
4. Access: **same roles that can view the report** / admins only?
5. Excel compatibility: **UTF-8 with BOM so Excel shows accents correctly** / plain UTF-8?

Assuming (tell me if wrong): comma delimiter, ISO 8601 dates, filename `report-<name>-<date>.csv`.

Avoid: asking things the code answers, asking one question per message, yes/no questions that hide the real choice (“Should it be fast?”), and leading with implementation details the user does not care about.

5. The brief

# CSV export for reports — brief (confirmed 2026-10-20)

**Goal:** Analysts can download what they see in a report as a CSV that opens correctly in Excel.

**Acceptance criteria**
- AC1 Export button on all 6 report types, visible to anyone who can view the report.
- AC2 File contains the current filtered rows and visible columns in on-screen order.
- AC3 Up to 50,000 rows downloads within 10 s; larger exports email a link valid 24 h.
- AC4 Accented characters display correctly when opened in Excel (UTF-8 BOM).
- AC5 Export is recorded in the audit log with user, report, row count.

**In scope:** reports page UI, export endpoint, async job for large exports.
**Non-goals:** XLSX format, scheduled exports, API access for exports.

**Assumptions**
| # | Assumption | Status |
|---|---|---|
| A1 | Comma delimiter, ISO 8601 dates | confirmed |
| A2 | Existing email service can send links | confirmed by code (src/mail/send.ts) |
| A3 | 400k-row export completes in under 5 min as a job | RISK: unverified, spike in task 1 |

**Open questions:** none blocking.

Acceptance criteria rules: observable from outside (UI, API, file, metric), with numbers where quality matters, one behavior each, and testable by someone who did not write the code. “Fast” and “user-friendly” are not criteria.

6. Confirm and hand off

Ask for an explicit yes on the brief. Then continue with task-decomposition-plans for the plan or spec-driven-development for a larger feature. If new ambiguity appears during implementation, add it to the assumptions log and ask again rather than deciding silently.

Gotchas

  • Asking too much: more than ~7 questions means you have not researched or ranked. Assume the low-cost items and log them.
  • Asking too little on irreversible things: data deletion, money movement, public API shape, and migrations always get an explicit confirmation.
  • Accepting the proposed solution as the requirement (“add a cache”) without the problem (“page loads in 6 s, target 1 s”). Ask what outcome they need; offer the solution as one option.
  • Silent assumptions discovered at review time are the most expensive kind. Log them.
  • Users often answer the question asked, not the one that matters. Restate the decision in their words in the brief so misreadings surface.

Output

The confirmed brief (template above), plus a one-line handoff: “Brief confirmed; next: plan in plans/csv-export.md, starting with the A3 performance spike.”

About this skill

Written and maintained by the Claude Skills editors to the same editorial standard as every skill in the directory: a selective trigger, a real workflow, known pitfalls and a verification step. First published , last updated . MIT licensed.

esc