This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Script de post-installation Windows 11 25H2 pour systèmes à 1 Go de RAM. S'exécute via FirstLogonCommands (non-interactif, silencieux) ou manuellement en tant qu'administrateur.
| Fichier | Rôle |
|---|---|
win11-setup.bat |
Script principal — tout le code d'optimisation post-installation est ici |
prerequis_WIN11.md |
Document de référence obligatoire — lire en premier avant toute modification |
Il n'existe pas d'autounattend.xml dans ce dépôt (fichier séparé, hors dépôt). Ne jamais y mettre de clés registre.
| Fichier | Rôle | Parsé par la CI |
|---|---|---|
prerequis_WIN11.md |
Source de vérité unique — toutes les règles techniques du script | ✅ Oui |
CLAUDE.md |
Instructions de travail pour l'IA — conventions, structure, navigation | ❌ Non |
Ne jamais écrire dans
CLAUDE.mddes règles déjà présentes dansprerequis_WIN11.md. Toute règle absente deprerequis_WIN11.mdn'est pas validée par la CI.
20 sections séquentielles — ordre imposé :
| Section | Contenu |
|---|---|
| 1 | Vérification droits admin (openfiles) |
| 2 | Point de restauration — toujours en premier |
| 3 | Suppression fichiers Panther (mot de passe en clair 25H2) |
| 4 | Pagefile fixe 6 Go — vérification 10 Go libres avant |
| 5 | Mémoire : compression, SysMain/Prefetch désactivés, SwapfileControl=0 (swapfile.sys UWP ~256 Mo) |
| 6 | Télémétrie / Copilot / Recall / IA 25H2 / EventTranscript / MRT / TailoredExperiences / DesktopAnalytics |
| 7 | AutoLoggers (DiagTrack, DiagLog, SQMLogger, WiFiSession, CloudExperienceHostOobe, NtfsLog, ReadyBoot, AppModel, LwtNetLog, RadioMgr, RdrLog) |
| 8 | Windows Search — désactive web/Bing/Search Highlights (WSearch reste actif) |
| 9 | GameDVR, Delivery Optimization, Edge démarrage anticipé/arrière-plan (HKCU) |
| 10 | Politiques Windows Update |
| 11 | Vie privée, sécurité, WER, ContentDelivery, AppPrivacy |
| 11b | CDP, Clipboard (Win+V local activé, cloud désactivé), ContentDeliveryManager, HKCU privacy, Spotlight suggestions (ActionCenter/Settings/TailoredExperiences HKCU), ShowSyncProviderNotifications=0, PreventDeviceMetadataFromNetwork=1, Ink Workspace, Peernet, TCP sécurité, LLMNR, WPAD, SMBv1, Biométrie |
| 12 | Interface Win10 (taskbar, widgets, menu contextuel, hibernation) |
| 13 | CPU : SystemResponsiveness=10, PowerThrottling off, sécurité TCP/IP (DisableIPSourceRouting, EnableICMPRedirect=0), DisableBandwidthThrottling=1 (LanmanWorkstation), TCP Keep-Alive (KeepAliveTime=300000, KeepAliveInterval=1000) |
| 13b | Config avancée : bypass TPM/RAM, PasswordLess, NumLock, Snap Assist, menu alimentation, RDP conditionnel |
| 14 | Services → Start=4 (113+ services, effectif après reboot) dont WinRM, RasAuto, RasMan, iphlpsvc, IKEEXT, PolicyAgent, fhsvc, AxInstSV, MSiSCSI, TextInputManagementService, GraphicsPerfSvc, NcdAutoSetup, lmhosts, CertPropSvc, AppReadiness, WorkFoldersSvc, RmSvc, SgrmBroker, NPSMSvc, AssignedAccessManagerSvc, autotimesvc, NetSetupSvc, RpcLocator, UmRdpService (conditionnel NEED_RDP=0) |
| 15 | sc stop immédiat (incluant les 24 nouveaux services v2+v3+v4+v5) + sc failure DiagTrack |
| 16 | Fichier hosts — blocage 72+ domaines télémétrie dont eu/us.vortex-win.data.microsoft.com, inference.microsoft.com, arc.msn.com, redir.metaservices.microsoft.com, dmd.metaservices.microsoft.com, tsfe.trafficshaping.microsoft.com, rad.msn.com, ads.msn.com, adnxs.com, pipe.aria.microsoft.com, mobile.pipe.aria.microsoft.com |
| 17a | GPO AppCompat (DisableUAR, DisableInventory, DisablePCA) |
| 17 | 93+ tâches planifiées désactivées (schtasks /Change /Disable) |
| 18 | Suppression apps UWP (PowerShell Remove-AppxPackage) |
| 19 | Vidage C:\Windows\Prefetch\ |
| 19b | Vérification intégrité système (SFC/DISM) + restart Explorer |
| 20 | Résumé d'exécution dans le log + log de fin |
set NEED_RDP=0 # 1 = conserver TermService/SessionEnv + autoriser RDP (app RemoteDesktop toujours supprimée)
set NEED_WEBCAM=0 # défini mais sans effet — WindowsCamera toujours supprimée (réservé usage futur)
set NEED_BT=0 # 1 = conserver BthAvctpSvc (Bluetooth audio)
set NEED_PRINTER=1 # 0 = désactiver Spooler (pas d'imprimante)
set BLOCK_ADOBE=0 # 1 = activer le bloc Adobe dans hosts| Fichier | Rôle |
|---|---|
.github/workflows/validate.yml |
Déclenche validate_bat.py sur push/PR vers Update et main |
.github/scripts/validate_bat.py |
43 tests statiques — règles lues depuis prerequis_WIN11.md + checks hardcodés + rapport GitHub Step Summary |
Tests clés : valeurs registre interdites, services protégés, apps protégées, WU intouché, hosts WU jamais bloqués, structure 20 sections, optimisations obligatoires, services v2/v3/v4/v5 désactivés, hosts v2/v3/v4/v5 bloqués, apps v3 présentes, tâches v4/v5 désactivées.
- Chaque section se termine par une ligne
echo [%date% %time%] Section N : ... >> "%LOG%" - Toutes les commandes redirigent vers
>nul 2>&1 - Les services conditionnels utilisent
if "%NEED_X%"=="0" reg add ... - Les tâches planifiées avec espaces dans le chemin → appels
schtasksindividuels (pas de bouclefor) - Les clés HKCU s'appliquent à l'utilisateur courant (contexte FirstLogonCommands = premier utilisateur)
Ces règles sont issues de problèmes concrets rencontrés lors de modifications sur ce dépôt. Elles sont obligatoires.
Les outils MCP (create_or_update_file) ne peuvent pas gérer fiablement des fichiers de 90 Ko+ avec des caractères Unicode. Le contenu est tronqué ou corrompu silencieusement.
Règle : pour win11-setup.bat, validate_bat.py et tout fichier > 10 Ko, utiliser exclusivement :
git add <fichier>
git commit -m "message"
git push -u origin <branche>Ne jamais passer le contenu d'un grand fichier en paramètre inline d'un outil MCP ou d'un agent. Ne jamais mentionner Claude (claude.ai/code) dans le "message" de commit
Un agent lancé en arrière-plan (run_in_background) peut lire un état stale du dépôt (avant un commit récent) et pousser une version corrompue ou périmée du fichier, écrasant les corrections.
Règle : toute opération qui lit, modifie ou pousse win11-setup.bat ou validate_bat.py doit être effectuée séquentiellement dans la session principale. Aucun agent parallèle ou arrière-plan pour ces fichiers.
Une clé registre interdite (ex. DisableWindowsSpotlightFeatures) qui passe inaperçue en local fait échouer la CI. Corriger en CI = commits supplémentaires inutiles.
Règle : avant le premier git push de toute modification de win11-setup.bat, toujours exécuter :
python3 .github/scripts/validate_bat.pyet vérifier que tous les tests passent (0 FAIL). Ne pousser qu'après validation locale réussie.