Todos los artículos
Dentro de la Carpeta .claude

Dentro de la Carpeta .claude

Un recorrido por la carpeta .claude: qué hace cada regla, skill, agente, hook y ajuste. Trátala como infraestructura, versiónala y mantén una sola spec cuando tu equipo usa más de una herramienta de IA.

Cada proyecto en el que trabajo tiene una carpeta .claude/ en la raíz. Su fuente vive en git, como el resto del código.

Esa carpeta convierte Claude Code de un asistente genérico en un compañero que conoce tu proyecto. Quien clone el repo hereda el mismo setup.

El agentic coding es tan bueno como el contexto que le das al agente. La carpeta .claude/ es donde vive ese contexto.

La carpeta .claude, de un vistazo #

tu-proyecto/
├── .mcp.json               # servidores MCP compartidos (solo en la raíz)
└── .claude/
    ├── CLAUDE.md           # onboarding del proyecto
    ├── settings.json       # permisos, hooks, env
    ├── settings.local.json # ajustes personales, en .gitignore
    ├── skills/             # procedimientos, cargados bajo demanda
    ├── rules/              # convenciones, alcance opcional
    ├── hooks/              # scripts para hooks
    └── agents/             # roles especializados

Seis capas, una carpeta. Contexto, seguridad, procedimientos, barandillas, automatización, especialistas.

Los cimientos #

CLAUDE.md: donde todo empieza #

Claude Code lee CLAUDE.md en cada arranque. El doc de onboarding.

En Phel, el mío cubre el pipeline del compilador (Lexer → Parser → Analyzer → Emitter), la estructura de módulos, convenciones y comandos clave.

Un ~/.claude/CLAUDE.md global aplica a todos tus proyectos. El archivo de proyecto dice cómo funciona este código. El global dice cómo trabajo yo.

Cada byte viaja en cada prompt. Mantenlo corto. Si pasa de una pantalla, mueve el detalle a rules/ o skills/.

Un buen CLAUDE.md es un buen doc de onboarding. Cuanto mejor sea, menos te repites.

settings.json: seguridad antes que potencia #

Antes de darle más poder al agente, bloquea lo que nunca debe hacer.

.claude/settings.json contiene tres cosas: permissions (allow/deny), hooks (comandos por evento) y env (variables). Un settings.local.json gitignoreado mantiene las configuraciones personales aparte.

Deep Dive: Ejemplo de permisos en Phel
{
  "permissions": {
    "allow": [
      "Bash(composer:*)",
      "Bash(./bin/phel:*)",
      "Bash(git:*)",
      "Bash(gh:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  }
}

Allow desbloquea el flujo. Deny frena los errores obvios, pero compara el texto del comando, no lo que hace. find . -delete se salta una regla deny sobre rm. Para un bloqueo real, usa un hook.

Las reglas deny frenan lo obvio. Los hooks imponen el resto.

Procedimientos y barandillas #

Skills: procedimientos que puedes ejecutar #

Siguiente dolor tras onboarding: la repetición. Los skills lo resuelven.

Un skill es una carpeta en .claude/skills/ con un SKILL.md dentro: una descripción corta más los pasos. Solo la descripción ocupa contexto. Claude carga el skill completo cuando lo invocas con una barra, o por su cuenta cuando la tarea encaja con la descripción.

Algunos de Phel:

  • /gh-issue <número>: de issue a rama, plan TDD, PR.
  • /commit: fix, análisis, tests, commit convencional.
  • /refactor-check: SOLID, naming, olores de arquitectura.
  • /release [version]: changelog, PHAR, tag, release.
Deep Dive: Skills vs rules vs prompt directo
  • Prompt directo: “arregla el issue #42”. El agente improvisa. Distinto cada vez.
  • Rule: “usa conventional commits”. Da forma al resultado, no al procedimiento.
  • Skill: “/gh-issue 42”. El procedimiento es la instrucción.

Los skills convierten los hábitos del equipo en pasos que cualquiera puede ejecutar.

Los skills capturan qué hacer. Las rules capturan qué no hacer.

Rules: las barandillas #

CLAUDE.md se carga en cada sesión. Las rules solo cuando aplican. Los archivos en .claude/rules/ apuntan a áreas del código con patrones glob, así el contexto se mantiene ligero.

Deep Dive: Rules con glob en la práctica

Archivos de rules en Phel:

  • compiler.md: pipeline estricto de 4 fases, sin atajos.
  • php.md: PER 3.0, clases final, readonly, patrón Gacela.
  • phel.md: kebab-case, defn- privadas, :doc/:example obligatorios.
  • integration-tests.md: secciones --PHEL-- / --PHP-- en fixtures.

Las rules del compilador no se activan al editar código Phel. Las rules de Phel no se activan al editar infraestructura PHP.

Las rules no son sugerencias. Un cambio de convención y su rule van en el mismo commit. Sin drift, sin wikis desactualizadas.

Vista desde abajo de las vigas de acero de un puente viejo, con su pilar de hormigón en el prado

Automatización y delegación #

Hooks: automatización en los bordes #

Las rules dicen al agente qué hacer. Los hooks se aseguran de que ocurra aunque el agente olvide.

Los hooks son comandos shell disparados por eventos de Claude Code (PreToolUse, PostToolUse, Stop), conectados vía settings.json. En Phel, PreToolUse bloquea ediciones a archivos críticos (build/release.sh, .github/*, composer.lock). PostToolUse auto-formatea PHP vía php-cs-fixer.

Deep Dive: Conexión de hooks
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{ "type": "command", "command": ".claude/hooks/protect-files.sh" }]
    }],
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{ "type": "command", "command": ".claude/hooks/format-php.sh" }]
    }]
  }
}

Las rules son lo que el agente debe saber. Los hooks son lo que el sistema impone de todas formas.

Agents: roles especializados #

Todo lo anterior da forma a un solo agente. Los agents añaden especialistas a los que el agente principal puede delegar, cada uno con sus propias herramientas, permisos y modelo. La pieza más avanzada, así que añádela la última.

Algunos de Phel:

  • Explorer (Sonnet, solo lectura): archivos, mapeo de estructura.
  • Clean Code Reviewer: SOLID y naming en diffs.
  • TDD Coach: imposición red-green-refactor.
  • Domain Architect: límites de módulos, pipeline del compilador.
  • Debugger: errores del compilador en todas las fases.

Cada agente corre en su propia ventana de contexto, así la sesión principal se mantiene limpia mientras el especialista profundiza. La ganancia es foco, no solo coste. Un agente con solo read y grep no puede reescribir tu código por error.

El modelo correcto para el trabajo correcto. Rápido y barato para explorar. Profundo y cuidadoso para arquitectura.

Empieza pequeño, crece con la fricción #

No construyas todo esto el primer día.

El orden, guiado por fricción real:

  1. Empieza con CLAUDE.md.
  2. Bloquea permisos en settings.json.
  3. La primera vez que te repitas, escribe un skill.
  4. La primera vez que el agente rompa una convención, añade una rule.
  5. La primera vez que algo malo casi se commitee, añade un hook.
  6. La primera vez que un generalista no encaje, define un especialista.

Cada paso soluciona un problema que realmente tuviste. No uno que imaginaste.

¿Carpeta vacía? Deja que el agente la empiece. /init redacta un CLAUDE.md a partir de tu repo. Luego pregunta: “¿Qué convenciones repito en este código? Propón rules y skills para ellas.”

¿Ya tienes una? Pide al agente que la audite: “Revisa .claude/ contra la documentación actual de Claude Code. ¿Qué está desactualizado, sin usar o mal?” Las herramientas cambian rápido, y tu setup envejece con ellas. Así se actualizó este post por última vez.

Commitea la carpeta. Compártela. Cuando alguien se una, su sesión hereda todo.

Una spec para equipos con más de una herramienta de IA #

Si tu equipo solo usa Claude Code, puedes parar aquí.

.claude/ tiene un límite: solo Claude Code la lee. Codex lee AGENTS.md, Cursor lee .cursor/rules/. En un equipo mixto, las mismas rules se copian a cada formato, y las copias se desincronizan.

Por eso construí agnostic-ai. Escribe tus rules, skills, agents y hooks una vez. agnostic-ai sync los convierte en los archivos que lee cada herramienta. Commiteas la spec, y las carpetas generadas se quedan fuera de git. Esta web y Phel funcionan así.

.claude/ le enseña tu proyecto a una herramienta. Una spec se lo enseña a todas.

Trata tu setup de agentes como infraestructura. Versiónalo. Revísalo. Hazlo evolucionar con el código.

La parte inferior de un puente de acero oxidado sobre un prado verde bajo nubes oscuras

Preguntas frecuentes

¿Debo commitear la carpeta .claude en git?
Sí, salvo settings.local.json, que guarda tus ajustes personales. Si una spec compartida como agnostic-ai genera la carpeta, commitea la spec y añade los archivos generados al .gitignore.
¿Qué diferencia hay entre un skill y una rule?
Un skill es un procedimiento: se carga cuando lo invocas con una barra o cuando la tarea encaja con su descripción. Una rule es una convención: se carga cuando Claude trabaja en archivos que encajan con su patrón glob.
¿Las reglas deny de permisos bloquean un comando del todo?
No. Las reglas deny comparan el texto del comando, así que otro comando con el mismo efecto puede saltárselas. Usa un hook PreToolUse o el sandbox cuando necesites un bloqueo real.
¿Por dónde empiezo con la carpeta .claude?
Por CLAUDE.md, y luego los permisos en settings.json. Añade skills, rules, hooks y agents solo cuando la fricción real los pida.

Atajos de Teclado

Movimiento vim hjkl

hArtículo anterior← left
jBajar↓ down
kSubir↑ up
lArtículo siguiente→ right
ggIr arriba
GIr al final
nSiguiente secciónnext heading
NSección anteriorprevious heading

Ir a g = go

ghIniciogo home
gbBloggo blog
grLecturasgo readings
gcCVgo cv

Acciones

/⌘KBuscarvim search
dCambiar temadark mode
tMostrar/ocultar índicetable of contents
iCambiar idiomai18n
mAlternar resaltadomark text

General

?Mostrar ayuda
EscCerrar
:Terminalvim command mode
↑↑↓↓←→←→BA???