pbip-xraylisted
Install: claude install-skill Kemetra/Seshat-BI
# pbip-xray
- **Capability id:** `pbip-xray` (`docs/capabilities/capabilities.yaml`).
- **Authority:** advisory. Findings NEVER block, never move a readiness
stage, and never carry a numeric health/quality score (hard principle:
never fabricate a confidence score). Counts and findings only.
- **Design spec:** `docs/superpowers/specs/2026-08-01-pbip-xray-design.md`.
## When to invoke
- "Audit the Power BI model" / "what is dead weight in this model?"
- "What changed in the semantic model in this PR, in business terms?"
- "Is this column used anywhere?" / "why does this measure exist?" (pair
with `cross-table-lineage` for the cross-artifact chain).
- Reviewing any PR that touches `*.SemanticModel/definition/**.tmdl`.
## The two verbs
```bash
seshat xray --format json # full-model audit
seshat model-diff --base origin/main --format json # PR-scoped semantic diff
```
Exit 0 = ran to completion (however many findings). Exit 3 = could not run;
the payload carries `{code, message, recovery}` blockers (XR001 no committed
model; XR002 unresolvable base ref).
## Finding families (audit)
| id | meaning |
|----|---------|
| X0 | a table file the parser could not read (excluded, never guessed) |
| X1 | column/measure unreferenced in scanned surfaces |
| X2 | relationship risks: many-to-many, dead inactive, string keys, snowflake chains |
| X3 | measure-graph: circular references, depth >= 5, cross-table duplicate logic |
| X4 | hygiene: unmarked date table,