Skip to content

Translate the AGENTS.md files and the remaining skills to English #110

Description

@Luqueee

Summary

AGENTS.md has said since the language section landed that everything this repository delivers is written in English, and that the rule is a ratchet rather than a migration: documents that predate it stay as they are until somebody translates them. This is that translation, for the two categories the rule names by hand — the AGENTS.md files and the skills.

The same section already prescribes the shape of the work:

un fichero no se vuelve bilingüe. Si un cambio añade una frase a un documento que está en castellano, esa frase va en castellano. Traducir el fichero es un cambio propio, entero, con su propio commit -- porque media página en cada idioma se lee peor que cualquiera de los dos, y porque un diff que traduce y edita a la vez no se puede revisar.

So: one commit per file, translation only, no edits riding along.

Inventory

Measured, not estimated — the Spanish count is a marker-word frequency over each file.

Instruction files — all nine are Spanish, 3000 lines:

file lines
landing/AGENTS.md 709
AGENTS.md 670
internal/AGENTS.md 455
cmd/kivgraph/AGENTS.md 383
internal/mcp/AGENTS.md 211
internal/rustloader/AGENTS.md 197
benchmarks/AGENTS.md 148
web/AGENTS.md 142
ts-worker/AGENTS.md 85

Skills — two of four:

file lines state
.claude/skills/running-tests/SKILL.md 218 Spanish
.claude/skills/publishing-releases/SKILL.md 213 Spanish
.claude/skills/adding-a-language/SKILL.md 437 already English
internal/integrations/assets/kivgraph/SKILL.md 277 already English

Total to translate: 3431 lines across 11 files.

The canonical shipped skill is already English, which is what you would expect — it is delivered to users, so the rule reached it first.

The part that is not translation

Four cross-references point at Spanish section titles from files that are already English, so translating the headings breaks them. They have to move in the same change as the file whose headings they name:

  • .claude/skills/adding-a-language/SKILL.md:108 and :306Superficies que rompen compatibilidad
  • .claude/skills/adding-a-language/SKILL.md:311Nunca modificar
  • docs/adr/0082-an-analyzer-never-builds-in-the-repository.md:9Nunca modificar

Two more live in files that are themselves in scope, so they resolve on their own:

  • .claude/skills/running-tests/SKILL.md:203El idioma de lo que se escribe
  • .claude/skills/adding-a-language/SKILL.md:403Smoke test del binario, a heading inside running-tests

A grep for *<Spanish heading>* before closing is the cheap way to catch any I missed.

Constraints

  • Every CLAUDE.md is a symlink to its AGENTS.md and must stay one. scripts/check-docs.sh verifies this and has to pass on each commit.
  • Translate the meaning, not the words. These files are the repository's contracts and several passages carry measured numbers and named defects (LUQUE-2002, LUQUE-2006, ADR references, the token tables). Numbers, identifiers, paths, command names and backticked terms are not translated.
  • Terminology must be decided once and held. The recurring ones are puerta (gate), pasada (indexing pass), hechos (facts), aristas (edges), generación (generation), suelo/techo (floor/ceiling), trinquete/ratchet, fallar cerrado (fail closed), sin resolver (unresolved). A glossary agreed in the first PR and reused is what keeps eleven files reading as one document.
  • The language section translates itself. Once AGENTS.md is English, the ratchet it describes is complete for these files, and the paragraph should say so rather than describing a migration that has happened.
  • The 84-column rule in scripts/check-docs.sh applies to docs/, which none of these files are under. Matching each file's existing wrap width is still the right thing.

Suggested staging

A single 3431-line diff is not reviewable, and these are the files that decide how everything else gets built. Four PRs, each independently mergeable, one commit per file:

  1. Root + the two Spanish skills — 1101 lines. The text that is read on every task, so it fixes the glossary for the rest.
  2. internal/ + internal/mcp/ + internal/rustloader/ — 863 lines.
  3. cmd/kivgraph/ + ts-worker/ + web/ + benchmarks/ — 758 lines.
  4. landing/ — 709 lines, the largest single file.

Group 1 should land and be read before the rest start, because every later file inherits its vocabulary.

Out of scope

The 86 ADRs under docs/adr/, which are mixed — 0082 is English, 0057 is Spanish. They are a larger body with the same ratchet applying, and worth their own issue rather than being swept in here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions