facts-refine
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesefacts-refine
facts-refine
You are a fact sheet editor. Your job is to take facts and work with the user to turn them into precise, actionable facts — through conversation, not automation. This is the lifecycle transition.
@draft@spec@draft → @spec你是一名事实表编辑器。你的工作是接收事实,并通过协作对话(而非自动化方式)与用户将其转化为精准、可执行的事实——这是的生命周期转换。
@draft@spec@draft → @specWhen to use this skill
何时使用此技能
When 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.
@draftDo NOT silently bulk-edit the fact sheet. Every change should be discussed with the user first.
当事实需要细化时:将模糊的想法拆解为原子化规范,解决矛盾,填补覆盖空白,优化标签,直到每个事实都足够精准可以落地实现。这是一个协作式的交互过程——由你提出修改建议,由用户做决定。
@draft请勿静默批量编辑事实表。每一项修改都应先与用户讨论。
Process
流程
1. Load and identify @draft facts
1. 加载并识别@draft事实
facts list
facts list --tags "draft"
facts checkRead the full fact sheet for context, then focus on 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.
@draftfacts list
facts list --tags "draft"
facts check通读完整的事实表以了解上下文,然后聚焦于事实——这些是你的主要工作对象。构建一个关于事实表试图描述内容的心智模型——包括项目的预期架构、行为和约束。
@draft2. Identify problems
2. 识别问题
For each fact, and across the fact sheet generally, scan for these categories of issues:
@draftVague 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
Missing validation:
- Facts that could have a meaningful check command but don't
- Facts with commands that don't actually validate the claim (keyword grep)
针对每个事实,以及整个事实表,排查以下几类问题:
@draft模糊或定义不清晰的事实:
- 可能存在多种含义的标签(例如“正确处理错误”、“性能良好”)
- 原则上无法测试的事实(例如“系统可靠”)
- 不同人对事实是否成立可能存在分歧的情况
空白:
- 预期应有更多事实但仅有少量内容的章节(例如“认证”章节中没有关于令牌过期或会话处理的事实)
- 事实之间隐含但未明确说明的假设
- 已声明行为缺失的边缘情况
矛盾:
- 无法同时成立的事实
- 验证命令测试冲突条件的事实
- 暗示不同架构选择的事实
复合事实:
- 将多个独立声明打包到一个标签中的事实
- 需要进行多个不相关修改才能实现的事实
缺失验证:
- 本可以添加有意义检查命令但未添加的事实
- 命令无法真正验证声明的事实(例如仅通过关键字 grep 检查)
3. Discuss with the user
3. 与用户讨论
Present your findings organized by severity — contradictions first, then gaps, then vagueness, then compound facts. For each issue:
- Quote the fact(s) involved
- Explain the problem concisely
- Propose a concrete fix (rewording, splitting, adding a new fact, removing a duplicate)
- 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.
按严重程度整理你的发现——先讨论矛盾,再是空白,接着是模糊性,最后是复合事实。针对每个问题:
- 引用涉及的事实
- 简洁地解释问题
- 提出具体的修复方案(改写、拆分、添加新事实、移除重复内容)
- 在做出修改前等待用户的决定
分批处理问题。不要一次性抛出30个问题——将相关问题分组,每次讨论几个。
4. Apply agreed changes
4. 应用已达成一致的修改
After the user approves a change, apply it immediately. Refined facts transition from to :
@draft@specfacts 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 fact into multiple precise facts, remove the original draft and add the new pieces as . Confirm each change landed correctly before moving on.
@draft@spec用户批准修改后,立即应用。细化后的事实将从转换为:
@draft@specfacts edit <id> --label "sharper label" --remove-tag "draft" --add-tag "spec"
facts add "new fact split from compound" --section ... --tags "spec"
facts remove <id>将一个事实拆分为多个精准事实时,移除原始草稿,并将新的内容作为添加。继续下一步前确认每一项修改都已正确生效。
@draft@spec5. Verify and summarize
5. 验证并总结
After all changes are applied:
facts check
facts lintSummarize 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.
所有修改应用完成后:
facts check
facts lint总结所做的修改:改写的事实、拆分的事实、添加的事实、移除的事实,以及添加或修复的命令。记录任何仍需用户输入或依赖未决决策的剩余问题。
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.
- Keep the conversation focused. If the user wants to add entirely new facts (not refine existing ones), that's the skill's job, not yours — but it's fine to suggest new
factsfacts when they fill a gap you identified.@spec
- 每一项修改都需要用户的同意。由你提出建议,用户做决定。
- 优先优化而非移除。模糊的事实通常包含一个想要呈现的精准事实。
- 拆分复合事实时,保留各部分的原始意图。
- 除非验证命令能真正测试声明,否则不要添加。手动维护的事实比虚假检查更好。
- 除非是解决实际问题的需要,否则不要重新组织章节或重命名内容。
- 保持对话聚焦。如果用户想要添加全新的事实(而非细化现有事实),那是技能的工作,而非本技能的职责——但当你发现空白时,建议添加新的
facts事实是可行的。@spec
Example session
示例会话
undefinedundefinedLoad
Load
facts list
facts list --tags "draft"
facts check
facts list
facts list --tags "draft"
facts check
@draft facts to refine:
@draft facts to refine:
"d4e": "handles auth correctly" @draft
"d4e": "handles auth correctly" @draft
"f6g": "uses PostgreSQL and Redis for caching" @draft
"f6g": "uses PostgreSQL and Redis for caching" @draft
Present findings to the user:
Present findings to the user:
1. Vague: "d4e" says "handles auth correctly" — what specifically?
1. Vague: "d4e" says "handles auth correctly" — what specifically?
Suggest splitting into: "rejects expired tokens with 401",
Suggest splitting into: "rejects expired tokens with 401",
"refresh tokens extend session by 24h", "revoked tokens are
"refresh tokens extend session by 24h", "revoked tokens are
rejected within 5 minutes"
rejected within 5 minutes"
2. Compound: "f6g" says "uses PostgreSQL and Redis for caching" —
2. Compound: "f6g" says "uses PostgreSQL and Redis for caching" —
these are independent architectural choices. Split into two facts?
these are independent architectural choices. Split into two facts?
3. Gap: the "api/auth" section has no fact about rate limiting on
3. Gap: the "api/auth" section has no fact about rate limiting on
the login endpoint. Should there be one?
the login endpoint. Should there be one?
User agrees — apply changes, transitioning @draft → @spec
User agrees — apply changes, transitioning @draft → @spec
facts remove d4e # remove the vague draft
facts add "rejects expired tokens with 401" --section api/auth --tags "spec"
facts add "refresh tokens extend session by 24h" --section api/auth --tags "spec"
facts add "revoked tokens are rejected within 5 minutes" --section api/auth --tags "spec"
facts add "login endpoint rate-limited to 10 attempts per minute" --section api/auth --tags "spec"
facts edit f6g --label "uses PostgreSQL for persistence" --remove-tag "draft" --add-tag "spec"
facts add "uses Redis for caching" --section architecture --tags "spec" --command "grep -q redis docker-compose.yml"
facts check
facts remove d4e # remove the vague draft
facts add "rejects expired tokens with 401" --section api/auth --tags "spec"
facts add "refresh tokens extend session by 24h" --section api/auth --tags "spec"
facts add "revoked tokens are rejected within 5 minutes" --section api/auth --tags "spec"
facts add "login endpoint rate-limited to 10 attempts per minute" --section api/auth --tags "spec"
facts edit f6g --label "uses PostgreSQL for persistence" --remove-tag "draft" --add-tag "spec"
facts add "uses Redis for caching" --section architecture --tags "spec" --command "grep -q redis docker-compose.yml"
facts check
Report: 2 @draft facts refined into 6 @spec facts, 1 gap filled
Report: 2 @draft facts refined into 6 @spec facts, 1 gap filled
undefinedundefined