Aller au contenu

Apple shippe accidentellement ses fichiers CLAUDE.md en production

Resume

Le 30 avril 2026, la mise a jour v5.13 de l'app Apple Support contenait deux fichiers CLAUDE.md — des instructions pour Claude Code jamais censees etre livrees en production. 10.7K likes, 1.5M vues. Apple a publie un correctif d'urgence (v5.13.1) dans les heures qui suivent. Confirmation qu'Apple utilise Claude Code en interne pour developper ses apps.

Contenu des fichiers leakes

Fichier 1 : module Chat (support conversationnel Juno AI + agents humains)

  • AsyncStream pour le temps reel (pas Combine, contrairement au reste de l'app)
  • Providers de service en actors (pas @MainActor) pour la thread safety
  • Abstraction multi-backend via protocol : ChatViewModelServiceProvider abstrait Juno AI, agents humains, et mocks dev
  • Compilation conditionnelle lourde : #if JUNO_ENABLED, #if canImport(CCChatKit), #if DEV_BUILD
  • Trois roles de participants : .client (utilisateur), .agent (support Apple), .assistant (IA)
  • Messages wrapes dans MessageGroup (UUID) pour eviter les collisions SwiftUI ID (rdar://164022273)
  • Bridge callback -> async/await pour CCChatKit (legacy)

Fichier 2 : SAComponents (bibliotheque UI partagee)

  • Composants purement UI — aucune logique metier, aucune dependance service
  • UIKit : protocol UIContentConfiguration avec presets factory
  • SwiftUI : convenience modifiers sur View
  • DocC obligatoire, #Preview {} montrant plusieurs etats obligatoire

Analyse critique

Ce qui est revelateur :

  • Apple utilise Claude Code en mode developpeur individuel — les fichiers sont des guides techniques par module, pas une gouvernance de workflow.
  • Les CLAUDE.md sont ultra-concis (~10 lignes chacun), chaque ligne = une regle actionnable avec l'anti-pattern a cote ("NOT Combine", "not @MainActor").
  • References directes aux bugs internes (rdar://164022273) dans les regles — tracabilite du "pourquoi" dans le CLAUDE.md.
  • Architecture chat hybride IA + humain avec abstraction propre (le ViewModel ne sait pas s'il parle a l'IA ou a un humain).

Ce qu'on ne voit pas :

Ces 2 fichiers sont une fenetre tres etroite. Apple a probablement d'autres CLAUDE.md, potentiellement un .claude/ avec des rules/, des hooks pre-commit — rien de tout ca n'est visible ici. On ne peut pas conclure que c'est "tout" ce qu'Apple fait.

L'ironie :

Apple bannit les apps "vibe-coded" de l'App Store mais utilise Claude Code en interne. Le commentaire le plus pertinent : "We used to worry about shipping API keys. Now we also have to worry about shipping the markdown file that tells the AI how the company thinks."

Pertinence ProbatioVault

Comparaison directe :

Aspect Apple ProbatioVault
Taille CLAUDE.md ~10 lignes par module Centaines de lignes (monolithique + rules/)
Scope Par module/composant Global projet + regles universelles
Guardrails formels Aucun visible 8 articles constitutionnels NON NEGOCIABLES
Workflow multi-agents Aucun signe 11 etapes, gates PMO, separation des pouvoirs
Verification formelle Aucune Art. VIII, TLA+/Prolog/Alloy/Z
Capitalisation learnings Aucun mecanisme visible 5 briques memoire vivante, reuse_score
Anti-patterns explicites Oui (dans chaque regle) Oui (sections INTERDIT dans learnings)
References bug tracker rdar:// dans les regles PD-XX dans certains learnings (pas systematique)

A adopter :

  1. References aux PD-XX dans chaque regle/learning : Apple lie ses bugs internes directement dans le CLAUDE.md. Nous le faisons parfois, pas toujours. A systematiser.
  2. CLAUDE.md eclates par module : 10 lignes par fichier, ultra-cibles. Notre approche monolithique est dense — l'approche scattered pourrait etre plus maintenable pour les gros projets.
  3. Anti-pattern a cote du pattern dans chaque regle : "NOT Combine" juste a cote de "Uses AsyncStream". Format compact et efficace.