Scaffold Skills per AI Agent
bellatrix init places the same provider-neutral skills into each agent's native layout, and never rewrites a file you own.
Scaffold
Run bellatrix init in the root of your test repository:
bellatrix init --agent claude --domains desktop,web,mobile --json
bellatrix init --agent claude,cursor --dry-run --json # several agents; preview only
bellatrix init --json # re-run for the agents already scaffolded Without --agent, init re-uses the agents already scaffolded (their manifests under .bellatrix/), else the single agent it detects from the repository, else it exits with code 2 and lists the choices. Re-running is safe: files you edited are skipped and reported unless you pass --regenerate.
Options
| Option | Meaning | Notes |
|---|---|---|
--agent <a[,b,...]> | AI agent(s) to scaffold for, comma-separated (windsurf = devin, agy = antigravity).Default: the agents already scaffolded, else the one detected from repo markers. | one of: claude | copilot | cursor | devin | codex | gemini | antigravity | kiro | opencode |
--target <a[,b,...]> | Legacy spelling of --agent. | legacy spelling of --agent |
--language <language> | BELLATRIX flavor. Default: the recorded language, else detected from build files, else csharp. | one of: csharp | java | typescript |
--domains <d[,d,...]> | Domains to scaffold. | default: desktop,web,mobile; one of: desktop | web | mobile |
--out <dir> | Repository root to scaffold into. | default: current directory |
--regenerate | Overwrite files you edited (otherwise they are skipped and reported). | |
--force | Legacy spelling of --regenerate. | legacy spelling of --regenerate |
--dry-run | Report what would be written; change nothing. | |
--template-source <dir> | Render your own template folder (same layout as the built-in templates) instead of the BELLATRIX templates. | |
--prefix <prefix> | Namespace for --template-source output (skills, agents, fragment, manifests). Default: inferred from the folder. |
Also accepted: bellatrix update-skills (same as init).
Claude Code
bellatrix init --agent claude | Instructions | .bellatrix/bellatrix.instructions.md + one @import line in CLAUDE.md |
|---|---|
| Skills | .claude/skills/ |
| Subagents | .claude/agents/*.md |
| Delegation | Isolated subagent (@agent-<name>) |
GitHub Copilot
bellatrix init --agent copilot | Instructions | .github/instructions/bellatrix.instructions.md (applyTo: "**") |
|---|---|
| Skills | .github/skills/ (or reuses .claude/skills/) |
| Subagents | .github/agents/*.agent.md, with agents: allow-list on generators. Reuses .claude/agents/ when Claude is scaffolded |
| Delegation | Subagent (VS Code runSubagent, CLI). Cloud agent: see limits |
Cursor
bellatrix init --agent cursor | Instructions | .cursor/rules/bellatrix.mdc (alwaysApply: true) |
|---|---|
| Skills | .cursor/skills/ (or reuses .claude/skills/) |
| Subagents | .cursor/agents/*.md (readonly: true on specialists) |
| Delegation | Isolated subagent (/name) |
Devin Desktop (formerly Windsurf)
bellatrix init --agent devin | Instructions | .devin/rules/bellatrix.md (trigger: always_on) |
|---|---|
| Skills | .devin/skills/ (or reuses .claude/skills/) |
| Subagents | .devin/agents/*.md (allowed-tools) |
| Delegation | Subagent (experimental). Fallback: bellatrix <domain> find |
Codex CLI
bellatrix init --agent codex | Instructions | One marker block in AGENTS.md pointing at .bellatrix/bellatrix.instructions.md |
|---|---|
| Skills | .agents/skills/ |
| Subagents | .codex/agents/*.toml |
| Delegation | Name the subagent in the prompt. Fallback: find |
Gemini CLI (enterprise — Gemini Code Assist)
bellatrix init --agent gemini | Instructions | One marker block in GEMINI.md importing @./.bellatrix/bellatrix.instructions.md |
|---|---|
| Skills | .agents/skills/ |
| Subagents | .gemini/agents/*.md (kind: local, Gemini tool names) |
| Delegation | Isolated subagent (@name) |
Antigravity CLI (agy)
bellatrix init --agent antigravity | Instructions | .agents/rules/bellatrix.md (trigger: always_on) |
|---|---|
| Skills | .agents/skills/ |
| Subagents | .agents/agents/<name>/agent.md (documented tool names; mainAgent/subagent) |
| Delegation | Subagent chosen by the main agent (no @name syntax). Fallback: bellatrix <domain> find |
Kiro CLI
bellatrix init --agent kiro | Instructions | .kiro/steering/bellatrix.md (inclusion: always) |
|---|---|
| Skills | .kiro/skills/ |
| Subagents | .kiro/agents/*.md (v3 Markdown; resources list the steering file and skills) |
| Delegation | Subagent named in plain language. Fallback: find |
OpenCode
bellatrix init --agent opencode | Instructions | One marker block in AGENTS.md pointing at .bellatrix/bellatrix.instructions.md (shared with Codex) |
|---|---|
| Skills | .opencode/skills/ (or reuses .claude/skills/ / .agents/skills/) |
| Subagents | .opencode/agents/*.md (mode: subagent, edit: deny on specialists) |
| Delegation | Subagent (@name) |
Rules every agent gets
- Human-owned files are never rewritten.
CLAUDE.md,AGENTS.mdandGEMINI.mdget exactly one import line or one marked block. - Skills are written once per directory set. When several agents read the same skills folder, BELLATRIX writes it once;
--dry-runshows these decisions. - One manifest per agent. Re-running for one agent never touches another agent's files.
- Delegation fallback is mandatory. Every fragment tells the agent to delegate locator work to the locator specialist or, when delegation is unavailable, to use only
bellatrix <domain> find --snapshot, and never to read a snapshot or page source into its main context. - No MCP registration.
initonly removes BELLATRIX's own stale MCP entries; other servers' entries are kept.
Your own templates
Teams with their own conventions can render their own template folder (same layout as the built-in templates) with the same contract:
bellatrix init --agent claude --template-source ./my-templates --prefix acme --json The prefix namespaces everything that is written: the skills and agents (acme-…), the fragment .bellatrix/acme.instructions.md and the manifests. bellatrix is reserved.