622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);
623 const locale = m ? m[1] : 'en';623 const locale = m ? m[1] : 'en';
624 return href => {624 return href => {
625 if (!href || href[0] !== '/' || href[1] === '/') return href;625 if (!href) return undefined;
626 if (href[0] === '#' || href.startsWith('https://')) return href;
627 if (!(/^\/[A-Za-z0-9]/).test(href)) return undefined;
626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);628 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);
627 };629 };
628 }, []);630 }, []);
671 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);673 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);
672 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);674 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);
673 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');675 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');
674 const widthFor = s => (s || '').length + 3 + 'ch';676 const WIDE_RE = /[\u1100-\u115F\u2E80-\uA4CF\uAC00-\uD7A3\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/g;
677 const widthFor = s => {
678 const t = typeof s === 'string' ? s : '';
679 return t.length + (t.match(WIDE_RE) || []).length + 3 + 'ch';
680 };
675 const ql = q.trim().toLowerCase();681 const ql = q.trim().toLowerCase();
676 const toggleTag = k => {682 const toggleTag = k => {
677 setStart(false);683 setStart(false);
1097export const text = {1103export const text = {
1098 "get-oriented-in-a": {1104 "get-oriented-in-a": {
1099 title: "Orientarse en un repositorio nuevo",1105 title: "Orientarse en un repositorio nuevo",
1100 teaches: "Describa lo que desea saber, no qué archivos leer. Claude explora el proyecto por su cuenta y devuelve un resumen de cómo encaja.",1106 teaches: "Describe lo que quieres saber, no qué archivos leer. Claude explora el proyecto por su cuenta y devuelve un resumen de cómo encaja todo.",
1101 next: "Ejecute `/init` para configurar `CLAUDE.md` para que Claude recuerde esto en cada sesión"1107 next: "Ejecuta `/init` para configurar `CLAUDE.md` y que Claude recuerde esto en cada sesión",
1108 prompt: "dame una visión general de esta base de código: arquitectura, directorios clave y cómo se conectan las piezas"
1102 },1109 },
1103 "explain-unfamiliar-code": {1110 "explain-unfamiliar-code": {
1104 title: "Explicar código desconocido",1111 title: "Explicar código desconocido",
1105 teaches: "Nombre el archivo y diga en qué formato desea la respuesta. Cambie la página HTML por un diagrama, puntos de viñeta, o lo que se ajuste a cómo aprende.",1112 teaches: "Nombra el archivo y di en qué formato quieres la respuesta. Cambia la página HTML por un diagrama, viñetas o lo que mejor se adapte a tu forma de aprender.",
1106 next: "Establezca un estilo de salida para que Claude siempre explique en su formato preferido"1113 next: "Establece un estilo de salida para que Claude siempre explique en tu formato preferido",
1114 prompt: "explica qué hace {path} y cómo fluyen los datos a través de él. escríbelo como {format}",
1115 slots: {
1116 path: "src/scheduler/queue.ts",
1117 format: "una página HTML con un diagrama y luego ábrela en mi navegador"
1118 }
1107 },1119 },
1108 "find-where-something-happens": {1120 "find-where-something-happens": {
1109 title: "Encontrar dónde sucede algo",1121 title: "Encontrar dónde sucede algo",
1110 teaches: "Busque por comportamiento en lugar de por nombre de archivo. La búsqueda funciona incluso cuando no sabe cómo se llama el archivo o en qué directorio vive."1122 teaches: "Busca por comportamiento en lugar de por nombre de archivo. La búsqueda funciona incluso cuando no sabes cómo se llama el archivo ni en qué directorio está.",
1123 prompt: "¿dónde {behavior}?",
1124 slots: {
1125 behavior: "validamos los tipos de archivos subidos"
1126 }
1111 },1127 },
1112 "see-what-depends-on": {1128 "see-what-depends-on": {
1113 title: "Verificar qué se rompe antes de eliminar",1129 title: "Verificar qué se rompe antes de eliminar",
1114 teaches: "Pregunte antes de eliminar cualquier cosa. La lista de llamadores y efectos posteriores le dice si está mirando una limpieza de una línea o un cambio que necesita coordinar."1130 teaches: "Pregunta antes de eliminar cualquier cosa. La lista de llamadores y efectos posteriores te dice si se trata de una limpieza de una línea o de un cambio que necesitas coordinar.",
1131 prompt: "¿qué se rompería si eliminara {target}?",
1132 slots: {
1133 target: "el helper retryWithBackoff"
1134 }
1115 },1135 },
1116 "trace-how-code-evolved": {1136 "trace-how-code-evolved": {
1117 title: "Rastrear cómo evolucionó el código",1137 title: "Rastrear cómo evolucionó el código",
1118 teaches: "Señale el historial de commits cuando la pregunta es por qué, no qué. Claude lee el registro y blame para cualquier control de versiones que use y explica las decisiones detrás de la implementación actual."1138 teaches: "Apunta al historial de commits cuando la pregunta es por qué, no qué. Claude lee el registro y el blame del control de versiones que uses y explica las decisiones detrás de la implementación actual.",
1139 prompt: "revisa el historial de commits de {path} y resume cómo evolucionó y por qué",
1140 slots: {
1141 path: "internal/auth/session.go"
1142 }
1119 },1143 },
1120 "scope-a-change-before": {1144 "scope-a-change-before": {
1121 title: "Definir el alcance de un cambio antes de comenzar",1145 title: "Definir el alcance de un cambio antes de comenzar",
1122 teaches: "Dimensione el trabajo antes de comprometerse con una hoja de ruta. La lista de archivos le dice si está mirando un componente o un cambio transversal."1146 teaches: "Dimensiona el trabajo antes de comprometerlo en una hoja de ruta. La lista de archivos te dice si se trata de un solo componente o de un cambio transversal.",
1147 prompt: "¿qué archivos tendría que modificar para {change}?",
1148 slots: {
1149 change: "agregar un interruptor de modo oscuro a la configuración"
1150 }
1123 },1151 },
1124 "ask-the-codebase-a": {1152 "ask-the-codebase-a": {
1125 title: "Hacer una pregunta de producto a la base de código",1153 title: "Hacer una pregunta de producto a la base de código",
1126 teaches: "Indique su rol para que la respuesta esté al nivel correcto. Claude explica qué hace realmente el producto desde el código fuente, sin que usted necesite leerlo.",1154 teaches: "Indica tu rol para que la respuesta tenga el nivel adecuado. Claude explica qué hace realmente el producto a partir del código fuente, sin que necesites leerlo.",
1127 next: "Establezca un estilo de salida para que Claude siempre presente respuestas a este nivel"1155 next: "Establece un estilo de salida para que Claude siempre responda a este nivel",
1156 prompt: "soy {role}. explícame paso a paso qué pasa cuando un usuario {action}, desde la UI hasta el resultado",
1157 slots: {
1158 role: "PM",
1159 action: "hace clic en Exportar a PDF"
1160 }
1128 },1161 },
1129 "plan-a-multi-file": {1162 "plan-a-multi-file": {
1130 title: "Planificar un cambio de múltiples archivos antes de tocar código",1163 title: "Planificar un cambio de múltiples archivos antes de tocar código",
1131 teaches: "Agregar \"no editar aún\" separa la exploración de los cambios, para que vea el enfoque antes de que se mueva código. Para hacer que el modo plan sea el predeterminado en cada prompt, presione Shift+Tab para [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode)."1164 teaches: "Agregar \"no edites nada todavía\" separa la exploración de los cambios, así ves el enfoque antes de que se mueva cualquier código. Para que planificar primero sea lo predeterminado en cada prompt, presiona Shift+Tab para entrar en [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode).",
1165 prompt: "planifica cómo refactorizar el {target} para {goal}. enumera los archivos que cambiarías, pero no edites nada todavía",
1166 slots: {
1167 target: "módulo de pagos",
1168 goal: "admitir múltiples monedas"
1169 }
1132 },1170 },
1133 "draft-a-spec-by": {1171 "draft-a-spec-by": {
1134 title: "Redactar una especificación por entrevista",1172 title: "Redactar una especificación mediante una entrevista",
1135 teaches: "Pida ser entrevistado en lugar de escribir la especificación usted mismo. Claude le hace preguntas estructuradas hasta que los requisitos estén completos, luego escribe el resultado en un archivo.",1173 teaches: "Pide que te entrevisten en lugar de escribir la especificación tú mismo. Claude te hace preguntas estructuradas hasta completar los requisitos y luego escribe el resultado en un archivo.",
1136 next: "Guarde sus preguntas de entrevista como una habilidad `/spec` para que cada especificación comience de la misma manera"1174 next: "Guarda tus preguntas de entrevista como un skill `/spec` para que cada especificación empiece igual",
1175 prompt: "quiero crear {feature}. entrevístame sobre la implementación, la UX, los casos límite y las compensaciones hasta que hayamos cubierto todo, luego escribe la especificación en SPEC.md",
1176 slots: {
1177 feature: "rate limits por espacio de trabajo"
1178 }
1137 },1179 },
1138 "turn-a-meeting-into": {1180 "turn-a-meeting-into": {
1139 title: "Convertir una reunión en tickets",1181 title: "Convertir una reunión en tickets",
1140 teaches: "Omita el paso de transcripción. Claude extrae elementos de acción de la entrada no estructurada y los escribe directamente en su rastreador a través de [MCP](/docs/es/mcp), para que revise los tickets, no la transcripción.",1182 teaches: "Sáltate el paso de transcripción. Claude extrae las tareas pendientes de la entrada no estructurada y las escribe directamente en tu gestor mediante [MCP](/docs/es/mcp), así revisas los tickets, no la transcripción.",
1141 next: "Guarde esto como una habilidad `/tickets`"1183 next: "Guarda esto como un skill `/tickets`",
1184 prompt: "lee {input} y redacta las tareas pendientes, luego crea un ticket de {tracker} para cada una con criterios de aceptación",
1185 slots: {
1186 input: "@meeting-notes.md",
1187 tracker: "Linear"
1188 }
1142 },1189 },
1143 "map-edge-cases-before": {1190 "map-edge-cases-before": {
1144 title: "Mapear casos extremos antes de construir",1191 title: "Mapear casos límite antes de desarrollar",
1145 teaches: "Pregunte qué falta, no qué hay. Claude enumera los estados de error, estados vacíos y casos extremos que un diseño de ruta feliz tiende a omitir."1192 teaches: "Pregunta por lo que falta, no por lo que hay. Claude enumera los estados de error, los estados vacíos y los casos límite que un diseño centrado en el camino feliz suele omitir.",
1193 prompt: "enumera los estados de error, los estados vacíos y los casos límite de {feature} que el diseño necesita cubrir",
1194 slots: {
1195 feature: "el flujo de carga de archivos"
1196 }
1146 },1197 },
1147 "turn-a-mockup-into": {1198 "turn-a-mockup-into": {
1148 title: "Convertir una maqueta en un prototipo funcional",1199 title: "Convertir una maqueta en un prototipo funcional",
1149 teaches: "Un prototipo interactivo responde preguntas que una maqueta estática no puede. Entregue el código funcional a ingeniería en lugar de explicar las interacciones en un documento."1200 teaches: "Un prototipo en el que se puede hacer clic responde preguntas que una maqueta estática no puede. Entrega el código funcional a ingeniería en lugar de explicar las interacciones en un documento.",
1201 prompt: "aquí tienes una maqueta. crea un prototipo funcional en el que pueda hacer clic, que respete el diseño y los estados mostrados"
1150 },1202 },
1151 "implement-from-a-screenshot": {1203 "implement-from-a-screenshot": {
1152 title: "Implementar desde una captura de pantalla y auto-verificar",1204 title: "Implementar desde una captura de pantalla y autoverificar",
1153 teaches: "Esto le da a Claude un bucle de verificación: renderiza, compara contra la imagen de origen, e itera sin que usted señale cada brecha.",1205 teaches: "Esto le da a Claude un bucle de verificación: renderiza, compara con la imagen de origen e itera sin que tengas que señalar cada diferencia.",
1154 next: "Use `/goal` para mantener a Claude iterando hacia capturas de pantalla coincidentes"1206 next: "Usa `/goal` para que Claude siga iterando hasta que las capturas de pantalla coincidan",
1207 prompt: "implementa este diseño, luego toma una captura de pantalla del resultado, compárala con el original y corrige cualquier diferencia"
1155 },1208 },
1156 "follow-an-existing-pattern": {1209 "follow-an-existing-pattern": {
1157 title: "Seguir un patrón existente",1210 title: "Seguir un patrón existente",
1158 teaches: "Señale código que ya le guste. Sin una referencia, Claude usa las mejores prácticas generales de forma predeterminada. Con una, coincide con las convenciones que su base de código realmente usa.",1211 teaches: "Señala código que ya te guste. Sin una referencia, Claude recurre a buenas prácticas generales. Con una, se ajusta a las convenciones que tu base de código realmente usa.",
1159 next: "Pida a Claude que escriba el patrón que siguió en `CLAUDE.md` para que las sesiones futuras lo coincidan sin la referencia"1212 next: "Pide a Claude que escriba en `CLAUDE.md` el patrón que siguió para que las sesiones futuras lo respeten sin la referencia",
1213 prompt: "mira cómo está implementado {example} para entender el patrón y luego crea {new} de la misma manera",
1214 slots: {
1215 example: "el handler de webhooks de GitHub",
1216 new: "un handler de webhooks de Stripe"
1217 }
1160 },1218 },
1161 "add-a-small-well": {1219 "add-a-small-well": {
1162 title: "Agregar una característica pequeña y bien definida",1220 title: "Agregar una funcionalidad pequeña y bien definida",
1163 teaches: "Indique las entradas y salidas, no cómo construirla. Claude encuentra dónde vive código similar y agrega el suyo junto a él."1221 teaches: "Indica las entradas y salidas, no cómo implementarla. Claude encuentra dónde está el código similar y agrega el tuyo junto a él.",
1222 prompt: "agrega un endpoint {endpoint} que devuelva {payload}",
1223 slots: {
1224 endpoint: "/health",
1225 payload: "la versión de la app y el tiempo de actividad"
1226 }
1164 },1227 },
1165 "build-a-small-internal": {1228 "build-a-small-internal": {
1166 title: "Construir una herramienta interna pequeña desde cero",1229 title: "Crear una herramienta interna pequeña desde cero",
1167 teaches: "No necesita un proyecto, un marco o un paso de compilación. Describa la herramienta y pida a Claude que la abra para que la vea funcionando inmediatamente."1230 teaches: "No necesitas un proyecto, un framework ni un paso de compilación. Describe la herramienta y pide a Claude que la abra para que la veas funcionando de inmediato.",
1231 prompt: "crea un {tool} usando HTML, CSS y JavaScript puro, luego ábrelo en mi navegador",
1232 slots: {
1233 tool: "tablero Kanban de arrastrar y soltar con tres columnas"
1234 }
1168 },1235 },
1169 "work-an-issue-end": {1236 "work-an-issue-end": {
1170 title: "Trabajar un problema de principio a fin",1237 title: "Resolver una incidencia de principio a fin",
1171 teaches: "Dé el número del problema, no un resumen. Claude lee el ticket completo en sí, por lo que los requisitos que olvidaría mencionar se transmiten, y valida el cambio antes de informar."1238 teaches: "Da el número de la incidencia, no un resumen. Claude lee el ticket completo por sí mismo, así que se incluyen los requisitos que olvidarías mencionar, y valida el cambio antes de informarte.",
1239 prompt: "lee la incidencia #{issue}, implementa la corrección y ejecuta las pruebas",
1240 slots: {
1241 issue: "312"
1242 }
1172 },1243 },
1173 "find-and-update-copy": {1244 "find-and-update-copy": {
1174 title: "Encontrar y actualizar texto en toda la base de código",1245 title: "Encontrar y actualizar textos en toda la base de código",
1175 teaches: "Pida variantes y diga qué omitir. Claude encuentra frases que una búsqueda literal perdería y deja intactos los accesorios de prueba e historial, para que revise solo el texto que los usuarios realmente ven."1246 teaches: "Pide variantes y di qué omitir. Claude encuentra formulaciones que una búsqueda literal pasaría por alto y deja intactos los fixtures de prueba y el historial, así revisas solo el texto que los usuarios realmente ven.",
1247 prompt: "encuentra cada lugar donde decimos \"{copy}\" o una variante cercana, muéstrame cada uno en contexto y luego actualízalos todos a \"{new}\". no toques las pruebas ni el changelog",
1248 slots: {
1249 copy: "Regístrate gratis",
1250 new: "Comienza la prueba gratuita"
1251 }
1176 },1252 },
1177 "draft-from-past-examples": {1253 "draft-from-past-examples": {
1178 title: "Redactar un documento a partir de ejemplos anteriores",1254 title: "Redactar un documento a partir de ejemplos anteriores",
1179 teaches: "Señale una carpeta de trabajo terminado en lugar de describir su estilo. Claude aprende la estructura y voz de lo que ya ha enviado, para que el primer borrador se lea como uno de los suyos.",1255 teaches: "Señala una carpeta de trabajos terminados en lugar de describir tu estilo. Claude aprende la estructura y la voz de lo que ya publicaste, así el primer borrador parece escrito por ti.",
1180 next: "Guarde la voz como una habilidad para que cada borrador comience allí"1256 next: "Guarda la voz como un skill para que cada borrador parta de ahí",
1257 prompt: "lee las {examples} en {folder} para aprender la estructura y la voz, luego redacta una nueva para {topic}",
1258 slots: {
1259 examples: "evaluaciones de impacto en la privacidad",
1260 folder: "legal/pia/",
1261 topic: "la nueva integración de analítica"
1262 }
1181 },1263 },
1182 "write-tests-run-them": {1264 "write-tests-run-them": {
1183 title: "Escribir pruebas, ejecutarlas, corregir fallos",1265 title: "Escribir pruebas, ejecutarlas y corregir fallos",
1184 teaches: "Pida escribir, ejecutar y corregir juntos para que Claude itere sin detenerse para instrucciones.",1266 teaches: "Pide escribir, ejecutar y corregir a la vez para que Claude itere sin detenerse a esperar instrucciones.",
1185 next: "Ejecute `/init` para que Claude aprenda automáticamente su comando de prueba"1267 next: "Ejecuta `/init` para que Claude aprenda automáticamente tu comando de pruebas",
1268 prompt: "escribe pruebas para {path}, ejecútalas y corrige cualquier fallo",
1269 slots: {
1270 path: "app/parsers/feed.py"
1271 }
1186 },1272 },
1187 "drive-implementation-from-tests": {1273 "drive-implementation-from-tests": {
1188 title: "Impulsar la implementación desde pruebas",1274 title: "Guiar la implementación con pruebas",
1189 teaches: "Desarrollo dirigido por pruebas: las pruebas definen cuándo se completa el trabajo, y Claude itera en la implementación hasta que pasen."1275 teaches: "Desarrollo guiado por pruebas: las pruebas definen cuándo está terminado el trabajo, y Claude itera sobre la implementación hasta que pasen.",
1276 prompt: "escribe primero las pruebas para {feature} y luego impleméntalo hasta que pasen",
1277 slots: {
1278 feature: "el flujo de restablecimiento de contraseña"
1279 }
1190 },1280 },
1191 "fill-gaps-from-a": {1281 "fill-gaps-from-a": {
1192 title: "Llenar brechas de un informe de cobertura",1282 title: "Cubrir huecos a partir de un informe de cobertura",
1193 teaches: "Señale el informe de cobertura en lugar de adivinar qué no se prueba. Claude lee los números reales y escribe pruebas para los archivos que más los necesitan.",1283 teaches: "Señala el informe de cobertura en lugar de adivinar qué no está probado. Claude lee los números reales y escribe pruebas para los archivos que más las necesitan.",
1194 next: "Establezca esto como un `/goal` para que Claude siga escribiendo pruebas hacia el objetivo de cobertura"1284 next: "Establece esto como un `/goal` para que Claude siga escribiendo pruebas hasta alcanzar el objetivo de cobertura",
1285 prompt: "lee {report} y agrega pruebas para los archivos con menor cobertura hasta que cada uno supere el {target}%",
1286 slots: {
1287 report: "coverage/coverage-summary.json",
1288 target: "80"
1289 }
1195 },1290 },
1196 "port-code-between-languages": {1291 "port-code-between-languages": {
1197 title: "Portar código a otro idioma",1292 title: "Portar código a otro lenguaje",
1198 teaches: "Diga qué preservar, no solo el idioma de destino. Nombrar la API o comportamiento que debe permanecer igual le da a Claude un contrato para verificar el puerto."1293 teaches: "Di qué conservar, no solo el lenguaje de destino. Nombrar la API o el comportamiento que debe mantenerse igual le da a Claude un contrato con el que verificar la migración.",
1294 prompt: "porta {source} a {target}, conservando igual {keep}",
1295 slots: {
1296 source: "este módulo de Python",
1297 target: "Rust",
1298 keep: "la API pública y el comportamiento de las pruebas"
1299 }
1199 },1300 },
1200 "generate-docs-for-code": {1301 "generate-docs-for-code": {
1201 title: "Generar documentación para código sin documentar",1302 title: "Generar documentación para código sin documentar",
1202 teaches: "Nombre el alcance y el formato. Claude encuentra lo que falta y coincide con el estilo de comentario ya en el archivo, para que la nueva documentación se lea como el resto."1303 teaches: "Nombra el alcance y el formato. Claude encuentra lo que falta y respeta el estilo de comentarios que ya usa el archivo, así la nueva documentación se lee como el resto.",
1304 prompt: "encuentra {scope} sin comentarios {format} y agrégalos, respetando el estilo que ya se usa en el archivo",
1305 slots: {
1306 scope: "las funciones públicas de src/auth/",
1307 format: "JSDoc"
1308 }
1203 },1309 },
1204 "migrate-a-pattern-across": {1310 "migrate-a-pattern-across": {
1205 title: "Migrar un patrón en toda la base de código",1311 title: "Migrar un patrón en toda la base de código",
1206 teaches: "Describa el patrón antiguo y el nuevo. Pedir a Claude que identifique primero cada lugar significa que los sitios de llamada se enumeran en la respuesta, para que pueda verificar que ninguno se perdió. Para una migración en muchos archivos, ejecute [/batch](/docs/es/commands). Claude divide el trabajo en unidades para que usted apruebe, luego los subagentes en segundo plano hacen los cambios."1312 teaches: "Describe el patrón antiguo y el nuevo. Pedirle a Claude que identifique primero cada lugar hace que los puntos de llamada aparezcan en la respuesta, así puedes comprobar que no se omitió ninguno. Para una migración que abarca muchos archivos, ejecuta [/batch](/docs/es/commands). Claude divide el trabajo en unidades para que las apruebes y luego subagentes en segundo plano hacen los cambios.",
1313 prompt: "migra todo de {from} a {to}: identifica cada lugar que necesita cambiar y luego haz los cambios",
1314 slots: {
1315 from: "la API de logging antigua",
1316 to: "el logger estructurado"
1317 }
1207 },1318 },
1208 "optimize-against-a-measurable": {1319 "optimize-against-a-measurable": {
1209 title: "Optimizar contra un objetivo medible",1320 title: "Optimizar hacia un objetivo medible",
1210 teaches: "Indicar la métrica y el objetivo le da a Claude una definición clara de cuándo está hecho.",1321 teaches: "Indicar la métrica y el objetivo le da a Claude una definición clara de cuándo está terminado.",
1211 next: "Establezca esto como un `/goal` para que Claude siga midiendo e iterando hacia el número"1322 next: "Establece esto como un `/goal` para que Claude siga midiendo e iterando hasta alcanzar el número",
1323 prompt: "optimiza {target} para bajar {metric} de {current} a menos de {goal}",
1324 slots: {
1325 target: "la consulta de búsqueda",
1326 metric: "la latencia p95",
1327 current: "2s",
1328 goal: "500ms"
1329 }
1212 },1330 },
1213 "fix-a-precise-visual": {1331 "fix-a-precise-visual": {
1214 title: "Corregir un error visual preciso",1332 title: "Corregir un error visual preciso",
1215 teaches: "La retroalimentación visual precisa obtiene una corrección precisa. Indique el elemento exacto, la medida y la ventana gráfica.",1333 teaches: "Un feedback visual preciso consigue una corrección precisa. Indica el elemento exacto, la medida y la ventana gráfica.",
1216 next: "Agregue una herramienta de vista previa para que Claude capture una captura de pantalla y verifique la corrección en sí"1334 next: "Agrega una herramienta de vista previa para que Claude tome capturas de pantalla y verifique la corrección por sí mismo",
1335 prompt: "el {element} sobresale {amount} del {container} en {viewport}. corrígelo.",
1336 slots: {
1337 element: "botón de inicio de sesión",
1338 amount: "20px",
1339 container: "borde de la tarjeta",
1340 viewport: "móvil"
1341 }
1217 },1342 },
1218 "review-your-changes-before": {1343 "review-your-changes-before": {
1219 title: "Revisar sus cambios antes de confirmar",1344 title: "Revisar tus cambios antes de hacer commit",
1220 teaches: "Detecte problemas mientras aún son baratos de corregir. Claude lee los archivos modificados en su totalidad, no solo las líneas de diferencia, para que detecte problemas que una auto-revisión rápida pierde.",1345 teaches: "Detecta problemas mientras todavía son baratos de corregir. Claude lee los archivos modificados completos, no solo las líneas del diff, así encuentra problemas que una autorrevisión rápida pasa por alto.",
1221 next: "Ejecute `/code-review` para la misma verificación en un comando"1346 next: "Ejecuta `/code-review` para hacer la misma verificación con un solo comando",
1347 prompt: "revisa mis cambios sin commit y señala cualquier cosa que parezca riesgosa antes de hacer commit"
1222 },1348 },
1223 "review-a-pull-request": {1349 "review-a-pull-request": {
1224 title: "Revisar una solicitud de extracción",1350 title: "Revisar un pull request",
1225 teaches: "Claude revisa con toda la base de código en contexto, no solo la diferencia. Lee el código modificado y lo que llama, para que detecte problemas que una revisión solo de diferencia perdería.",1351 teaches: "Claude revisa con toda la base de código en contexto, no solo el diff. Lee el código modificado y lo que este llama, así detecta problemas que una revisión solo del diff pasaría por alto.",
1226 next: "Ejecute `/code-review <pr#>` en un comando, o active Code Review para cada PR"1352 next: "Ejecuta `/code-review <pr#>` con un solo comando, o activa Code Review para cada PR",
1353 prompt: "revisa el PR #{pr} y resume qué cambió, luego enumera cualquier inquietud",
1354 slots: {
1355 pr: "247"
1356 }
1227 },1357 },
1228 "review-infrastructure-changes-before": {1358 "review-infrastructure-changes-before": {
1229 title: "Revisar cambios de infraestructura antes de aplicar",1359 title: "Revisar cambios de infraestructura antes de aplicarlos",
1230 teaches: "La salida del plan es densa y difícil de escanear. Pegarla le obtiene un resumen en lenguaje simple de lo que realmente va a cambiar antes de aplicarlo."1360 teaches: "La salida del plan es densa y difícil de leer de un vistazo. Al pegarla obtienes un resumen en lenguaje sencillo de lo que realmente va a cambiar antes de aplicarlo.",
1361 prompt: "esta es la salida de mi plan de Terraform. ¿qué va a hacer y hay algo aquí que vaya a causar problemas?"
1231 },1362 },
1232 "run-a-security-review": {1363 "run-a-security-review": {
1233 title: "Ejecutar una revisión de seguridad con un subagente",1364 title: "Ejecutar una revisión de seguridad con un subagente",
1234 teaches: "Un [subagente](/docs/es/sub-agents) ejecuta la auditoría en su propia ventana de contexto e informa un resumen, para que una revisión de seguridad larga no llene su sesión principal. El subagente de propósito general integrado maneja esto sin configuración adicional.",1365 teaches: "Un [subagente](/docs/es/sub-agents) ejecuta la auditoría en su propia ventana de contexto e informa un resumen, así una revisión de seguridad larga no llena tu sesión principal. El subagente integrado de propósito general se encarga de esto sin configuración adicional.",
1235 next: "Configure un subagente dedicado de revisión de seguridad que todo su equipo pueda usar"1366 next: "Configura un subagente dedicado a revisiones de seguridad que todo tu equipo pueda usar",
1367 prompt: "usa un subagente para revisar {path} en busca de problemas de seguridad e informa lo que encuentre",
1368 slots: {
1369 path: "src/api/"
1370 }
1236 },1371 },
1237 "review-content-before-sending": {1372 "review-content-before-sending": {
1238 title: "Detectar problemas antes de la revisión formal",1373 title: "Detectar problemas antes de la revisión formal",
1239 teaches: "Obtenga un primer paso antes de que un humano dedique tiempo a ello. Nombre las preocupaciones que desea verificar para que la revisión sea enfocada, luego corrija lo que encuentra y envíe un borrador más limpio.",1374 teaches: "Obtén una primera revisión antes de que una persona le dedique tiempo. Nombra los aspectos que quieres revisar para que la revisión esté enfocada, luego corrige lo que encuentre y envía un borrador más limpio.",
1240 next: "Capture su lista de verificación de revisión como una habilidad que todo su equipo pueda ejecutar"1375 next: "Convierte tu lista de verificación de revisión en un skill que todo tu equipo pueda ejecutar",
1376 prompt: "revisa {file} en busca de {concerns} y enumera todo lo que debería corregir antes de que llegue a {reviewer}",
1377 slots: {
1378 file: "launch-post.md",
1379 concerns: "afirmaciones sin respaldo, atribuciones faltantes y problemas con las pautas de marca",
1380 reviewer: "el equipo legal"
1381 }
1241 },1382 },
1242 "course-correct-a-wrong": {1383 "course-correct-a-wrong": {
1243 title: "Corregir un enfoque incorrecto",1384 title: "Corregir un enfoque incorrecto",
1244 teaches: "Nombre la restricción que Claude perdió, no solo que está mal. Una razón específica le da a Claude una restricción concreta para satisfacer en el reintento, en lugar de adivinar de nuevo.",1385 teaches: "Nombra la restricción que Claude pasó por alto, no solo que está mal. Una razón específica le da a Claude una restricción concreta que cumplir en el reintento, en lugar de volver a adivinar.",
1245 next: "Presione `Esc` dos veces para abrir el menú de rebobinado y restaurar código y conversación para que el reintento comience limpio"1386 next: "Presiona `Esc` dos veces para abrir el menú de rebobinado y restaurar el código y la conversación, así el reintento empieza desde cero",
1387 prompt: "eso no es correcto: {feedback}. prueba un enfoque diferente",
1388 slots: {
1389 feedback: "la firma de la función debe seguir siendo compatible con versiones anteriores"
1390 }
1246 },1391 },
1247 "narrow-the-scope-of": {1392 "narrow-the-scope-of": {
1248 title: "Reducir el alcance de un cambio",1393 title: "Reducir el alcance de un cambio",
1249 teaches: "Cuando la dirección es correcta pero el cambio fue demasiado amplio, pida a Claude que mantenga parte de él en lugar de rebobinar todo. Un límite establecido mantiene una corrección pequeña de convertirse en una refactorización."1394 teaches: "Cuando la dirección es correcta pero el cambio se extendió demasiado, pide a Claude que conserve una parte en lugar de rebobinar todo. Un límite explícito evita que una corrección pequeña se convierta en una refactorización.",
1395 prompt: "eso es demasiado. conserva solo los cambios en {scope} y deshaz tus otras ediciones",
1396 slots: {
1397 scope: "la lógica de validación en src/forms/"
1398 }
1250 },1399 },
1251 "turn-a-correction-into": {1400 "turn-a-correction-into": {
1252 title: "Convertir una corrección en una regla",1401 title: "Convertir una corrección en una regla",
1253 teaches: "Una corrección en el chat no se comparte con su equipo. Una regla en el [CLAUDE.md](/docs/es/memory) del proyecto se comparte una vez que la confirma, y Claude la lee al inicio de cada sesión.",1402 teaches: "Una corrección en el chat no se comparte con tu equipo. Una regla en el [CLAUDE.md](/docs/es/memory) del proyecto se comparte en cuanto haces commit de ella, y Claude la lee al inicio de cada sesión.",
1254 next: "Abra `/memory` para revisar lo que Claude escribió"1403 next: "Abre `/memory` para revisar lo que escribió Claude",
1404 prompt: "sigues {mistake}. agrega una regla a CLAUDE.md para que esto deje de pasar",
1405 slots: {
1406 mistake: "usando exports por defecto cuando este proyecto usa exports con nombre"
1407 }
1255 },1408 },
1256 "resolve-merge-conflicts": {1409 "resolve-merge-conflicts": {
1257 title: "Resolver conflictos de fusión",1410 title: "Resolver conflictos de fusión",
1258 teaches: "Diga qué estado desea, no qué marcadores mantener. Pedir el razonamiento hace que la fusión sea revisable en lugar de una caja negra."1411 teaches: "Di qué estado quieres, no qué marcadores conservar. Pedir el razonamiento hace que la fusión se pueda revisar en lugar de ser una caja negra.",
1412 prompt: "resuelve los conflictos de fusión en esta rama y explica qué conservaste de cada lado"
1259 },1413 },
1260 "commit-with-a-generated": {1414 "commit-with-a-generated": {
1261 title: "Confirmar con un mensaje generado",1415 title: "Hacer commit con un mensaje generado",
1262 teaches: "Deje que Claude derive el mensaje de la diferencia. Coincide con el estilo de commit existente de su repositorio."1416 teaches: "Deja que Claude derive el mensaje a partir del diff. Se ajusta al estilo de commits que ya usa tu repositorio.",
1417 prompt: "haz commit de estos cambios con un mensaje que resuma lo que hice"
1263 },1418 },
1264 "open-a-pull-request": {1419 "open-a-pull-request": {
1265 title: "Abrir una solicitud de extracción desde un ticket",1420 title: "Abrir un pull request desde un ticket",
1266 teaches: "Omita el cambio de contexto entre rastreador, editor y GitHub. Un prompt lee la especificación, hace el cambio y abre la PR."1421 teaches: "Evita cambiar de contexto entre el gestor de tickets, el editor y GitHub. Un solo prompt lee la especificación, hace el cambio y abre el PR.",
1422 prompt: "encuentra el ticket de {tracker} sobre {topic} y abre un PR que lo implemente",
1423 slots: {
1424 tracker: "Linear",
1425 topic: "el tiempo de espera del inicio de sesión"
1426 }
1267 },1427 },
1268 "draft-release-notes-from": {1428 "draft-release-notes-from": {
1269 title: "Redactar notas de lanzamiento del historial de git",1429 title: "Redactar notas de la versión a partir del historial de git",
1270 teaches: "Dé dos puntos de referencia y la estructura que desea. Claude lee el registro de commits entre ellos y redacta un registro de cambios que puede editar.",1430 teaches: "Da dos puntos de referencia y la estructura que quieres. Claude lee el registro de commits entre ellos y redacta un changelog que puedes editar.",
1271 next: "Guarde esto como una habilidad `/changelog`"1431 next: "Guarda esto como un skill `/changelog`",
1432 prompt: "compara {from} con {to} y redacta notas de la versión agrupadas por funcionalidad, corrección y cambio incompatible",
1433 slots: {
1434 from: "v2.3.0",
1435 to: "v2.4.0"
1436 }
1272 },1437 },
1273 "write-a-ci-workflow": {1438 "write-a-ci-workflow": {
1274 title: "Escribir un flujo de trabajo de CI",1439 title: "Escribir un workflow de CI",
1275 teaches: "Describa cuándo debe ejecutarse y qué debe hacer; el YAML se genera para usted, coincidiendo con los comandos de compilación y prueba de su proyecto."1440 teaches: "Describe cuándo debe ejecutarse y qué debe hacer; el YAML se genera por ti, adaptado a los comandos de compilación y pruebas de tu proyecto.",
1441 prompt: "escribe un workflow de GitHub Actions que {steps} en cada push a {branch}",
1442 slots: {
1443 steps: "ejecute las pruebas y despliegue en staging",
1444 branch: "main"
1445 }
1276 },1446 },
1277 "find-and-fix-a": {1447 "find-and-fix-a": {
1278 title: "Encontrar y corregir una prueba fallida",1448 title: "Encontrar y corregir una prueba fallida",
1279 teaches: "Describa el síntoma; no necesita saber qué archivo está roto. Claude ejecuta la prueba para ver el fallo, lo rastrea en la fuente y lo corrige."1449 teaches: "Describe el síntoma; no necesitas saber qué archivo está roto. Claude ejecuta la prueba para ver el fallo, lo rastrea hasta el código fuente y lo corrige.",
1450 prompt: "la prueba {test} está fallando, averigua por qué y corrígela",
1451 slots: {
1452 test: "UserAuth"
1453 }
1280 },1454 },
1281 "investigate-a-reported-error": {1455 "investigate-a-reported-error": {
1282 title: "Investigar un error reportado",1456 title: "Investigar un error reportado",
1283 teaches: "Describa el síntoma y la ubicación; Claude lee la ruta de código relevante y rastrea las causas probables. Pegue seguimientos de pila o registros si los tiene.",1457 teaches: "Describe el síntoma y la ubicación; Claude lee la ruta de código relevante y rastrea las causas probables. Pega stack traces o registros si los tienes.",
1284 next: "Ponga un enlace profundo en su runbook que abra Claude con este prompt pre-rellenado"1458 next: "Pon un deeplink en tu runbook que abra Claude con este prompt ya rellenado",
1459 prompt: "los usuarios están viendo {symptom} en {where}. investiga y dime qué está pasando",
1460 slots: {
1461 symptom: "errores 500",
1462 where: "/api/settings"
1463 }
1285 },1464 },
1286 "fix-a-build-error": {1465 "fix-a-build-error": {
1287 title: "Corregir un error de compilación en la raíz",1466 title: "Corregir un error de compilación de raíz",
1288 teaches: "Pedir causa raíz y verificación previene parches de nivel superficial que suprimen el error sin corregirlo."1467 teaches: "Pedir la causa raíz y la verificación evita parches superficiales que suprimen el error sin corregirlo.",
1468 prompt: "aquí tienes un error de compilación. corrige la causa raíz y verifica que la compilación funcione"
1289 },1469 },
1290 "investigate-a-production-incident": {1470 "investigate-a-production-incident": {
1291 title: "Investigar un incidente de producción",1471 title: "Investigar un incidente de producción",
1292 teaches: "Enumere las fuentes de evidencia para correlacionar, no los pasos a seguir. Claude lee registros, historial de git y configuración juntos para reducir la causa.",1472 teaches: "Enumera las fuentes de evidencia que hay que correlacionar, no los pasos a seguir. Claude lee los registros, el historial de git y la configuración en conjunto para acotar la causa.",
1293 next: "Conecte Sentry o su almacén de registros a través de MCP"1473 next: "Conecta Sentry o tu almacén de registros mediante MCP",
1474 prompt: "{symptom}. revisa los registros, los despliegues recientes y los cambios de configuración, y luego dime la causa más probable",
1475 slots: {
1476 symptom: "el endpoint de checkout empezó a devolver errores 500 hace una hora"
1477 }
1294 },1478 },
1295 "query-logs-in-plain": {1479 "query-logs-in-plain": {
1296 title: "Consultar registros en inglés simple",1480 title: "Consultar registros en lenguaje natural",
1297 teaches: "Haga la pregunta en lugar de escribir el SQL. Claude construye la consulta, la ejecuta contra sus registros conectados y muestra tanto la consulta como el resultado para que pueda verificar qué se ejecutó."1481 teaches: "Haz la pregunta en lugar de escribir el SQL. Claude crea la consulta, la ejecuta contra tus registros conectados y muestra tanto la consulta como el resultado para que puedas comprobar qué se ejecutó.",
1482 prompt: "muéstrame todos los {events} de {scope} en {timeframe}. escribe la consulta, ejecútala y dime qué llama la atención",
1483 slots: {
1484 events: "inicios de sesión fallidos",
1485 scope: "el servicio de autenticación",
1486 timeframe: "las últimas 24 horas"
1487 }
1298 },1488 },
1299 "diagnose-from-a-console": {1489 "diagnose-from-a-console": {
1300 title: "Diagnosticar desde una captura de pantalla de consola",1490 title: "Diagnosticar desde una captura de pantalla de la consola",
1301 teaches: "Las consolas en la nube le muestran el problema pero no los comandos para corregirlo. Claude lee la captura de pantalla y traduce el panel a los comandos kubectl, gcloud o aws para ejecutar."1491 teaches: "Las consolas en la nube te muestran el problema, pero no los comandos para corregirlo. Claude lee la captura de pantalla y traduce el panel a los comandos de kubectl, gcloud o aws que debes ejecutar.",
1492 prompt: "esta es una captura de pantalla de {console}. explícame paso a paso por qué {resource} está fallando y dame los comandos exactos para corregirlo",
1493 slots: {
1494 console: "el panel de Kubernetes de GCP",
1495 resource: "este pod"
1496 }
1302 },1497 },
1303 "analyze-a-data-file": {1498 "analyze-a-data-file": {
1304 title: "Analizar un archivo de datos",1499 title: "Analizar un archivo de datos",
1305 teaches: "Una pregunta única no necesita un script único. Señale un archivo en su carpeta de proyecto y Claude lo lee directamente, encuentra los patrones y escribe la salida donde usted pida.",1500 teaches: "Una pregunta puntual no necesita un script hecho a medida. Señala un archivo en la carpeta de tu proyecto y Claude lo lee directamente, encuentra los patrones y escribe la salida donde le pidas.",
1306 next: "Conecte la fuente de datos a través de MCP en lugar de exportar archivos"1501 next: "Conecta la fuente de datos mediante MCP en lugar de exportar archivos",
1502 prompt: "lee {file}, resume los patrones clave y escribe los resultados en {output}",
1503 slots: {
1504 file: "@reports/q1-signups.csv",
1505 output: "una página HTML con gráficos y luego ábrela en mi navegador"
1506 }
1307 },1507 },
1308 "generate-variations-from-performance": {1508 "generate-variations-from-performance": {
1309 title: "Generar variaciones a partir de datos de rendimiento",1509 title: "Generar variaciones a partir de datos de rendimiento",
1310 teaches: "Indique la restricción al inicio para que la generación se mantenga dentro del límite. Claude lee las métricas, elige qué reemplazar y produce alternativas que se ajusten.",1510 teaches: "Indica la restricción desde el principio para que lo generado se mantenga dentro del límite. Claude lee las métricas, elige qué reemplazar y produce alternativas que se ajusten.",
1311 next: "Conecte la plataforma de anuncios a través de MCP en lugar de exportar un archivo"1511 next: "Conecta la plataforma de anuncios mediante MCP en lugar de exportar un archivo",
1512 prompt: "lee {file}, encuentra los {items} con peor rendimiento y genera {n} variaciones nuevas de menos de {limit} caracteres",
1513 slots: {
1514 file: "@ads-performance.csv",
1515 items: "titulares",
1516 n: "20",
1517 limit: "90"
1518 }
1312 },1519 },
1313 "turn-a-recurring-task": {1520 "turn-a-recurring-task": {
1314 title: "Convertir una tarea recurrente en una habilidad",1521 title: "Convertir una tarea recurrente en un skill",
1315 teaches: "Nombre los pasos una vez; reutilícelos como un comando. Claude escribe una [habilidad](/docs/es/skills) que cualquiera en su equipo puede ejecutar."1522 teaches: "Nombra los pasos una vez; reutilízalos como un comando. Claude escribe un [skill](/docs/es/skills) que cualquier persona de tu equipo puede ejecutar.",
1523 prompt: "crea un skill /{name} para este proyecto que {steps}",
1524 slots: {
1525 name: "ship",
1526 steps: "ejecute el linter y las pruebas y luego redacte un mensaje de commit"
1527 }
1316 },1528 },
1317 "add-a-hook-for": {1529 "add-a-hook-for": {
1318 title: "Agregar un hook para comportamiento repetido",1530 title: "Agregar un hook para un comportamiento repetido",
1319 teaches: "Los hooks hacen que un comportamiento sea automático en lugar de algo que tenga que recordar pedir. Describa el disparador y la acción y Claude escribe la configuración del [hook](/docs/es/hooks)."1531 teaches: "Los hooks hacen que un comportamiento sea automático en lugar de algo que tienes que acordarte de pedir. Describe el disparador y la acción, y Claude escribe la configuración del [hook](/docs/es/hooks).",
1532 prompt: "escribe un hook que {action} después de cada {event}",
1533 slots: {
1534 action: "ejecute prettier",
1535 event: "edición de un archivo .ts o .tsx"
1536 }
1320 },1537 },
1321 "connect-a-tool-with": {1538 "connect-a-tool-with": {
1322 title: "Conectar una herramienta con MCP",1539 title: "Conectar una herramienta con MCP",
1323 teaches: "Conecte la fuente una vez en lugar de pegar datos en cada sesión. Después de la configuración de [MCP](/docs/es/mcp), Claude lee de la herramienta directamente cuando usted pregunta sobre ella."1540 teaches: "Conecta la fuente una vez en lugar de pegar datos en cada sesión. Tras configurar [MCP](/docs/es/mcp), Claude lee directamente de la herramienta cuando le preguntas por ella.",
1541 prompt: "configura el servidor MCP de {server} para que puedas leer mis {data} directamente",
1542 slots: {
1543 server: "Sentry",
1544 data: "informes de errores"
1545 }
1324 },1546 },
1325 "capture-what-to-remember": {1547 "capture-what-to-remember": {
1326 title: "Capturar qué recordar para la próxima vez",1548 title: "Capturar qué recordar para la próxima vez",
1327 teaches: "Pregunte antes de olvidar. Claude sabe qué tuvo que descubrir en esta sesión y propone entradas de [CLAUDE.md](/docs/es/memory) para que la próxima sesión comience con ese contexto."1549 teaches: "Pregunta antes de que se te olvide. Claude sabe qué tuvo que averiguar en esta sesión y propone entradas para [CLAUDE.md](/docs/es/memory) para que la siguiente sesión empiece con ese contexto.",
1550 prompt: "resume lo que hicimos en esta sesión y sugiere qué agregar a CLAUDE.md"
1328 }1551 }
1329};1552};
1330 1553