Estructurar memoria jerarquica CLAUDE.md user/team/module con at-imports y reglas condicionales por glob de ruta, optimizada para cache KV y precedencia por subpath.
Diseñar la memoria persistente de un proyecto Claude Code como una jerarquía explícita de archivos CLAUDE.md en tres niveles (user, team, module), conectados por @imports y complementados con reglas condicionales por glob de ruta. La meta de ingeniería: las reglas universales viven siempre en el prefijo cacheable (raíz estable), mientras que las heurísticas de un subárbol se cargan solo cuando el trabajo toca ese subárbol. El resultado en producción es una memoria que no crece sin control, que respeta la precedencia por subpath y que mantiene la economía de contexto (cache KV) en cada turno. [DOC]
CLAUDE.md del repo superó ~300 líneas y empieza a cargar reglas que solo aplican a un módulo. [SUPUESTO]frontend/**, infra/** o tests/**, y hoy viven en un único archivo global.No usarla cuando (anti-scope): el repo es un solo módulo sin subárboles divergentes (jerarquía = sobre-ingeniería); el problema real es contenido de reglas, no su ubicación; o se pide editar ~/.claude/CLAUDE.md global del usuario sin su confirmación explícita. [INFERENCIA]
CLAUDE.md actual; lista de subárboles con reglas propias; opcional assets/architecture-policy.json. [CONFIG]CLAUDE.md raíz lean + un module/CLAUDE.md por subárbol + bloque @imports + tabla de precedencia documentada + reporte reproducible vía script. [DOC]CLAUDE.md raíz de equipo solo con universales más un bloque de @imports hacia los módulos. Mantén el raíz lean y estable: es el prefijo que se cachea. Trade-off: cada línea volátil en el raíz invalida el prefijo KV de todos los turnos, no solo del afectado — por eso lo estable vive arriba. [INFERENCIA]module/CLAUDE.md con reglas activadas por glob (p. ej. apply to: "src/api/**"), no copiadas al raíz.~/.claude/CLAUDE.md (user scope) e impórtalas con @import; nunca al repo del equipo.# team CLAUDE.md (versioned, stable prefix)
@import ./CONVENTIONS.md # universal, always loaded
@import ~/.claude/CLAUDE.md # user prefs, not in repo
## Rules (universal)
- Conventional commits; never push to main directly.
## Path-scoped rules
- apply to: "frontend/**" -> @import ./frontend/CLAUDE.md
- apply to: "infra/**" -> @import ./infra/CLAUDE.md# frontend/CLAUDE.md (loaded only when work touches frontend/**)
- Use the design-system tokens; no inline styles.
- Co-locate tests as *.test.tsx next to the component.# CLAUDE.md (ANTI: monolithic, 2000 lines, always loaded)
- Use design-system tokens. # only relevant to frontend
- Prefer pnpm over npm. # personal preference, leaked into repo
- ABAP naming is Z-prefixed. # only relevant to one legacy module
- ...1990 more lines that load on every single turn, blowing the cache...Otros anti-patrones: glob no recursivo (frontend/* en vez de frontend/**) que omite subcarpetas; @import a una ruta volátil (timestamp, branch activo) que rompe el prefijo cada turno; precedencia ambigua entre dos globs que solapan sin regla de desempate. [INFERENCIA]
src/** y src/api/** ambos con reglas): el más específico gana; si no se puede ordenar por especificidad, declara el desempate explícito en la tabla de precedencia. [SUPUESTO]@imports debe ser un DAG, valídalo antes de escribir. [INFERENCIA]module/CLAUDE.md vacíos; solo donde haya ≥1 regla propia, o añades ruido al grafo. [INFERENCIA]Detente y reclasifica si: una regla aparece copiada en raíz y módulo (deduplica al nivel correcto); el raíz vuelve a crecer >300 líneas (señal de universal mal asignado); un @import apunta a algo no versionado dentro del repo de equipo (fuga de scope); o un glob no usa ** cuando el subárbol tiene subcarpetas. [INFERENCIA]
Marca la skill como lista solo si todo se cumple:
@imports estables y cache-friendly (sin valores por-turno en el prefijo). [INFERENCIA]**), no copiadas al raíz.@imports es un DAG sin imports rotos ni circulares.bash skills/claude-md-architecture/scripts/check.sh pasa en verde funcional (no solo sin error). [CONFIG]assets/architecture-schema.json y assets/architecture-policy.json para declarar la arquitectura antes de escribir archivos (ontology-first: declara, luego compila). [CONFIG]scripts/compile-claude-md-architecture.py <arquitectura.json> --output <reporte.md> para generar un reporte reproducible con CLAUDE.md raíz y módulos.bash skills/claude-md-architecture/scripts/check.sh antes de marcar la skill como lista.katas-08, katas-09.katas-hierarchical-claude-memory, katas-path-conditional-rules, context-window-engineering.fdad39c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.