Skip to content

Foundations

Primitives Matrix — cross-tool mapping

One table that translates any lesson in this course into your agent's dialect.

One table that translates any lesson in this course into your agent's dialect.

The hook

Every lesson here shows Claude Code and OpenCode side by side — but your team runs Codex, or Grok, or honestly all four. Good news: the concepts transfer perfectly, and only the names change. This matrix is the phrasebook that makes the translation trivial.

How to read it (plain English)

Rows are the eight primitives from primitives.md. Columns are tools. Each cell holds the tool's name for the idea — deliberately not the current command, which belongs to the tool's live docs (linked in the header). The discipline in one line: memorize rows, look up cells.

The matrix

PrimitiveClaude Code (docs)OpenCode (docs)Codex (OpenAI docs)Grok (xAI docs)
Rules fileCLAUDE.mdAGENTS.mdAGENTS.md.grok/GROK.md
Permissionspermission modes, /permissionsopencode.jsonpermissionapproval modes / sandboxpermission prompts
Plan modeplan mode (shift+tab)plan agentplan/suggest moderead-only mode
Skills.claude/skills/*/SKILL.mdskills/ directoryskills / custom prompts.grok/skills/
Hookssettings.json → hooksplugin hookslifecycle hooks— (use CI as the guard)
Subagents.claude/agents/*.mdagent configsub-taskssubagents
MCP / connectorsclaude mcp addopencode.jsonmcpMCP configMCP config
Headless / loop driverclaude -p, /loop, Cron toolsopencode run + cron/Actionscodex exec + crongrok --prompt + cron
Diagram

[!WARNING] Cells rot; rows don't. Tool vocabularies shift monthly — when a cell disagrees with the tool's live docs, trust the docs and open a content-fix issue. The row itself — that every serious agent has this primitive — is the part that lasts.

[!NOTE] Going deeper: the per-tool cheatsheets (Day 3) expand each column into a printable page, and every prebuilt loop in the library ships configs for at least two columns. The coverage policy lives in loop-plan.md §16.

Check yourself

Q: A teammate says "we can't adopt this course — we're a Codex shop and the examples are Claude Code." What's the two-sentence rebuttal this page hands you?

Answer

Every lesson teaches primitives that all four tools share — the matrix maps each one to Codex's names, and the lasting layer (the rows) is identical across tools. Only the cell-level commands differ, and those you'd be looking up in live docs no matter which tool you were on.

Try With AI

Paste the matrix into your agent and ask:

"Audit this row-by-row for [your tool]. Which cells are out of date against your current documentation, and what's the correct current name?"

File anything it catches as a content-fix issue — and just like that, you've made your first attribution-grade contribution to this repo.

When it goes wrong

SymptomCauseFix
Command from a cell failsCell rot — the mechanics moved onTool's live docs win; file a content-fix issue
A tool "has no" primitive you needDifferent name, same shapeRead the whole column; check the tool's changelog
Team split across tools can't share loopsLoops written in one dialectWrite loops as six-part declarations; port per-column

Sources: cross-tool comparisons adapted from cobusgreyling/loop-engineering's per-tool examples (S7, MIT). Full attribution: ../../resources/sources.md.

Glossary terms used on this page: primitive, lasting vs mechanical layer — see glossary.md.