Même si je n’ai pas encore eu l’occasion d’écrire un article sur Claude Code, je l’utilise depuis quelques mois sur des projets privés et également depuis plusieurs semaines en entreprise.
Dans cet article je vous partage mes tips & tricks pour utiliser Claude Code pour un repo Terraform, nous utiliserons encore une fois le projet the-forge-infra comme exemple.
CLAUDE.md : le point de départ
La première chose à faire lorsque vous avez accès à Claude Code est de créer un fichier CLAUDE.md à la racine de votre projet qui servira de point d’entrée pour Claude Code et contiendra toutes les informations nécessaires pour comprendre le projet.
C’est un peu le README.md de Claude.
Ce fichier se doit d’être le plus complet possible, il doit contenir toutes les informations nécessaires pour comprendre le projet, son architecture, ses dépendances, ses contraintes, etc. mais aussi d’être relativement concis. Si votre fichier contient 500 lignes, ces mêmes 500 lignes seront ingérées par Claude à chaque prompt et consommera ainsi beaucoup de tokens.
Voici un exemple minimal de structure pour écrire votre premier fichier (pour un repo Terraform) :
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project overview
### Repository structure
- `main.tf`: Main Terraform configuration file.
- `variables.tf`: File containing all Terraform variables.
- `outputs.tf`: File containing all Terraform outputs.
- `modules/`: Directory containing reusable Terraform modules.
### Code conventions
Resources must be named using the following convention: `<resource_type>_<resource_name>`.
Commits must follow the conventional commit format: `<type>(<scope>): <description>`.
## Forbidden actions
* Never push directly to the main branch. Always create a feature branch and submit a pull request for review./
* Never use hardcoded values in Terraform files. Always use variables or data sources.
* Never store sensitive information in the repository. Use a secure secrets management solution instead./
Les skills
Cette feature permet de décrire à Claude comment interagir avec notre repo pour cette tâche, en fonction du contexte il sera capable de déterminer si il doit utiliser un skill ou non, et si oui lequel.
Voici quelques exemples que j’utilise sur le repo d’infra du projet TheForge.
Create-module
Il n’est pas rare d’avoir à créer des modules Terraform, c’est pourquoi j’ai créé ce skill pour automatiser la partie rébarbative : création des fichiers de bases, variables, outputs, README, etc. Claude me fournit aussi la structure de base du module sur laquelle je peux ensuite faire du fine tuning.
.claude/skills/create-module/SKILL.md
---
name: create-module
description: Create a new Terraform module. Use this skill when user asks to create a new Terraform module with a standard file structure.
---
Create a new Terraform module scaffold. The module name comes from `$ARGUMENTS` (kebab-case). If empty, ask the user for the name before proceeding.
Create the directory `modules/<name>/` with exactly these five files:
**`modules/<name>/main.tf`**
**`modules/<name>/variables.tf`**
**`modules/<name>/outputs.tf`**
**`modules/<name>/README.md`**
Check https://registry.terraform.io/ to fill those files with the appropriate content for a Terraform module.
You must use the latest version for the given provider if appropriate, pin the exact version (wildcard versions are not allowed).
Enrich the `README.md` with a description of the module, usage instructions, and examples.
Do not add any other files or directories beyond these five.
After creating the files, list them with their relative paths, then remind the user to:
- Ensure every variable in `variables.tf` has both `description` and `type` set.
Résultat lorsqu’on demande à Claude de créer un module via un prompt :
crées un module google_storage_bucket
Create PR
Ce skill a pour but de créer la PR à partir d’une branche et faire un summary des changements pour faciliter la revue de mes collègues. J’ai également ajouté une checklist pour m’assurer que je n’ai rien oublié avant de créer la PR, accélérant une fois encore la boucle de feedback.
.claude/skills/create-pr/SKILL.md
---
name: create-pr
description: Create a new Github Pull Request. Use this skill when user asks to create a new Github Pull Request.
---
Pre-requisites before creating a PR :
* Ensure no sensitive information is present in the code changes (e.g., passwords, API keys, secrets).
* Run terraform fmt, terraform validate to ensure the code is properly formatted and valid.
* Ensure each commit message follows the conventional commit format (e.g., feat: add new feature, fix: fix bug, docs: update documentation).
1. Create a new Github Pull Request for the current branch. The title of the PR comes from `$ARGUMENTS`. If empty, ask the user for the title before proceeding.
2. The PR description should be generated based on the changes in the current branch. If `$ARGUMENTS` contains a description, use it instead.
3. The PR should be created against the default branch of the repository (usually `main` or `master`).
4. After creating the PR, output the URL of the newly created PR.
crées moi la Pull request “add claude config”

Conclusion
Comme nous l’avons vu, ces fichiers de configuration agentic sont de simples fichiers markdown et sont facilement partageables.
A ce titre, il existe de nombreux repository pour partager des templates de fichiers CLAUDE.md, notamment pour Terraform.
Je ne les utilisent pas encore pour le moment parce que je ne souhaite pas m’imposer de contraintes supplémentaires, je préfère mettre en place ma code base et ma stratégie et expliquer à l’agent comment je souhaite qu’il interagisse avec mon code.
Vous pouvez retrouver le repo d’exemple que j’ai utilisé pour cet article sur GitHub.

