¿Qué hace skill-stocktake?
Comando Slash (/skill-stocktake) que audita todas las habilidades y comandos de Claude usando una lista de verificación de calidad y un juicio holístico de IA. Soporta dos modos: Quick Scan para habilidades modificadas recientemente y Full Stocktake para una revisión completa.
Alcance
El comando apunta a las siguientes rutas relativas al directorio donde se invoca:
| Ruta | Descripción |
|---|---|
~/.claude/skills/ | Habilidades globales (todos los proyectos) |
{cwd}/.claude/skills/ | Habilidades a nivel de proyecto (si el directorio existe) |
Al inicio de la Fase 1, el comando enumera explícitamente qué rutas fueron encontradas y escaneadas.
Apuntar a un proyecto específico
Para incluir habilidades a nivel de proyecto, ejecute desde el directorio raíz del proyecto:
cd ~/ruta/a/mi-proyecto
/skill-stocktake
Si el proyecto no tiene un directorio .claude/skills/, solo se evaluarán las habilidades y comandos globales.
Modos
| Modo | Activación | Duración |
|---|---|---|
| Quick Scan | results.json existe (por defecto) | 5–10 min |
| Full Stocktake | results.json ausente, o /skill-stocktake full | 20–30 min |
Caché de resultados: ~/.claude/skills/skill-stocktake/results.json
Flujo de Quick Scan
Reevalúa solo las habilidades que han cambiado desde la última ejecución (5–10 min).
- Leer
~/.claude/skills/skill-stocktake/results.json - Ejecutar:
bash ~/.claude/skills/skill-stocktake/scripts/quick-diff.sh \ ~/.claude/skills/skill-stocktake/results.json(El directorio del proyecto se detecta automáticamente desde$PWD/.claude/skills; páselo explícitamente solo si es necesario) - Si la salida es
[]: reportar "Sin cambios desde la última ejecución." y detenerse - Reevaluar solo esos archivos modificados usando los mismos criterios de la Fase 2
- Conservar las habilidades sin cambios de los resultados anteriores
- Generar solo el diff de salida
- Ejecutar:
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \ ~/.claude/skills/skill-stocktake/results.json <<< "$EVAL_RESULTS"
Flujo de Full Stocktake
Fase 1 — Inventario
Ejecutar: bash ~/.claude/skills/skill-stocktake/scripts/scan.sh
El script enumera los archivos de habilidades, extrae el frontmatter y recopila las marcas de tiempo UTC.
El directorio del proyecto se detecta automáticamente desde $PWD/.claude/skills; páselo explícitamente solo si es necesario.
Presentar el resumen del escaneo y la tabla de inventario desde la salida del script:
Escaneando:
✓ ~/.claude/skills/ (17 archivos)
✗ {cwd}/.claude/skills/ (no encontrado — solo habilidades globales)
| Habilidad | Uso 7d | Uso 30d | Descripción |
|---|
Fase 2 — Evaluación de Calidad
Lanzar un subagente de la herramienta Agent (agente de propósito general) con el inventario completo y la lista de verificación:
Agent(
subagent_type="general-purpose",
prompt="
Evalúe el siguiente inventario de habilidades contra la lista de verificación.
[INVENTARIO]
[LISTA DE VERIFICACIÓN]
Devuelva JSON para cada habilidad:
{ "verdict": "Keep"|"Improve"|"Update"|"Retire"|"Merge into [X]", "reason": "..." }
"
)
El subagente lee cada habilidad, aplica la lista de verificación y devuelve JSON por habilidad:
{ "verdict": "Keep"|"Improve"|"Update"|"Retire"|"Merge into [X]", "reason": "..." }
Guía de fragmentación: Procesar ~20 habilidades por invocación de subagente para mantener el contexto manejable. Guardar resultados intermedios en results.json (status: "in_progress") después de cada fragmento.
Después de evaluar todas las habilidades: establecer status: "completed", proceder a la Fase 3.
Detección de reanudación: Si se encuentra status: "in_progress" al inicio, reanudar desde la primera habilidad no evaluada.
Cada habilidad se evalúa contra esta lista de verificación:
- [ ] Se verificó la superposición de contenido con otras habilidades
- [ ] Se verificó la superposición con MEMORY.md / CLAUDE.md
- [ ] Se verificó la actualidad de las referencias técnicas (usar WebSearch si hay nombres de herramientas / flags de CLI / APIs presentes)
- [ ] Se consideró la frecuencia de uso
Criterios de veredicto:
| Veredicto | Significado |
|---|---|
| Keep | Útil y actual |
| Improve | Vale la pena conservar, pero se necesitan mejoras específicas |
| Update | La tecnología referenciada está desactualizada (verificar con WebSearch) |
| Retire | Baja calidad, obsoleta o asimétrica en costo |
| Merge into [X] | Superposición sustancial con otra habilidad; nombrar el destino de la fusión |
La evaluación es juicio holístico de IA — no una rúbrica numérica. Dimensiones guía:
- Accionabilidad: ejemplos de código, comandos o pasos que permitan actuar de inmediato
- Ajuste de alcance: nombre, disparador y contenido alineados; ni demasiado amplio ni demasiado estrecho
- Singularidad: valor no reemplazable por MEMORY.md / CLAUDE.md / otra habilidad
- Actualidad: las referencias técnicas funcionan en el entorno actual
Requisitos de calidad del motivo — el campo reason debe ser autocontenido y permitir la toma de decisiones:
- NO escribir "sin cambios" solo — siempre reafirmar la evidencia central
- Para Retire: indicar (1) qué defecto específico se encontró, (2) qué cubre la misma necesidad en su lugar
- Malo:
"Reemplazado" - Bueno:
"disable-model-invocation: true ya establecido; reemplazado por continuous-learning-v2 que cubre todos los mismos patrones más puntuación de confianza. No queda contenido único."
- Malo:
- Para Merge: nombrar el destino y describir qué contenido integrar
- Malo:
"Se superpone con X" - Bueno:
"Contenido delgado de 42 líneas; el Paso 4 de chatlog-to-article ya cubre el mismo flujo de trabajo. Integrar el consejo de 'ángulo del artículo' como una nota en esa habilidad."
- Malo:
- Para Improve: describir el cambio específico necesario (qué sección, qué acción, tamaño objetivo si corresponde)
- Malo:
"Demasiado largo" - Bueno:
"276 líneas; la sección 'Comparación de frameworks' (L80–140) duplica ai-era-architecture-principles; eliminarla para alcanzar ~150 líneas."
- Malo:
- Para Keep (cambio solo de mtime en Quick Scan): reafirmar la justificación del veredicto original, no escribir "sin cambios"
- Malo:
"Sin cambios" - Bueno:
"mtime actualizado pero contenido sin cambios. Referencia única de Python importada explícitamente por rules/python/; no se encontró superposición."
- Malo:
Fase 3 — Tabla Resumen
| Habilidad | Uso 7d | Veredicto | Motivo |
|---|
Fase 4 — Consolidación
- Retire / Merge: presentar justificación detallada por archivo antes de confirmar con el usuario:
- Qué problema específico se encontró (superposición, obsolescencia, referencias rotas, etc.)
- Qué alternativa cubre la misma funcionalidad (para Retire: qué habilidad/regla existente; para Merge: el archivo destino y qué contenido integrar)
- Impacto de la eliminación (habilidades dependientes, referencias en MEMORY.md o flujos de trabajo afectados)
- Improve: presentar sugerencias de mejora específicas con justificación:
- Qué cambiar y por qué (ej.: "reducir 430→200 líneas porque las secciones X/Y duplican python-patterns")
- El usuario decide si actuar
- Update: presentar contenido actualizado con fuentes verificadas
- Verificar el número de líneas de MEMORY.md; proponer compresión si >100 líneas
Esquema del Archivo de Resultados
~/.claude/skills/skill-stocktake/results.json:
evaluated_at: Debe establecerse en la hora UTC real de finalización de la evaluación.
Obtener mediante Bash: date -u +%Y-%m-%dT%H:%M:%SZ. Nunca usar una aproximación solo de fecha como T00:00:00Z.
{
"evaluated_at": "2026-02-21T10:00:00Z",
"mode": "full",
"batch_progress": {
"total": 80,
"evaluated": 80,
"status": "completed"
},
"skills": {
"skill-name": {
"path": "~/.claude/skills/skill-name/SKILL.md",
"verdict": "Keep",
"reason": "Valor concreto, accionable y único para el flujo de trabajo X",
"mtime": "2026-01-15T08:30:00Z"
}
}
}
Notas
- La evaluación es ciega: la misma lista de verificación se aplica a todas las habilidades independientemente de su origen (ECC, autoescritas, extraídas automáticamente)
- Las operaciones de archivo / eliminación siempre requieren confirmación explícita del usuario
- No hay ramificación de veredicto por origen de habilidad