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 :
ChatViewModelServiceProviderabstrait 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
UIContentConfigurationavec 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 :
- 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.
- 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.
- Anti-pattern a cote du pattern dans chaque regle : "NOT Combine" juste a cote de "Uses AsyncStream". Format compact et efficace.