Skip to content

archgate check

Run all automated ADR compliance checks against the codebase.

Terminal window
archgate check [options] [files...]

Loads every ADR with rules: true in its frontmatter, executes the companion .rules.ts file, and reports violations with file paths and line numbers. When file paths are provided as positional arguments, only ADRs whose files patterns match those files are executed.

OptionDescription
--stagedOnly check git-staged files (useful for pre-commit hooks)
--jsonMachine-readable JSON output
--ciGitHub Actions annotation format
--adr <id>Only check rules from a specific ADR
--verboseShow passing rules and timing info
ArgumentDescription
[files...]Optional file paths to scope checks to. Only ADRs whose files patterns match will run. Supports stdin piping.
CodeMeaning
0All rules pass. No violations found.
1One or more violations detected.
2Rule execution error (e.g., malformed rule, security scanner block).

Check the entire project:

Terminal window
archgate check

Check only staged files before committing:

Terminal window
archgate check --staged

Check a single ADR:

Terminal window
archgate check --adr ARCH-001

Check specific files (only matching ADRs run):

Terminal window
archgate check src/foo.ts src/bar.ts

Pipe from git (check only changed files):

Terminal window
git diff --name-only | archgate check --json

Get JSON output for CI integration:

Terminal window
archgate check --json

Get GitHub Actions annotations:

Terminal window
archgate check --ci

When --json is used, the output is a single JSON object:

{
"pass": false,
"total": 4,
"passed": 3,
"failed": 1,
"warnings": 0,
"errors": 1,
"infos": 0,
"ruleErrors": 0,
"truncated": false,
"results": [
{
"adrId": "ARCH-001",
"ruleId": "register-function-export",
"description": "Command file must export a register*Command function",
"status": "fail",
"totalViolations": 1,
"shownViolations": 1,
"violations": [
{
"message": "Command file must export a register*Command function",
"file": "src/commands/broken.ts",
"line": 1,
"endLine": 1,
"endColumn": 42,
"severity": "error"
}
],
"durationMs": 12
}
],
"durationMs": 42
}
FieldTypeDescription
messagestringWhat the violation is
filestring?Relative file path
linenumber?Start line (1-based)
endLinenumber?End line (1-based) — for precise editor highlighting
endColumnnumber?End column (0-based) — for precise editor highlighting
fixstring?Suggested fix (guidance only)
severitystring"error", "warning", or "info"

When a rule file is blocked by the security scanner (e.g., uses Bun.spawn()) or a companion .rules.ts file is missing, the result appears in the JSON output with status: "error" and ruleId: "security-scan". Violations include the exact file and line of the blocked code (or the rules: true line in the ADR for missing companions).