What problem does it solve? Gates and lints that enumerate their own scope by hand can emit absolute correctness claims about code they never covered, staying green while missing real defects. This Skill replaces hand-maintained lists with structural facts (symbols, blast radius, affected tests, route inventory) derived from a swappable code-index provider, while keeping the framework fully functional when no provider is configured. ## Core Features & Use Cases - Eight-verb adapter contract: Query symbols, impact, affected, routes, indexed, status, freshness, and sync through normalized JSON shapes with strict exit-code semantics (exit 2 for stale indexes, exit 1 for unavailable providers). - Opt-in project wiring: Configure codeIndex.adapter in .github/bubbles-project.yaml and resolve it via codeindex-resolve.sh; the default none adapter keeps the framework dependency-free. - Provider authoring guidance: Add providers like codegraph or codebase-memory with normalization rules, honest unsupported capability declarations, and offline shape selftests. - Use Case: A lint needs to know which tests a diff can actually reach. Instead of a hand-maintained impact map, it calls the adapter's affected verb, checks freshness first, and degrades to the full suite if the index is missing or stale. ## Quick Start Ask the agent to wire a code-index adapter into the project config and show how a gate would consume the affected-tests verb with proper freshness and degradation handling.