Fase 1
Inventario
56 skills · 8 reglas · 32 headings
✓
Fase 2
Análisis LLM
3 lotes temáticos · fusión cross-batch
✓
Fase 3
Revisión y Ejecución
5 candidatos · 4 aprobados · 1 omitido
✓
8
Ficheros de reglas (32 headings)
5
Candidatos identificados
Fase 1 — Inventario
SKILLS ESCANEADAS (muestra de 10 relevantes)
parallel-subagent-batch-merge
llm-memory-trust-boundary
llm-social-agent-anti-pattern
iterative-retrieval
continuous-agent-loop
agent-harness-construction
context-compaction-strategy
boundary-type-conversion
prompt-injection-defense
output-schema-validation
+46 skills adicionales en 7 categorías
FICHEROS DE REGLAS ACTUALES
security.md5 headings
coding-style.md6 headings
testing.md4 headings
performance.md3 headings
agent-patterns.md4 headings
data-handling.md3 headings
api-usage.md4 headings
output-formats.md3 headings
Fase 2 — Candidatos (Tabla Resumen)
| # |
Principio |
Veredicto |
Destino |
Confianza |
Estado |
| 1 |
Normalizar, validar tipos y sanitizar el output de un LLM antes de reutilizarlo en otro paso del pipeline |
Nueva Sección |
coding-style.md §LLM Output Validation |
Alta |
✓ Aplicado |
| 2 |
Definir condiciones de parada explícitas (max iteraciones + condición semántica) en todos los bucles de agente |
Nueva Sección |
agent-patterns.md §Stop Conditions |
Alta |
✓ Aplicado |
| 3 |
Compactar el contexto en los límites de fase, no a mitad de tarea; usar resúmenes estructurados, no truncación bruta |
Añadir |
performance.md §Context Window |
Alta |
✓ Aplicado |
| 4 |
Tratar el output de LLMs almacenado en memoria o knowledge stores como datos no confiables; sanitizar en escritura, validar en lectura |
Revisión |
security.md §Input Validation |
Alta |
✓ Aplicado |
| 5 |
Separar tipos de lógica de negocio de los tipos del framework de I/O en límites de sistema |
Demasiado Específico |
→ Ver skill: boundary-type-conversion |
Media |
Omitido |
Fase 2 — Detalles por Candidato
Evidencia (3 skills)
parallel-subagent-batch-merge §Output Merging
llm-social-agent-anti-pattern §Trust Boundary
output-schema-validation §Schema Check
Riesgo de Violación
Si el output del LLM no se normaliza antes de pasarlo al siguiente paso del pipeline, el drift de formato, los type mismatches o los errores de sintaxis rompen el procesamiento downstream silenciosamente.
Borrador Aplicado
## LLM Output Validation
- Normaliza siempre el output de un LLM (strip whitespace, lower/upper según contrato) antes de usarlo en el siguiente paso del pipeline.
- Valida el tipo esperado: si el contrato dice JSON, parsea y valida el schema antes de acceder a campos; si espera un número, convierte y maneja el fallo.
- Sanitiza el output cuando vaya a persistirse en base de datos, cola o contexto compartido entre agentes.
- Nunca asumas que el LLM respetó el formato: el mismo prompt puede devolver estructuras distintas en calls consecutivos.
Ver skill: parallel-subagent-batch-merge, output-schema-validation
Evidencia (4 skills)
iterative-retrieval §Loop Design
continuous-agent-loop §Guardian
agent-harness-construction §Safety
llm-social-agent-anti-pattern §Infinite Loop
Riesgo de Violación
Un bucle de agente sin stop-condition explícita puede consumir créditos ilimitadamente, entrar en estado degenerado o hacer llamadas API hasta el rate-limit; los LLMs no detectan esto por sí mismos.
Borrador Aplicado
## Stop Conditions
- Todo bucle de agente DEBE tener: (1) un límite numérico máximo de iteraciones, y (2) una condición semántica de éxito.
- Declara las condiciones ANTES del primer step del loop, no al final; el código que comprueba la condición de parada no debe estar dentro del LLM.
- Loggea el motivo de parada (límite alcanzado vs. condición cumplida) en cada ejecución para diagnóstico posterior.
- En continuous agents: implementa un guardian externo (proceso supervisor) independiente del propio agente.
Ver skill: iterative-retrieval, continuous-agent-loop, agent-harness-construction
Evidencia (2 skills)
context-compaction-strategy §Phase Boundaries
parallel-subagent-batch-merge §Context Budget
Riesgo de Violación
Compactar a mitad de tarea trunca contexto activo y provoca que el LLM pierda referencias recientes; compactar tarde hace que tareas largas fallen al llegar al límite de tokens sin advertencia.
Borrador Añadido a §Context Window
- Compacta el contexto en los límites de fase (entre Fase N y Fase N+1), nunca a mitad de una tarea activa.
- Usa resúmenes estructurados (JSON o bullet points con campos fijos) en lugar de truncación bruta; preserva los datos críticos explícitamente.
- Incluye un presupuesto de tokens en el diseño del agente: reserva headroom (≥20%) para el output de la fase final.
Ver skill: context-compaction-strategy
Evidencia (2 skills)
llm-memory-trust-boundary §Trust Model
prompt-injection-defense §Stored Prompts
Razón de la Revisión
security.md §Input Validation solo cubría validación de input humano. El vector de prompt injection acumulado (LLM output → memoria → re-inyección) no estaba representado, aunque es el riesgo predominante en agentes multi-step.
Antes / Después
ANTES (security.md §Input Validation)
Sanitiza siempre el input del usuario
antes de usarlo en prompts o queries.
Usa allowlists cuando sea posible.
Evita interpolación directa de strings
de usuario en SQL o comandos shell.
DESPUÉS (con adición)
Sanitiza siempre el input del usuario
antes de usarlo en prompts o queries.
Usa allowlists cuando sea posible.
Evita interpolación directa de strings
de usuario en SQL o comandos shell.
## LLM Output Trust Boundary
Trata el output de un LLM como dato
no confiable cuando se almacene en
memoria, knowledge store o contexto
compartido. Sanitiza en escritura;
valida en lectura antes de re-inyectar
en otro prompt.
Ver skill: llm-memory-trust-boundary
Este principio es válido pero aplica únicamente en contextos con sistemas de tipos explícitos (TypeScript, Python con Pydantic). Mantener en skill boundary-type-conversion; no elevar a regla global.
Fase 3 — Log de Ejecución
$ /rules-distill
──── Rules Distillation — Phase 1: Inventory
Skills: 56 files scanned
Rules: 8 files (32 headings indexed)
Proceeding to cross-read analysis...
[Subagent: Lote 1 — agent/meta skills (22 skills) ...]
[Subagent: Lote 2 — coding/pattern skills (18 skills) ...]
[Subagent: Lote 3 — data/security skills (16 skills) ...]
[Cross-batch merge: 1 duplicado eliminado, 1 candidato cross-batch promovido]
Candidatos: 5 identificados · Usuario aprobó 1,2,3,4 · Omitido 5
✓ Aplicado: coding-style.md §LLM Output Validation09:45:03Z
✓ Aplicado: agent-patterns.md §Stop Conditions09:45:05Z
✓ Aplicado: performance.md §Context Window (append)09:45:07Z
✓ Revisado: security.md §Input Validation (+LLM Output Trust Boundary)09:45:09Z
✗ Omitido: Boundary Type Conversion (demasiado específico)09:45:09Z
● Results saved to ~/.claude/skills/destilar-reglas-desde-skills/results.json09:45:12Z
results.json (extracto)
{
"distilled_at": "2026-06-18T09:45:12Z",
"skills_scanned": 56,
"rules_scanned": 8,
"candidates": {
"llm-output-validation": {
"principle": "Normalize, type-check, and sanitize LLM output before reuse in pipeline",
"verdict": "New Section",
"target": "coding-style.md §LLM Output Validation",
"evidence": ["parallel-subagent-batch-merge", "output-schema-validation"],
"status": "applied"
},
"agent-stop-conditions": {
"principle": "Define explicit stop conditions (max-iter + semantic) for all agent loops",
"verdict": "New Section",
"target": "agent-patterns.md §Stop Conditions",
"evidence": ["iterative-retrieval", "continuous-agent-loop", "agent-harness-construction"],
"status": "applied"
},
"context-phase-compaction": {
"principle": "Compact context at phase boundaries, not mid-task; use structured summaries",
"verdict": "Append",
"target": "performance.md §Context Window",
"evidence": ["context-compaction-strategy", "parallel-subagent-batch-merge"],
"status": "applied"
},
"llm-output-trust-boundary": {
"principle": "Treat LLM output as untrusted when stored in memory or knowledge stores",
"verdict": "Revise",
"target": "security.md §Input Validation",
"evidence": ["llm-memory-trust-boundary", "prompt-injection-defense"],
"status": "applied"
},
"boundary-type-separation": {
"principle": "Separate business logic types from I/O framework types at system boundaries",
"verdict": "Too Specific",
"target": "skill: boundary-type-conversion",
"evidence": ["boundary-type-conversion"],
"status": "skipped"
}
}
}