One command. Every agent configured. Zero drift.
A template-driven scaffolder and a standing configuration manager for the AI-assisted development lifecycle — agents, editors, skills, plugins, MCP servers, CI standards, and a built-in AI-fluency tutor.
bun create patterson-agents/cliEvery AI coding tool reinvents the same concepts with incompatible file formats.
Your instructions live in CLAUDE.md, AGENTS.md, .github/copilot-instructions.md,
and Zed's .rules — four files, one idea, guaranteed drift. Your MCP servers are
declared in .mcp.json, .vscode/mcp.json, opencode.json, and Zed's
context_servers — four shapes, six transport enums, four secret syntaxes.
patterson holds one canonical model and compiles it to every surface — then keeps watching, so hand edits are never lost, drift is always reported, and "add an MCP server everywhere" is one command instead of four file edits.
Pick one of 11 Patterson design-system templates — docs sites, storefronts, decks, corporate pages — and get a branded, agent-ready project in under a minute. Fully offline. Non-empty dirs refused, never clobbered. |
| The entire CLI is also a stdio MCP server. Any agent can drive every command — prompts become structured decisions, destructive ops require explicit consent, and nothing ever silently overwrites your edits. |
| Target | What patterson writes | |
|---|---|---|
| 🟣 | Claude Code | .claude/settings.json · CLAUDE.md · .mcp.json · skills · agents · hooks · plugins |
| 🐙 | GitHub Copilot | copilot-instructions.md · *.instructions.md · *.agent.md · *.prompt.md · skills · coding-agent setup |
| ⚡ | opencode | opencode.json · .opencode/agent · commands · skills.paths wiring |
| 🖥️ | VS Code | .vscode/mcp.json · settings · extensions · tasks |
| ✨ | Zed | settings · instruction-chain conflict detection (yes, it catches your old .cursorrules) |
| 📦 | Dev containers / Codespaces | devcontainer.json · prebuild-aware lifecycle · badge |
| 🚀 | GitHub Actions | least-privilege workflows · release with provenance · supply-chain scanning |
patterson create [dir] Scaffold from a design-system template (the wizard)
patterson init [--import] Adopt an existing repo — your config becomes the model
patterson sync Re-emit every surface from the model
patterson doctor [--fix] Drift + validity report
patterson check Which intent reaches which agent (coverage table)
patterson agents list · add · remove · sync
patterson skills list · search · add · remove · update (skills.sh ecosystem)
patterson plugins list · add · remove · marketplace …
patterson mcp list · add · remove · serve (serve = be an MCP server)
patterson design templates · pull · refresh · tokens
patterson editor vscode · zed · devcontainer · codespaces
patterson ci init · add <workflow> · sync
patterson new skill · mcp-server · plugin · claude-plugin · marketplace · command ·
cli-plugin · starlight-site · vitepress-site
patterson tutor [topic] · list · resume · status
Every read takes --json. Every write takes --dry-run and --yes. Every prompt is
resolvable by a flag — interactive, CI, and agent callers share one code path.
%%{init: {"theme": "base", "themeVariables": {
"primaryColor": "#003767", "primaryTextColor": "#ffffff", "primaryBorderColor": "#003767",
"lineColor": "#00A8E1", "secondaryColor": "#e5f6fc", "tertiaryColor": "#f6f7f8",
"fontFamily": "ui-sans-serif, system-ui"}}}%%
flowchart LR
subgraph model["📋 One canonical model"]
IR["patterson.config.ts<br/><i>PattersonProject IR</i>"]
end
subgraph engine["⚙️ Emit engine"]
C["compile(ir, target)"]
P["provenance<br/><i>.patterson/emitted.json</i>"]
D["drift guard<br/><i>never clobbers hand edits</i>"]
end
subgraph surfaces["🎯 Every surface"]
CC["Claude Code"]
CP["Copilot"]
OC["opencode"]
ED["VS Code · Zed"]
DC["devcontainer"]
GA["Actions"]
end
REG["🧭 Command registry"] -->|"CLI (citty)"| IR
REG -->|"MCP (stdio)"| IR
IR --> C --> P --> D
D --> CC & CP & OC & ED & DC & GA
Three design rules make it trustworthy:
- Pure compilation — every emitted file is a function of the model. Same model, same bytes, every time.
- Provenance everywhere — sentinel blocks in markdown, key-path records for
JSON/JSONC. If you hand-edit an emitted file, patterson keeps your edit, reports
the conflict, and exits non-zero in automation. Overwriting requires
--accept-generated. Files owned by other tools (likeskills-lock.json) are never written at all. - Declared reachability — when a concept can't round-trip to a surface (opencode
has no path-scoped instructions; Zed reads exactly one rules file),
patterson checktells you instead of silently dropping it.
patterson tutorHands-on AI-fluency lessons validated against your real project — GitHub-Skills style, but local. Tracks for AI-fluency foundations (the 4Ds), Claude Code, Copilot, and MCP (your lesson's server must answer a real JSON-RPC handshake to pass). Certification tracks prepare you for the official credentials and link out to the source courses — Anthropic Academy, GitHub Skills, MS Learn — with proper attribution.
Templates ship from the Patterson design system — navy #003767, sky #00A8E1,
Proxima Nova, 5px buttons, no gradients ever — with framework adapters for
Tailwind v4, UnoCSS, shadcn/ui, and Theme UI, plus a brand-adherence oxlint
config wired into patterson ci.
Spec-driven build (see specs/001-patterson-cli-v1/ —
constitution, spec, plan, research, contracts, tasks):
- Stage 0 — speckit spec tree, constitution v1.0.0
- P0 — Bun-workspaces monorepo (16 packages)
- P1 — core: IR · command registry · emit engine · checks
- P2a — walking skeleton: Claude Code end-to-end
- P2b — Copilot · opencode · Zed · VS Code emitters + C7 chain guard
- P3 — design templates (11 vendored) + create wizard +
create-patterson - P4 — skills wrapper · marketplaces ·
mcp serve - P5 — generators (
patterson new …) + shared MCP handshake validator - P6 — devcontainer/Codespaces + GitHub Actions emitters ·
doctor --fix - P7 — tutor (5 tracks, locally-validated lessons)
- P8 — polish ·
--jsonsweep · compiled binary
Post-v1: npm publish (license decision pending), in-process plugin loading (S4 verified feasible), vscode.dev instruct-mode target.
bun install
bun test# you're inRead AGENTS.md first (yes, CLAUDE.md is a symlink to it — we practice
what we compile). The constitution is binding:
drift safety and the supply-chain gate are non-negotiable, every external-surface
claim needs a primary source or a spike, and tests come with the code.
