name: copy-check description: Verifica el texto de la interfaz de usuario en varios idiomas comparando la paridad de claves entre catálogos de mensajes de next-intl y objetos COPY sv/en en el código, detectando discrepancias en placeholders y arrays, así como palabras del otro idioma que se filtran (el error 'och' en inglés), y luego revisa manualmente las afirmaciones contra términos y precios y las frases prohibidas del proyecto. Úsalo después de editar el texto o las traducciones, antes de enviar una página con texto nuevo, o cuando te pidan corregir o verificar traducciones. argument-hint: [dir] [--locales sv,en] allowed-tools: Bash(node *) Read Grep Glob Edit
¿Qué hace copy-check?
1. Pasada mecánica
Args: $ARGUMENTS
node ${CLAUDE_SKILL_DIR}/scripts/i18n-parity.mjs <dir, por defecto: raíz de la app del proyecto actual> --locales sv,en
El script encuentra catálogos **/messages|locales|i18n/<locale>.json y objetos literales sv: {…} / en: {…} hermanos en TS/JS. Reporta:
- ERROR: claves faltantes, discrepancias de longitud de arrays, placeholders incorrectos (
{name},${x},{{x}}). Corrige todos estos. - warn: palabras funcionales suecas (och, att, för, med, inte, är, …) en cadenas en inglés y viceversa, y cadenas idénticas largas (¿sin traducir?). Evalúa cada una; nombres de productos y términos suecos entrecomillados están bien.
- unparsed: bloques que el mini-analizador no pudo leer. Revisa esos archivos a simple vista.
Las cadenas construidas fuera de estos patrones (literales JSX, t() con valores predeterminados en línea) no están cubiertas. Busca en los archivos modificados texto codificado en el idioma incorrecto.
2. Pasada de juicio (primero archivos modificados, luego las páginas donde aparecen)
- Frases prohibidas o desactualizadas: lee el CLAUDE.md del repositorio y las entradas de memoria del proyecto. Los proyectos suelen mantener una lista de lemas retirados, líneas de apertura obligatorias o cosas que nunca deben declararse públicamente.
- Afirmaciones vs realidad: precios, duración de pruebas, límites y "gratis" contra la configuración real de precios, productos de Stripe y página de términos. Las afirmaciones de cobertura no deben citar un límite de visualización como cobertura. "Más rápido", "cada" y "todos" necesitan una fuente.
- Redacción legal/consentimiento: el consentimiento de marketing nunca se agrupa en los términos, y los términos legales suecos son correctos (ångerrätt, personuppgifter).
- Calidad del idioma (ejemplo sueco): orden natural de las palabras, sin särskrivningar ("hyres lägenhet"), en/ett correcto, coma decimal y
krdespués del número (1 299 kr), fechas como19 okt/2026-10-19. - Calidad del inglés: mayúscula inicial de oración, sin hábitos de puntuación suecos, y moneda formateada según el idioma.
- Consistencia: el mismo término para la misma cosa en todas las páginas (elige el existente).
Criterios de salida
- i18n-parity termina con código 0, o cada advertencia restante está evaluada.
- Sin frases prohibidas, y cada afirmación factual coincide con la configuración, los términos o una fuente.
- Correcciones hechas solo al texto, sin rediseños introducidos.
- Un breve resumen para el usuario.