用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/laicluse/agent-fieldkit --skill triage命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | triage |
| description | Internal drydry classifier that buckets duplication findings by convergence cost. |
| allowed-tools | ["Read","Grep","Glob","Bash(rg *)","Bash(grep *)","Bash(find *)"] |
The three-bucket triage pass behind the drydry audit pipeline. Takes a findings list (output of drydry:sweep) and classifies each finding into cheap-and-safe / partial / needs-design with a one-line convergence cost. Not user-invocable.
Caller supplies through args:
findings: the markdown structure returned by drydry:sweep, either inline or as a path to a markdown file.scope: the directory or package the findings were collected over. Used to estimate convergence cost (count of call-sites, presence of public exports).Return the findings list, with one triage: and one cost: line added per finding:
## Pattern: <pattern_id>
- Finding 1
- file_a: `<path>:<line>`
- file_b: `<path>:<line>`
- drift_hypothesis: <as-is from sweep>
- verifier_command: <as-is from sweep>
- verifier_expected: <as-is from sweep>
- triage: cheap-and-safe | partial | needs-design (the by-design case is a sub-class of needs-design; the bucket label stays needs-design)
- cost: <one-line convergence cost: file count touched, public-API surface affected, migration complexity>
When a finding is classified as needs-design, also include a design_question: line capturing the open decision (which side wins, what to name the unified abstraction, how callers migrate). When partial, include a next_step: line naming the smallest action that would unblock convergence.
There is an obvious convergence direction. The change is local. No public contract moves. Both call-sites are caller-owned; no external consumers.
Signals:
Convergence path: apply the unified abstraction in the same audit. Both paths migrate to the new shape; the diff is local; reviewers see the convergence at a glance.
Convergence requires design judgement, but the judgement is small and the operator can resolve it inside the audit if they make one decision. Typical pattern: the unification is clear except for one open question.
Signals:
Convergence path: surface the design question in the findings artefact under design_question:. When the operator answers, the finding promotes to cheap-and-safe.
The finding looks like a duplicate from outside, but a real constraint or genuine domain difference makes convergence either non-trivial or wrong. Document why so future audits do not re-flag it (Chapter 7's contrarian second-pass gates this verdict). When the blocking constraint is a framework or external API ("by-design" in informal speech), the verdict and the artefact entry are still needs-design; the constraint becomes the body of the design_question: line.
Signals:
perform() signature requires concrete types; type erasure costs more than the duplication)Convergence path: document the verdict and the constraint in the findings artefact. The orchestrator's audit-mode step 5 runs an independent contrarian pass to verify the verdict is not hollow (Chapter 7).
args.findings.<N> files touched, <M> public symbols moved, <complexity tag>. Complexity tags: mechanical (rename only), local-refactor (extract method or component), interface-migration (public contract changes), framework-bound (constrained by an external API shape).partial, name the next-step in one sentence. For needs-design, name the design question.cheap-and-safe classification with a cost of "30 files touched, interface migration" is contradictory; promote it to partial or needs-design.later, no backlog, no polish next sprint. Either fix it (cheap-and-safe), park the design question (partial), or document the by-design constraint (needs-design).