Commands
The two CLIs mirror each other. Where they differ, both columns are
shown. JSON output uses snake_case in chisel and camelCase in
chisel-js.
Scan a project for architectural violations. Non-zero exit on any ERROR-level violation.
| Option | chisel |
chisel-js |
|---|---|---|
[path] default . |
✅ | ✅ |
--json |
✅ | ✅ |
--strict / --no-strict (default strict) |
✅ | ❌ (project-structure rules always on) |
chisel check ./your-backendchisel check ./your-backend --strictchisel check ./your-backend --no-strict --jsonchisel-js check ./your-frontendchisel-js check ./your-frontend --jsonExit codes: 0 when no ERROR violations; non-zero otherwise. WARNINGs
also block unless suppressed with a reason (see
Turn off a rule for a file).
List all rules grouped by category.
| Option | chisel |
chisel-js |
|---|---|---|
--json |
✅ | ✅ |
chisel ruleschisel rules --jsonchisel-js ruleschisel-js rules --jsonexplain
Section titled “explain”Print description + fix guidance for one rule, or every rule in a category.
| Argument | Description |
|---|---|
<rule-id> |
e.g. structural:isinstance-banned |
<category> |
e.g. structural: expands to every rule in that category |
| Option | chisel |
chisel-js |
|---|---|---|
--json |
✅ | ✅ |
chisel explain structural:isinstance-bannedchisel explain structuralchisel-js explain component-enforcement:raw-buttonchisel-js explain component-enforcementinit (TypeScript only)
Section titled “init (TypeScript only)”Detect the project topology and write chisel.config.json. Run this once,
before the first check.
| Option | Description |
|---|---|
[path] default . |
Project to initialise |
--mode <sveltekit-standalone|sveltekit-bff> |
Set the mode instead of detecting it |
--overwrite |
Replace an existing chisel.config.json |
--dry-run |
Print the config that would be written |
--json |
Machine-readable output |
chisel-js initchisel-js init ./your-frontend --mode sveltekit-bffchisel-js init --dry-run --jsonDetection is a one-time step. check reads the mode from the file and
never re-derives it, so adding a dependency can’t quietly change which
rules run. If the signals conflict, init says so and picks
sveltekit-standalone; pass --mode to settle it.
Without a config file check still works — it detects a mode, warns, and
suggests running init.
chisel.config.json
Section titled “chisel.config.json”| Key | Description |
|---|---|
mode |
sveltekit-standalone or sveltekit-bff |
tsconfig |
Path to the tsconfig whose paths define the aliases. Default tsconfig.json |
ignore |
Extra globs to exclude from discovery |
designSystem.allowIn |
Folders exempt from the native-HTML ban — where vendored and generated components live |
There are no rule toggles, by design. The config carries facts about the project, not decisions about which rules apply; an unknown key is an error rather than being silently ignored. If you need different rules, fork.
setup (Python only)
Section titled “setup (Python only)”Install bundled skills into a repo. One target per run.
| Option | Description |
|---|---|
[path] default . |
Project to install into |
--target <codex|claude|opencode> |
Destination directory |
--skill <name> (repeatable) |
Install only the named skills |
--overwrite |
Re-install over existing skills |
--dry-run |
Print what would change without writing |
--json |
Machine-readable output |
chisel setup --target codexchisel setup --target claude --skill qa --skill building-python-backendchisel setup --target opencode --dry-run --jsonThe TypeScript CLI uses update skills for the same job; see below.
update skills
Section titled “update skills”Overwrite installed skills with bundled copies. Same flags on both CLIs
except --overwrite (Python only; update skills always overwrites).
| Option | chisel |
chisel-js |
|---|---|---|
[path] default . |
✅ | ✅ |
--target <codex|claude|opencode> |
✅ | ✅ |
--skill <name> (repeatable) |
✅ | ✅ |
-y / --yes |
✅ | ✅ |
--dry-run |
✅ | ✅ |
--json |
✅ | ✅ |
--overwrite |
✅ | ❌ (always overwrites) |
chisel update skills --target codexchisel update skills --target claude -y --jsonchisel-js update skills --target codexchisel-js update skills --target claude -y --jsonupdate self
Section titled “update self”Upgrade the installed CLI package.
| Option | chisel |
chisel-js |
|---|---|---|
--manager <auto|pip|pipx|uv> |
✅ | ❌ |
--manager <auto|npm|bun> |
❌ | ✅ |
--dry-run |
✅ | ✅ |
chisel update selfchisel update self --manager uv --dry-runchisel-js update selfchisel-js update self --manager bun --dry-runJSON output shape
Section titled “JSON output shape”{ "violations": [ { "file": "...", "line": 12, "rule_id": "...", "message_ref": "..." } ], "messages": [ { "ref": "...", "rule_id": "...", "text": "...", "skill_name": "building-python-backend" } ]}{ "violations": [ { "file": "...", "line": 12, "ruleId": "...", "messageRef": "..." } ], "messages": [ { "ref": "...", "ruleId": "...", "text": "...", "skillName": "building-sveltekit-frontend" } ]}