Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Normalize terminology across a draft (canonical terms + synonym policy) without changing citations or meaning. **Trigger**: terminology, glossary, consistent terms, 术语统一, 统一叫法, 术语表. **Use when**: the draft has concept drift (same thing called 2–3 names) or global-review flags terminology inconsistency.
.claude/skills/willoscar-terminology-normalizer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 130% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 8% | 0% |
Purpose: make the draft read like one author wrote it by enforcing consistent naming (canonical terms + synonym policy), without changing citations or meaning.
Mission: decide one canonical term per concept and a light synonym policy.
Do:
outline/taxonomy.yml) as canonical labels when available.Avoid:
Mission: apply replacements consistently without changing meaning or citations.
Do:
Avoid:
textYou are normalizing terminology in a technical survey draft. Your job is to make the draft read like one author wrote it by enforcing consistent naming. Constraints: - do not add/remove citation keys - do not move citations across ### subsections - do not introduce new claims while renaming Method: - pick a canonical term per concept - define allowed synonyms (optional, minimal) - apply consistently across headings, prose, and tables
output/DRAFT.mdoutline/outline.yml (heading consistency)outline/taxonomy.yml (canonical labels)output/DRAFT.md (in place)output/GLOSSARY.md (short appendix/glossary table, if useful)Use the role cards above.
Steps:
1) Build a glossary candidate list from the draft (10–30 key terms):
2) Choose canonical names and a synonym policy:
outline/taxonomy.yml exists: prefer taxonomy node names as canonical labels (avoid inventing new names)outline/outline.yml exists: keep section headings aligned with the same canonical terms3) Apply replacements conservatively:
4) Optional: write a small output/GLOSSARY.md:
term | canonical | allowed synonyms | notestool API, tool interface, action schema used interchangeably without a rule.tool interface) and allow one synonym only when first introduced (e.g., tool interface (API contract)), then stick to canonical thereafter.### subsections.Fix:
Fix:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 5,150 | 4,869 | -5% | 1 | 1 | 0% | 223 | 1,056 | +374% | 0 | 0 | — |
case-03 | fail→fail | 4,548 | 3,830 | -16% | 1 | 1 | 0% | 211 | 1,118 | +430% | 0 | 0 | — |
case-04 | fail→pass | 6,363 | 9,093 | +43% | 1 | 1 | 0% | 1,001 | 2,299 | +130% | 0 | 0 | — |
case-09 | pass→pass | 3,355 | 3,934 | +17% | 1 | 1 | 0% | 530 | 1,521 | +187% | 0 | 0 | — |
case-01 | fail→fail | 4,319 | 5,211 | +21% | 1 | 1 | 0% | 233 | 1,083 | +365% | 0 | 0 | — |
case-05 | fail→pass | 17,694 | 9,241 | -48% | 1 | 1 | 0% | 2,978 | 2,298 | -23% | 0 | 0 | — |
case-06 | pass→pass | 3,642 | 5,913 | +62% | 1 | 1 | 0% | 569 | 1,811 | +218% | 0 | 0 | — |
case-07 | pass→pass | 10,052 | 4,741 | -53% | 1 | 1 | 0% | 1,466 | 1,588 | +8% | 0 | 0 | — |
case-08 | pass→pass | 12,007 | 5,900 | -51% | 1 | 1 | 0% | 1,930 | 1,807 | -6% | 0 | 0 | — |
case-10 | fail→pass | 11,960 | 4,608 | -61% | 1 | 1 | 0% | 1,835 | 1,626 | -11% | 0 | 0 | — |
case-11 | pass→pass | 13,237 | 7,659 | -42% | 1 | 1 | 0% | 1,923 | 1,961 | +2% | 0 | 0 | — |
case-12 | pass→pass | 5,037 | 4,392 | -13% | 1 | 1 | 0% | 768 | 1,508 | +96% | 0 | 0 | — |
case-13 | fail→pass | 23,492 | 5,696 | -76% | 1 | 1 | 0% | 1,633 | 1,687 | +3% | 0 | 0 | — |
case-14 | pass→pass | 13,042 | 7,305 | -44% | 1 | 1 | 0% | 1,938 | 2,003 | +3% | 0 | 0 | — |
case-15 | pass→pass | 11,234 | 3,687 | -67% | 1 | 1 | 0% | 1,567 | 1,429 | -9% | 0 | 0 | — |
case-16 | pass→pass | 13,687 | 8,283 | -39% | 1 | 1 | 0% | 2,019 | 2,077 | +3% | 0 | 0 | — |
case-17 | fail→pass | 8,991 | 3,910 | -57% | 1 | 1 | 0% | 1,316 | 1,417 | +8% | 0 | 0 | — |
case-18 | pass→pass | 7,460 | 3,604 | -52% | 1 | 1 | 0% | 1,047 | 1,381 | +32% | 0 | 0 | — |
case-19 | fail→fail | 6,303 | 1,552 | -75% | 1 | 1 | 0% | 933 | 1,112 | +19% | 0 | 0 | — |
case-20 | fail→fail | 10,665 | 7,056 | -34% | 1 | 1 | 0% | 1,511 | 1,902 | +26% | 0 | 0 | — |
case-21 | pass→fail | 4,113 | 4,057 | -1% | 1 | 1 | 0% | 614 | 1,506 | +145% | 0 | 0 | — |
case-22 | pass→pass | 6,076 | 3,042 | -50% | 1 | 1 | 0% | 896 | 1,320 | +47% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +18 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.