skills/ci/SKILL.md
Audit, design, and run repo-owned CI gates. Host-agnostic by default: local, GitHub Actions, Azure, or another runner should call the same repo-owned contract. Harness Kit's own gate is the Rust command `cargo run --locked -p harness-kit-checks -- check --repo .`; consumer repos keep their own native gate. Use when: "run ci", "check ci", "fix ci", "audit ci", "design CI", "host-agnostic CI", "Dagger", "is ci passing", "run the gates", "why is ci failing", "strengthen ci", "tighten ci", "ci is red", "gates failing", "feedback loop is slow", "run gates less often". Trigger: /ci, /gates.
npx skillsauth add phrazzld/spellbook ciInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Confidence in correctness without turning local work into a provider or Docker tax.
Harness Kit's canonical source-repo gate is:
cargo run --locked -p harness-kit-checks -- check --repo .
The source-repo gate is implemented in Rust at
crates/harness-kit-checks/src/ci_check.rs. This is Harness Kit maintenance
plumbing, not a CI framework to project into every consumer repo.
When /ci runs in a consumer repo, do not assume Harness Kit's Rust gate is
installed there. Read that repo's root instructions, package manifests, CI
workflows, hook config, and shipped scripts, then strengthen the repo-owned
gate. Harness Kit supplies the agent judgment for CI design; the consumer repo
owns the implementation.
For CI architecture or Dagger decisions, load
references/host-agnostic-ci.md. The invariant is repo-owned contract first,
execution substrate second.
Consumer repos should have a two-tier gate unless live evidence proves one loop is both strong and fast:
ship-check time.If a consumer repo's behavioral gate needs supported third-party APIs, prefer
an emulate.dev-backed local/CI lane over weakening the gate, hand-written
mocks, or live networked sandboxes. Keep truly networked provider checks in the
full ship gate only when real provider behavior is the point. Usage details:
https://emulate.dev/docs.
What to gate on — not just where each gate runs — follows the standing quality
floor in harnesses/shared/references/quality-gates.md: gate the diff not the
legacy baseline, hard-block the Goodhart-resistant behavioral set (tests,
diff-coverage, mutation, supply-chain, secrets), ratchet structural debt
(god-files, duplication, dead code) so legacy only improves, and keep gameable
metrics as reports. Every gate names the real failure it catches; default to
free/OSS or a homebrew tripwire, never a paid SaaS forced on a consumer.
Moving work out of pre-push is only valid when the same invariant remains required before merge or deploy. If a required GitHub check is path-filtered, add a sentinel/split-check design; skipped required workflows can leave PRs stuck pending.
Each gate should leave useful context, not just an exit code: run duration, critical path, cache behavior where available, test/coverage reports, perf benchmarks when relevant, security findings, artifact hashes, and residual unverified paths. CI output is agent context for the next run.
--audit-only: produce audit report and gap proposals; do not run gates.--run-only: skip audit, just drive the repo-owned gate green.For substantive gate-policy changes, delegate on judgment per the shared
Roster contract: native subagents by default; when the decision is
architectural or risky, add a cross-model critic or scoped roster lanes with
lane handoff prompts. See harnesses/shared/AGENTS.md (Roster).
Local lane guidance: Each lane states responsibilities, context boundary, output evidence, and lead verification. Direct work is limited to mechanical repair and emergency preservation. The lead owns synthesis.
Check the live gate surface:
cargo run --locked -p harness-kit-checks -- check --repo .; .githooks
route through harness-kit-checks; ci_check.rs contains the source-repo
lane list; generated docs/index are current after skill/docs/backlog changes.For non-Harness Kit repos, replace the Harness Kit-specific bullets above with that repo's equivalent gate contract, then apply the same security floor. Also check:
For Harness Kit, run:
cargo run --locked -p harness-kit-checks -- check --repo .
For consumer repos, run the repo-owned gate discovered in the audit. If none
exists, the finding is high: design the smallest native gate before claiming
CI is meaningful.
If red:
Report:
Never claim green from a provider status alone. Name the repo-owned command, function, target, or artifact that proved the behavior.
testing
Capture one compounding repo-technical learning while a solved problem is still fresh. Use when: after a bug fix, diagnosis, delivery, review, or incident reveals a reusable pattern worth adding to `docs/solutions/`. Trigger: /compound, /capture-learning, /learning.
testing
Route Misty Step factory application capabilities. Use when choosing, auditing, integrating, or operating Canary, Powder, Landmark, Aesthetic, or Bitterblossom: production observability, incidents, health checks, error logging, backlog/work-card state, release intelligence, UI/UX system adoption, or supervised/unsupervised agent dispatch. Trigger: /factory-apps, /factory-stack.
testing
Prove a skill beats no-skill with a falsifiable A/B eval, or retire it. Design, generate, run, and maintain a skill-specific eval: name the one claim the skill must earn, run it skill-on vs raw same-model, grade blind with objective checks first, return a keep/adapt/cut verdict. Use when: "eval this skill", "does this skill help", "prove the skill beats no skill", "write an eval for", "benchmark a skill", "is this skill worth it", "skill A/B", "skill regression test", "generate skill evals". Trigger: /skill-eval, /eval-skill, /prove-skill.
tools
> Template. Copy to `<target-repo>/.agents/skills/<repo>-<domain>/SKILL.md` > and fill every bracketed placeholder from the live target repo. Delete this > line and every other `> ` guidance line before committing. See > `../../references/repo-local-skill-generation.md` for the full process. --- name: <repo>-<domain> description: | [One paragraph: what this skill verifies/runs/operates for <repo>, stated in terms of the repo's real shape (service/CLI/library/etc.), not generic process. En