Prepara cualquier cambio con git add y pide: dame un mensaje de commit para esto
Fíjate en que no escribiste /. Se disparó sola. Ese es todo el mecanismo.
Abre 05-PRIMEROS-30-DIAS.md y haz el Día 1.
Lo demás puede esperar. Eso no.
Qué hay aquí
Para leer · PDF
Archivo
Qué es
PDF/01-Manual-Skills-Claude-Code.pdf
Manual completo, 17 páginas. Fundamentos, cómo se crean, políticas y buenas prácticas. Con índice navegable
PDF/02-Tarjeta-de-referencia.pdf
Dos páginas. Imprímela a doble cara y pégala junto al monitor
PDF/03-Primeros-30-dias.pdf
Guía de adopción, semana por semana
Para copiar y usar · Markdown
Archivo
Qué es
03-PROMPT-DESTILADOR.md
El prompt que convierte una conversación en skill. En md porque se copia y se pega
kit-skills/
Trece skills listas. Son archivos SKILL.md: por definición van en markdown
04-PLANTILLAS/
Tres puntos de partida en blanco
Todo junto
Archivo
Qué es
KIT-COMPLETO.html
Todo el material navegable en un solo archivo, con botón de copiar en cada bloque de código
Por qué esta división. Lo que se lee de corrido va en PDF: tipografía cuidada, índice y numeración. Lo que se copia, se pega o se instala se queda en markdown, que es su formato nativo.
El kit de skills
Trece skills funcionando, organizadas por dominio. Léelas antes de escribir las tuyas: son el mejor material de estudio que hay, porque muestran las decisiones, no solo las reglas.
Ciclo de desarrollo de software
Skill
Qué hace
Grado
revisando-prs
Revisa un PR contra las convenciones, con severidades
Alta
redactando-commits
Mensaje de commit convencional desde lo preparado
Media
generando-pruebas
Pruebas siguiendo la convención del proyecto, casos borde primero
Media
documentando-modulos
Documenta qué problema resuelve, no qué hace línea por línea
Alta
Gestión de proyectos
Skill
Qué hace
Grado
redactando-minutas
Notas crudas → acuerdos con dueño y fecha
Media
evaluando-riesgos
Registro de riesgos con probabilidad, mitigación y disparador
Media
preparando-status
Reporte de avance con semáforo y decisiones que necesitas
Media
desglosando-alcance
Requerimiento → entregables, tareas y supuestos
Media
Validación de calidad documental
Skill
Qué hace
Grado
validando-entregables
Valida un documento antes de enviarlo. Incluye script
Media
revisando-propuestas
Matriz de cumplimiento contra bases de licitación
Media
verificando-consistencia
Compara varios documentos entre sí: cifras, fechas, datos
mkdir -p .claude/skills
cp -r kit-skills/desarrollo/* .claude/skills/
git add .claude/skills && git commit -m "add: kit de skills de desarrollo"
Quien clone el repositorio las tiene. Sin instalación.
Verifica
Abre Claude Code y escribe /skills. Deben aparecer.
Cómo están construidas estas skills
Todas siguen las mismas reglas, y por eso sirven de ejemplo:
Nombre en gerundio que describe la actividad
Descripción en tercera persona, con qué hace y cuándo usarla, usando las palabras que la gente escribe de verdad
Grado de libertad declarado en un comentario al final
Sin información con fecha de caducidad
allowed-tools acotado al mínimo necesario
Menos de 100 líneas cada una
Si abres cualquiera y comparas contra la sección §12 del manual, vas a ver cada política aplicada.
Advertencia sobre la vigencia
El contenido técnico está verificado contra la documentación oficial de Claude Code al momento de escribirse. Claude Code cambia rápido.
Antes de tomar una decisión importante basada en un detalle de este material —campos del frontmatter, comandos de diagnóstico, límites numéricos— verifica contra la fuente:
Este material es de OmniSys S.A. de C.V. y se entrega a los asistentes del webinar para su uso profesional. Las skills del kit puedes copiarlas, modificarlas y usarlas en tu trabajo sin restricción.
Versión navegable
KIT-COMPLETO.html contiene todo este material en un solo archivo: manual, tarjeta, prompt destilador, guía de 30 días, las trece skills con su código completo y las plantillas. Cada bloque de código tiene botón de copiar.
Ábrelo en cualquier navegador. Funciona sin conexión y sin JavaScript —en ese caso se ve todo el contenido seguido, sin pestañas.
Nota sobre las tipografías de los PDF
Los PDF usan Poppins para títulos y Carlito para texto, que es lo más cercano al sistema tipográfico de OmniSys (Syne + IBM Plex) disponible sin dependencias externas. Los archivos son autocontenidos: las fuentes van incrustadas y se ven igual en cualquier equipo.
Manual de Skills para Claude Code
Políticas, reglas, buenas prácticas y cómo se crean
OmniSys · Dirección de Innovación y Preventa
Cómo leer este manual
Cuatro partes, en orden de urgencia:
Parte
Qué resuelve
Cuándo la lees
I. Fundamentos
Qué es una skill y por qué funciona
Hoy
II. Cómo se crean
El procedimiento, paso a paso
Hoy, con la terminal abierta
III. Reglas y políticas
Qué se permite, qué no, y cómo se revisa en equipo
Antes de compartir tu primera skill
IV. Buenas prácticas
Lo que separa una skill que se usa de una que se abandona
Cuando ya tengas dos o tres
Si solo tienes quince minutos, lee la parte II y construye una. Todo lo demás cobra sentido después de eso.
PARTE I · Fundamentos
1. Qué es una skill
Un directorio con un archivo SKILL.md adentro:
mi-skill/
└── SKILL.md
El archivo tiene dos partes: metadatos en YAML entre marcadores ---, y debajo instrucciones en markdown.
---
description: Resume los cambios sin commitear y señala lo riesgoso.
Úsala cuando el usuario pregunte qué cambió, pida un mensaje de
commit o quiera revisar su diff.
---
## Cambios actuales
!`git diff HEAD`
## Instrucciones
Resume en dos o tres viñetas qué cambió. Luego lista los riesgos:
manejo de errores ausente, valores hardcodeados, pruebas
desactualizadas.
No hay registro, no hay instalación, no hay build. Creas la carpeta, escribes el archivo, y Claude Code lo detecta en la sesión en curso sin reiniciar.
2. El problema que resuelve
Claude tiene una ventana de contexto finita. Todo lo que quieres que sepa compite por ese espacio: tu código, tu conversación, tus convenciones.
Las skills parten el contenido en dos niveles:
La descripción vive permanentemente en el contexto. Es corta. Le dice a Claude que la skill existe y cuándo aplicarla.
El cuerpo solo entra cuando la skill se usa. Puede tener cientos de líneas y no cuesta nada mientras no se invoque.
Podrías tener cincuenta skills instaladas. Lo permanente son cincuenta descripciones cortas. Los cincuenta cuerpos no están ahí hasta que hacen falta.
Esta es la idea central. Si la entiendes, el resto se deduce. Si no, vas a escribir skills que no se activan y no vas a saber por qué.
3. El detalle que casi nadie enseña
Cuando una skill se invoca, su contenido entra a la conversación y se queda ahí en los turnos siguientes. No es un préstamo momentáneo. Claude Code no vuelve a leer el archivo después.
Tres consecuencias prácticas:
Cada línea del cuerpo es un costo recurrente de tokens, no un costo único.
Escribe instrucciones permanentes, no pasos de un solo uso. Si algo debe aplicar durante toda la tarea, redáctalo como norma vigente.
Si vuelves a invocar la misma skill y el contenido es idéntico, no se duplica. Si cambió —por argumentos distintos o contexto dinámico nuevo— sí se agrega otra vez.
Cuando el contexto se llena y hay autocompactación, Claude Code re-adjunta la invocación más reciente de cada skill conservando los primeros 5,000 tokens de cada una, con un presupuesto combinado de 25,000. Llena ese presupuesto desde la más reciente, así que las skills invocadas al principio de una sesión larga pueden desaparecer.
Si sientes que una skill "dejó de funcionar" a media conversación, casi siempre el contenido sigue ahí y el modelo está eligiendo otro camino. Refuerza la descripción, o vuelve a invocarla.
4. Dónde vive una skill
Ubicación
Ruta
Aplica a
Empresarial
Configuración administrada
Toda la organización
Personal
~/.claude/skills/<nombre>/SKILL.md
Todos tus proyectos
Proyecto
.claude/skills/<nombre>/SKILL.md
Ese repositorio
Plugin
<plugin>/skills/<nombre>/SKILL.md
Donde el plugin esté activo
El nivel de proyecto es el que cambia la vida en equipo. Se versiona con el código: quien clona el repositorio hereda tu criterio sin que se lo expliques.
En conflicto de nombres, empresarial gana sobre personal, y personal gana sobre proyecto. Las skills de plugin usan espacio de nombres propio (plugin:skill) y no chocan con nadie.
El comando que escribes sale del nombre del directorio, no del campo name. En skills personales y de proyecto, name es solo la etiqueta del listado, y ni siquiera es obligatorio.
5. Skills y comandos son lo mismo
Históricamente había dos sistemas: comandos en .claude/commands/*.md y skills en .claude/skills/*/SKILL.md. Se fusionaron. Ambos crean /nombre y funcionan igual.
Las skills agregan tres cosas: un directorio para archivos de apoyo, frontmatter para controlar quién las invoca, y carga automática por el modelo. Un comando personalizado es hoy una skill sin funciones extra.
PARTE II · Cómo se crean
6. El procedimiento, paso a paso
Paso 1 · Elige un caso real
No inventes uno bonito. Responde esta pregunta:
¿Qué le pido a Claude cada semana, escribiendo más o menos lo mismo?
Si no se te ocurre nada, revisa tu historial de sesiones, los últimos PR que revisaste, o lo último que le explicaste a alguien de tu equipo.
Paso 2 · Resuélvelo a mano primero
Abre una sesión y resuelve la tarea con prompting normal, sin skill:
claude
Fíjate en qué contexto tuviste que dar: qué criterio, qué formato, qué te importaba. Eso es exactamente lo que va a la skill.
Paso 3 · Pídele a Claude que la escriba
Cuando tengas un resultado que te sirva:
crea una skill que capture este patrón
Nadie escribe un SKILL.md bueno de memoria y a la primera. Que lo genere él y tú lo recortas.
Paso 4 · Recorta
Claude va a generar de más. Quítale todo lo que ya sabe:
quita la explicación de qué es un pull request, eso ya lo sabes
déjalo en menos de 30 líneas
Paso 5 · Crea la carpeta
mkdir -p ~/.claude/skills/resumiendo-cambios
El nombre del directorio es el comando. Gerundio que describe la actividad.
Paso 6 · Pruébala en limpio
Sal y abre una sesión nueva. Pide la tarea en lenguaje natural, sin escribir /:
¿qué cambié hoy?
¿Se disparó sola?
Paso 7 · La vuelta
No se disparó → el problema está en la descripción, casi nunca en el cuerpo
Se disparó pero hizo otra cosa → el problema sí está en el cuerpo
Vuelves a la sesión original, corriges, y pruebas otra vez en una nueva.
A este ciclo lo llamamos Claude A / Claude B. A es donde construyes, B es donde pruebas en limpio. Lo que observas en B regresa a A. Es el trabajo real de escribir skills.
7. La descripción · el campo que decide todo
Es lo único que Claude ve para decidir si tu skill aplica. Si está mal escrita, la skill no existe en la práctica.
La fórmula
[qué hace] + [cuándo usarla]
Ambas mitades son obligatorias.
Las cuatro reglas
1 · Tercera persona. La descripción se inyecta en la indicación del sistema. Escribirla como si Claude le hablara al usuario rompe el descubrimiento.
# ❌ nunca se activa
description: Te puedo ayudar con tus documentos y archivos.
# ✅ se dispara sola
description: Analiza documentos y aplica el formato del equipo.
Úsala cuando el usuario mencione README, documentación o formato.
2 · El caso principal al inicio. El listado de skills tiene tope de caracteres. Si tu texto se recorta, se recorta por el final.
3 · Las palabras que la gente escribe de verdad. No las del manual. Nadie teclea "gestión documental del repositorio"; teclean "revisa este README".
Truco: escribe primero cómo pedirías la tarea, en voz alta, y de ahí saca las palabras.
4 · El tope es de 1,536 caracteres, combinado entre description y when_to_use.
Patologías y su síntoma
Descripción enferma
Síntoma
Te puedo ayudar con X
Nunca se activa sola
Ayuda con documentos
Se activa cuando no debe, o nunca
Sin la parte del "cuándo"
Claude sabe qué hace pero no cuándo
Larga, con el caso principal al final
Se trunca y pierde lo que importa
Con jerga que nadie teclea
Nunca coincide con la petición real
Solapada con otra skill
Se dispara la equivocada, inconsistente
8. Campos del frontmatter
Todos son opcionales. Solo description es recomendado. Claude Code lee el frontmatter únicamente si el --- de apertura es la primera línea.
Campo
Para qué
Cuándo lo usas
description
Qué hace y cuándo usarla
Siempre
when_to_use
Frases disparadoras adicionales
Cuando la descripción se alarga
name
Etiqueta de listado
Opcional
allowed-tools
Preaprueba herramientas durante el turno
Cuando la skill ejecuta comandos
disallowed-tools
Retira herramientas mientras está activa
Skills autónomas
disable-model-invocation
Solo tú la invocas
Acciones con efectos
user-invocable
false: solo Claude la invoca
Conocimiento de fondo
argument-hint
Pista de autocompletado
Skills con argumentos
model
Modelo mientras está activa
Tareas que necesitan otro modelo
context: fork
Corre en subagente aislado
Tareas que ensucian el contexto
paths
Globs que limitan la activación
Monorepos
allowed-tools no restringe
Esta es la confusión número uno.
allowed-toolsconcede permiso para que Claude no te pregunte. No restringe: todas las herramientas siguen disponibles. El permiso se limpia cuando envías tu siguiente mensaje.
Para restringir de verdad: disallowed-tools mientras la skill está activa, o reglas de negación en permisos para siempre.
Los dos campos de invocación
Frontmatter
Tú invocas
Claude invoca
Contexto
(por defecto)
Sí
Sí
Descripción siempre; cuerpo al invocar
disable-model-invocation: true
Sí
No
Descripción NO está en contexto
user-invocable: false
No
Sí
Descripción siempre; cuerpo al invocar
9. Grados de libertad
La pregunta no es "¿cuánto detalle pongo?" sino "¿qué tan frágil es esta tarea?".
Grado
Situación
Cómo se escribe
Ejemplo
Alta
Varios caminos sirven
Prosa, dirección general
Revisión de código
Media
Hay un patrón preferido
Plantilla o script con parámetros
Generar un reporte
Baja
Se puede romper algo
Comando exacto y prohibición de variarlo
Migración, despliegue
Ejemplo de baja libertad escrito correctamente:
Ejecuta exactamente:
python scripts/migrate.py --verify --backup
No modifiques el comando ni agregues banderas, aunque el mensaje de
error lo sugiera. Si falla, detente y reporta. No intentes corregirlo.
La última línea es parte del diseño, no un adorno. Sin ella, un modelo capaz va a intentar arreglar el problema, que es lo que no quieres en una migración.
El error típico: escribir todas tus skills con el mismo nivel de detalle. Las de alta libertad quedan asfixiadas y las de baja quedan peligrosamente vagas.
10. Partir una skill grande
mi-skill/
├── SKILL.md ← el procedimiento
├── reference.md ← el detalle, solo si hace falta
└── scripts/
└── revisar.sh ← se EJECUTA, no se lee
Tres reglas donde la gente se equivoca:
Un solo nivel.SKILL.md → reference.md. Nunca una cadena de tres. Las cadenas funcionan a veces y fallan otras, que es peor que fallar siempre.
Los scripts se ejecutan. Si le pides a Claude que lea el script y lo interprete, gastas contexto en algo que la máquina hacía sola.
Rutas con ${CLAUDE_SKILL_DIR}. Nunca absolutas, nunca con barra invertida.
El patrón que evita las solicitudes de permiso
Claude Code sustituye ${CLAUDE_SKILL_DIR} en dos lugares: el cuerpo markdown y las reglas de Bash en allowed-tools. Usar la misma variable en ambos hace que la regla coincida exactamente con el comando:
---
description: Renderiza una gráfica a partir de un CSV
allowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/render.sh *)
---
Ejecuta `${CLAUDE_SKILL_DIR}/scripts/render.sh <archivo-csv>`.
El script corre sin preguntarte permiso. Sin este patrón, cada ejecución interrumpe.
Límite práctico:SKILL.md por debajo de 500 líneas.
11. Contexto dinámico
` !comando` ejecuta el comando antes de que el contenido llegue a Claude y reemplaza el marcador con la salida:
## Cambios actuales
!`git diff HEAD`
## Estado
!`git status --short`
La diferencia con pedirle que corra git diff es sustancial: no gasta un turno de herramienta, no puede decidir no hacerlo, y la instrucción llega con los datos adentro.
La regla que te va a morder
Un comando que falla aborta toda la invocación. Claude nunca ve el contenido de la skill.
Con bash, cualquier código de salida distinto de cero cuenta como fallo. Si tu comando puede salir con error por razones normales, anéxale || true:
## Estado del linter
!`npm run lint || true`
Además, los comandos inyectados nunca piden permiso: si la verificación de permisos no devuelve "permitir", se aborta. Preapruébalo con allowed-tools.
PARTE III · Reglas y políticas
Esta parte es para cuando las skills dejan de ser tuyas y pasan a ser del equipo. Adáptala; está escrita para copiarse a la documentación interna.
12. Políticas de creación
P-01 · Nomenclatura obligatoria
El directorio se nombra en gerundio que describe la actividad: revisando-prs, generando-migraciones
Solo minúsculas, números y guiones. Máximo 64 caracteres
No puede contener las palabras anthropic ni claude
Prohibidos los nombres genéricos: helper, utils, tools, misc, general
P-02 · Toda skill declara su grado de libertad
Como comentario al final del SKILL.md:
<!-- Grado de libertad: ALTA / MEDIA / BAJA -->
Es lo que permite revisar si el nivel de detalle es el correcto.
P-03 · Acciones con efectos llevan disable-model-invocation
Cualquier skill que despliegue, commitee, envíe mensajes, borre datos o modifique estado externo debe llevarlo. No se deja que el modelo decida ejecutar algo irreversible.
P-04 · Sin información con fecha de caducidad
Prohibido escribir versiones concretas, precios, nombres de personas en puestos, o cualquier dato que vaya a envejecer. Si hace falta, se inyecta con contexto dinámico.
P-05 · Sin secretos
Ninguna skill contiene tokens, credenciales, cadenas de conexión, rutas internas de infraestructura ni datos de clientes. Las skills se versionan: lo que escribas ahí queda en el historial.
P-06 · Terminología consistente
Un concepto, un término, de principio a fin del archivo. Si arriba dice "documento" y abajo "archivo", Claude no sabe si son lo mismo.
13. Políticas de seguridad
S-01 · Revisión obligatoria de allowed-tools en skills ajenas
La confianza del espacio de trabajo no gobiernaallowed-tools. Una skill de proyecto aplica su preaprobación aunque la carpeta nunca se haya marcado como confiable.
Antes de correr Claude Code en un repositorio que no es tuyo, revisa el allowed-tools de sus skills. Si no entiendes por qué una skill necesita lo que pide, no la corras.
S-02 · Principio de mínima preaprobación
allowed-tools lista el comando más específico posible:
S-03 · Los comandos inyectados son código que corre en tu máquina
Todo ` !comando` en una skill se ejecuta sin preguntar. Trátalos con el mismo criterio con que aceptarías un script en un PR.
S-04 · Skills que tocan sistemas productivos
Requieren: disable-model-invocation: true, verificación previa con script, grado de libertad BAJA, y revisión por una segunda persona antes de mezclarse.
14. Política de revisión en equipo
Una skill nueva en .claude/skills/ se revisa como se revisa código. Checklist mínimo del revisor:
¿La descripción está en tercera persona?
¿Dice qué hace y cuándo usarla?
¿Usa las palabras que el equipo escribe de verdad?
¿El nombre del directorio describe la actividad?
¿Declara su grado de libertad y es el correcto?
¿SKILL.md por debajo de 500 líneas?
¿Las referencias van a un solo nivel?
¿allowed-tools pide lo mínimo?
Si tiene efectos, ¿lleva disable-model-invocation?
¿Sin secretos, sin datos de cliente, sin información con caducidad?
¿El revisor la ejecutó sin que el autor le explicara nada?
El último punto es el que más vale. Si necesitas explicación, la descripción no fue suficiente.
15. Política de ciclo de vida
Momento
Qué pasa
Nace
Personal, en ~/.claude/skills/. Nadie más la ve
Se prueba
Una semana de uso real del autor. Mínimo tres invocaciones
Se propone
PR a .claude/skills/ del proyecto, con el checklist de arriba
Vive
Se revisa cada vez que cambia el proceso que describe
Muere
Si el proceso desapareció, se borra. Una skill que miente es peor que ninguna
Señal de que hay que jubilar una skill: nadie la ha invocado en dos meses y el equipo resolvió el problema de otra forma.
PARTE IV · Buenas prácticas
16. Concisión
La ventana de contexto es un bien común, y el cuerpo de la skill permanece turno tras turno. Ese costo es recurrente.
Regla: solo agrega lo que Claude no sabe ya.
Si tu skill explica qué es un pull request → bórralo
Si explica las convenciones de nombres de tu equipo → déjalo
Enuncia qué hacer, no narres cómo ni por qué
17. Da una opción, no cinco
# ❌
Puedes usar pytest, unittest, nose, tox o pytest-bdd según prefieras.
# ✅
Usa pytest. Si el proyecto ya usa otro corredor de pruebas, síguelo.
Ofrecer alternativas parece flexible y produce elecciones malas. Da una con salida de emergencia.
18. Escribe para el modelo más chico
Corre tu skill con Haiku, Sonnet y Opus. Lo que basta para Opus puede quedarse corto para Haiku. Una skill que depende de que el modelo "entienda la intención" se rompe en el modelo pequeño; una bien escrita funciona en los tres.
Es la prueba de robustez más barata que existe y casi nadie la hace.
19. Evalúa antes de documentar
La guía oficial invierte el orden habitual:
Corre la tarea sin skill y documenta dónde falla
Construye tres escenarios que prueben esas fallas
Mide la línea base
Escribe el contenido mínimo que las pasa
Es lo que evita skills que resuelven problemas imaginarios. Escribes para fallas observadas, no supuestas.
El tercer escenario es el que casi nadie hace: el caso que NO debe disparar. Una skill que se activa de más estorba tanto como una que no se activa.
20. Prueba siempre en sesión nueva
El contexto que quedó de cuando escribiste la skill enmascara los huecos de las instrucciones. Tú sabes lo que quisiste decir, y esa conversación también. Una sesión limpia no.
21. Diagnóstico rápido
Comando
Qué te dice
/skills
Qué hay cargado, de dónde, con qué metadatos
/doctor
Revisión de instalación y costo del listado
/context
Qué está ocupando la ventana
claude --debug
Errores de parseo del frontmatter
claude plugin validate .claude/skills
Encuentra frontmatter roto en todo un directorio
Prueba de descarte en tres pasos
Pregunta ¿qué skills tienes disponibles?:
Aparece con descripción → el problema es de redacción
Aparece sin descripción → el frontmatter no parsea
No aparece → problema de ubicación o de visibilidad
Tabla de síntomas
Síntoma
Causa más probable
No se activa nunca
Descripción sin las palabras reales, o en 1ª/2ª persona
Responde a /nombre pero nunca sola
Frontmatter mal formado
Se activa cuando no debe
Descripción demasiado amplia
No encuentra un archivo
Ruta absoluta o barra invertida
Salta la solicitud de permiso
Falta declarar en allowed-tools
Funciona a veces sí y a veces no
Cadena de referencias de dos niveles
La invocación se aborta sin explicar
Un comando ! falló. Pruébalo a mano
"Dejó de funcionar" a media conversación
Sigue en contexto; el modelo eligió otro camino
22. Antipatrones que no dan error
Los más costosos, porque nada te los señala:
Antipatrón
Por qué falla
Ofrecer cinco librerías alternativas
Claude elige mal
"la versión actual es 3.2"
En seis meses tu skill miente con confianza
Cambiar de término a media skill
Claude no sabe si son lo mismo
Explicar lo que Claude ya sabe
Costo recurrente sin beneficio
Referencias encadenadas
Funcionan a veces: peor que fallar siempre
context: fork en skill de solo lineamientos
Devuelve vacío en silencio
Narrar el porqué en vez de enunciar el qué
Ruido
23. Qué capa usar
Naturaleza del contenido
Capa
Hecho permanente del proyecto
CLAUDE.md
Procedimiento o material de referencia
Skill
Tarea con contexto aislado y rol propio
Subagente o context: fork
Regla que debe cumplirse siempre
Hook
Acceso a un sistema externo
Servidor MCP
Las dos preguntas que desempatan:
CLAUDE.md o skill → ¿hace falta en cada conversación, o solo en algunas?
Skill o hook → ¿confío en que el modelo decida aplicarlo? Si ya lo pusiste en CLAUDE.md y se sigue olvidando, es hook.
Claude Code cambia rápido. Verifica los campos del frontmatter y los comandos de diagnóstico contra estas fuentes antes de tomar decisiones importantes.
Tarjeta de referencia
Una hoja. Imprímela a doble cara.
Estructura mínima
mi-skill/
└── SKILL.md
---
description: [qué hace]. Úsala cuando [cuándo usarla].
---
## Instrucciones
[qué debe hacer Claude]
El nombre del directorio es el comando: /mi-skill
Dónde ponerla
Alcance
Ruta
Todos tus proyectos
~/.claude/skills/<nombre>/SKILL.md
Este repositorio
.claude/skills/<nombre>/SKILL.md
Precedencia: empresarial › personal › proyecto
La descripción · 4 reglas
Tercera persona — Analiza... nunca Te puedo ayudar...
Qué hace + cuándo usarla — ambas mitades obligatorias
Caso principal al inicio — si se trunca, se trunca por el final
Las palabras que tú escribes — no las del manual
Tope: 1,536 caracteres
Frontmatter útil
description: # lo único recomendado
when_to_use: # frases disparadoras extra
allowed-tools: # preaprueba, NO restringe
disallowed-tools: # retira herramientas
disable-model-invocation: # true = solo tú la invocas
user-invocable: # false = solo Claude la invoca
context: fork # subagente aislado
paths: # globs que limitan activación
⚠️ allowed-toolsconcede, no restringe. Se limpia con tu siguiente mensaje.
Grados de libertad
Grado
Cuándo
Cómo se escribe
Alta
Varios caminos sirven
Prosa, dirección general
Media
Hay patrón preferido
Plantilla o script con parámetros
Baja
Se puede romper algo
Comando exacto + prohibición de variarlo
Multiarchivo
mi-skill/
├── SKILL.md ← procedimiento
├── reference.md ← detalle, solo si hace falta
└── scripts/
└── revisar.sh ← se EJECUTA
La misma variable en el cuerpo y en la regla → no te pregunta.
Contexto dinámico
!`git diff HEAD`
!`npm run lint || true`
⚠️ Un comando que falla aborta toda la invocación. Usa || true si puede salir con error normal.
Diagnóstico
Comando
Qué dice
/skills
Qué hay cargado y de dónde
/doctor
Instalación y costo del listado
/context
Qué ocupa la ventana
claude --debug
Errores de parseo
claude plugin validate .claude/skills
Frontmatter roto en todo el dir
Descarte rápido
Pregunta: ¿qué skills tienes disponibles?
Resultado
Problema
Aparece con descripción
Redacción
Aparece sin descripción
Frontmatter no parsea
No aparece
Ubicación o visibilidad
Síntomas
Síntoma
Causa más probable
No se activa nunca
Descripción sin las palabras reales, o 1ª/2ª persona
Responde a /nombre pero nunca sola
Frontmatter mal formado
Se activa de más
Descripción demasiado amplia
No encuentra un archivo
Ruta absoluta o barra invertida
Salta solicitud de permiso
Falta declarar en allowed-tools
A veces sí, a veces no
Cadena de referencias de 2 niveles
Se aborta sin explicación
Un comando ! falló
El ciclo
CLAUDE A CLAUDE B
construyes sesión NUEVA
│ │
├─ "crea una skill ─────▶│ pides en lenguaje
│ que capture │ natural, SIN /
│ este patrón" │
│◀──────────────────────────┤ ¿se disparó?
│ corriges │
No se disparó → arregla la descripción
Se disparó mal → arregla el cuerpo
Qué capa usar
Contenido
Capa
Hecho permanente
CLAUDE.md
Procedimiento
Skill
Contexto aislado
Subagente / context: fork
Debe cumplirse siempre
Hook
Sistema externo
MCP
Desempates:
CLAUDE.md o skill → ¿cada conversación o solo algunas?
Skill o hook → ¿confío en que el modelo decida?
Antes de compartir
Descripción en 3ª persona, con qué hace y cuándo
Nombre del directorio en gerundio
Grado de libertad declarado y correcto
< 500 líneas, referencias a un nivel
allowed-tools pide lo mínimo
disable-model-invocation si tiene efectos
Sin secretos, sin datos de cliente, sin caducidad
Alguien más la corrió sin que le explicaras
Las 7 frases
La descripción está siempre en contexto. El cuerpo, no.
Si no se dispara, el problema está en la descripción.
La pregunta no es cuánto detalle. Es qué tan frágil es la tarea.
¿Hace falta siempre, a veces, o sin excepción?
Una skill en el repo es infraestructura del equipo.
Las fallas de sintaxis las encuentra el validador. Las descripciones malas, el uso.
Solo agrega lo que Claude no sabe ya.
El prompt destilador
Convierte una conversación en una skill reutilizable
Este es el componente que más vas a usar. Cada vez que resuelvas algo con Claude y pienses "esto lo voy a volver a necesitar", pega este prompt en esa misma conversación.
Funciona porque la conversación ya contiene todo lo que la skill necesita: el contexto que tuviste que dar, las correcciones que hiciste, y el resultado que aceptaste. Lo único que falta es destilarlo.
Cuándo usarlo
Terminaste una tarea y el resultado te sirvió
Tuviste que corregir a Claude dos o tres veces hasta que entendió
Diste contexto que vas a tener que volver a dar
No lo uses si la tarea fue trivial, si el resultado no te sirvió, o si es algo que harás una sola vez en la vida.
El prompt
Cópialo completo y pégalo al final de la conversación:
Vamos a destilar esta conversación en una skill de Claude Code reutilizable.
Antes de escribir nada, analiza lo que pasó aquí y respóndeme estas seis
preguntas en forma de lista corta:
1. ¿Cuál fue la tarea real que resolvimos? Enúnciala como una actividad,
en gerundio.
2. ¿Qué contexto tuve que darte yo que tú no sabías de entrada? Sepáralo en
(a) convenciones o criterios míos, y (b) hechos del proyecto.
3. ¿En qué momentos te corregí, y qué revela cada corrección sobre lo que
faltaba en la instrucción inicial?
4. ¿Qué parte de lo que te expliqué era realmente innecesaria porque ya lo
sabías?
5. ¿Qué tan frágil es esta tarea? ¿Varios caminos llegan a un buen resultado
(alta libertad), hay un patrón preferido (media), o un paso en falso
rompe algo (baja)?
6. ¿Con qué frases exactas pediría yo esta tarea la próxima vez? Dame tres
variantes, en mis palabras, no en lenguaje de manual.
Cuando termines ese análisis, construye el SKILL.md siguiendo estas reglas:
NOMBRE
- Gerundio que describe la actividad, en minúsculas con guiones
- Máximo 64 caracteres, sin las palabras "anthropic" ni "claude"
- Nunca genérico: nada de helper, utils, tools
DESCRIPCIÓN
- Fórmula obligatoria: [qué hace] + "Úsala cuando..." [cuándo usarla]
- Tercera persona: "Analiza...", jamás "Te puedo ayudar..."
- El caso principal al inicio, porque si se trunca se trunca por el final
- Los disparadores salen de las tres frases de la pregunta 6, no de
lenguaje formal
- Tope de 1536 caracteres
CUERPO
- Solo lo de la pregunta 2. Nada de lo de la pregunta 4
- Instrucciones permanentes, no pasos de un solo uso: el contenido se queda
en contexto turno tras turno
- Enuncia qué hacer, no narres por qué
- Si la pregunta 5 dio "baja", incluye el comando exacto y una prohibición
explícita de variarlo
- Por debajo de 100 líneas. Si necesitas más, dime qué movería yo a un
reference.md
FRONTMATTER
- allowed-tools solo si la skill ejecuta comandos, y con el patrón más
acotado posible
- disable-model-invocation: true si la tarea tiene efectos irreversibles
(desplegar, commitear, enviar, borrar)
- Cierra el cuerpo con: <!-- Grado de libertad: ALTA/MEDIA/BAJA -->
ENTRÉGAME
1. El análisis de las seis preguntas
2. El SKILL.md completo en un bloque de código
3. El comando mkdir para crear la carpeta
4. Tres evaluaciones para probarla: dos que DEBEN disparar la skill y una
que NO debe dispararla, con el resultado esperado de cada una
No me des alternativas ni variantes. Dame una versión y dime qué decisión
tomaste en los puntos donde había más de un camino.
Cómo se usa el resultado
Lee el análisis antes que el SKILL.md. Si el punto 2 trae cosas que
no son tuyas, o el punto 4 está vacío, el destilado va a salir inflado.
Crea la carpeta y pega el archivo.
Abre una sesión nueva y corre las tres evaluaciones que te dio.
La tercera —la que no debe disparar— es la que detecta descripciones demasiado amplias.
Si no se disparó, vuelve a la conversación original y pide:
`` No se disparó. Escribí exactamente esto: "<lo que escribiste>". Reescribe solo la descripción para que esa frase la active. ``
Si se disparó pero hizo algo distinto, el problema está en el cuerpo:
`` Se disparó pero <lo que hizo mal>. Corrige el cuerpo, no la descripción. ``
Variante corta
Para cuando la conversación fue simple y no necesitas el análisis:
Destila esta conversación en un SKILL.md de Claude Code.
Nombre en gerundio. Descripción en tercera persona con la fórmula
[qué hace] + "Úsala cuando..." usando las palabras que yo usé de verdad
en esta conversación, no lenguaje de manual. En el cuerpo pon solo el
contexto que tuve que darte y que no sabías; quita todo lo que ya sabías.
Menos de 60 líneas. Termina con un comentario del grado de libertad.
Dame el archivo y el mkdir. Nada más.
Variante para equipo
Cuando la skill va a .claude/skills/ de un proyecto compartido:
Destila esta conversación en un SKILL.md para el repositorio del equipo.
Aplica las mismas reglas de nombre, descripción y cuerpo que ya conoces,
y además:
- Quita cualquier cosa específica de mi máquina: rutas absolutas, nombres
de mis carpetas, mi configuración personal
- Quita credenciales, tokens, nombres de cliente y datos reales; reemplaza
por marcadores evidentes
- Las rutas a archivos de la skill usan ${CLAUDE_SKILL_DIR}
- Si asume algo del proyecto que no es obvio para alguien nuevo, decláralo
explícito en el cuerpo
- Redacta la descripción con las palabras que usaría CUALQUIERA del equipo,
no solo yo
Al final, dame el checklist de revisión que debería pasar antes de
mezclarse, con los puntos que esta skill específicamente podría fallar.
Por qué funciona
Las seis preguntas no son decorativas. Cada una ataca un modo de falla conocido:
Pregunta
Qué falla previene
1 · La tarea en gerundio
Nombres genéricos tipo helper
2 · Qué contexto diste
Skills vacías que no aportan nada
3 · Dónde corregiste
Instrucciones que omiten lo que importaba
4 · Qué era innecesario
Cuerpos inflados con costo recurrente
5 · Qué tan frágil
Nivel de detalle mal calibrado
6 · Con qué frases lo pedirías
Descripciones que nunca se activan
La sexta es la más importante. Es la única forma confiable de sacar las palabras reales en vez de las del manual, y las descripciones son la causa número uno de skills que no funcionan.
Tus primeros 30 días
Guía de adopción, para que esto no se quede en el webinar
La mayoría de quienes ven un webinar no aplican nada. No es falta de interés: es que no hay un siguiente paso concreto. Esta guía es el siguiente paso.
Día 1 · Hoy, 20 minutos
1 · Instala una skill del kit (5 min)
No escribas nada todavía. Copia una del kit y úsala:
Clona el repo y pídele a Claude que haga X. No te explico nada más.
Si necesita explicación, la descripción no fue suficiente. Ese es el dato que buscas, y es más valioso que un "sí, está bien".
Semana 4 · Mide y decide
Tres preguntas
¿Cuántas skills tienes en uso real, no escritas?
¿Cuál no has invocado en dos semanas?
¿Alguien más del equipo usa alguna?
Qué hacer con cada respuesta
Situación
Acción
Tienes 1 en uso
Suficiente. Es más de lo que tiene la mayoría
Tienes 3 o más
Revisa si alguna se solapa con otra
Una no se usó en 2 semanas
Bórrala. Una skill que miente es peor que ninguna
Nadie más las usa
Pregunta por qué. Suele ser que no saben que existen
Si llegaste hasta aquí
Instala la skill auditando-skills del kit y córrela sobre tus propias skills. Te va a encontrar cosas que no ves porque las escribiste tú.
Los tres errores que hacen que esto se abandone
1 · Empezar por la skill perfecta. La primera skill debe ser fea y útil. La perfecta nunca se termina.
2 · Escribir cinco de golpe. Sin uso real no sabes cuál sirve. Una, usada tres veces, enseña más que cinco sin estrenar.
3 · Mejorarla sin usarla. Es la trampa más común. Las mejoras que se te ocurren en abstracto casi nunca son las que el uso revela.
Cuando te atores
Problema
Dónde buscar
No se activa
Manual §7 y §21, o la tarjeta
No sé qué poner en el cuerpo
Prompt destilador, archivo 03
No sé si esto va en skill o en CLAUDE.md
Manual §23
Quiero ver un ejemplo real
Kit de skills, carpeta por categoría
Mi skill funciona pero está desordenada
Manual §10, partir una skill
Kit de skills
Trece skills listas para usar. Cada tarjeta muestra el archivo completo, con botón de copiar. Léelas antes de escribir las tuyas: muestran las decisiones, no solo las reglas.
Ciclo de desarrollo
Código, pruebas, revisión y documentación
SKILL.md
---
description: Documenta un módulo o componente explicando qué resuelve y cómo
se usa, no qué hace línea por línea. Úsala cuando el usuario pida
documentar código, escribir un README de módulo, o diga que algo no se
entiende.
allowed-tools: Read Grep Glob
---
## Instrucciones
La documentación responde tres preguntas, en este orden:
### 1 · ¿Qué problema resuelve?
Una o dos frases. Escríbelas para alguien que llega al repositorio por
primera vez y no sabe por qué existe este módulo.
### 2 · ¿Cómo se usa?
Un ejemplo completo que funcione al copiarlo. No un fragmento que asuma
configuración no documentada.
### 3 · ¿Qué hay que saber para no romperlo?
- Invariantes que el módulo asume
- Efectos secundarios no obvios
- Dependencias con otras partes del sistema
- Decisiones de diseño que parecen raras y no lo son
## Reglas
**No documentes lo que el código ya dice.** Un comentario que repite el
nombre de la función es ruido:
❌ # Obtiene el usuario por id
def obtener_usuario_por_id(id):
**Documenta lo que el código no puede decir:** por qué se eligió este
enfoque, qué se intentó antes, qué pasa si alguien cambia este orden.
**Sin información con fecha de caducidad.** Nada de "actualmente",
"por ahora", versiones concretas ni nombres de personas.
## Formato
Si el proyecto ya tiene un formato de documentación, síguelo.
Si no, usa markdown con esta estructura:
# <Nombre del módulo>
<Qué problema resuelve, 1-2 frases>
## Uso
<ejemplo completo y copiable>
## Consideraciones
<invariantes, efectos, decisiones de diseño>
<!-- Grado de libertad: ALTA. El criterio sobre qué merece documentarse es el valor. -->
SKILL.md
---
description: Genera pruebas para código existente siguiendo las convenciones
del proyecto, priorizando casos borde sobre el camino feliz. Úsala cuando
el usuario pida pruebas, tests, cobertura, o diga que le falta probar algo.
allowed-tools: Read Grep Glob
---
## Instrucciones
### 1 · Antes de escribir nada, mira cómo prueba el proyecto
Busca las pruebas existentes y detecta:
- Qué corredor de pruebas se usa
- Cómo se nombran los archivos y los casos
- Si usan fixtures, factories o datos en línea
- Cómo se manejan los dobles de prueba
**Sigue esas convenciones aunque prefieras otras.** Una prueba que no se
parece a las demás del proyecto es una prueba que nadie mantiene.
### 2 · Prioriza en este orden
1. **Casos borde**: colecciones vacías, nulos, valores límite, entradas malformadas
2. **Errores esperados**: qué pasa cuando la dependencia falla
3. **Camino feliz**: el caso normal
4. **Regresiones**: si el usuario menciona un bug, la prueba que lo habría atrapado
El camino feliz va tercero a propósito. Es el que ya funciona.
### 3 · Una aserción por concepto
Cada prueba verifica un comportamiento. Si necesitas "y además" para
describirla, son dos pruebas.
### 4 · Nombres que describen el comportamiento
❌ test_usuario_1
✅ test_rechaza_email_sin_arroba
El nombre debe decir qué se rompió cuando la prueba falla en CI, sin
tener que abrir el archivo.
## Qué NO hacer
- No pruebes implementación: si refactorizar rompe la prueba sin cambiar
comportamiento, la prueba está mal
- No uses dobles para lo que puedes probar de verdad
- No escribas pruebas que siempre pasan
## Salida
Escribe las pruebas en el archivo que corresponda según la convención del
proyecto. Al final, lista en dos o tres líneas qué quedó sin cubrir y por qué.
<!-- Grado de libertad: MEDIA. Convención del proyecto manda, contenido libre. -->
SKILL.md
---
description: Redacta el mensaje de commit a partir de los cambios preparados,
siguiendo commits convencionales. Úsala cuando el usuario pida un commit,
un mensaje de commit, o pregunte cómo describir su cambio.
allowed-tools: Read
---
## Cambios preparados
!`git diff --staged`
## Últimos commits del proyecto, para tomar el estilo
!`git log --oneline -12`
## Instrucciones
Estructura:
<tipo>(<alcance>): <resumen en imperativo, minúscula, sin punto>
<cuerpo opcional: por qué, no qué>
<pie opcional: refs, breaking changes>
Tipos: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `perf`, `build`, `ci`.
Reglas:
- Imperativo: "agrega", no "agregado" ni "agregando"
- Máximo 72 caracteres en la primera línea
- El cuerpo explica **por qué**. El qué ya está en el diff
- Un `BREAKING CHANGE:` en el pie si la interfaz pública cambió
Si los cambios preparados mezclan varios propósitos, dilo y propón cómo
separarlos en commits distintos, con qué archivos van en cada uno.
Si el estilo de los últimos commits difiere de commits convencionales,
sigue el del proyecto y señálalo en una línea.
Si no hay nada preparado, dilo y detente. No inventes un mensaje.
<!-- Grado de libertad: MEDIA. Formato fijo, redacción libre. -->
SKILL.md
---
description: Revisa un pull request o un diff contra las convenciones del
proyecto y señala lo que falta antes de pedir aprobación. Úsala cuando el
usuario pida revisar un PR, revisar su diff, pregunte si su cambio está
listo para subir, o mencione code review.
allowed-tools: Read Grep
---
## Cambios a revisar
!`git diff origin/main...HEAD 2>/dev/null || git diff HEAD`
## Archivos tocados
!`git diff --name-only origin/main...HEAD 2>/dev/null || git diff --name-only HEAD`
## Instrucciones
Revisa en este orden y detente en el primer bloqueante que encuentres.
### 1 · Bloqueantes
Reporta y detente si encuentras alguno:
- Credenciales, tokens o cadenas de conexión en el código
- Datos personales o de cliente en pruebas, fixtures o comentarios
- Cambios en interfaces públicas sin actualizar a quien las consume
- Borrado de pruebas sin reemplazo
### 2 · Correctitud
- Casos borde sin cubrir: colecciones vacías, nulos, valores límite
- Manejo de errores ausente en operaciones que pueden fallar
- Condiciones de carrera o acceso concurrente no protegido
- Aritmética con redondeo, divisiones por cero, desbordamientos
### 3 · Mantenibilidad
- Valores hardcodeados que deberían ser configuración
- Duplicación de lógica que ya existe en el proyecto
- Nombres que no dicen lo que la cosa hace
- Funciones que hacen más de una cosa
### 4 · Pruebas
- ¿Hay prueba para cada rama nueva de comportamiento?
- ¿Alguna prueba existente quedó desactualizada por este cambio?
- ¿Las pruebas prueban comportamiento o implementación?
## Formato del reporte
BLOQUEANTE <archivo>:<línea> — <qué está mal y por qué>
IMPORTANTE <archivo>:<línea> — <qué está mal>
MENOR <archivo>:<línea> — <sugerencia>
Ordena por severidad. Si no hay nada en una categoría, omítela en vez de
escribir "ninguno".
No reescribas el código. Señala y explica; quien decide es quien lo escribió.
Si el diff está vacío, dilo en una línea y detente.
<!-- Grado de libertad: ALTA. El criterio de revisión es el valor. -->
Gestión de proyectos
Minutas, riesgos, status y alcance
SKILL.md
---
description: Descompone un requerimiento o una propuesta en entregables,
tareas y supuestos, señalando lo que está indefinido. Úsala cuando el
usuario pida desglosar un alcance, hacer un WBS, estimar un proyecto,
o mencione que un requerimiento está muy general.
---
## Instrucciones
### 1 · Separa lo definido de lo asumido
Antes de desglosar nada, lista en dos columnas:
ESTÁ DEFINIDO ESTOY ASUMIENDO
<lo que dice el <lo que hace falta para
requerimiento> poder estimar y no está>
**La columna derecha es la más valiosa del ejercicio.** Cada supuesto ahí
es una conversación que hay que tener antes de comprometer una fecha.
### 2 · Desglosa por entregable, no por actividad
❌ Análisis, diseño, desarrollo, pruebas
✅ Módulo de autenticación funcionando en staging
Reporte de conciliación mensual generándose solo
Un entregable es algo que se puede enseñar y que alguien puede aceptar o
rechazar. "Análisis" no se puede aceptar.
### 3 · Tres niveles, no más
Entregable
└── Componente
└── Tarea (1 a 5 días)
Si una tarea pasa de cinco días, no está desglosada: está escondiendo algo.
Si necesitas un cuarto nivel, probablemente el entregable son dos.
### 4 · Marca las dependencias y lo que no controlas
Para cada entregable:
- De qué otro entregable depende
- Qué necesita de terceros: accesos, aprobaciones, datos, ambientes
- Qué es camino crítico
## Formato
## Entregable 1 · <nombre>
**Criterio de aceptación:** <cómo se sabe que está terminado>
**Depende de:** <entregable, o "nada">
**Requiere de terceros:** <qué y de quién, o "nada">
| Componente | Tarea | Días | Notas |
|---|---|---|---|
## Reglas
**Todo entregable lleva criterio de aceptación.** Sin él, el desglose no
sirve para negociar ni para cerrar.
**Los supuestos se escriben aunque sean obvios.** Lo obvio para ti no lo
es para quien firma.
**Lo que no se puede estimar se marca `REQUIERE DEFINICIÓN`** con la
pregunta concreta que hay que responder. No pongas un número inventado.
**No incluyas contingencia dentro de las tareas.** Va aparte, explícita,
para que sea negociable.
## Al final
<n> entregables · <n> tareas · <n> supuestos · <n> requieren definición
<!-- Grado de libertad: MEDIA. Método fijo, contenido depende del caso. -->
SKILL.md
---
description: Construye o actualiza el registro de riesgos de un proyecto con
probabilidad, impacto, mitigación y dueño. Úsala cuando el usuario mencione
riesgos, qué puede salir mal, un risk register, o pida evaluar un plan
antes de comprometerlo.
---
## Instrucciones
### 1 · Identifica por categoría
Recorre estas categorías. No todas aplican a todo proyecto, pero
recorrerlas evita puntos ciegos:
| Categoría | Pregunta que dispara el riesgo |
|---|---|
| **Alcance** | ¿Qué no está definido y alguien asume distinto? |
| **Técnico** | ¿Qué no hemos hecho antes? ¿De qué dependemos y no controlamos? |
| **Recursos** | ¿Quién es irreemplazable en este plan? |
| **Calendario** | ¿Qué depende de qué? ¿Dónde está el camino crítico? |
| **Externo** | ¿Qué proveedor, aprobación o tercero nos puede frenar? |
| **Operación** | ¿Qué pasa el día después de entregar? |
### 2 · Clasifica
**Probabilidad:** Alta (pasa en la mayoría de proyectos así) · Media (ha
pasado antes) · Baja (sería inusual).
**Impacto:** Alto (compromete el objetivo o la fecha) · Medio (cuesta
retrabajo significativo) · Bajo (molesta, se absorbe).
### 3 · Para cada riesgo, escribe la mitigación y el disparador
La mitigación es lo que haces **antes** de que pase. El disparador es la
señal observable de que está pasando.
Un riesgo sin disparador no se puede monitorear: nadie sabe cuándo activar
el plan.
## Formato
| # | Riesgo | Prob | Imp | Mitigación | Disparador | Dueño |
|---|---|---|---|---|---|---|
Ordena por impacto descendente, luego por probabilidad.
## Reglas
**Un riesgo se enuncia como causa y efecto**, no como un tema:
❌ Riesgo de integración
✅ Si la API del proveedor cambia sin aviso, la sincronización
se cae y perdemos un día en diagnosticar
**Los riesgos Alta/Alto llevan además plan de contingencia**: qué se hace
si ya pasó, no solo cómo evitarlo.
**Todo riesgo tiene dueño nombrado.** "El equipo" no es un dueño.
**Distingue riesgo de problema.** Si ya está pasando, no es riesgo: es un
problema y va a otra lista. Dilo explícitamente cuando lo detectes.
## Al final
<n> riesgos · <n> alta/alto (requieren contingencia) · <n> sin dueño
<!-- Grado de libertad: MEDIA. Marco fijo, contenido depende del proyecto. -->
SKILL.md
---
description: Redacta el reporte de avance de un proyecto para dirección,
con semáforo, desviaciones y decisiones que se necesitan. Úsala cuando el
usuario pida un status, un reporte de avance, un update para dirección,
o prepare un comité de seguimiento.
---
## Instrucciones
El reporte se escribe para alguien que tiene cinco minutos y varios
proyectos. Estructura:
# <Proyecto> · Avance al <fecha>
## Semáforo: 🟢 / 🟡 / 🔴
<Una frase que justifique el color. Si es amarillo o rojo, la frase
dice qué lo causa, no qué se está haciendo al respecto.>
## Lo que avanzó
- <entregable completado, con evidencia verificable>
## Lo que se movió
| Compromiso | Fecha original | Fecha nueva | Por qué |
|---|---|---|---|
## Decisiones que necesito
| Decisión | Quién decide | Para cuándo | Qué pasa si no se decide |
|---|---|---|---|
## Riesgos activos
- <solo los que cambiaron de estado desde el último reporte>
## Criterio del semáforo
| Color | Significa |
|---|---|
| 🟢 **Verde** | En fecha y alcance. Sin decisiones pendientes que bloqueen |
| 🟡 **Amarillo** | Hay desviación recuperable, o hay una decisión pendiente con fecha límite |
| 🔴 **Rojo** | La fecha o el alcance comprometido ya no son alcanzables sin cambiar algo |
**El semáforo se pone antes de escribir el resto.** Si lo decides al final,
vas a justificar el verde.
## Reglas
**Sin adjetivos de avance.** "Buen progreso" no dice nada. Escribe qué se
completó y qué falta.
**Lo que se movió va aunque sea incómodo.** Un status que oculta
deslizamientos deja de ser útil la segunda vez que alguien lo nota.
**Las decisiones pendientes son la parte más importante.** Es lo único que
el lector puede hacer por ti. Cada una lleva fecha límite y consecuencia
de no decidir.
**No repitas el reporte anterior.** Solo lo que cambió.
**Si un dato no lo tienes, escribe `SIN DATO`.** No estimes.
<!-- Grado de libertad: MEDIA. Estructura fija, contenido libre. -->
SKILL.md
---
description: Convierte notas crudas de una reunión en una minuta con acuerdos,
responsables y fechas. Úsala cuando el usuario pegue notas de junta, pida
una minuta, un acta, un resumen de reunión, o pregunte en qué quedamos.
---
## Instrucciones
Recibes notas desordenadas. Produce una minuta con esta estructura:
# <Tema> · <fecha>
**Asistentes:** <lista, o "no registrados">
## Decisiones
- <qué se decidió> — decidido por <quién>
## Acuerdos
| Qué | Quién | Para cuándo |
|---|---|---|
| <acción concreta, en imperativo> | <nombre> | <fecha o "sin fecha"> |
## Temas abiertos
- <lo que quedó sin resolver y quién lo retoma>
## Contexto relevante
<solo si hay algo que alguien ausente necesitaría para entender lo anterior>
## Reglas
**Separa decisión de acuerdo.** Una decisión es algo que ya se resolvió.
Un acuerdo es algo que alguien va a hacer. Confundirlos es el error más
común en las minutas.
**Todo acuerdo necesita dueño.** Si las notas no dicen quién, escribe
`SIN DUEÑO` en mayúsculas. Es información, no un hueco.
**Toda fecha se escribe explícita.** "La próxima semana" se convierte en
la fecha concreta. Si no puedes calcularla, escribe `SIN FECHA`.
**No inventes.** Si las notas son ambiguas sobre quién dijo qué o en qué
se quedó, escribe la ambigüedad tal cual: "queda pendiente confirmar si X
o Y". No resuelvas por tu cuenta lo que la reunión no resolvió.
**Omite lo que no aporta.** Una minuta no es una transcripción. Si algo
se discutió pero no produjo decisión, acuerdo ni tema abierto, no va.
## Al final
Agrega una línea con el conteo:
<n> decisiones · <n> acuerdos (<n> sin dueño, <n> sin fecha) · <n> temas abiertos
Los sin dueño y sin fecha son la parte accionable: quien lee la minuta
sabe qué tiene que cerrar.
<!-- Grado de libertad: MEDIA. Estructura fija, juicio libre sobre qué entra. -->
Calidad documental
Validación de entregables y propuestas
SKILL.md
---
description: Revisa una propuesta técnico-comercial contra los requisitos de
las bases y marca cada punto sin evidencia. Úsala cuando el usuario
mencione propuesta, licitación, bases, anexo técnico, matriz de
cumplimiento, o pida revisar antes de entregar.
allowed-tools: Read Grep
---
## Instrucciones
### 1 · Extrae los requisitos
Si el usuario dio las bases o el anexo técnico, extrae cada requisito como
una línea verificable. Si solo dio la propuesta, dilo y pide las bases: sin
ellas esto es una revisión de estilo, no de cumplimiento.
Numera los requisitos con la numeración del documento original, no con una
propia. Quien evalúa busca por su número.
### 2 · Para cada requisito, encuentra la evidencia
| Estado | Significa |
|---|---|
| **CUMPLE** | La propuesta lo atiende explícitamente y se puede señalar dónde |
| **PARCIAL** | Lo menciona pero no lo demuestra, o lo atiende a medias |
| **NO CUMPLE** | No aparece |
| **AMBIGUO** | El requisito se puede interpretar de dos formas y la propuesta elige una sin decirlo |
La evidencia es una referencia concreta: sección y página. "Se aborda en
la propuesta" no es evidencia.
### 3 · Revisa los riesgos de compromiso
Aparte del cumplimiento, marca:
- Niveles de servicio aceptados sin reserva
- Penalizaciones sin tope
- Fechas comprometidas sin condicionante
- Alcance que excede lo que las bases piden (regalar trabajo también es un riesgo)
- Cifras que no cuadran entre el apartado técnico y el económico
### 4 · Revisa la consistencia entre apartados
Es donde más se cae una propuesta:
- ¿El perfil que promete el apartado técnico está costeado en el económico?
- ¿Los plazos del cronograma coinciden con los del texto?
- ¿La razón social, RFC y datos fiscales son los mismos en todos los anexos?
- ¿Las firmas requeridas están identificadas?
## Formato
## Matriz de cumplimiento
| Req. | Descripción | Estado | Evidencia | Acción |
|---|---|---|---|---|
## Riesgos de compromiso
| Riesgo | Dónde | Severidad | Recomendación |
|---|---|---|---|
## Inconsistencias entre apartados
| Qué | Dice en A | Dice en B |
|---|---|---|
Cierra con:
<n> requisitos · <n> cumple · <n> parcial · <n> no cumple · <n> ambiguo
VEREDICTO: <entregable / requiere corrección>
<!-- Grado de libertad: MEDIA. Método fijo, criterio libre. -->
SKILL.md
---
description: Valida que un documento entregable cumpla los criterios de
completitud, consistencia y formato antes de enviarlo al cliente. Úsala
cuando el usuario pida revisar un documento, validar un entregable,
pregunte si un documento está listo para enviar, o mencione control de
calidad documental.
allowed-tools: Read Grep Bash(bash ${CLAUDE_SKILL_DIR}/scripts/*)
---
## Instrucciones
### 1 · Verificación mecánica primero
bash ${CLAUDE_SKILL_DIR}/scripts/verificar.sh <archivo>
El script detecta marcadores sin llenar, referencias rotas y secciones
vacías. Lo que reporta son hechos, no opiniones: corrígelos antes de
pasar a la revisión de contenido.
### 2 · Completitud
Para cada sección del documento:
- ¿Existe?
- ¿Tiene contenido real o solo un encabezado?
- ¿Contiene marcadores sin llenar: `TODO`, `XXX`, `[pendiente]`, `<...>`, `Lorem`?
- ¿Las tablas tienen todas sus celdas?
### 3 · Consistencia
- **Terminología**: ¿el mismo concepto se llama igual en todo el documento?
- **Cifras**: ¿los totales suman? ¿el mismo dato aparece igual en todos lados?
- **Fechas**: ¿son coherentes entre sí? ¿alguna está en el pasado sin querer?
- **Nombres**: ¿la razón social, los nombres propios y los cargos están bien escritos y son los mismos en todo el documento?
- **Referencias cruzadas**: ¿"ver sección 4.2" apunta a algo que existe?
### 4 · Riesgo de compromiso
Esta es la parte que más cuesta cuando falla. Marca:
- Compromisos de fecha sin condicionante
- Cifras sin fuente ni supuesto declarado
- Afirmaciones absolutas: "garantizamos", "siempre", "en todos los casos"
- Alcance que excede lo acordado
- Penalizaciones o niveles de servicio aceptados implícitamente
### 5 · Formato
- Jerarquía de encabezados sin saltos de nivel
- Numeración continua en listas y secciones
- Unidades y formato numérico consistentes
- Tablas con encabezado
## Formato del reporte
BLOQUEANTE <sección> — <qué falta y por qué impide enviar>
IMPORTANTE <sección> — <inconsistencia o riesgo>
MENOR <sección> — <formato o estilo>
Ordena por severidad. Omite las categorías vacías.
Cierra con un veredicto de una línea:
LISTO PARA ENVIAR / REQUIERE CORRECCIÓN (<n> bloqueantes)
No reescribas el documento. Señala y explica.
<!-- Grado de libertad: MEDIA. Checklist fijo, juicio libre sobre severidad. -->
scripts/verificar.sh
#!/usr/bin/env bash
# Verificación mecánica de un documento entregable.
# Reporta hechos. El juicio lo pone Claude.
set -uo pipefail
DOC="${1:-}"
if [ -z "$DOC" ] || [ ! -f "$DOC" ]; then
echo "USO: verificar.sh <archivo>"
exit 0
fi
echo "ARCHIVO: $DOC"
echo "LINEAS: $(wc -l < "$DOC" | tr -d ' ')"
echo "PALABRAS: $(wc -w < "$DOC" | tr -d ' ')"
echo ""
echo "== MARCADORES SIN LLENAR =="
if grep -nEi 'TODO|TBD|XXX+|lorem ipsum|\[pendiente\]|\[insertar|\[completar|<placeholder>|PENDIENTE DE' "$DOC"; then
:
else
echo " ninguno"
fi
echo ""
echo "== SECCIONES Y JERARQUIA =="
grep -nE '^#{1,6} ' "$DOC" | head -60 || echo " sin encabezados markdown"
echo ""
echo "== SECCIONES POSIBLEMENTE VACIAS =="
awk '
function nivel(s) { match(s, /^#+/); return RLENGTH }
/^#{1,6} / {
n = nivel($0)
# un encabezado sin cuerpo solo cuenta como vacio si el siguiente
# no es un subnivel suyo
if (titulo != "" && cuerpo == 0 && n <= prev) print " linea " nlin ": " titulo
titulo = $0; nlin = NR; cuerpo = 0; prev = n; next
}
/[^[:space:]]/ { if (titulo != "") cuerpo = 1 }
END { if (titulo != "" && cuerpo == 0) print " linea " nlin ": " titulo }
' "$DOC" | head -20
echo " (vacio = encabezado sin contenido ni subsecciones)"
echo ""
echo "== REFERENCIAS CRUZADAS DECLARADAS =="
grep -noEi '(ver|v[eé]ase|consulte|seg[uú]n) (la |el )?(secci|apartado|anexo|cap[ií]tulo|tabla|figura|cl[aá]usula)[^ ]* [0-9IVXivx][0-9IVXivxA-Za-z.]*' "$DOC" | head -25 || echo " ninguna"
echo ""
echo "== FECHAS ENCONTRADAS =="
grep -noE '[0-9]{1,2}[/-][0-9]{1,2}[/-][0-9]{2,4}|[0-9]{4}-[0-9]{2}-[0-9]{2}' "$DOC" | head -25 || echo " ninguna"
echo ""
echo "== LENGUAJE DE COMPROMISO ABSOLUTO =="
grep -nEi 'garantiza(mos|r|do)?|siempre|nunca|en todos los casos|sin excepci[oó]n|al 100%|totalmente' "$DOC" | head -25 || echo " ninguno"
echo ""
echo "== CIFRAS CON MONEDA O PORCENTAJE =="
grep -noE '\$[0-9][0-9,.]*|[0-9][0-9,.]*%|MXN ?[0-9][0-9,.]*|USD ?[0-9][0-9,.]*' "$DOC" | head -30 || echo " ninguna"
echo ""
echo "== TABLAS =="
echo " filas de tabla detectadas: $(grep -cE '^\|' "$DOC" 2>/dev/null; true)"
SKILL.md
---
description: Verifica que un conjunto de documentos relacionados diga lo
mismo entre sí: cifras, fechas, nombres y compromisos. Úsala cuando el
usuario tenga varios documentos de un mismo proyecto, mencione anexos,
o pregunte si todo cuadra entre sí.
allowed-tools: Read Grep Glob
---
## Instrucciones
Esta skill no revisa un documento: revisa **el conjunto**. El error que
busca es el que solo se ve comparando.
### 1 · Construye el inventario
Lista los documentos a comparar y qué rol tiene cada uno: contrato,
anexo técnico, anexo económico, cronograma, matriz de cumplimiento.
Si falta alguno que los demás referencian, dilo antes de seguir.
### 2 · Compara por dimensión
**Cifras.** Toma cada monto, porcentaje y cantidad, y busca sus
apariciones en todos los documentos. Un monto que aparece distinto en dos
lugares es un hallazgo bloqueante.
**Fechas.** Fechas de inicio, entrega, vigencia y hitos. Verifica además
que sean coherentes: que la entrega no sea anterior al inicio, que la
vigencia cubra el cronograma.
**Nombres y datos fiscales.** Razón social, RFC, domicilio, representante
legal, cargos. Un carácter distinto entre anexos es motivo de descalificación
en un proceso formal.
**Compromisos.** Niveles de servicio, plazos de respuesta, penalizaciones,
entregables. Lo prometido en un documento tiene que estar costeado y
calendarizado en los otros.
**Terminología.** Si el contrato dice "Prestador" y el anexo dice
"Proveedor", uno de los dos está mal.
### 3 · Clasifica cada hallazgo
| Severidad | Criterio |
|---|---|
| **BLOQUEANTE** | Cifras o datos fiscales que no coinciden; compromiso sin respaldo |
| **IMPORTANTE** | Fechas incoherentes; terminología inconsistente en cláusulas |
| **MENOR** | Formato, redondeo, estilo |
## Formato
| # | Dimensión | Hallazgo | Doc A dice | Doc B dice | Severidad |
|---|---|---|---|---|---|
Ordena por severidad.
Para cada bloqueante, agrega una línea con **cuál de los dos es el correcto**
si se puede determinar, o la pregunta que hay que hacer si no.
## Al final
<n> documentos comparados · <n> hallazgos
<n> bloqueantes · <n> importantes · <n> menores
Si no hay hallazgos, dilo en una línea. No inventes inconsistencias para
llenar el reporte.
<!-- Grado de libertad: ALTA. El criterio de qué cuenta como inconsistencia es el valor. -->
Meta
Skills que trabajan sobre skills
SKILL.md
---
description: Audita las skills de un directorio contra las reglas de
nomenclatura, descripción, estructura y seguridad, y reporta qué corregir.
Úsala cuando el usuario pida revisar sus skills, auditar el directorio de
skills, o pregunte por qué alguna de sus skills no funciona bien.
allowed-tools: Read Grep Glob
---
## Instrucciones
Recorre cada `SKILL.md` del directorio indicado y evalúa los siguientes
puntos. Reporta solo lo que falla.
### Frontmatter
- ¿El `---` de apertura es la **primera línea** del archivo? Si no, todo el
archivo se trata como contenido y la skill no tiene metadatos
- ¿Existe `description`?
- ¿`description` más `when_to_use` suman menos de 1,536 caracteres?
- Si hay `name`: solo minúsculas, números y guiones, máximo 64 caracteres,
sin las palabras `anthropic` ni `claude`
### Descripción
- ¿Está en tercera persona? Marca cualquier `te puedo`, `puedo ayudarte`,
`te ayudo`, `you can`, `I can`
- ¿Incluye la parte del **cuándo**? Busca `úsala cuando`, `use when`, o
equivalente
- ¿El caso principal está al inicio, o la primera oración es genérica?
- ¿Usa términos vagos como `documentos`, `archivos`, `datos`, `cosas`
sin acotar?
### Nombre del directorio
- ¿Está en gerundio y describe una actividad?
- ¿Es genérico? Marca `helper`, `utils`, `tools`, `misc`, `general`,
`mi-skill`, `test`
### Estructura
- ¿`SKILL.md` por debajo de 500 líneas?
- ¿Las referencias a otros archivos van a **un solo nivel**? Si
`reference.md` referencia a un tercer archivo, es una cadena
- ¿Hay rutas absolutas o con barra invertida?
- ¿Las rutas a archivos propios usan `${CLAUDE_SKILL_DIR}`?
- ¿Declara su grado de libertad en un comentario final?
### Seguridad
- ¿`allowed-tools` pide más de lo necesario? Un `Bash` pelado sin patrón
es un hallazgo
- Si la skill ejecuta acciones con efectos —desplegar, commitear, enviar,
borrar— ¿lleva `disable-model-invocation: true`?
- ¿Hay credenciales, tokens, rutas de infraestructura o datos de cliente?
- ¿Los comandos `!` que pueden salir con código distinto de cero llevan
`|| true`?
### Contenido
- ¿Explica cosas que Claude ya sabe?
- ¿Tiene información con fecha de caducidad: versiones concretas, precios,
nombres en puestos, "actualmente", "por ahora"?
- ¿La terminología es consistente de principio a fin?
- ¿Ofrece varias alternativas donde debería dar una?
### Solapamiento
Compara las descripciones entre sí. Dos skills cuyas descripciones cubren
el mismo territorio se estorban: se dispara la equivocada de forma
inconsistente. Repórtalo con las dos involucradas.
## Formato del reporte
## <nombre-de-la-skill>
BLOQUEANTE <qué está mal> → <cómo se corrige>
IMPORTANTE <qué está mal> → <cómo se corrige>
MENOR <qué está mal>
**Bloqueante:** frontmatter que no parsea, descripción sin el "cuándo",
descripción en 1ª o 2ª persona, secretos, acción con efectos sin
`disable-model-invocation`.
Si una skill no tiene hallazgos, escríbela con un `✓` y nada más.
Cierra con:
<n> skills · <n> sin hallazgos · <n> bloqueantes · <n> importantes
Solapamientos detectados: <lista de pares, o ninguno>
<!-- Grado de libertad: MEDIA. Checklist fijo, juicio libre sobre severidad. -->
SKILL.md
---
description: Convierte la conversación actual en una skill de Claude Code
reutilizable, analizando qué contexto hizo falta y qué correcciones
revelaron huecos. Úsala cuando el usuario diga que quiere convertir esto
en una skill, guardar este patrón, no volver a explicar lo mismo, o
destilar la conversación.
disable-model-invocation: true
---
> Esta skill se invoca manualmente con `/destilando-conversacion` al final
> de una conversación productiva.
## Fase 1 · Analiza antes de escribir
Responde estas seis preguntas en una lista corta. No escribas el SKILL.md
todavía.
1. **¿Cuál fue la tarea real?** Enúnciala como actividad, en gerundio.
2. **¿Qué contexto tuvo que dar el usuario** que tú no sabías de entrada?
Sepáralo en (a) convenciones o criterios suyos, y (b) hechos del proyecto.
3. **¿En qué momentos te corrigió**, y qué revela cada corrección sobre lo
que faltaba en la instrucción inicial?
4. **¿Qué parte de lo explicado era innecesaria** porque ya lo sabías?
5. **¿Qué tan frágil es la tarea?** Alta libertad si varios caminos llegan a
un buen resultado; media si hay un patrón preferido; baja si un paso en
falso rompe algo.
6. **¿Con qué frases exactas pediría el usuario esta tarea la próxima vez?**
Tres variantes, en sus palabras, no en lenguaje de manual.
## Fase 2 · Construye el SKILL.md
### Nombre
Gerundio que describe la actividad, minúsculas con guiones, máximo 64
caracteres, sin `anthropic` ni `claude`. Nunca genérico.
### Descripción
Fórmula: `[qué hace]. Úsala cuando [cuándo usarla].`
- Tercera persona, siempre
- Caso principal al inicio
- Los disparadores salen de la pregunta 6, no de lenguaje formal
- Tope de 1,536 caracteres
### Cuerpo
- Solo lo de la pregunta 2. Nada de lo de la pregunta 4
- Instrucciones permanentes, no pasos de un solo uso: el contenido se queda
en contexto turno tras turno
- Enuncia qué hacer, no narres por qué
- Si la pregunta 5 dio baja libertad: comando exacto y prohibición explícita
de variarlo
- Por debajo de 100 líneas
### Frontmatter
- `allowed-tools` solo si ejecuta comandos, con el patrón más acotado posible
- `disable-model-invocation: true` si la tarea tiene efectos irreversibles
- Cierra el cuerpo con `<!-- Grado de libertad: ALTA/MEDIA/BAJA -->`
## Fase 3 · Entrega
1. El análisis de las seis preguntas
2. El `SKILL.md` completo, en un bloque de código
3. El comando `mkdir -p` para crear la carpeta
4. Tres evaluaciones: dos que **deben** disparar la skill y una que **no**
debe dispararla, con el resultado esperado de cada una
No ofrezcas alternativas. Da una versión, y di qué decisión tomaste en los
puntos donde había más de un camino.
<!-- Grado de libertad: MEDIA. Método fijo, contenido depende de la conversación. -->
Plantillas
Tres puntos de partida en blanco, con los TODO donde va tu contenido.
Mínima
SKILL.md
---
description: TODO qué hace, en tercera persona, empezando por el caso
principal. Úsala cuando el usuario TODO — pon aquí las palabras que
escribirías tú de verdad al pedirlo, no lenguaje de manual.
---
## Instrucciones
TODO: el procedimiento, en imperativo, dirigido a Claude.
Solo escribe lo que Claude NO sabe ya. Si estás explicando qué es un
pull request o cómo funciona git, bórralo.
Recuerda: este contenido se queda en contexto turno tras turno. Cada
línea es costo recurrente. Enuncia qué hacer, no narres por qué.
<!-- Grado de libertad: TODO ALTA / MEDIA / BAJA -->
Multiarchivo
SKILL.md
---
description: TODO qué hace. Úsala cuando TODO.
allowed-tools: Read Grep Bash(bash ${CLAUDE_SKILL_DIR}/scripts/*)
---
## Instrucciones
1. Ejecuta la verificación:
bash ${CLAUDE_SKILL_DIR}/scripts/verificar.sh
2. TODO: qué hacer con el resultado.
3. Para el detalle de los casos especiales, consulta
${CLAUDE_SKILL_DIR}/reference.md
<!--
REGLAS DE ESTRUCTURA
· reference.md NO puede referenciar a un tercer archivo (un solo nivel)
· los scripts se EJECUTAN, no se leen
· rutas siempre con ${CLAUDE_SKILL_DIR}
· la misma variable en el cuerpo y en allowed-tools evita la
solicitud de permiso
· este archivo por debajo de 500 líneas
Grado de libertad: TODO
-->
reference.md
# Detalle de referencia
Esto se carga SOLO cuando Claude decide que le hace falta. Aquí va lo
voluminoso: tablas, casos especiales, catálogos, especificaciones.
## TODO: sección
TODO: contenido
<!-- No referencies otros archivos desde aquí. Un solo nivel. -->
scripts/verificar.sh
#!/usr/bin/env bash
# TODO: qué verifica este script.
#
# Reglas del buen script de skill:
# · sale con 0 aunque encuentre problemas; quien decide es Claude
# · imprime resultados legibles y estructurados, no volcados crudos
# · no depende de rutas absolutas de tu máquina
set -uo pipefail
echo "RESULTADO: TODO"
Baja libertad
SKILL.md
---
description: TODO qué hace. Úsala cuando TODO.
allowed-tools: Bash Read
disable-model-invocation: true
---
> Esta skill tiene efectos irreversibles. Solo se invoca manualmente.
> No se activa sola.
## Procedimiento
Ejecuta **exactamente** estos pasos, en este orden. No agregues banderas,
no combines pasos, no optimices.
### 1 · Verificación previa
bash ${CLAUDE_SKILL_DIR}/scripts/verificar-estado.sh
Si reporta algo distinto de `ESTADO: LIMPIO`, **detente** y reporta al
usuario qué encontró. No continúes.
### 2 · TODO: el comando exacto
TODO
No modifiques este comando ni agregues banderas, aunque el mensaje de
error lo sugiera.
### 3 · Si falla
Detente. Reporta el error completo al usuario. **No intentes corregirlo
por tu cuenta.** La reversión requiere decisiones que toma una persona.
<!-- Grado de libertad: BAJA. Puente angosto con precipicios. -->
scripts/verificar-estado.sh
#!/usr/bin/env bash
# Verificación previa. Falla ruidosamente por diseño.
set -uo pipefail
problemas=0
# TODO: agrega tus verificaciones
# if [ condición ]; then
# echo "PROBLEMA: descripción"
# problemas=$((problemas+1))
# fi
if [ "$problemas" -eq 0 ]; then
echo "ESTADO: LIMPIO"
else
echo "ESTADO: $problemas problema(s). No continuar."
fi