What problem does it solve? A Bazel build that is slow, missing the cache, rebuilding for no reason, or failing on only one machine is hard to debug because the obvious tools (exit codes, --explain, help output) routinely mislead. This Skill routes each symptom to the one measurement that names the actual root cause, verified against Bazel 8.7.0 and 9.2.0. ## Core Features & Use Cases - Symptom-based routing: Eight diagnostic paths covering slow builds and analysis, unexpected cache misses, cache/BES outages and exit code 39, non-hermetic or nondeterministic actions, flaky tests, repository-rule and module-extension refetches, target-selection misses, and flags that appear not to exist. - Measured, version-aware procedures: Every command was checked on Bazel 8.7.0 and 9.2.0 on Linux, with explicit notes where behavior differs between majors or host platforms, and citations to bazel-quality rule IDs. - Guardrails against false fixes: A "never edit the check" table blocks common violations like tagging actions no-cache, setting flaky = True, or committing --sandbox_debug, plus a four-part receipt format (symptom, root cause, evidence, fix or gap) for reporting. - Use Case: CI never hits the remote cache. The skill walks you through the execution-log diff recipe (execlog parser on two runs), shows that an action absent from the log is a local action-cache hit, and identifies the --action_env=WS=$PWD line in .bazelrc as the key-busting mechanism. ## Quick Start Diagnose why my Bazel build rebuilt everything with no source changes using the bazel-diagnose skill.