Packs
One pack per stack. The same gate behind all of them.
Seven ship with the plugin, and the engine holds no list of languages: a pack declares its own. Write yours against the same manifest.
Symfony
DDD entities, CQRS commands, PHPStan, Doctrine repositories. Ships backend-craftsman, api-craftsman and symfony-reviewer
React
TypeScript strict, TanStack Query, shadcn/ui, branded types. Ships frontend-craftsman and react-reviewer
AI/ML
RAG pipelines, embeddings, LLM integration, MLOps. Ships the ai-engineer agent.
Python
Type hints and lint rules enforced through the same gate as PHP and TypeScript
Go
Error handling, context propagation, layer boundaries, and a Go structure scanner for the ratchet
Rust
Error handling, unsafe discipline, layer boundaries, clippy at Level 2
Bash
Shell rule coverage for the scripts your pipeline actually runs
# pack.yml
name: my-company
languages:
- id: php
extensions: [php]
validators: [hooks/company-validator.sh]
protected_configs: [phpstan.neon]
test_commands: [vendor/bin/phpunit]
rules:
owned:
- id: CO001
group: Architecture
text: "no manual instantiation of a Repository"
default_severity: blockGet Started
Up and Running in 3 Commands
No boilerplate. No YAML hell. No devops. Just install and craft.
Install on your agent
Claude Code shown here. Codex installs it with codex plugin add, Grok with bin/craftsman-grok-install, Hermes with hermes plugins enable. Same engine on all four, no API key for the core.
Configure
Setup reads your repository and loads the matching packs (Symfony, React, Python, Go, Rust, Bash, AI/ML). Without --quick it asks at most four plain-language questions.
Code
From now on, every file your agent writes through its write tool passes the gate first. Layer and strict_types violations are refused before the file exists, and the same rules fail your pipeline in CI.
💡 Pro tip: Run /craftsman:metrics after your first session to see exactly how many violations were caught.
Live Demo
See the Forge in Action
Write bad code. Watch the hook catch it. See it fixed automatically.
The Difference
What Changes When You Add Craftsman
| Feature | Without Craftsman | ⚡ With Craftsman |
|---|---|---|
| Code consistency across sessions | Varies by mood | Iron-law enforced |
| Architecture validation | Hope for the best | Pre-write quality gate |
| Cognitive bias detection | Non-existent | Real-time, session-aware |
| CI / hooks parity | "Works on my machine" | Same rules everywhere |
| Learning from corrections | Resets every session | SQLite feedback loop |
| Cost control | Pay for bad code generation | Core gate needs no API key; model tiering on Claude Code |
| Commit hygiene | Hooks skipped with --no-verify | Hook bypasses refused (from 4.14.0) |

Free & open source
No seats. No keys. Apache 2.0.
The core gate runs entirely on your machine and costs nothing. Agent hooks are optional and cost cents per session. Two commands, one restart, and the next write is checked.
Install it now