Keep going until the selected migration is completely done: run the migrator, inspect the report, fix migrated Codex instructions/skills/agents/MCP config, and re-run checks without stopping to ask for confirmation of the next step. If the user has selected a target, do not ask before creating, editing, replacing, or deleting generated Codex artifacts in that target (
,
,
, or
). Preserve unrelated existing Codex config entries in
or
, such as
,
,
, or unrelated MCP servers; do not ask about them unless they fail validation or directly conflict with the migration. Do not edit source Claude Code files (
,
,
, or
), unrelated project code, secrets, or another repository.
-
Start by using Codex's built-in TODO/task list tool. Do not create
or any TODO file unless the user explicitly asks. The TODO list input has a
array whose items each have
and
; use statuses
,
, and
. Make the TODOs specific to the selected artifacts. Use literal source → Codex target labels, for example:
- Inspect → Codex skills/prompts
- Inspect →
- Inspect → MCP servers
- Inspect hooks →
- Migrate safe selected artifacts → Codex files
- Validate generated
- Validate generated
- Report migrated artifacts and manual-review items
-
Read
references/differences.md
(and refresh Codex docs if its
date is old).
-
Scan and inspect before writing:
- lists active and inactive source surfaces.
- prints staged Codex artifact paths and report rows.
- summarizes readiness, manual-review work, and validation risks.
-
Convert surfaces in the same order the CLI uses:
- instructions: / to
- plugins: report Claude plugin trees and marketplaces as manual migration work
- hooks: rewrite supported Claude hooks into and enable
[features].codex_hooks = true
- skills and commands: write Codex skills under
- config: write from Claude model/sandbox settings and MCP servers, including when config is generated
- subagents: write Codex custom agents under
-
Dry-run, then write the selected target. Use
only when orphan generated skills or agents should be deleted.
-
Inspect the terminal output and
.codex/migrate-to-codex-report.txt
after real runs.
-
Review generated artifacts in this order:
,
,
,
,
, then report-only plugin items.
-
Run
against each target after edits.
-
Re-run checks and
after edits.
-
Return the final migration report as one markdown table per scope that has rows. The tables cover only the non-native follow-up migration work you performed, such as skills created from slash commands, subagents, MCP servers, hooks, unsupported/local plugin notes, and manual-review caveats. Include programmatic native import rows for config, instructions, skills, or supported plugins only if you personally migrated them in this follow-up run.
If only one scope has rows, render only the table with no heading. If multiple scopes have rows, render one heading before each table. Use
for user-scope rows. For project-scope rows, use the actual project folder name as the heading, for example
**northstar-support-portal**
; do not use
as the heading. Do not add prose before or after the table output.
Use exactly these columns:
northstar-support-portal
| Status | Item | Notes |
|---|
| pr-review | Converted into a Codex skill |
| release-lead | Added as a Codex subagent |
| PreToolUse | Converted, but some Claude hook behavior differs in Codex |
| Notification | Codex does not have an equivalent notification hook |
| team-macros | Plugin needs manual setup |
must be
,
, or
. Use
when a Codex-facing artifact was created or changed and needs no special review. Use
when a Codex-facing artifact was created or changed but the migration changed semantics, inferred behavior, preserved tool rules as guidance, or dropped unsupported behavior. Use
when a source artifact was detected but no Codex-facing artifact was created.
combines the artifact type and concrete item name in one cell. Artifact type must be singular:
,
,
,
,
, or
. Wrap the artifact type in inline code; write the item name as plain text after it.
is always required; never leave it empty. Keep notes short, plain, and literal. Avoid internal implementation terms such as runtime expansion. Prefer phrases like
Converted into a Codex skill
,
Added as a Codex subagent
,
,
Converted into a Codex hook
,
Converted, but some Claude hook behavior differs in Codex
,
Codex does not have an equivalent notification hook
,
Plugin needs manual setup
, or
Plugin marketplace needs manual setup
.
Do not edit source Claude Code files, unrelated project code, secrets, or another repository during this loop. If a report row requires source-provider changes or product judgment, leave the generated Codex artifact with clear manual guidance instead of changing the source.
Choose the migrator command.
Inspect the migration before writing.
Dry-run, then run without
, for global and project.
Run the post-migration validator against each target after edits.
Run
for flags (
,
,
,
, defaults, and so on). Deep tables and more links are in
references/differences.md
.