ci-preflightlisted
Install: claude install-skill The-Artificer-of-Ciphers-LLC/skills-from-the-artificer
# CI Preflight
> A green CI is not a reward for guessing correctly. It's the outcome of a local gate that already ran.
## The three CI-whiplash anti-patterns
This skill exists because these three failures happen repeatedly and all have the same root cause: pushing before checking.
---
### Anti-pattern 1: Missing registration surfaces
**What happens:** A new shipped file (hook, agent, command, module) passes unit tests but fails integration tests because it wasn't added to one of several whitelists/registries/inventories the repo maintains.
**Why it's hard:** These surfaces are spread across multiple files with no obvious connection — you find one and miss two others.
**Rule:** Before pushing any new file that ships to users, run a completeness search.
```bash
# Find every place "existing-hook.js" is referenced in the repo
grep -r "gsd-existing-hook" . --include="*.js" --include="*.cjs" --include="*.md" --include="*.json" -l
```
Use an existing sibling file as the probe: if `gsd-existing-hook.js` appears in N files, your new hook must appear in the same N files. Missing even one fails CI.
**In this repo, adding a new hook requires updating all of:**
- `hooks/managed-hooks-registry.cjs` — `MANAGED_HOOKS` array
- `scripts/build-hooks.js` — `HOOKS_TO_COPY` array
- `bin/install.js` — registration block with `fs.existsSync` guard
- `get-shit-done/bin/lib/installer-migration-report.cjs` — `BUNDLED_GSD_HOOK_FILES` Set
- `docs/INVENTORY.md` — headline count + table row
- `d