skillgate is a deterministic finish-line gate: it blocks git commit / git push /
npm publish until your definition-of-done actually passes. No model in the loop.
See what your agent could cut right now, with no config:
npx @reneza/skillgate@latest auditThis writes nothing. It scores the repo against built-in defaults (or your
.skillgate/done.yaml if you have one) and exits non-zero if a corner is cuttable.
npx @reneza/skillgate@latest init # writes .skillgate/done.yamlEdit it. Each entry under gates: is one deterministic check. See the
spec reference for every gate type, and
schema/done.schema.json for editor autocomplete
(the generated file already points at it via a # yaml-language-server: modeline).
npx @reneza/skillgate@latest check # exit 0 = all gates pass, 1 = something unmetPick the path that matches how far you want the guarantee to reach — Claude Code
hook, pre-commit, CI, or a retry loop. All of them enforce the same
.skillgate/done.yaml. See recipes.
| Code | Meaning |
|---|---|
0 |
All gates passed (or, for drift, everything in sync) |
1 |
At least one gate failed / drift detected — the finish line is blocked |
2 |
Usage error: no spec found, unknown command, or a spec that failed to load |
--json is available on check, audit, and drift for machine-readable output;
the exit code is unchanged.
After creating .skillgate/done.yaml, wire it into the layer you use and verify
the result:
skillgate install claude-code # or opencode, github-actions, pre-commit, all
skillgate doctor claude-codeRun from any directory inside the active Git worktree; Skillgate resolves the nearest policy and evaluates paths from that worktree root.