Tool Adapters
Underneath it all, the workflow is just plain markdown any capable agent can read. An adapter is nothing more than the directory a given tool happens to look in.
| Tool | Adapter | Invocation |
|---|---|---|
| Claude Code | .claude/skills/ |
/feature, /implement, … |
| Codex | .agents/skills/ |
$feature, $implement, … |
| GitHub Copilot | AGENTS.md + .agents/skills/ |
Ask it to run the matching skill |
| OpenCode | AGENTS.md + a compatible tree |
Ask it to run the matching skill |
| Anything else | AGENTS.md + readable skill files |
Ask it to follow the matching SKILL.md |
Who shares what
Section titled “Who shares what”Codex, Copilot, and OpenCode are all fine sharing a single .agents/ tree.
OpenCode will just as happily reuse .claude/ if Claude Code is also
selected — which is exactly why the installer never writes a third, separate
copy under .opencode/skills/.
Choosing adapters
Section titled “Choosing adapters”At install time, either interactively or with a flag:
npx create-syntaxis@latest -- --claude --codexnpx create-syntaxis@latest -- --allAdding one afterward:
npx create-syntaxis@latest update -- --codexDropping an adapter you don’t use
Section titled “Dropping an adapter you don’t use”Delete the directory and you’re done:
- Only using Codex, Copilot, or OpenCode: delete
CLAUDE.mdand.claude/. - Only using Claude Code: delete
.agents/, but leaveAGENTS.mdalone —CLAUDE.mdimports it.
Two trees, one source
Section titled “Two trees, one source”.agents/skills/<skill>/SKILL.md and .claude/skills/<skill>/SKILL.md match
byte for byte except for a single frontmatter key: the Claude version adds
disable-model-invocation: true, which keeps it explicit-only — it runs
because you asked, never picked up on its own initiative.
Contributors keep the two in sync with:
npm run sync:adapters # regenerate .claude from .agentsnpm run check:adapters # fail if they have driftedThe project owns its own state, not any one tool
Section titled “The project owns its own state, not any one tool”syntaxis/ belongs to the project — no adapter owns it. That means a project
can move from one agent to another without dragging its plans and history
back through a chat window first. Changing tools is just a matter of
installing a different adapter, not re-explaining the whole project from
scratch.
How commits get attributed
Section titled “How commits get attributed”Every AI tool Syntaxis supports is instructed not to add AI attribution
to commits or pull requests — no Co-Authored-By trailers, no
generated-by signatures. Genuine human attribution stays exactly as it was.
syntaxis/context/ai-interaction.md has the full rule along with the
optional per-tool settings that cut down on unwanted signatures further.