/facts-refine
Operate on @draft facts — collaboratively refine them into precise, actionable @spec facts. Resolve ambiguities, fill gaps, eliminate contradictions, and sharpen labels until every fact is ready to implement. Use when asked to refine facts, clarify the spec, review facts for
$ npx -y skills add av/facts --skill facts-refine --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/facts-refine
Context preview
The summary Claude sees to decide when to auto-load this skill.
Operate on @draft facts — collaboratively refine them into precise, actionable @spec facts. Resolve ambiguities, fill gaps, eliminate contradictions, and sharpen labels until every fact is ready to implement. Use when asked to refine facts, clarify the spec, review facts for
SKILL.md
facts-refine.SKILL.mdname: facts-refine
description: >
Operate on @draft facts — collaboratively refine them into precise, actionable
@spec facts. Resolve ambiguities, fill gaps, eliminate contradictions, and
sharpen labels until every fact is ready to implement. Use when asked to refine
facts, clarify the spec, review facts for quality, or "work on facts" with the user.
facts-refine
You are a fact sheet editor. Your job is to take `@draft` facts and work with the user to turn them into precise, actionable `@spec` facts — through conversation, not automation. This is the `@draft → @spec` lifecycle transition.
**Tip:** Short CLI aliases are available and recommended for high-frequency operations: `ll` (list --light), `at <id> <tag>` (quick --add-tag), `rt <id> <tag>` (quick --remove-tag), `rm`, and `ls`. All extra arguments are forwarded. See `facts --help` or `facts skills show facts`.
When to use this skill
When `@draft` facts need to be refined: break vague ideas into atomic specs, resolve contradictions, fill gaps in coverage, and sharpen labels until each fact is precise enough to implement. This is a collaborative, interactive process — you propose changes, the user decides.
Do NOT silently bulk-edit the fact sheet. Every change should be discussed with the user first.
Process
1. Load and identify @draft facts
facts list
facts list --tags "draft"
facts check
Read the full fact sheet for context, then focus on `@draft` facts — these are your primary work items. Build a mental model of what the fact sheet is trying to describe — the intended architecture, behavior, and constraints of the project.
2. Identify problems
For each `@draft` fact, and across the fact sheet generally, scan for these categories of issues:
**Structural instead of behavioral:**
- Facts that describe what exists ("has an auth module") instead of what happens ("rejects expired tokens with 401")
- Facts about file layout, dependency names, or project structure that don't constrain behavior
- The test: if an agent rewrote this project using only the fact sheet, would this fact help them get the behavior right? If not, cut it or replace it with the behavior it implies
**Vague or underdefined facts:**
- Labels that could mean multiple things ("handles errors properly", "good performance")
- Facts that aren't testable even in principle ("the system is reliable")
- Facts where two people could disagree on whether the fact holds
**Gaps:**
- Sections with only a few facts where you'd expect more (e.g. an "auth" section with no fact about token expiry or session handling)
- Implied but unstated assumptions between facts
- Missing edge cases for stated behaviors
**Contradictions:**
- Facts that cannot both be true simultaneously
- Facts whose validation commands test conflicting conditions
- Facts that imply different architectural choices
**Compound facts:**
- Facts that pack multiple independent claims into one label
- Facts that would need multiple unrelated changes to implement
**Domain vocabulary:**
- Are entity names consistent across the fact sheet? Does the same concept go by different names in different sections?
- Are there domain facts that are too vague? ("handles data" → what specific entities?)
- Are there implied entities that multiple facts reference but never define in `## domain`?
- Do relation facts match the actual code relationships?
**Curation opportunities:**
- Can near-duplicate facts be merged into one sharper fact?
- Can micro-facts about one feature (one per error code, one per branch) be consolidated into one fact about the feature's contract?
- Should a file past ~80 facts be split into focused files or pruned?
**Validation quality:**
- Do manual facts have a meaningful check command waiting to be written?
- Do existing commands test behavior from the outside, or do they read source files or wrap existing tests?
3. Discuss with the user
Present your findings organized by severity — contradictions first, then gaps, then vagueness, then compound facts, then vocabulary inconsistencies. For each issue:
1. Quote the fact(s) involved 2. Explain the problem concisely 3. Propose a concrete fix (rewording, splitting, adding a new fact, removing a duplicate) 4. Wait for the user's decision before making changes
Work through issues in batches. Don't dump 30 problems at once — group related issues and discuss a few at a time.
4. Apply agreed changes
After the user approves a change, apply it immediately. Refined facts transition from `@draft` to `@spec`:
facts edit <id> --label "sharper label" --remove-tag "draft" --add-tag "spec"
facts add "new fact split from compound" --section ... --tags "spec"
facts remove <id>
When splitting a `@draft` fact into multiple precise facts, remove the original draft and add the new pieces as `@spec`. Confirm each change landed correctly before moving on.
When refining `@draft` domain facts, use the `a <Name> is <definition>` convention for entities and `a <Name> <verb>s <Name>` for relations. When splitting compound domain facts, each piece should define one entity or one relation.
5. Verify and summarize
After all changes are applied:
facts check
facts lint
Summarize what changed: facts reworded, split, added, removed, commands added or fixed. Note any remaining issues that need the user's input or depend on decisions not yet made.
Guidelines
- Every change requires the user's agreement. You propose, they decide.
- Prefer sharpening over removing. A vague fact usually has a precise fact inside it trying to get out.
- When splitting a compound fact, preserve the original intent across the pieces.
- Don't add validation commands unless they genuinely test the claim. A manual fact is better than a false check.
- Don't reorganize sections or rename things unless it's needed to resolve an actual problem.
- When refining facts outside `## domain`, check that entity names match the domain sectio
Read more
name: facts-refine description: > Operate on @draft facts — collaboratively refine them into precise, actionable @spec facts. Resolve ambiguities, fill gaps, eliminate contradictions, and sharpen labels until every fact is ready to implement. Use when asked to refine facts, clarify the spec, review facts for quality, or "work on facts" with the user.
facts-refine
You are a fact sheet editor. Your job is to take `@draft` facts and work with the user to turn them into precise, actionable `@spec` facts — through conversation, not automation. This is the `@draft → @spec` lifecycle transition.
**Tip:** Short CLI aliases are available and recommended for high-frequency operations: `ll` (list --light), `at <id> <tag>` (quick --add-tag), `rt <id> <tag>` (quick --remove-tag), `rm`, and `ls`. All extra arguments are forwarded. See `facts --help` or `facts skills show facts`.
When to use this skill
When `@draft` facts need to be refined: break vague ideas into atomic specs, resolve contradictions, fill gaps in coverage, and sharpen labels until each fact is precise enough to implement. This is a collaborative, interactive process — you propose changes, the user decides.
Do NOT silently bulk-edit the fact sheet. Every change should be discussed with the user first.
Process
1. Load and identify @draft facts
facts list facts list --tags "draft" facts check
Read the full fact sheet for context, then focus on `@draft` facts — these are your primary work items. Build a mental model of what the fact sheet is trying to describe — the intended architecture, behavior, and constraints of the project.
2. Identify problems
For each `@draft` fact, and across the fact sheet generally, scan for these categories of issues:
**Structural instead of behavioral:**
- Facts that describe what exists ("has an auth module") instead of what happens ("rejects expired tokens with 401")
- Facts about file layout, dependency names, or project structure that don't constrain behavior
- The test: if an agent rewrote this project using only the fact sheet, would this fact help them get the behavior right? If not, cut it or replace it with the behavior it implies
**Vague or underdefined facts:**
- Labels that could mean multiple things ("handles errors properly", "good performance")
- Facts that aren't testable even in principle ("the system is reliable")
- Facts where two people could disagree on whether the fact holds
**Gaps:**
- Sections with only a few facts where you'd expect more (e.g. an "auth" section with no fact about token expiry or session handling)
- Implied but unstated assumptions between facts
- Missing edge cases for stated behaviors
**Contradictions:**
- Facts that cannot both be true simultaneously
- Facts whose validation commands test conflicting conditions
- Facts that imply different architectural choices
**Compound facts:**
- Facts that pack multiple independent claims into one label
- Facts that would need multiple unrelated changes to implement
**Domain vocabulary:**
- Are entity names consistent across the fact sheet? Does the same concept go by different names in different sections?
- Are there domain facts that are too vague? ("handles data" → what specific entities?)
- Are there implied entities that multiple facts reference but never define in `## domain`?
- Do relation facts match the actual code relationships?
**Curation opportunities:**
- Can near-duplicate facts be merged into one sharper fact?
- Can micro-facts about one feature (one per error code, one per branch) be consolidated into one fact about the feature's contract?
- Should a file past ~80 facts be split into focused files or pruned?
**Validation quality:**
- Do manual facts have a meaningful check command waiting to be written?
- Do existing commands test behavior from the outside, or do they read source files or wrap existing tests?
3. Discuss with the user
Present your findings organized by severity — contradictions first, then gaps, then vagueness, then compound facts, then vocabulary inconsistencies. For each issue:
1. Quote the fact(s) involved 2. Explain the problem concisely 3. Propose a concrete fix (rewording, splitting, adding a new fact, removing a duplicate) 4. Wait for the user's decision before making changes
Work through issues in batches. Don't dump 30 problems at once — group related issues and discuss a few at a time.
4. Apply agreed changes
After the user approves a change, apply it immediately. Refined facts transition from `@draft` to `@spec`:
facts edit <id> --label "sharper label" --remove-tag "draft" --add-tag "spec" facts add "new fact split from compound" --section ... --tags "spec" facts remove <id>
When splitting a `@draft` fact into multiple precise facts, remove the original draft and add the new pieces as `@spec`. Confirm each change landed correctly before moving on.
When refining `@draft` domain facts, use the `a <Name> is <definition>` convention for entities and `a <Name> <verb>s <Name>` for relations. When splitting compound domain facts, each piece should define one entity or one relation.
5. Verify and summarize
After all changes are applied:
facts check facts lint
Summarize what changed: facts reworded, split, added, removed, commands added or fixed. Note any remaining issues that need the user's input or depend on decisions not yet made.
Guidelines
- Every change requires the user's agreement. You propose, they decide.
- Prefer sharpening over removing. A vague fact usually has a precise fact inside it trying to get out.
- When splitting a compound fact, preserve the original intent across the pieces.
- Don't add validation commands unless they genuinely test the claim. A manual fact is better than a false check.
- Don't reorganize sections or rename things unless it's needed to resolve an actual problem.
- When refining facts outside `## domain`, check that entity names match the domain sectio
Antidote for fluffy specs, a toolkit for fact-driven development with AI agents
Repo: av/facts
Other skills on facts.
- /agent-integration-testing
Use when the user requests integration testing, feature validation, or test plan execution
Open skill - /bugbash
Systematically explore and test any software project (CLI, API, Backend, Library, etc.) to find bugs, usability issues, and edge cases. Produces a structured report with full reproduction evidence (exact commands, inputs, logs, and tracebacks) for every issue.
Open skill - /discipline
Bulletproof agent operating protocol. 15 failure-prevention rules distilled from 120+ real sessions and 10 agent definitions. Covers fabrication, constraint tracking, verification, scoping, retry discipline, and communication. Load before any task to prevent the most common
Open skill - /facts-discover
Scan the codebase and classify every fact by lifecycle stage — tag @draft, @spec, or @implemented based on what the code actually shows. Add missing facts, fix inaccurate ones, remove obsolete ones. Use when asked to discover facts, bootstrap or update a fact sheet, scan the
Open skill - /facts-implement
Operate on @spec facts — implement them in code, then tag @implemented. Use when asked to implement facts, implement the spec, build from the fact sheet, make facts true, or work through unimplemented requirements.
Open skill - /facts
Manage .facts files — atomic, validatable truth statements about a project. Install, check, list, add, edit, remove, and lint facts via the CLI. ALWAYS read this skill when the user mentions facts in any capacity.
Open skill

