Dev, IA

Claude Code : comment l'IA a codé 80% de mon app iOS de 55 000 lignes

Alexandre
Alexandre
··
Durée de lecture : 8 min
55 000 lignes de Swift. 300 fichiers. Un seul dev. Et 80% du code écrit avec Claude Code.
Je ne vais pas faire semblant que c'est magique. Y'a des jours où Claude m'a fait gagner 6 heures, et y'a des soirs où j'ai passé 3 heures à debugger du code qu'il avait généré parce qu'il avait inversé une logique métier. Mais globalement, sans cet outil, Livate n'existerait probablement pas.

Pourquoi Claude Code et pas les autres

Avant, j'utilisais ChatGPT. Tu copies du code, tu expliques le contexte, tu récupères une réponse, tu la colles dans Xcode. Ça marche, mais c'est lent et tu perds le contexte à chaque échange.
Claude Code vit dans ton terminal. Il lit tes fichiers, il exécute des commandes, il modifie le code directement. La différence, c'est qu'il voit la structure du projet, pas juste le fichier que tu lui montres.
Quand je lui demande de modifier un ViewModel, il va d'abord lire les fichiers liés, regarder les conventions du projet, et produire du code qui respecte l'architecture existante. Pas du code générique copié de Stack Overflow.
D'ailleurs, Apple vient d'intégrer Claude directement dans Xcode 26.3. J'utilise déjà Claude Code au quotidien pour dev Livate, mais intégré dans l'IDE c'est un autre level.

Le CLAUDE.md : 177 lignes qui ont fait la différence

Ce que j'aurais dû piger plus tôt : sans contexte, l'IA fait n'importe quoi. Avec du contexte, elle fait vraiment le job.
Le fichier CLAUDE.md à la racine du projet, c'est ta documentation vivante. Claude le lit automatiquement à chaque session. Le mien contient :
## Commandes courantes

# Démarrer toute la stack (PostgreSQL + Frontend + Backend)
cd backend && docker compose up -d

# Rebuild après modif
docker compose build livate_siteweb_backend

## Conventions de code
- Backend : snake_case fichiers, camelCase variables, PascalCase classes
- Frontend : PascalCase composants, camelCase fonctions
- Commits : feat:, fix:, refactor:, test:, docs:
Le déclic, ça a été d'y ajouter les erreurs récurrentes. Au début, Claude utilisait @ObservedObject au lieu de @StateObject dans mes vues SwiftUI, ce qui faisait crasher la navigation. Maintenant j'ai une section dans le CLAUDE.md avec les bons patterns. Il ne refait plus l'erreur.
Selon Anthropic, leurs propres équipes internes utilisent massivement le CLAUDE.md. L'équipe sécu l'a adopté pour automatiser les revues de code Terraform.

Mon équipe d'agents : 6 spécialistes dans un terminal

Le setup que j'utilise est assez costaud. Dans le dossier .claude/agents/ de mon projet, j'ai 6 agents spécialisés :
AgentRôleModèle
maestroChef d'orchestre, analyse la demande, délègue aux autres agentsOpus
impl-iosDev iOS senior, implémente en SwiftUI/Swift 6+Opus
impl-backendDev backend, Express/TypeScript/SequelizeOpus
reviewGardien qualité, 3 modes : validation pre-commit, revue scorée /100, vérification pre-mergeSonnet
testQA, identifie les tests pertinents, les exécute, analyse les résultatsHaiku
auditAuditeur, scanne le codebase, dette technique, tendancesSonnet
Le maestro c'est le point d'entrée. Il ne code pas. Il analyse ce que je demande, décide quel agent mobiliser, et coordonne le tout. Sa description :
Tu es le Maestro de l'équipe Livate.
Tu ne codes PAS. Tu ne rédiges PAS de spec.
Tu analyses, tu décides, tu délègues, tu coordonnes,
et tu valides le résultat.
Quand je demande une feature, le maestro lance l'agent impl-ios pour coder, puis review pour valider, puis test pour vérifier. Chaque agent a son propre contexte, ce qui évite la saturation.
Un exemple réel de la semaine dernière : j'ai demandé d'ajouter les images Open Graph auto-générées sur le blog + des articles similaires en bas de page. Claude a découpé ça en 3 agents parallèles, créé 4 fichiers, modifié les métadonnées SEO, lancé le build. Résultat : 0 erreur, 20 minutes. À la main, ça m'aurait pris l'après-midi.

Les slash commands : mes raccourcis au quotidien

Dans .claude/commands/, j'ai des fichiers Markdown qui deviennent des commandes. Mon /commit par exemple :
Préparer et créer un commit Git.

Règles :
- Vérifier git status
- Refuser de commit des secrets (.env, credentials)
- Format de message : feat/fix/refactor/test/docs

Étapes :
1. git status
2. git diff
3. git add <fichiers pertinents>
4. git commit -m "<type>: <message>"
5. git status pour confirmer
Je tape /commit dans le terminal, Claude analyse les changements, génère un message de commit propre et pousse. Plus besoin de réfléchir au format.
J'ai aussi /branch, /merge, /status. Des petits trucs, mais quand tu les utilises 10 fois par jour, le gain s'accumule.

Les skills : donner des vraies compétences à Claude

Les slash commands, c'est toi qui décides quand les lancer. Les skills, c'est différent : Claude les active tout seul quand il détecte que c'est pertinent. Anthropic a publié un guide complet de 32 pages sur le sujet en janvier 2026, et la doc officielle explique bien la mécanique.
Concrètement, un skill c'est un dossier dans .claude/skills/ avec un fichier SKILL.md qui contient des métadonnées YAML (nom, description, quand l'activer) et des instructions en Markdown. Le dossier peut aussi embarquer des scripts, des templates, des fichiers de référence. Claude lit la description et décide seul s'il doit charger le skill en fonction de ce que tu lui demandes.
.claude/skills/
  ios-simulator-skill/
    SKILL.md                    # Point d'entrée (metadata + instructions)
    scripts/
      build_and_test.py         # Build + tests
      screen_mapper.py          # Analyse l'écran courant
      navigator.py              # Navigation sémantique
      accessibility_audit.py    # Audit WCAG accessibilité
      visual_diff.py            # Comparaison de screenshots
      push_notification.py      # Test de notifs push
      ...                       # 21 scripts au total
J'utilise ios-simulator-skill sur le projet Livate iOS. C'est 21 scripts Python qui pilotent le simulateur : build, navigation dans les écrans, simulation de gestes, audit d'accessibilité, capture de screenshots. Je dis "vérifie que le bouton Démarrer est accessible", Claude charge le skill, lance accessibility_audit.py, et me dit si le label VoiceOver est manquant. Sans ça, il faudrait que je lui explique la mécanique du simulateur à chaque session.
La différence avec une slash command : le skill embarque tout son contexte. Le SKILL.md décrit quand s'activer, les scripts sont là, les conventions sont documentées. Claude n'a pas besoin que tu lui tiennes la main.

Les fois où Claude m'a mis dans la merde

Je vais pas te mentir, c'est pas toujours rose.
L'over-engineering. Le vrai problème des agents de code, c'est pas les bugs basiques. C'est qu'ils over-enginent tes besoins. Tu demandes un simple tri sur une liste, tu te retrouves avec un système de tri configurable avec 3 niveaux de priorité et un enum pour chaque direction. J'ai appris à être ultra spécifique dans mes demandes : "fais exactement ça, rien de plus."
La duplication de code. Claude adore créer des helpers, des utils, des abstractions. Sauf qu'il connaît pas toujours ce qui existe déjà dans le projet. Résultat : 3 fonctions qui font la même chose dans 3 fichiers différents. Maintenant je lui demande systématiquement de chercher si une fonction similaire existe avant de créer quoi que ce soit.
Les failles de sécurité. Celui-là c'est le plus vicieux. Un agent va te pondre du code qui marche, qui compile, qui passe les tests. Mais qui oublie de sanitizer un input ou qui expose un endpoint sans auth. C'est le genre de truc que tu vois pas au premier coup d'oeil. Anthropic a d'ailleurs lancé Claude Code Security en février 2026 : un scanner IA intégré à Claude Code qui a déjà identifié plus de 500 vulnérabilités dans des projets open-source. C'est un bon réflexe à avoir : lancer un audit sécu après chaque feature sensible.

Mon workflow quotidien

Une session de dev sur Livate, ça ressemble à ça :
1. Je lance claude dans le terminal. Il charge le CLAUDE.md et les agents.
2. Je décris ce que je veux, en français, comme à un collègue. Genre : "ajoute un bouton refresh sur la page admin marketing avec l'icône RefreshCw de Lucide, il doit rafraîchir les stats et les users avec un spinner pendant le chargement."
3. Claude explore les fichiers concernés, comprend le pattern existant (React Query, hooks custom), et produit du code cohérent avec le projet.
4. Je review et j'itère. "Le badge est trop gros dans les cards", "change le nom par Suivi Livate app". Il ajuste sans redemander tout le contexte.
5. Quality gate : bash scripts/quality-gate.sh → lint + build frontend + backend. Si c'est vert, commit et push.
Le tout prend 1 à 2 heures pour une feature qui m'aurait pris 1 à 2 jours seul, sans IA.

Quelques chiffres

MétriqueValeur
Lignes de Swift (app iOS)55 000+
Fichiers Swift300
% codé avec Claude~80%
Agents custom configurés6
Slash commands4
Temps moyen par feature1-2h au lieu de 1-2 jours
Selon le rapport Anthropic 2026 sur le coding agentique, les agents de code évoluent d'assistants individuels vers des équipes coordonnées. C'est exactement ce que je vis au quotidien.

5 trucs à savoir si tu te lances

1. Investis 2 heures dans ton CLAUDE.md. Mets l'architecture, les conventions, les commandes Docker, et surtout les erreurs récurrentes avec leurs solutions. C'est ce qui a eu le plus d'impact sur mon projet.
2. Une feature = une session. /clear entre chaque feature. Un contexte propre produit du meilleur code qu'un contexte pollué par les 3 features précédentes.
3. Laisse Claude explorer avant de coder. Avant de dire "implémente X", demande "comment fonctionne Y dans le projet". Il va lire les fichiers, comprendre les patterns, et son implémentation sera cohérente.
4. Commit avant chaque refactor. Comme ça, quand Claude casse 12 dépendances en voulant "nettoyer", tu reviens en arrière en 10 secondes.
5. Le premier jet n'est jamais parfait. Et c'est OK. Claude sort un premier jet en 30 secondes, mais la valeur c'est l'itération. "Réduis le padding", "ajoute un fallback si l'API échoue". Chaque itération prend 10 secondes au lieu de 10 minutes à la main.

Le métier de dev n'est pas mort, il mute

La ligne de code a perdu de la valeur. N'importe qui peut générer 500 lignes de Swift en 30 secondes avec un agent. Ça c'est acté.
Ce qui a pris de la valeur, c'est tout le reste. Savoir pourquoi tu construis ce produit. Avoir une vision produit claire. Comprendre les vrais besoins de tes utilisateurs. Orchestrer des agents sans te faire embarquer dans de l'over-engineering. Relire du code que tu n'as pas écrit et repérer ce qui cloche.
Le dev ne tape plus 8 heures par jour dans son IDE. Il donne des intentions, il structure le contexte, il valide, il itère. C'est un pilote d'agents. La valeur est passée du "comment" au "pourquoi".
8 mois de dev. 55 000 lignes. Une app en prod. Un blog. Un backend. Un système d'analytics custom. Tout ça seul. Pas parce que l'IA a tout fait à ma place, mais parce que je savais exactement quoi lui demander et pourquoi.
Et toi, tu codes avec quelle IA ? Si t'utilises Claude, Cursor, Copilot ou autre chose, je suis curieux de connaître ton setup. Dis-le moi sur X, LinkedIn ou en commentaire.
Alex

À retenir

  • En 2026, un dev ne tape plus 8h de code par jour. Il donne des intentions, structure le contexte, valide, itère. C'est un pilote d'agents.
  • Le CLAUDE.md est ton meilleur investissement : 177 lignes de contexte qui transforment un agent générique en spécialiste de ton projet.
  • 55 000 lignes de Swift, 80% codées par IA. Mais la vraie valeur est dans les 20% que l'humain apporte : la vision produit et le sens critique.
  • Un agent génère du code qui compile. Pas du code qui résiste à 10 000 utilisateurs. La review humaine reste indispensable.
  • 6 agents spécialisés valent mieux qu'un généraliste : maestro, impl-ios, impl-backend, review, test, audit.

Commentaires

Commentaires

Tu as un avis sur cet article ?

Crée un compte gratuit en 10 secondes pour commenter, laisser des likes et recevoir les prochains articles directement dans ta boîte mail.

Pas encore de compte ?

Ce site utilise des cookies pour les statistiques de visite et la publicité. Aucune donnée personnelle n'est revendue. En savoir plus