Run the project's gate (its configured build, test and check commands) and report the real exit codes: before a report, a commit or a PR, or when asked to run the checks. Not for writing or fixing tests, or for one ad-hoc command.
Installs into .claude/skills of the current project.
Are you the author of Gate?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/bsse23047-gate)
---
name: gate
description: "Run the project's gate (its configured build, test and check commands) and report the real exit codes: before a report, a commit or a PR, or when asked to run the checks. Not for writing or fixing tests, or for one ad-hoc command."
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/gate/run.mjs") Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/gate/run.mjs" *)
---
# gate
One call runs every gate command and reads each real exit code. A command that exits 0
but prints failures (`Tests 1 failed`, `# fail 2`) is marked failed. Trust the runner,
not a summary line.
"Stop" means: end your turn with the report and wait.
1. Run `node "${CLAUDE_PLUGIN_ROOT}/scripts/gate/run.mjs"` exactly like that, forward
slashes included, once, from any folder in the project; it prints every command's
exit code itself, so never append `echo $?`, pipes or `cd`. Re-run only after you changed code, or once with `--plan <path>` when a row says `no plan for this branch`. Add
`--plan <path>` when you know the task's plan (relative paths are relative to the
project root; without it the runner looks for the plan of the current branch). Add
`--only <name,name>` only when asked for some of the commands. The first stderr line,
`nauraiz-dev gate: project root <dir>`, says where it ran.
2. A `nauraiz-dev:` line printed before the table names a config problem: quote it in
the report whatever the exit code. Read the exit code:
- `0`: every command passed.
- `1`: at least one failed: a non-zero exit, or `exit 0 but output reports failures`.
A row failed with `no plan for this branch (pass --plan)` was not run: if a plan for
this task exists, run again with `--plan <path>`; otherwise report it failed.
- `2`: quote every `nauraiz-dev:` line it printed first. If any line other than
`no gate configured …` names a config file, the config failed to load: say the file
needs fixing, not that there is no gate, and stop. Otherwise no gate is configured:
say so, point to `/nauraiz-dev:init` (it detects the gate commands), and stop.
- `3`: the runner itself failed (`nauraiz-dev: gate runner failed: …`). Quote its
output and stop. Any other non-zero exit: the same.
3. Paste the runner's output verbatim (the table and every block), then one line:
`Gate: pass` or `Gate: FAIL (<names>)`.
4. Never re-run a gate command by hand, pipe it or grep it, unless the runner reported
that command failed; then run only that one, only to find the cause. A by-hand run is
never the gate result: after a fix, run the runner again.
5. Never call anything green that failed or did not run. Called on its own: stop after
the report. Called from another skill: hand the result back to it.