← Files i-have-headacheARCHIVED FILE

.ai/decisions/ADR-0003-duplicate-command-body.md

2.05 KB · Oct 5, 2026 · 18:34 UTC

↓ Download file

# ADR-0003 — Duplicate the command body rather than generate it

*Superseded 2026-09-19 by [ADR-0006](ADR-0006-always-on-one-source.md): one copy, the skill.*

*Status: accepted — 2026-09-13*

## Context

Claude Code and Codex need the same prompt text. Claude Code requires YAML
frontmatter; Codex must not have it. So the two files are identical except for a
four-line header.

## Options

**A. Generate the Codex file from the Claude one.** A script strips frontmatter;
CI verifies they match. Guarantees no drift. Cost: the repo gains a build step,
a script, and a CI config — for a three-file plugin with no other tooling. The
machinery would be larger than the product.

**B. Duplicate, and document the sync obligation.** Both files are checked in
and hand-maintained. Cost: they can drift silently, and nothing mechanical stops
it.

## Decision

Option B, with the obligation written down in three places: `AGENTS.md`,
[technical-logic](../technical-logic.md), and a dedicated skill,
[.ai/technical-logic.md](../technical-logic.md).

The body is one screen of prose that changes rarely. Build tooling would be
permanent overhead against an occasional, low-severity, easily-detected failure.

## Consequences

Good: the repo stays a pile of text files. Clone and read; no toolchain.

Bad: drift is possible and nothing prevents it mechanically. A missed sync means
the two platforms behave differently with no error anywhere. Detection is manual
— someone notices Codex acting differently.

Bad: the mitigation is documentation, which is weaker than a check. Accepted
because the blast radius is "one platform is slightly more verbose," not data
loss.

## Revisit when

The command body grows past roughly one screen, gains a third *file* to sync,
or a drift incident actually occurs. Any of those flips the arithmetic toward
Option A.

Cursor was added later and did **not** trigger this: it shares
`commands/` with Claude Code, so the file count is unchanged. See
[ADR-0004](ADR-0004-cursor-shares-the-command-directory.md). What matters is
files to sync, not platforms supported.

SHA-256: 52808179e402f3684245444a1787634404bfba0115a347568ac6e30b9e7b99d2