Hosts and Capabilities
Four hosts, one engine: Claude Code, Codex, Grok, Hermes. What each host does and limitations.
Overview
AI Craftsman Superpowers runs on four hosts with one engine. Each host implements the same rules and gate, but observes different hook events and has different tool support.
| Claude Code | Codex | Grok | Hermes | |
|---|---|---|---|---|
| Install | /plugin install |
codex plugin add |
bin/craftsman-grok-install |
hermes plugins enable |
| Version | 2.1.218+ | 0.155.1+ | 1.0.40+ | native plugin |
| Write gate | Write, Edit |
apply_patch |
write, search_replace |
opt-in |
| Evidence gate | TaskCompleted |
no | no | pre_verify |
ask decision |
yes | no | yes | no |
| Test evidence | yes | no | yes | no |
| Skills | 22 /craftsman:<name> |
22 native | 22 /<name> (plan/loop/workflow stay /craftsman:) |
7 + /craftsman |
GitHub Copilot has an adapter, adapters/copilot/, written against its documented hook contract; no Copilot surface is qualified yet, so it is not one of the four hosts above.
Claude Code (Native Plugin)
The primary host. Full feature parity. Latest version: check with claude --version.
What it does:
- Write gate before disk on
WriteandEdittools - Evidence gate on
TaskCompletedevent askdecisions for rule violations- Test evidence grant and revoke
- All 22 skills:
/craftsman:<name> - Agent hooks, on by default: a headless Haiku review after each
WriteorEditand atStop. Turn them off with the plugin optionagent_hooks: false - From 4.14.0 on Claude Code 2.1.269 or later: files a Bash command changed are re-read after the call, each judged as a write under its own path
What it does NOT do:
- A file written by a shell command is not refused before it reaches disk. The re-read above happens after the Bash call, and only where the host lists the changed files (
tool_response.bashEditDiff, which Claude Code documents as best effort and records in bypass and auto mode, elsewhere only withbashEditDiffEnabledin user or managed settings). CI catches the rest
Install:
/plugin marketplace add BULDEE/ai-craftsman-superpowers
/plugin install craftsman@ai-craftsman-superpowers
/craftsman:setup --quick
Verify:
/craftsman:healthcheck
See the Claude Code install section of the README for requirements and a local install.
Codex (Native Plugin)
OpenAI’s Codex CLI. Feature parity for write validation. The gate runs natively from the plugin manifest once you trust it in /hooks.
What it does:
- Write gate before disk on
apply_patchtool - All 22 skills loaded natively from the plugin manifest
- Rules engine with 3-level inheritance
- Metrics per session
What it does NOT do:
- No evidence gate (Codex does not fire
TaskCompleted) - No
askdecision: where the gate would ask, it denies - No test evidence grant/revoke
- Codex does not read user or project hooks from
.codex/hooks/*.json; only fromhooks.jsonorconfig.tomlnext to a config layer
Install:
codex plugin marketplace add BULDEE/ai-craftsman-superpowers
codex plugin add craftsman@ai-craftsman-superpowers
codex # then /hooks: review and trust the craftsman handlers
Verify:
/craftsman:healthcheck
See the Codex quickstart for detailed setup, event list, and limits.
Grok (Native Plugin)
xAI’s Grok CLI. Full write validation. The gate is global (~/.grok/hooks/craftsman.json) and does not depend on project trust.
What it does:
- Write gate before disk on
writeandsearch_replacetools - All 22 skills with alternate slash names
- Rules engine with 3-level inheritance
- Metrics per session
askdecisions for rule violations- Test evidence grant and revoke
What it does NOT do:
- No evidence gate (Grok does not fire
TaskCompleted) - No agent hooks (gate is validation only)
- Plugin hooks are not executed on fresh process (gate is global file)
- No shell-written files caught before disk (CI catches them)
Skill names: On Grok, most skills use the short form /<name>. Three exceptions stay /craftsman:name because Grok already owns those commands:
/design # DDD design
/debug # Systematic debugging
/craftsman:plan # /plan is Grok's own command
/craftsman:loop # /loop is Grok's own command
/craftsman:workflow # /workflow is Grok's own command
/metrics # Quality dashboard
/healthcheck # Verify the install
Install:
git clone https://github.com/BULDEE/ai-craftsman-superpowers ~/src/ai-craftsman-superpowers
bash ~/src/ai-craftsman-superpowers/bin/craftsman-grok-install
Verify:
bash ~/src/ai-craftsman-superpowers/bin/craftsman-healthcheck --report
See the Grok quickstart for detailed setup, hook execution behavior, and limits.
Hermes (Native Plugin)
Nous Research’s Hermes. The gate applies at the conclusion: prevents the agent from concluding a coding turn that leaves critical violations.
What it does:
- Evidence gate on
pre_verifyevent (at turn conclusion) - Seven situation skills (
/craftsmanplus context) - Rules engine with 3-level inheritance
- Metrics per session
- Optional write gate (opt-in with
write_gate: onin config)
What it does NOT do:
- No pre-write gate by default (opt-in only)
- No 22 full skills (Hermes-specific 7 situation skills)
- No
askdecisions - No test evidence grant/revoke
Install:
git clone https://github.com/BULDEE/ai-craftsman-superpowers ~/.hermes/plugins/craftsman
hermes plugins enable craftsman
Verify:
/craftsman:healthcheck
See the Hermes quickstart for detailed setup and skills.
Common Patterns
Writing Files from Bash
On all hosts, files written by shell commands (e.g., printf > file, sed -i, custom scripts) are NOT refused by the write gate before disk. The CI gate (ci/craftsman-ci.sh) catches them. The pre-push hook reads no file: it only warns when the session was never verified (Hermes alone refuses a push until a passing conclusion on the tree it publishes).
From 4.14.0, on Claude Code 2.1.269 or later, the post-write check also runs after a Bash call and judges each file the host lists as changed, as if it had been written by Write. That is a review after the fact, best effort on the host’s side, not a refusal.
Example: A Bash command writes a file the plugin is not aware of.
printf "bad code" > file.php # Not refused by the write gate
Fix: Use the native write tools (Write and Edit on Claude Code, apply_patch on Codex, write and search_replace on Grok, write_file and patch on Hermes with write_gate: on) for all generated code.
Metrics Database Location
Each host and session isolation maintains its own metrics store. Resolve it at runtime:
METRICS_DB=$(bash "$(craftsman-path bin/craftsman-runtime)" metrics)
sqlite3 "$METRICS_DB"
Rules and CI
All hosts use the same rules engine. If your project has a .craft-config.yml, commit it to git so CI runs the same rules:
git add .craft-config.yml
git commit -m "config: share Craftsman rules across the team"
CI reads your project config and applies directory-level overrides, so the pipeline never diverges from your local hooks.
Which Host Should I Use?
- Claude Code: Every gate, all 22 skills, agent hooks for semantic review. Recommended for individuals and teams.
- Codex: OpenAI integration, native plugin support. If your team uses OpenAI’s Codex CLI.
- Grok: xAI’s Grok CLI. If your team uses Grok and wants validation without agent overhead.
- Hermes: Nous Research’s Hermes. If your agent runs on Hermes and you want a conclusion gate.
Troubleshooting Multi-Host Setup
Q: Can I use Craftsman on Claude Code and Codex in the same project?
Yes. Both hosts read the same .craft-config.yml and use the same rules. Metrics are isolated per host and session, so they do not interfere. Just install on both and enable the same packs.
Q: My Grok gate is not running.
The gate is global at ~/.grok/hooks/craftsman.json. Verify it exists:
ls -la ~/.grok/hooks/craftsman.json
If missing, re-run the installer:
bash ~/src/ai-craftsman-superpowers/bin/craftsman-grok-install
Q: Why did my Hermes agent conclude with violations?
The conclusion gate (pre_verify) refuses a conclusion only while a critical finding remains (layer, strict types, any, hardcoded secrets); advisory findings are surfaced once, without blocking. Hermes bounds the retries itself. To stop the two worst cases before they reach disk, turn on write_gate: on (SEC001 and LAYER001 only).