¿Qué hace skanvil?
Objetivo
Cambiar bibliotecas de skills a través de la CLI skanvil, de modo que las carpetas de skills, el frontmatter de SKILL.md, el índice README y las convenciones de la biblioteca se mantengan consistentes y la validación se mantenga en verde.
Cuándo Activar Este Skill
- El repositorio tiene un
.skanvilrc.json, una carpetaskills/con archivosSKILL.md, oskanvilen supackage.json. - El usuario pide agregar, escribir, renombrar, mover, re-titular, re-describir, eliminar, listar, validar o indexar skills.
skanvil validate,npm testo CI falla con diagnósticos de skanvil.- El usuario quiere que los skills de una biblioteca estén disponibles para Claude Code, GitHub Copilot o Codex en otro proyecto.
Instrucciones
1. Oriéntate
- Lee
.skanvilrc.json. Define las categorías (id, prefijo de carpetaprefix, título del READMEtitle,aliases), las secciones requeridas, los marcadores de posición y las severidades de las reglas. Si falta el archivo, se usa el preset predeterminado:front-,back-,transversalsin prefijo (el predeterminado) y_internal. - Ejecuta
npx skanvil list --jsonpara ver cada skill con su categoría, presencia en README y validez. - Ejecuta
npx skanvil validate --jsonantes de cambiar cualquier cosa, para saber qué problemas ya existían.
2. Reglas de oro
- Nunca renombres, muevas o elimines carpetas de skills manualmente, y nunca edites manualmente el índice README. Usa
skanvil edit, que mantiene sincronizados la carpeta, elnamedel frontmatter, el# headingy la entrada del README, y revierte los cambios si falla. - Nunca crees carpetas de skills manualmente. Usa
skanvil add, que aplica el prefijo de categoría, la plantilla, los metadatos del frontmatter y la entrada del README. - Pasa siempre todas las opciones en shells no interactivos.
addnecesita--type,--namey--description.edit --removenecesita--yes. De lo contrario, el comando solicita entrada o falla sin un TTY. - Nunca ejecutes
skanvilsin argumentos oskanvil wizard. Abren un menú interactivo pensado para humanos. Usa los comandos explícitos a continuación. Si el usuario prefiere menús, sugiérele que ejecutenpx skanvilpor sí mismo. - Agrega
--jsoncuando necesites analizar la salida. Los datos van a stdout; las advertencias y errores van a stderr. - Ejecuta
npx skanvil validatedespués de cada cambio y termina sin errores. El código de salida1significa errores, o advertencias cuando se usa--strict. - Antepón
npxa cada comando a menos queskanvilesté en PATH. Usa-C <ruta>para apuntar a una biblioteca en otra carpeta.
3. Tareas comunes
Crear un skill y luego escribir su contenido.
npx skanvil add --type <categoría> --name "<nombre corto>" \
--description "<qué hace>. Úsalo cuando <situaciones desencadenantes>."
Luego edita skills/<prefijo><nombre>/SKILL.md:
- Completa cada sección requerida con contenido concreto y procesable.
- Reemplaza todas las oraciones genéricas de la plantilla. Hasta que lo hagas,
validatereporta una advertenciatemplate-unchanged, yvalidate --strict(elnpm testde la biblioteca) falla. - Mueve material largo a
references/, y enlaza solo a archivos que existan (broken-references).
Usa --no-scripts, --no-assets o --no-references cuando esas carpetas vayan a estar vacías. Usa --template <nombre> para una plantilla personalizada en .skanvil/templates/.
Renombrar o mover un skill.
npx skanvil edit <skill> --rename <nuevo-nombre> # el prefijo se re-aplica automáticamente
npx skanvil edit <skill> --type <otra-categoría> # nuevo prefijo, sección README, metadatos
npx skanvil edit <skill> --title "<Título>" --description "<texto>"
--rename toma el nombre base: edit front-a --rename b da front-b.
Eliminar un skill. Confírmalo primero con el usuario; esto es permanente.
npx skanvil edit <skill> --remove --yes
Corregir errores de validación.
- Ejecuta
npx skanvil doctor --fix. Repara entradas de README, discrepancias dename, tabulaciones en el frontmatter y conviertetoolsaallowed-tools. - Arregla lo que quede editando
SKILL.md. Usa la tabla de diagnóstico a continuación. - Ejecuta
npx skanvil validatede nuevo.
Reconstruir el índice README después de cambiar los títulos de categorías en .skanvilrc.json:
npx skanvil index # reescribe las secciones del índice
npx skanvil index --check # solo verificar (CI)
Instalar los skills en un proyecto.
npx skanvil sync <directorio-proyecto> -C <directorio-biblioteca> --target claude,copilot --dry-run # vista previa
npx skanvil sync <directorio-proyecto> -C <directorio-biblioteca> --target claude,copilot
npx skanvil sync --from @scope/package --target agents # paquete instalado
Destinos:
claudeinstala en.claude/skills;copilotinstala en.github/skills;agentsycodexinstalan en.agents/skills.- Una ruta personalizada debe ser una carpeta dentro del proyecto.
--global(sin directorio de proyecto) instala en~/.claude/skills,~/.copilot/skillso~/.agents/skillsdel usuario. Úsalo solo cuando el usuario pida skills disponibles en todos los proyectos.
Cómo se comporta sync:
- Nunca sobrescribe carpetas que no instaló.
- Elimina skills que se hayan quitado de la biblioteca.
- Omite skills con errores de validación a menos que se dé
--force. - Nunca publica skills
_internal.
Agregar o cambiar categorías. Edita categories en .skanvilrc.json:
- exactamente una categoría tiene
"default": truey sin prefijo; - cada otra categoría tiene un prefijo que es
_o kebab-case terminado en-; - ningún prefijo puede comenzar con otro prefijo.
Luego mueve los skills existentes con edit --type, y ejecuta skanvil index.
4. Escribe buen contenido de skill
descriptiondice qué hace el skill y cuándo usarlo, con las palabras clave desencadenantes que vería un agente. Debe tener como máximo 1024 caracteres.namees igual al nombre de la carpeta: letras minúsculas, dígitos y guiones simples, como máximo 64 caracteres.- Cuerpo: mantén
SKILL.mdpor debajo de 500 líneas. Escribe instrucciones como pasos numerados y verificables, y pon ejemplos, casos límite y listas de verificación largas enreferences/(un nivel de profundidad). - Marcadores de posición: nunca dejes texto de relleno. Cualquier entrada de
validation.placeholders(marcadores de tareas pendientes, texto en latín falso, notas "por decidir") falla la validación. metadata: solo valores de cadena, así que cita números, como enversion: "1.0".allowed-tools: una cadena separada por espacios, no una lista.
5. Diagnóstico → corrección
| Regla | Corrección |
|---|---|
readme-missing, readme-orphan, readme-section | npx skanvil doctor --fix |
name-matches-folder, name-required | doctor --fix, o edit --rename si el nombre de la carpeta está mal |
frontmatter-tabs, tools-field | doctor --fix |
frontmatter | Repara el YAML entre las líneas --- (cita valores que contengan : o #). |
required-sections | Agrega la ## Sección faltante listada en validation.requiredSections. |
placeholders | Reemplaza el texto marcador de posición con contenido real. |
description-length, max-lines | Acorta; mueve los detalles a references/. |
metadata-format | Cita valores que no sean cadenas. |
duplicate-name | Dos carpetas comparten un name: renombra una con edit --rename. |
broken-references | Crea el archivo referenciado, o arregla el enlace (las rutas son relativas al skill). |
template-unchanged | Reescribe las oraciones genéricas de la plantilla con instrucciones específicas del skill. |
Consulta references/REFERENCE.md para cada opción de comando, el esquema de configuración y las formas de salida JSON.
Formato de Salida
Informa al usuario:
- los comandos skanvil que ejecutaste;
- los skills creados, cambiados o eliminados, con sus nombres de carpeta;
- el resultado final de
skanvil validate(errores y advertencias), y cualquier cosa que quede para que él decida.
Criterios de Calidad
- Cada cambio estructural se realizó a través de
skanvil addoskanvil edit. No hay renombres de carpetas hechos a mano ni ediciones manuales del índice README. npx skanvil validateno reporta errores, ynpx skanvil index --checkpasa.- Los skills nuevos o editados tienen descripciones específicas con desencadenantes, y no tienen contenido de plantilla ni marcadores de posición.
- Las eliminaciones y sincronizaciones en otros proyectos fueron confirmadas con el usuario.