Configurar Claude Code en un proyecto con .claude y settings.json
Hola, bienvenido. En la lección anterior vimos que las sesiones se guardan en texto plano y que todo lo que Claude lee acaba en la transcripción, y con esta lección empezamos una sección nueva, la de configuración y permisos. Vamos a crear el directorio .claude/ de claude-tasks con sus 2 primeros archivos: settings.json, la configuración compartida que va al repositorio, y settings.local.json, la tuya, que se queda fuera. Por el camino veremos los ámbitos de configuración de Claude Code y cuál gana cuando un ajuste está en varios sitios. Después pondremos la primera regla deny para que Claude no lea el .env, sacaremos el archivo personal de Git y, por último, veremos qué hace respectGitignore, un ajuste que se suele entender mal.
¿Por qué ahora? Porque hasta aquí los permisos han sido decisiones que tomabas en cada sesión, respondiendo a un aviso o cambiando de modo con Shift+Tab, y eso no escala. Si mañana clonas el proyecto en otra máquina o lo abre un compañero, ninguna de esas decisiones viaja con él. Además, en la lección de auto mode vimos que el clasificador deja que Claude lea el .env por defecto, y en la anterior, que lo que lee queda escrito en la transcripción. Así que la primera regla del proyecto va a ser justo esa, escrita en un archivo que se versiona con el código para que todo el que trabaje en claude-tasks la tenga desde el primer git clone.
El directorio .claude
Claude Code lee su configuración de 2 sitios: el directorio .claude/ de tu proyecto y el directorio ~/.claude/ de tu carpeta personal. Lo que va en el proyecto se versiona con Git para compartirlo con el equipo, y lo que va en ~/.claude/ es tu configuración personal, que se aplica en todos tus proyectos y nunca entra en ningún repositorio. A lo largo del curso, el .claude/ de claude-tasks va a ir creciendo con permisos, rules, skills, hooks y subagentes, pero todo empieza por los 2 archivos de configuración que vamos a crear en esta lección.
Instalar Claude Code no crea ningún archivo de configuración. Si ya tienes alguno, lo ha creado Claude Code por ti en algún momento. El ~/.claude/settings.json aparece la primera vez que cambias en /config una opción que se guarda ahí, como el tema, y el .claude/settings.local.json, la primera vez que respondes Yes, and don't ask again a un aviso de permiso, como vimos en la lección del primer prompt. Hay otro archivo más, ~/.claude.json, que Claude Code escribe para sí mismo con tu sesión iniciada, tus servidores MCP y las decisiones de confianza en cada carpeta, y que no necesitas editar.
Para seguir esta lección necesitas claude-tasks con el último commit limpio y tu editor abierto en el proyecto. Los archivos de .claude/ los vamos a escribir a mano, y hay un buen motivo: como vimos en la lección de modos de permiso, .claude es una ruta protegida, así que cualquier escritura de Claude ahí dentro te pide confirmación o pasa por el clasificador. Y para la configuración que decide lo que Claude puede hacer, lo más sensato es que la escribas tú y sepas exactamente qué pone. Al terminar, esto es lo que habrá cambiado en el proyecto:
- 02Los ámbitos de configuración
- 03settings.json: la primera regla deny
- 04settings.local.json: lo que es solo tuyo
- 05Sacar settings.local.json de Git
- 06Comprobar qué configuración ha cargado
- 07Qué hace de verdad respectGitignore