clarify
Skill4 starsChanged 4 months agoApache-2.0View on GitHub
Resolve the highest-leverage ambiguities in a draft intake spec before decomposition — one round at a time, a tunable round budget that bounds QUESTIONS, never COVERAGE (F1 route-never-drop). Every answer is logged and propagated; every remaining ambiguity becomes a flagged [ASSUMED]. Interactive asks the human via AskUserQuestion; autonomous never asks. WHAT/WHY, never HOW.
80 other projects use a version of this.
Adopted by
Most recently taken up by
- PeanutGT/NutsSkillstheir own version, first seen Nov 8, 2026
- venhdev/skillstheir own version, first seen Nov 8, 2026
- mel0nyrame/skillstheir own version, first seen Nov 8, 2026
- Integralist/agent-skillstheir own version, first seen Nov 6, 2026
- theexperiencecompany/gaiatheir own version, first seen Nov 3, 2026
- mag123c/toktracktheir own version, first seen Nov 3, 2026
Used with
Projects with it also use quieter, arrange and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
HK-hubSkillquieter
Tones down visually aggressive or overstimulating designs, reducing intensity while preserving quality. Use when the user mentions too bold, too loud, overwhelming, aggressive, garish, or wants a calmer, more refined aesthetic.
Also in 29 projects that use this
HK-hubSkillarrange
Improve layout, spacing, and visual rhythm. Fixes monotonous grids, inconsistent spacing, and weak visual hierarchy. Use when the user mentions layout feeling off, spacing issues, visual hierarchy, crowded UI, alignment problems, or wanting better composition.
Also in 14 projects that use this
zwy123zwySkillnormalize
将用户随意输入的提示词规范化为结构清晰、便于大模型执行的标准化提示词。适用于需要整理、统一提示词格式时调用。
Also in 19 projects that use this
owshq-mecSkilllayout
Improve layout, spacing, and visual rhythm. Fixes monotonous grids, inconsistent spacing, and weak visual hierarchy. Use when the user mentions layout feeling off, spacing issues, visual hierarchy, crowded UI, alignment problems, or wanting better composition.
Also in 8 projects that use this
- +8 more from HK-hub
Other versions80 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 80
- spool-lab/spool★ 592same name
- paperboytm/spool★ 590same name
- talesofai/cohub★ 585same name
- zaxbysauce/opencode-swarm★ 519same name
- ZaxbyHub/opencode-swarm★ 518same name
- educlopez/ui-craft★ 441same name
- nexmoe/DayBee★ 424same name
- nexmoe/eve★ 424same name
- ryanthedev/code-foundations★ 381same name
- Southclaws/storyden★ 348same name
70 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- decomposeSkill
- spec-authoringSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 2 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 77 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 29
Every unresolved point maps to exactly one canonical category.
- Very specific: line 57
Only unresolved categories are eligible (a category fully covered by an FR/SC/edge case, or marked N/A in ## Deferrals, is skipped).
- Distinctive: line 82
Never batch unrelated questions.
- Very specific: line 120
Every category appears exactly once in the ledger, by canonical id.
- Distinctive: line 130
every P1 story has ≥ 1 explicit edge case and ≥ 1 failure/error-path scenario.
- Very specific: line 131
every story with latency / volume / availability implications has ≥ 1 NFR SC-NNN.
- Very specific: line 132
every [ASSUMED …] carries its Chosen because / Discarded and a propagation note.
“Common” is measured: kept by at least 6 in 10 of the 77 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
You run the clarify loop: find where the objective is silent or contradictory, resolve the few
ambiguities that most change the spec, and surface the rest as flagged assumptions — so a human at Gate A
ratifies a spec with no invisible gaps. You drive this from the Architect role; intake.sh start has
already armed the intake sentinel, so the round budget, the ask↔record coupling, and the coverage floor are
mechanically enforced (see The boundary below) — hold the discipline and the gates stay quiet.
The core rule — F1: the budget routes, it never drops
The round budget bounds how many times you interrupt the human, not how much of the objective you resolve. These are different things, and conflating them mechanically enforces under-elicitation on exactly the high-stakes specs this system exists to serve.
- Every eligible ambiguity is surfaced. The top items by Impact × Uncertainty get a human question
within budget (interactive); every remaining eligible ambiguity becomes a flagged
[ASSUMED · <category> · confidence:low|med]entry in## Assumptions— there is NO CAP on assumptions. - The budget therefore keeps human questions few (don't fatigue the human) while guaranteeing nothing is
left unsurfaced. Zero residual
[NEEDS CLARIFICATION]is the post-condition, reached by either a## Clarificationsanswer or an## Assumptionsentry — never by silently dropping the ambiguity. - The human may trigger another clarify round even at zero rounds remaining (
intake.sh clarify <spec>) — intent-clarity outranks the quota. The budget only bounds agent-initiated questioning.
Question taxonomy — the canonical coverage set
Every unresolved point maps to exactly one canonical category. The categories are defined in ONE
machine-readable source — harness/intake-categories.json (id + canonical name + cluster) — and
this skill, the spec-reviewer, the spec template, and the deterministic coverage floor all defer to it, so
the taxonomy can never drift across copies again. Use a category's canonical id as the AskUserQuestion
header and as the disposition slug in the ## Deferrals ledger.
The set is broad by design and grouped into 12 clusters (read the enum for every id):
- Scope & Intent — what the system does / does not do, who it is for, "done" signals, competitive positioning
- Domain & Data — entities, persistence, migration, data quality, lineage, time/clock
- Interfaces & Integration — APIs, contracts/versioning, interoperability, eventing
- UX & Interaction — flows, accessibility (assistive + reduced-motion), responsiveness, motion, inclusivity
- Content & Brand — content design / information architecture, visual brand, content-source fidelity, copy
- Quality: Performance & Efficiency — latency, throughput, capacity, resource utilization
- Quality: Reliability & Resilience — availability, fault tolerance, recoverability, predictability
- Quality: Security — confidentiality, integrity, authn/authz, secrets, tenancy, privacy
- Quality: Safety — operational constraints, hazard handling, fail-safe, ML output safety
- Quality: Maintainability & Flexibility — modularity, testability, portability, scalability
- Operational & Lifecycle — deployment, observability, rollout/rollback, disaster recovery, cost
- Constraints, Risk & Governance — compliance/consent, licensing, data residency, supply-chain, mandated stack
Breadth is the SAFE direction: the floor checks presence, not adequacy, so a category that does not apply is one
deliberately N/A — <reason>line (defaults are pre-fillable). Accessibility, the split reliability/availability/operability axes, and the broadened security/safety set are deliberate: a load-bearing infra/multi-agent system under-covers these if NFR is narrowed to "performance & scale".
Ranking — Impact × Uncertainty
Only unresolved categories are eligible (a category fully covered by an FR/SC/edge case, or marked N/A
in ## Deferrals, is skipped). Score each eligible category on two axes, 1–3:
- Impact — blast radius if the answer changes: reshapes the architecture / many FR / the task graph (3), affects one story or a few FR (2), polishes an edge (1).
- Uncertainty — how silent or contradictory the objective is here: no signal (3), a hint but underspecified (2), mostly clear with a small gap (1).
Rank by the product, descending. Ask the top item first. Re-score after each answer — an answer often resolves or raises siblings and reorders the queue. Stop early when the top remaining product falls to a diminishing-returns threshold (≤ 2 — nothing both impactful and uncertain remains), even with budget left.
One-at-a-time protocol
loop:
1. score eligible categories → rank by Impact × Uncertainty
2. if queue empty OR top product ≤ 2 OR asked == budget: break → route the REST to ## Assumptions
3. ask the single top-ranked question via AskUserQuestion (interactive only)
4. record it as a "### Round N — <date>" entry in ## Clarifications, and PROPAGATE the answer into the
live FR/SC/story text, removing the resolved [NEEDS CLARIFICATION] marker
5. asked += 1 ; goto 1 (re-score — the queue may have changed)Never batch unrelated questions. Asking and recording are coupled: step 4 (log and propagate) for round k must be on disk before round k+1 is asked — the clarify-gate denies the next ask otherwise.
Recording format (one entry per AskUserQuestion round; the ### Round N header is what the round
counter keys on):
### Round 1 — 2026-01-15
- **Q (security):** How should users authenticate? → **A:** Session token. _(propagated to FR-003, SC-002)_Option format: multiple-choice, 2–5 options, mapped to AskUserQuestion. Exactly one option marked
(Recommended) and listed first (the safest/most conventional default); the tool's free-text "Other" is
always available.
Interactive vs autonomous
Mode: interactive— run the loop, asking viaAskUserQuestion, within the round budget, one at a time. Route every un-asked eligible ambiguity to a flagged[ASSUMED …].Mode: autonomous— never ask (there is no human; the clarify-gate denies AskUserQuestion entirely, and an unattended ask would hang). For every eligible ambiguity — not just the top N — write a flagged assumption, decoupled from the budget entirely:- [ASSUMED · security · confidence:med] Authenticate via session token. **Chosen because** it matches existing flows with no new infra. **Discarded:** OAuth 2.0, API key. _(propagated to FR-003, SC-002)_Propagate each assumed answer into the live spec and clear the marker, so the spec is internally consistent — and the human at Gate A sees exactly what to ratify or overturn.
Coverage sweep (F2 — before you declare the spec ready)
Walk every canonical category (the set in harness/intake-categories.json). Each must be one of:
covered (covered by FR-NNN — an FR / SC / edge case exists), deliberately N/A
(deliberately N/A — <reason>, recorded in the ## Deferrals / Out of scope ledger so the human can ratify
the omission), or surfaced (surfaced — <ref> — a ## Clarifications answer or a flagged [ASSUMED …]).
Every category appears exactly once in the ledger, by canonical id; a category that is none of these is an
elicitation gap — close it before Gate A. (The Stop floor greps each canonical id for one of these
dispositions — presence, never adequacy.)
Self-check before ready (F3 — enumerable, symmetric to the Task-Breakdown self-check)
Confirm, all verifiable by reading (no judgment call):
- the coverage sweep over every canonical category (
harness/intake-categories.json) is complete (each covered / deliberately N/A / surfaced); - zero orphaned
[NEEDS CLARIFICATION]/[PLACEHOLDER]remain; - every P1 story has ≥ 1 explicit edge case and ≥ 1 failure/error-path scenario;
- every story with latency / volume / availability implications has ≥ 1 NFR
SC-NNN; - every
[ASSUMED …]carries its Chosen because / Discarded and a propagation note; - the
## Deferrals / Out of scopesurface lists the categories consciously skipped or N/A.
The boundary (WIRED, not advisory)
This skill describes the behaviour; the hooks are the boundary, and they are live:
pre-tool-use-clarify-gate.sh(PreToolUse onAskUserQuestion, the real-time enhancement) denies the round beyond the budget, denies > the per-call question cap, denies AskUserQuestion entirely in autonomous mode, and denies the next round until the prior round is logged (ask↔record coupling). A human grant (intake.sh clarify) lifts the ceiling.stop-gate-intake.sh(Stop, the carrier-independent F1 guarantee) blocks the agent from declaring the spec done while any[NEEDS CLARIFICATION]remains, the round count exceeds budget, autonomous has any asked round, or the coverage sweep / F7## Deferralssurface is incomplete. This floor holds even if the AskUserQuestion gate is absent — the guarantee never rests on it.
Beyond these hooks sit the Gate-A two-party restatement (the spec-reviewer subagent, an understanding.md
projection, and a human ratification token) and the Gate-B FR↔task traceability check — see the Architect
role for the full cycle.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

