Claude vs ChatGPT
Aimpoint runs a multi-provider setup (ADR-002).
Side-by-side
| ChatGPT / Codex | Claude / Claude Code | |
|---|---|---|
| Agent instructions file | AGENTS.md |
CLAUDE.md (this repo symlinks it to AGENTS.md) |
| Project skills location | .agents/skills/ |
.claude/skills/ |
| User-level skills | ~/.agents/skills/ |
~/.claude/skills/ |
| Manual invocation | $skill-name |
/skill-name |
| Install tooling | Built-in $skill-installer |
Copy folders, or install via plugin/marketplace |
| Company-wide distribution | Enterprise workspace | Enterprise upload, Claude Code plugins |
| Aimpoint status | Primary internal (Enterprise since Feb 2026) | Client engagements, Cortex Code, some internal use |
Both discover skills hierarchically from the working directory up to the repo root, and both read the same SKILL.md format, which is why this repo keeps one source of truth in skills/ rather than per-provider copies.
Practical guidance
- Internal day-to-day work → Codex with your Enterprise account
- Client has a Claude license → Claude Code, deployed per the Deployment Options guide (client policy first)
- Snowflake environments → Cortex Code behaves like Claude Code (
/skill-name,.claude/skills/works) - Authoring skills → write provider-neutral instructions in
SKILL.md; put provider-specific bits (e.g.agents/openai.yaml) in optional files. Avoid instructions that only make sense in one ecosystem.
Gotchas
- Invocation prefix differs:
$(Codex) vs/(Claude); the skill name is identical - Codex's
$skill-installercopies skills into.agents/skills/; edits there don't flow back toskills/**. Same for.claude/skills/. Always PR changes toskills/**. - Output handling differs between chat products and CLI agents; see Handling Outputs