CCAR-F · Claude Code
Reglas que se cargan según el archivo
Las convenciones de Terraform no le sirven a nadie que está editando un componente de React, y las de los tests no hacen falta al tocar la configuración del build. Si todo vive en el CLAUDE.md raíz, todo se carga en cada sesión y gasta contexto. Las reglas con alcance por ruta resuelven eso.
Cómo se escribe
Una regla con alcance por ruta (path-scoped rule) es un archivo de .claude/rules/ con un campo paths en su frontmatter YAML (YAML frontmatter):
---
paths:
- "terraform/**/*"
- "**/*.tf"
---
# Convenciones de Terraform
- Los recursos se nombran con el prefijo del entorno.
La regla se carga solo cuando Claude lee o edita un archivo que coincide con alguno de los globs. Eso es carga condicional (conditional loading): menos contexto irrelevante y menos tokens en el resto de las tareas. No hay que invocarla ni reiniciar nada.
Sin paths, la regla se carga siempre, igual que CLAUDE.md. Y si el YAML está roto, se ignora el frontmatter y la regla queda como si no tuviera paths.
Cómo leer un glob
Un patrón glob (glob pattern) describe rutas:
| Patrón | Coincide con |
|---|---|
**/*.test.tsx |
Todos los tests .tsx, en cualquier carpeta |
src/api/**/* |
Todo lo que está bajo src/api/, subcarpetas incluidas |
src/*.ts |
Solo los .ts directamente en src/, sin subcarpetas |
src/components/*.tsx |
Solo los directos de esa carpeta: src/components/forms/Input.tsx queda afuera |
* no cruza carpetas; ** sí. El patrón se lee desde la raíz del proyecto, así que tests/src/x.ts no coincide con src/*.ts. Y paths admite varios globs: para extender una regla de API a lib/api/, se suma "lib/api/**/*" a la lista, sin duplicar la regla.
Reglas por ruta o CLAUDE.md de subcarpeta
Un CLAUDE.md dentro de una carpeta solo cubre esa carpeta. Sirve cuando la convención es de un lugar (un paquete del monorepo). Pero si los tests están al lado del código que prueban, repartidos en más de 50 carpetas, harían falta 50 copias que se desvían entre sí. Una sola regla con paths: ["**/*.test.tsx", "**/*.test.ts"] los cubre a todos, estén donde estén. Lo mismo con un repo que mezcla Python y Go: python.md con **/*.py y go.md con **/*.go.
Qué va dónde
- Vale para toda tarea (build, commits, normas generales de revisión): CLAUDE.md raíz o una regla sin
paths. - Depende del archivo que se edita (migraciones, Terraform, tests): regla con
paths. - Se usa a veces y a pedido: skill.
Una trampa sutil: mover las normas generales a reglas con globs específicos deja afuera los archivos que no coinciden con ninguno, como un src/utils/format.ts. Lo universal se queda en la raíz o usa **/*.
Las trampas típicas
- Consolidar todo en el CLAUDE.md raíz “con un título por área” y confiar en que Claude infiera qué sección aplica.
- Una skill por tipo de código: depende de que alguien la invoque.
- Un CLAUDE.md por carpeta para archivos repartidos por todo el repo.
- Un glob que no coincide:
tests/**/*.tsno carga la regla parauser.spec.js. - Usar
/memorypara “activar” una regla: solo muestra lo que hay.
En el examen
Si el escenario dice “archivos repartidos por todo el código”, “sin importar la carpeta” o “solo al editar esos archivos”, la respuesta es .claude/rules/ con paths. Revisá los globs con cuidado: * contra ** y la extensión son el detalle que decide.
Pregunta rápida
Una pregunta del simulacro sobre este dominio. Cuenta para tu progreso.
A data-platform team of nine engineers wants to standardise how pull requests are reviewed with Claude Code. They want a /review command that is available to everyone who clones the repository, with the same steps for all reviewers, and that is updated through normal pull requests.
Separately, one senior developer wants a personal /brainstorm skill. It explores the codebase broadly and produces a long, verbose analysis: file lists, dependency notes, half-formed ideas. When he tried it as a plain prompt, the output filled his main conversation and he lost track of what he was working on.
He does not want teammates to see or use /brainstorm, because it reflects his own way of working and is not polished.
The team already has a .claude/ folder in the repository with a settings file and a couple of rules files.
Where should each be created, and what configuration does the skill need?