fix: give the common-skill buttons their own label and tagline

The seven selector buttons were rendering `kind` and `use`, which belong
to the detail panel. ponytail's button read "SIMPLIFICATION INSTINCT" and
a full paragraph of prose where today's page reads "SIMPLIFY" and
"minimum code that holds". English was wrong, not just Portuguese
missing, on all seven.

Those two lines are not in `interactiveCopy`, which is why task 05b had
nothing to migrate them from: the English lives in the
`full-guide/index.html` markup and the Portuguese in `translations.pt`.
Adds `label` and `tagline` to the `commonSkills` schema and to all seven
entries, both taken verbatim from those two sources, and points the
buttons at them. The panel keeps reading `kind` and `use`.

This closes the last 13 of the 102 `translations.pt` entries. Coverage in
`dist/full-guide/index.html` is now 102 of 102.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Marcos Paulo
2026-09-05 22:36:44 +00:00
parent 208ec9447b
commit 83c956c2b6
9 changed files with 37 additions and 11 deletions
+3 -1
View File
@@ -13,5 +13,7 @@
"en": "Drop the style for security warnings, irreversible actions, and sequences where terse wording can be misread.",
"pt": "Abandone o estilo em alertas de segurança, ações irreversíveis e sequências onde concisão pode causar erro."
},
"source": "https://github.com/JuliusBrussee/caveman/blob/3b74643f4d910f496babd4e634b1ba7168816f14/skills/caveman/SKILL.md"
"source": "https://github.com/JuliusBrussee/caveman/blob/3b74643f4d910f496babd4e634b1ba7168816f14/skills/caveman/SKILL.md",
"label": { "en": "COMMUNICATE", "pt": "COMUNICAR" },
"tagline": { "en": "signal without filler", "pt": "sinal sem excesso" }
}
+3 -1
View File
@@ -19,5 +19,7 @@
"en": "Do not jump from error message straight to a patch.",
"pt": "Não pule da mensagem de erro direto para um patch."
},
"source": "https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/diagnosing-bugs/SKILL.md"
"source": "https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/diagnosing-bugs/SKILL.md",
"label": { "en": "DIAGNOSE", "pt": "DIAGNOSTICAR" },
"tagline": { "en": "tight feedback loop", "pt": "ciclo curto de feedback" }
}
+3 -1
View File
@@ -19,5 +19,7 @@
"en": "Never simplify away security, accessibility, validation, or real edge cases.",
"pt": "Nunca simplifique segurança, acessibilidade, validação ou casos extremos reais."
},
"source": "https://github.com/ilindaniel/ponytail-lite/blob/e7b42dc2d384a702240dea4d52a7bf5530b821b6/AGENTS.md"
"source": "https://github.com/ilindaniel/ponytail-lite/blob/e7b42dc2d384a702240dea4d52a7bf5530b821b6/AGENTS.md",
"label": { "en": "SIMPLIFY", "pt": "SIMPLIFICAR" },
"tagline": { "en": "minimum code that holds", "pt": "código mínimo que funciona" }
}
+3 -1
View File
@@ -16,5 +16,7 @@
"en": "Practitioner articles add context; they do not override official behavior.",
"pt": "Artigos de praticantes dão contexto; não substituem comportamento oficial."
},
"source": "https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/research/SKILL.md"
"source": "https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/research/SKILL.md",
"label": { "en": "INVESTIGATE", "pt": "INVESTIGAR" },
"tagline": { "en": "primary sources first", "pt": "fontes primárias primeiro" }
}
+3 -1
View File
@@ -19,5 +19,7 @@
"en": "Pin the comparison point and source specification before reviewing.",
"pt": "Fixe o ponto de comparação e a especificação antes de revisar."
},
"source": "https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/code-review/SKILL.md"
"source": "https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/code-review/SKILL.md",
"label": { "en": "REVIEW", "pt": "REVISAR" },
"tagline": { "en": "standards × spec", "pt": "padrões × especificação" }
}
+3 -1
View File
@@ -19,5 +19,7 @@
"en": "Read raw output when exact wording or full diffs matter.",
"pt": "Leia saída bruta quando texto exato ou diffs completos importarem."
},
"source": "https://github.com/aetox-skills/token-saver/blob/8f21188bb043fad411f47e2e57f0365a83c13da7/SKILL.md"
"source": "https://github.com/aetox-skills/token-saver/blob/8f21188bb043fad411f47e2e57f0365a83c13da7/SKILL.md",
"label": { "en": "ECONOMIZE", "pt": "ECONOMIZAR" },
"tagline": { "en": "compress noisy output", "pt": "comprima saídas ruidosas" }
}
+3 -1
View File
@@ -19,5 +19,7 @@
"en": "Too heavy for trivial edits or factual answers.",
"pt": "Pesado demais para edições triviais ou respostas factuais."
},
"source": "https://github.com/Leonxlnx/unlazy/blob/473d4b80421c36d733042434cd4b938f81a19ef1/SKILL.md"
"source": "https://github.com/Leonxlnx/unlazy/blob/473d4b80421c36d733042434cd4b938f81a19ef1/SKILL.md",
"label": { "en": "COMPLETE", "pt": "CONCLUIR" },
"tagline": { "en": "gates and evidence", "pt": "gates e evidências" }
}
+10
View File
@@ -235,12 +235,22 @@ const skillWorkflow = defineCollection({
// render time; here it is embedded to match the GuideSelectorData
// contract. If the URL changes, both this entry and the matching
// `skillSources/<id>.json` must be updated.
//
// `label` and `tagline` are the selector *button*'s two lines and are
// distinct from `kind` and `use`, which belong to the detail panel:
// ponytail's button reads "SIMPLIFY" / "minimum code that holds" while its
// panel reads "SIMPLIFICATION INSTINCT" and a paragraph of prose. They are
// not in `interactiveCopy` — the English lives in the `full-guide/index.html`
// markup and the Portuguese in `translations.pt` — so task 05b had nothing
// to migrate them from and the page rendered `kind`/`use` on the buttons.
const commonSkills = defineCollection({
type: 'data',
schema: z.object({
id: z.string(),
number: z.string(),
kind: localized,
label: localized,
tagline: localized,
title: z.string(),
rule: localized,
use: localized,
+6 -4
View File
@@ -874,17 +874,19 @@ const base = import.meta.env.BASE_URL;
aria-selected={skill.id === 'ponytail'}
>
<>
{/* The button's two lines are `label` / `tagline`, not the
panel's `kind` / `use`. See src/content/config.ts. */}
<span>
<span data-language-content="en">{skill.kind.en}</span>
<span data-language-content="en">{skill.label.en}</span>
<span data-language-content="pt" hidden>
{skill.kind.pt}
{skill.label.pt}
</span>
</span>
<strong>{skill.title}</strong>
<small>
<span data-language-content="en">{skill.use.en}</span>
<span data-language-content="en">{skill.tagline.en}</span>
<span data-language-content="pt" hidden>
{skill.use.pt}
{skill.tagline.pt}
</span>
</small>
</>