Xcode Build Benchmark

Mesure les temps de build Xcode clean, cached-clean et incrémentiels dans un artefact JSON

par AvdLee · AvdLee/Xcode-Build-Optimization-Agent-Skill

Fonctionne avec configuration ★ 7.6/10

Xcode Build Benchmark — Mesure les temps de build Xcode clean, cached-clean et incrémentiels dans un artefact JSON

Ce que fait

Exécute des benchmarks xcodebuild reproductibles pour un schéma — 3 builds propres, 3 builds sans modification, des builds incrémentiels optionnels avec modification de fichier, plus une phase de nettoyage avec cache lorsque COMPILATION_CACHE_ENABLE_CACHING est activé — et écrit un JSON horodaté ainsi que des logs bruts dans .build-benchmark/. Rapporte les médianes, min/max et les catégories dominantes du résumé de temps de build au lieu d'une seule exécution la plus rapide. Se déclenche lorsqu'un développeur demande de mesurer les temps de build Xcode, souhaite une base de référence avant/après, ou demande si les builds sont devenus plus rapides ou plus lents.

Rapport de test

Cette machine ne dispose que des outils de ligne de commande (`xcodebuild -version` renvoie des erreurs : "requires Xcode"), donc aucune build iOS réelle n'a pu être benchmarkée — d'où outputMeasured=false. Pour vérifier le mécanisme, j'ai quand même placé un stub `xcodebuild` sur PATH qui émet un faux Build Timing Summary et j'ai exécuté `scripts/benchmark_builds.py` de bout en bout : sortie 0, 12 logs bruts plus un JSON horodaté écrits dans le répertoire de sortie, phase cached-clean auto-détectée à partir de COMPILATION_CACHE_ENABLE_CACHING=YES, médianes/min/max calculées par type de build, et le parseur de temps a correctement divisé "SwiftCompile (412 tasks) | 128.412 seconds" en name/seconds/task_count. Un défaut concret : l'exécution par défaut (sans --touch-file) étiquette les exécutions `build_type: "zero-change"`, ce qui échoue aux propres schemas/build-benchmark.schema.json de la compétence (l'énumération est clean|cached-clean|incremental) — jsonschema a rejeté l'artefact généré. Les scripts sont sans réseau, sans curl|sh, base64 ou texte d'injection ; le seul piège est `shutil.rmtree` sur un --derived-data-path fourni par l'utilisateur pendant la phase cached-clean.

Testé le: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

git clone --depth 1 https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill.git /tmp/xcode-build-benchmark-src
mkdir -p ~/.claude/skills
cp -R /tmp/xcode-build-benchmark-src/skills/xcode-build-benchmark ~/.claude/skills/xcode-build-benchmark
# Requires full Xcode (not just Command Line Tools) and an .xcodeproj/.xcworkspace.
# CLI instead: npx skills add https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill --skill xcode-build-benchmark
# Plugin instead: /plugin marketplace add AvdLee/Xcode-Build-Optimization-Agent-Skill
# Run from the project directory:
#   python3 ~/.claude/skills/xcode-build-benchmark/scripts/benchmark_builds.py \
#     --workspace App.xcworkspace --scheme MyApp --configuration Debug \
#     --destination "platform=iOS Simulator,name=iPhone 16" --output-dir .build-benchmark

Commandes et exemples de prompts

  • /xcode-build-benchmarkMesure les temps de build Xcode clean, cached-clean et incrémentiels dans un artefact JSON

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • Benchmark our current Xcode build time
  • Compare build times before and after this change
  • Measure how long incremental builds take now