[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70F6T65KA26WPCXS7B50H5X":3,"skill-same:01M70F6T65KA26WPCXS7B50H5X":118},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M70F6T65KA26WPCXS7B50H5X","migrate-to-codex",null,"Migrate Claude-era skills into native Codex skill artifacts with a preservation-first workflow. Also migrate project-local Claude slash commands and command hooks in batch mode as review-required Codex artifacts. Classify migration risk, preserve control shape, validate runtime-coupling leaks, and require a Codex nativeness audit before calling the result native. Use for \"migrate skill to codex\", \"convert skill to codex\", \"port skills\", or \"codex compatibility\". This skill does not migrate agents.","zuharz\u002Fccode-to-codex","zuharz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F105288148?v=4","01M70F65DSYJQHWNJ06TKHG454","Sergejs","01M70F65EJFRJZTWRB3YJ43TKJ",75,"MIT","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"codex","migrate to codex","migrate","result","review","mode","native","port","as","classify","commands","project","local","codex skill","compatibility","hooks","command","audit","batch","workflow","2026-11-10 10:12:30",false,"---\nname: \"migrate-to-codex\"\ndescription: >-\n  Migrate Claude-era skills into native Codex skill artifacts with a\n  preservation-first workflow. Also migrate project-local Claude slash commands\n  and command hooks in batch mode as review-required Codex artifacts. Classify\n  migration risk, preserve control shape, validate runtime-coupling leaks, and\n  require a Codex nativeness audit before calling the result native. Use for\n  \"migrate skill to codex\", \"convert skill to codex\", \"port skills\", or\n  \"codex compatibility\". This skill does not migrate agents.\n---\n\n\u003C!-- Generated by the ccode-to-codex mirror sync on 2026-04-14 from input revision 9a2403fb. -->\n# Migrate to Codex\n\nPreserve the source workflow first. The goal is not to transliterate Claude\nprimitives. The goal is to produce the Codex skill artifact that best preserves\nthe source skill's behavior.\n\n## Conversation-First Entry\n\nBare or vague requests should not dump raw script flags immediately. Resolve the\nrequest through the shared contract in\n`references\u002Fconversational-migration-contract.md`.\n\nDefault menu for underspecified requests:\n\n1. Assess one skill\n2. Preview one skill\n3. Migrate one skill live\n4. Batch assess pending skills\n5. Review one migrated skill for nativeness\n6. Explain blockers and statuses\n\nRouting rules:\n\n- If the user already says `assess \u003Cskill>`, `preview \u003Cskill>`, or\n  `migrate \u003Cskill>`, or `review \u003Cskill>`, route directly.\n- In Plan mode, use `request_user_input` for the action choice only.\n- Outside Plan mode, render the same choices as a numbered text menu.\n- If the action needs a skill name and the user did not provide one, ask for it\n  in plain text.\n- Require explicit confirmation before any live write into `.codex\u002Fskills\u002F`.\n\n## Advanced CLI\n\n- Preferred wrappers:\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py --skill example-skill --json`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py --preview --skill example-url-validator --json`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py --skill example-url-validator --json`\n- Power-user engine:\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --analysis-only --json --skill example-skill`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --skill example-url-validator`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --all`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --all --dry-run --json`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --analysis-only --json`\n\n## Explicit Non-Goals\n\n- Do not attempt to preserve inline Claude `Agent()` \u002F `Task()` semantics mechanically in this skill.\n- Do not migrate agents here. Route agent dependencies to `migrate-agents-to-codex` at `.codex\u002Fskills\u002Fmigrate-agents-to-codex\u002FSKILL.md`.\n- Do not treat legacy `.codex\u002Fagents\u002F*.md` imports as resolved runtime dependencies. Only `.codex\u002Fagents\u002F*.toml` counts.\n- Do not treat command-derived skills or generated hook config as native\u002Ftrusted\n  output. They are compatibility artifacts that require manual review.\n\n## Sandbox Policy\n\nRecommended mode: `workspace-write`\n\nRationale: this workflow creates skill files, updates repo-local documentation,\nand runs validation scripts. Infrastructure or deployment access is not needed.\n\n## Runtime Contract\n\n1. Codex callable MCP namespaces use underscore-normalized server names.\n2. Hard MUST \u002F NEVER \u002F ONLY constraints survive verbatim.\n3. Preserve the source workflow's control shape unless Codex lacks a required primitive.\n4. Preserve direct execution when Codex supports it. Only redesign into manager-to-subagent when the source truly depends on task\u002Fteam semantics.\n5. Do not invent `spawn_agent`, `wait_agent`, `update_plan`, or approval requirements unless the source workflow genuinely needs them.\n6. User interaction is mode-dependent: `request_user_input` exists only in Plan mode; outside Plan mode rely on normal user messages or approval workflow.\n7. File edits use `apply_patch` when the workflow actually edits files.\n8. Explicitly named Claude agents that exist under `.claude\u002Fagents\u002F*.md` are hard runtime dependencies. Never substitute, downgrade, drop, or neutralize them during skill migration. If `.codex\u002Fagents\u002F\u003Cname>.toml` is missing, stop and route to `migrate-agents-to-codex`.\n9. Claude skill references are context-sensitive. Only operational uses are hard migration dependencies. Related-skills tables, troubleshooting notes, provenance\u002Fhistory, and redirected-skill markers are not blockers by themselves.\n10. For ambiguous skill mentions, the Python migrator extracts structured candidates and returns `MANUAL_REVIEW_REQUIRED`. The interactive Codex skill then owns the read-only mini-auditor pass. If the auditor still cannot classify a mention confidently, keep the skill in manual-review state rather than auto-blocking or auto-migrating.\n\n## Reference Map\n\n| Reference | Load when |\n| --- | --- |\n| `references\u002Fprimitive-mapping.md` | You need authoritative primitive translation rules or sandbox inference |\n| `references\u002Fembedded-agent-taxonomy.md` | The source skill embeds Claude `Agent(...)` or `Task(...)` sub-agent sites and you must distinguish inline slices from named agent dependencies |\n| `references\u002Fcomplexity-classifier.md` | You need to decide Tier 1 vs Tier 2 vs Tier 3 |\n| `references\u002Fcodex-skill-template.md` | You are hand-authoring a Tier 3 native skill |\n| `references\u002Farchitectural-patterns.md` | You need preservation-first rules or runtime-coupling checks |\n| `references\u002Fconversational-migration-contract.md` | You need the shared menu\u002Fdirect-routing\u002Fconfirmation rules for the `migrate-*` family |\n| `..\u002Fmigrate-agents-to-codex\u002FSKILL.md` | You need the agent-only migration workflow or its direct script entrypoint |\n| `docs\u002Fhow-to\u002Fclaude-to-codex-agentic-migration.md` | You need the repo-level migration contract and CLI examples |\n\n## Scripts\n\n| Script | Purpose |\n| --- | --- |\n| `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py` | Deterministic migration engine with preflight classification, `--analysis-only`, and additive `--json` structured output |\n| `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py` | Read-only readiness layer for the migration family: blocker counts, existing validator failures, drift, pending nativeness review, and oversized packages |\n| `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py` | Script-driven orchestration: doctor -> migrate -> validate -> tracker refresh -> dashboard summary, with optional materialized preview and markdown evidence report |\n| `tools\u002Fmigration_support\u002F` | Shared migration-family support package for tracker CLI, tracker state, nativeness handoff, and repo-root path helpers |\n| `tools\u002Fmigration_support\u002Fvalidate_names.py` | Thin wrapper around the shared Codex migration validator |\n\n## Discovery Summary\n\n- Agent targets are out of scope and must be routed to `migrate-agents-to-codex`.\n- Project-local Claude command markdown files are converted only in batch\u002Fall\n  mode into single-file skills named `command-*` under `.codex\u002Fskills\u002F`.\n- Project-local Claude settings command hooks are converted only in batch\u002Fall\n  mode into the Codex hooks config file.\n  Generated hooks are always reported as \"Check before using.\"\n- Embedded agent sites are a dependency-classification problem first: separate inline delegated slices from file-backed named agent dependencies before any primitive rewrite.\n- The migrator now classifies first: `MECHANICAL_SAFE`, `MANUAL_REVIEW_REQUIRED`, `REFACTOR_REQUIRED`, or `BLOCKED`.\n- Root CLI compatibility matters: zero-argument execution must remain valid even if the implementation moves under `.codex\u002Fskills\u002F`.\n- Provenance markers are not automatically runtime coupling; treat active docs, active scripts, and live references as the real completion gate.\n- Tier 3 migrations usually fail when they are treated as textual conversion instead of behavior-preserving rewrite.\n\n## Known Corrections\n\n- Banner insertion must happen after YAML frontmatter, never before it.\n- Primitive mapping is semantic, not textual. A source primitive name appearing in documentation does not mean the workflow should be auto-rewritten around the nearest Codex tool.\n- Legacy Claude skill-call syntax is context-sensitive during source analysis. Cross-references in prose, tables, and examples are dependency metadata, not orchestration. Operational workflow steps that invoke sibling skills still require rewrite.\n- Embedded `Agent(...)` syntax alone is not enough to choose a migration strategy. What matters is whether the spawned thing is an inline behavior slice or a referenced runtime artifact under `.claude\u002Fagents\u002F`.\n- Inline Claude orchestration forms are refusal triggers here, not transformation targets.\n- Plan-mode-only user-input primitives are not universal replacement targets. Outside Plan mode, normal user interaction or approval flow is the correct fallback.\n- Runtime-coupling checks must distinguish active dependencies from provenance-only strings.\n- Only `.codex\u002Fagents\u002F\u003Cname>.toml` satisfies a named agent dependency. `.md` files are legacy imports and ignored.\n- If a named Claude agent exists in `.claude\u002Fagents\u002F`, it is a hard dependency edge. Missing Codex parity is a stop condition, not a substitution opportunity.\n- If a referenced skill exists only in the Claude tree, it is a hard dependency edge only when the mention is operational. Support or provenance mentions are evidence to classify, not blockers by themselves.\n\n## Migration State\n\n- Default status is `CODEX_COMPATIBLE_BUT_NOT_NATIVE` until Step 5 passes.\n- Any mechanically generated artifact enters `pending_native_review` after\n  write. File existence may unblock downstream migrations, but native status\n  still requires a recorded manual nativeness review.\n- Command-generated `command-*` skills enter the same `pending_native_review`\n  state. Hook config is operational-review-required and is not native-tracked in\n  v1.\n- No migration may be marked `NATIVE` if any active consumer-side script or active doc still points to the old source asset path for that workflow.\n- Preserve the source tree. Do not delete or rewrite the source skill unless the user explicitly asks for cutover work.\n- Agent migration is OUT OF SCOPE. If the target is a Claude agent, stop and route to `migrate-agents-to-codex`.\n- `BLOCKED` means a hard dependency is unresolved: either a named agent runtime dependency or an operational referenced skill that still exists only in the legacy Claude skill tree. Migrate that dependency first.\n- `MANUAL_REVIEW_REQUIRED` means the deterministic classifier found unresolved ambiguous references to Claude-only skills. Do not mechanically migrate until the Codex-layer adjudicator or a human resolves them.\n- `REFACTOR_REQUIRED` means unsafe orchestration exists and the skill must be hand-authored or manually refactored.\n- `MECHANICAL_SAFE` means no inline orchestration forms, hard dependency blockers, or unresolved ambiguous Claude-only references remain, so deterministic migration may proceed.\n\n## User Checkpoints\n\n| Checkpoint | When to stop |\n| --- | --- |\n| Dependency resolution | An operational referenced skill exists only in the legacy Claude skill tree, an ambiguous mention still needs manual classification, or a named agent still lacks a `.codex\u002Fagents\u002F*.toml` contract |\n| Audit escalation | Step 5 still returns any CRITICAL or HIGH findings after the convergence pass |\n| Judgment-required rewrite | A fix changes behavior rather than restoring compatibility |\n\n## Workflow\n\n### 0. Resolve Interaction Mode\n\nBefore running any backend script, decide whether the user gave a directly\nactionable request or needs the family menu:\n\n- direct intent + skill name -> route immediately\n- direct intent + missing skill name -> ask for the missing target\n- vague request -> show the menu from `references\u002Fconversational-migration-contract.md`\n- explicit `review \u003Cskill>` on an already migrated skill -> skip migration\n  write logic and jump to Step 5 as a read-only nativeness audit\n\nPreferred execution path:\n\n- `assess` -> `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py --json ...`\n- `preview` -> `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py --preview --json ...`\n- `migrate live` -> same workflow without `--preview`, but only after an\n  explicit confirmation step\n\nKeep raw `migrate_claude_workflows_to_codex.py` usage as the power-user path,\nnot the default conversational front door.\n\nNamed `--skill \u003Cname>` execution is intentionally narrow: it processes only the\nnamed Claude skill package and does not convert command files or hook settings\nas a side effect. Batch mode (`--all` or zero-argument execution) processes\nnon-archived skills plus project-level command and hook surfaces.\n\n### 1. Resolve Gold Standard and Assess Targets\n\n**Context**: The user provides one skill, a batch of skills, or `--all`.\n**Why first**: bad target classification causes the rest of the workflow to produce polished but invalid output.\n\n**Action**:\n\n1. Confirm `examples\u002Fhello-world-skill\u002FSKILL.md` exists. If it does not, fail fast or fall back explicitly to the template and pattern references.\n2. Reject agent targets immediately. This workflow accepts Claude skills only; if the request points at `.claude\u002Fagents\u002F` or names an agent spec, route to `migrate-agents-to-codex`.\n3. Scan the skill body and active references for embedded agent sites using `references\u002Fembedded-agent-taxonomy.md`:\n   - inline ephemeral `Agent(` \u002F `Task(` blocks with in-body prompt, model, and mode\n   - named file-backed agents where `subagent_type`, `role`, or routing-table outputs match `.claude\u002Fagents\u002F*.md`\n   - mixed routing tables: every reachable named agent is a dependency edge until proven otherwise\n4. Run preflight classification before any transform:\n   - `BLOCKED` if a named agent dependency exists but `.codex\u002Fagents\u002F\u003Cname>.toml` is missing, or if an operational Claude-only skill dependency is confirmed\n   - `REFACTOR_REQUIRED` if inline `Agent()` \u002F `Task()` forms, routing tables, or orchestration primitives survive\n   - `MANUAL_REVIEW_REQUIRED` if unresolved ambiguous references to Claude-only skills remain\n   - `MECHANICAL_SAFE` only when those risks are absent\n5. Classify each skill target with `references\u002Fcomplexity-classifier.md` after preflight.\n6. Run the preservation gate before rewriting:\n   - Does Codex already support the source workflow directly?\n   - Does the source intentionally orchestrate direct tool calls?\n   - Does the source explicitly reject delegation?\n   - Are filesystem artifacts part of the execution contract?\n   - Do prompt templates rely on direct MCP or file access?\n7. Resolve cross-references before migrating. First classify each mention as operational, reference-only, or ambiguous.\n   - For named file-backed agents, `MIGRATE` is the only valid action. Do NOT `SUBSTITUTE`, `DROP`, or `NEUTRALIZE` a named Claude agent dependency.\n   - For referenced skills, if the mention is operational and the source skill exists only in the legacy Claude skill tree with no Codex counterpart, `MIGRATE` is the only valid action. Stop completely, tell the user you cannot proceed with migration because there is a hard dependency on that skill, and tell them to migrate that skill first.\n   - For ambiguous referenced skills, the Python CLI must emit structured candidate data via `--json` and return `MANUAL_REVIEW_REQUIRED`. The interactive Codex skill then routes those candidates through a read-only `gpt-5.4-mini` auditor with `reasoning_effort: \"high\"`. If the auditor returns `operational_dependency`, upgrade to `BLOCKED`. If it returns `reference_only`, clear the candidate. If it returns `uncertain`, remain in `MANUAL_REVIEW_REQUIRED`.\n   - For inline agent slices, preserve prompt\u002Fmodel\u002Feffort intent inline; do not convert them into external dependencies.\n   - Reference-only mentions in Related Skills, troubleshooting, provenance, redirects, or other non-operational prose may be neutralized or rewritten as prose. Do not neutralize a real Claude-only skill dependency once it is classified as operational.\n8. Skip skills whose entrypoint marks them archived or redirected immediately.\n9. Reframe invalid requests early:\n   - agent target -> route to `migrate-agents-to-codex`\n   - repo-wide provenance cleanup -> treat as follow-up work, not proof that the current skill migration failed\n   - behavior-changing rewrite request -> stop and confirm that the user wants more than compatibility migration\n\n**Result**: Each skill target is classified as `MECHANICAL_SAFE`, `MANUAL_REVIEW_REQUIRED`, `REFACTOR_REQUIRED`, or `BLOCKED` before any transform runs.\n\n**Anti-patterns**:\n\n- Do not auto-rewrite `TaskCreate` -> `spawn_agent` before checking orchestration intent.\n- Do not flatten inline prompt-defined agents and file-backed named agents into the same generic `spawn_agent` rewrite.\n- Do not discard inline model\u002Feffort intent by hardcoding generic defaults when the source says `opus`, `sonnet`, or `haiku`.\n- Do not process batch targets in arbitrary order when dependencies are unresolved.\n- Do not use this skill to migrate agents. Use `migrate-agents-to-codex` for `.claude\u002Fagents\u002F*`.\n- Do not substitute an explicitly named Claude agent with a generic worker, different agent, or prose fallback just to keep the skill migration moving.\n- Do not rewrite around a referenced Claude-only skill dependency just because it appears in related-skills prose rather than an operational step.\n\n### 2. Fix Tooling Once Per Session\n\n**Context**: The migration scripts are shared infrastructure. Fix them once, then reuse them.\n**Why this phase exists**: migration defects in shared tooling create repeated downstream drift, so fix the engine before fixing artifacts.\n\n**Action**:\n\n1. Ensure banner insertion happens after YAML frontmatter.\n2. Expand primitive mappings using `references\u002Fprimitive-mapping.md`.\n3. Teach shared tooling to refuse unsafe automation and over-broad dependency blocking:\n   - inline agent slices trigger `REFACTOR_REQUIRED`\n   - named agents trigger `.codex\u002Fagents\u002F\u003Cname>.toml` dependency checks\n   - operational referenced Claude skills trigger `.codex\u002Fskills\u002F\u003Cname>\u002F` dependency checks\n   - support tables, troubleshooting notes, related-skills sections, and provenance markers do not force `BLOCKED`\n   - ambiguous referenced skills are emitted as structured candidates and return `MANUAL_REVIEW_REQUIRED` instead of being auto-blocked or auto-migrated\n   - any missing named agent forces `BLOCKED`, even if inline orchestration also exists\n   - legacy `.codex\u002Fagents\u002F\u003Cname>.md` files do not satisfy runtime dependencies\n4. Add or verify `--skill`, `--all`, `--dry-run`, and `--analysis-only`.\n5. Preserve the root CLI contract: zero-argument execution must remain valid through the repo-level wrapper.\n\n**Result**: The migration engine is safe to use for deterministic conversion.\n\n**Anti-patterns**:\n\n- Do not change the documented root CLI without an explicit compatibility contract.\n- Do not treat mapping-table text as executable replacement targets.\n\n### 3. Verify Domain Content Before Writing\n\n**Context**: Skill content drifts. Verify first, write once.\n**Why this phase exists**: stale paths and broken examples are expensive because they survive syntax validation and only fail when a later agent executes them.\n\n**Action**:\n\n1. Check prompt template paths, file references, and code examples against the live repo.\n2. Replace unverifiable details with neutral prose rather than shipping stale guidance.\n3. Search the active docs, scripts, and migrated tree for old-source runtime coupling.\n4. For Tier 3, scan the full skill package, not just `SKILL.md`.\n\n**Result**: The output will not encode stale paths, broken references, or incorrect repo assertions.\n\n**Anti-patterns**:\n\n- Do not trust the source skill body as current without verification.\n- Do not copy prompt templates containing stale file paths into the target artifact.\n\n### 4. Execute the Migration\n\n**Why this phase exists**: execution strategy must match tier; using the wrong path here is the main source of false “completed” migrations.\n\n**Tier 1**:\n\n1. Run `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --skill \u003Cname>`.\n2. Copy non-markdown files with the migrated package.\n3. Treat the written artifact as `pending_native_review`.\n4. Spot-check the output before relying on it operationally, then complete Step\n   5 before calling it native.\n\n**Tier 2**:\n\n1. Run the mechanical conversion.\n2. Review MCP servers, sandbox choice, primitive semantics, and reference portability.\n3. Keep asset parity: migrate supporting references and scripts together.\n\n**Tier 3**:\n\n1. Do NOT run mechanical conversion -- output would be non-functional.\n2. Read the gold standard and `references\u002Fcodex-skill-template.md`.\n3. Hand-author the native skill, preserving control shape and hard constraints.\n4. For embedded agents, branch by taxonomy:\n   - inline slice -> preserve as inline Codex `spawn_agent(...)` pattern only when delegation is semantically required, and carry model\u002Feffort intent forward\n   - named dependency -> keep the dependency explicit, require `.codex\u002Fagents\u002F\u003Cname>.toml`, and surface it in references or consumption contracts\n5. Copy pure documentation reference files only when they are still correct after Step 3.\n\n**Result**: A migrated skill package exists in `.codex\u002Fskills\u002F`.\n\n**Classifier gate**:\n\n- `MECHANICAL_SAFE` -> deterministic transform may proceed, but manual\n  nativeness review is still mandatory before native completion\n- `MANUAL_REVIEW_REQUIRED` -> refuse deterministic migration until the Codex-layer adjudicator or a human resolves the ambiguous references\n- `REFACTOR_REQUIRED` -> refuse and print action-oriented findings\n- `BLOCKED` -> refuse and print exact routing guidance for the unresolved dependency: `migrate-agents-to-codex` for agents, or \"please migrate that skill first\" for Claude-only skill dependencies\n\n**Anti-patterns**:\n\n- Mechanical conversion on Tier 3.\n- Inventing new orchestration phases because Codex happens to have sub-agents.\n\n### 5. Validate and Audit for Nativeness\n\n**Why this phase exists**: structural validity is necessary but not sufficient; nativeness is a higher bar than “file parses”.\n\n**Review-only entry**: If a skill already exists under `.codex\u002Fskills\u002F` and the\ntracker says it is `pending_native_review`, this phase may be invoked directly\nas a read-only single-skill review flow. In that entry path, audit first,\npresent findings plus next actions, and auto-record `native` by default when\nthe final audit result is `NO_FINDINGS` unless the user explicitly asked for\naudit-only behavior.\n\nDashboard routing note:\n\n- `migration-dashboard` may use this review-only entry as a bounded Verify\n  phase after `review next`, `review \u003Cnumber>`, or `review \u003Cname>`.\n- In that entry path, the parent dashboard remains a thin router. This skill\n  owns the reviewer prompt, delegated lifecycle, evidence-record guidance, and\n  tracker close-out instructions.\n\n**Structural validation**:\n\n1. Run `python3 tools\u002Fmigration_support\u002Fvalidate_names.py --scan-dir .codex\u002Fskills\u002F\u003Cname>`.\n2. Check YAML frontmatter, line count, naming, stale source-path leaks, absolute home paths, and missing local assets.\n3. When using preview mode, validate the preview package before touching the live `.codex\u002Fskills\u002F` tree.\n\n**Native Codex compliance audit**:\n\n- **MANDATORY**: Step 5 MUST use inline `spawn_agent(...)` -- **NEVER** `external Codex review proxy` or `external large-context reviewer`.\n- The audit must verify that the execution contract was re-expressed in Codex terms without flattening the original control shape.\n- Spawn one inline nativeness-audit sub-agent with `model: \"gpt-5.4\"` and `reasoning_effort: \"high\"`.\n- Keep the auditor read-only by prompt contract: do not edit files, do not call `apply_patch`, do not rerun migration scripts, and use shell only for verification commands such as `grep`, `ls`, `sed`, and `cat`.\n- Use a persistent legacy-agent lifecycle for this audit loop:\n  - `spawn_agent(...)` once for the first-pass audit\n  - `wait_agent({\"targets\": [agent[\"id\"]]})` for findings\n  - parent applies CRITICAL and HIGH fixes locally\n  - `send_input(...)` to the same live auditor for convergence\n  - `wait_agent({\"targets\": [agent[\"id\"]]})` again\n  - `close_agent({ target: agent.id })` before leaving Step 5\n- This lifecycle guidance is workflow-local. It does not weaken the global rule that `spawn_agent` should be introduced only when the source workflow genuinely needs delegation.\n- Keep the parent-thread return compact. For dashboard-driven entry, return only\n  verdict, top findings, next action, and evidence path. Do not paste\n  the full audit into the main thread.\n- Fix CRITICAL and HIGH findings immediately with surgical edits.\n- Run one convergence pass. Hard cap: two cycles.\n- Save the full nativeness review to a markdown evidence record when the review is\n  meant to be recorded later. Reuse the existing migration evidence directories\n  or an explicit `\u002Ftmp` review path, then attach that path through\n  `--review-evidence` at tracker close-out.\n- After the final post-fix content is stable, record the nativeness result with:\n  - `python3 tools\u002Fmigration_support\u002Ftracker.py --write --record-review skill:\u003Cname>=native`\n  - `python3 tools\u002Fmigration_support\u002Ftracker.py --write --record-review skill:\u003Cname>=codex_compatible_but_not_native`\n- For `NO_FINDINGS`, use the `native` path by default with summary `No findings after convergence`.\n- Keep manual close-out only when MEDIUM findings remain, when the user requested audit-only behavior, or when the tracker write fails.\n- Do not leave the tracker at `pending_native_review` after a clean nativeness audit.\n\n**Completion gate**:\n\n- The execution contract must be re-expressed in Codex terms without flattening the original control shape. If the result is mechanically compatible but semantically flattened, keep status at `CODEX_COMPATIBLE_BUT_NOT_NATIVE`.\n- `NO_FINDINGS`: auto-record `native` and continue.\n- MEDIUM only: continue with noted risks.\n- Any CRITICAL or HIGH after convergence: stop and escalate.\n\n**Anti-patterns**:\n\n- Skip compliance audit because YAML passed.\n- Let the auditor edit files.\n- Respawn a fresh auditor for convergence when `send_input(...)` to the existing auditor would preserve the same review frame.\n- Loop audit for more than two cycles.\n- Soften MUST\u002FNEVER\u002FONLY during compression.\n\n### 6. Report\n\n**Why this phase exists**: the caller needs a migration status, not just modified files.\n\nReport each migration with:\n\n- Tier\n- Target path\n- Status: `NATIVE`, `CODEX_COMPATIBLE_BUT_NOT_NATIVE`, or `SKELETON_ONLY`\n- Sandbox recommendation\n- Validation status\n- Codex compliance result\n- Assets copied\n- References rewritten or intentionally preserved\n- Remaining risks\n- Evidence report path if the workflow used `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py`\n- Preview root if `--preview` materialized output outside the live target tree\n\nFor batch mode:\n\n1. Assess all targets first.\n2. Process Tier 1 in batch.\n3. Queue Tier 2 for sequential review.\n4. Queue Tier 3 for hand-authoring.\n5. For nativeness review of a completed migrated batch, auditors may run in\n   bounded parallel waves when write scopes do not overlap, for example\n   `3 parallel auditors -> parent fixes -> convergence -> 3 parallel auditors`.\n6. End with a consolidated summary and recorded review outcomes.\n\n**Anti-patterns**:\n\n- Report completion before Step 5 is finished.\n- Declare native while active docs or scripts still depend on the old source asset path.\n- Report agent migration status from this skill. Agent targets belong to `migrate-agents-to-codex`.\n\n## Verification Checklist\n\n- [ ] Target is a Claude skill, not a Claude agent\n- [ ] Gold standard or explicit fallback was resolved before authoring\n- [ ] Tier classification matches the actual control shape\n- [ ] Cross-references were resolved before migration\n- [ ] Shared tooling preserves the root CLI contract\n- [ ] Banner placement is frontmatter-safe\n- [ ] Primitive mappings were applied semantically, not mechanically\n- [ ] Embedded agent sites were classified as inline slices vs named file-backed dependencies\n- [ ] Inline agent model\u002Feffort intent was preserved or explicitly documented\n- [ ] Any inline `Agent()` \u002F `Task()` site triggered `REFACTOR_REQUIRED`\n- [ ] Any operational referenced skill that exists only in the legacy Claude skill tree triggered `BLOCKED`\n- [ ] Any ambiguous Claude-only referenced skill triggered `MANUAL_REVIEW_REQUIRED` until adjudicated\n- [ ] Named agent dependencies were resolved against `.codex\u002Fagents\u002F*.toml` or escalated to `migrate-agents-to-codex`\n- [ ] Claude-only skill dependencies were not neutralized, substituted, dropped, or rewritten away\n- [ ] `--analysis-only --json` exposes structured ambiguous-reference candidates for the Codex-layer adjudicator\n- [ ] No named Claude agent dependency was substituted, dropped, downgraded, or neutralized\n- [ ] Legacy `.codex\u002Fagents\u002F*.md` imports were ignored as non-authoritative runtime dependencies\n- [ ] No operational old-source path literals remain in the migrated package\n- [ ] Validator passes for the migrated skill package\n- [ ] Single-skill dry run succeeds through the root wrapper\n- [ ] Native audit completed, and any remaining issues are explicitly classified\n","\u003C!-- Generated by the ccode-to-codex mirror sync on 2026-04-14 from input revision 9a2403fb. -->\n# Migrate to Codex\n\nPreserve the source workflow first. The goal is not to transliterate Claude\nprimitives. The goal is to produce the Codex skill artifact that best preserves\nthe source skill's behavior.\n\n## Conversation-First Entry\n\nBare or vague requests should not dump raw script flags immediately. Resolve the\nrequest through the shared contract in\n`references\u002Fconversational-migration-contract.md`.\n\nDefault menu for underspecified requests:\n\n1. Assess one skill\n2. Preview one skill\n3. Migrate one skill live\n4. Batch assess pending skills\n5. Review one migrated skill for nativeness\n6. Explain blockers and statuses\n\nRouting rules:\n\n- If the user already says `assess \u003Cskill>`, `preview \u003Cskill>`, or\n  `migrate \u003Cskill>`, or `review \u003Cskill>`, route directly.\n- In Plan mode, use `request_user_input` for the action choice only.\n- Outside Plan mode, render the same choices as a numbered text menu.\n- If the action needs a skill name and the user did not provide one, ask for it\n  in plain text.\n- Require explicit confirmation before any live write into `.codex\u002Fskills\u002F`.\n\n## Advanced CLI\n\n- Preferred wrappers:\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py --skill example-skill --json`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py --preview --skill example-url-validator --json`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py --skill example-url-validator --json`\n- Power-user engine:\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --analysis-only --json --skill example-skill`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --skill example-url-validator`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --all`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --all --dry-run --json`\n  - `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --analysis-only --json`\n\n## Explicit Non-Goals\n\n- Do not attempt to preserve inline Claude `Agent()` \u002F `Task()` semantics mechanically in this skill.\n- Do not migrate agents here. Route agent dependencies to `migrate-agents-to-codex` at `.codex\u002Fskills\u002Fmigrate-agents-to-codex\u002FSKILL.md`.\n- Do not treat legacy `.codex\u002Fagents\u002F*.md` imports as resolved runtime dependencies. Only `.codex\u002Fagents\u002F*.toml` counts.\n- Do not treat command-derived skills or generated hook config as native\u002Ftrusted\n  output. They are compatibility artifacts that require manual review.\n\n## Sandbox Policy\n\nRecommended mode: `workspace-write`\n\nRationale: this workflow creates skill files, updates repo-local documentation,\nand runs validation scripts. Infrastructure or deployment access is not needed.\n\n## Runtime Contract\n\n1. Codex callable MCP namespaces use underscore-normalized server names.\n2. Hard MUST \u002F NEVER \u002F ONLY constraints survive verbatim.\n3. Preserve the source workflow's control shape unless Codex lacks a required primitive.\n4. Preserve direct execution when Codex supports it. Only redesign into manager-to-subagent when the source truly depends on task\u002Fteam semantics.\n5. Do not invent `spawn_agent`, `wait_agent`, `update_plan`, or approval requirements unless the source workflow genuinely needs them.\n6. User interaction is mode-dependent: `request_user_input` exists only in Plan mode; outside Plan mode rely on normal user messages or approval workflow.\n7. File edits use `apply_patch` when the workflow actually edits files.\n8. Explicitly named Claude agents that exist under `.claude\u002Fagents\u002F*.md` are hard runtime dependencies. Never substitute, downgrade, drop, or neutralize them during skill migration. If `.codex\u002Fagents\u002F\u003Cname>.toml` is missing, stop and route to `migrate-agents-to-codex`.\n9. Claude skill references are context-sensitive. Only operational uses are hard migration dependencies. Related-skills tables, troubleshooting notes, provenance\u002Fhistory, and redirected-skill markers are not blockers by themselves.\n10. For ambiguous skill mentions, the Python migrator extracts structured candidates and returns `MANUAL_REVIEW_REQUIRED`. The interactive Codex skill then owns the read-only mini-auditor pass. If the auditor still cannot classify a mention confidently, keep the skill in manual-review state rather than auto-blocking or auto-migrating.\n\n## Reference Map\n\n| Reference | Load when |\n| --- | --- |\n| `references\u002Fprimitive-mapping.md` | You need authoritative primitive translation rules or sandbox inference |\n| `references\u002Fembedded-agent-taxonomy.md` | The source skill embeds Claude `Agent(...)` or `Task(...)` sub-agent sites and you must distinguish inline slices from named agent dependencies |\n| `references\u002Fcomplexity-classifier.md` | You need to decide Tier 1 vs Tier 2 vs Tier 3 |\n| `references\u002Fcodex-skill-template.md` | You are hand-authoring a Tier 3 native skill |\n| `references\u002Farchitectural-patterns.md` | You need preservation-first rules or runtime-coupling checks |\n| `references\u002Fconversational-migration-contract.md` | You need the shared menu\u002Fdirect-routing\u002Fconfirmation rules for the `migrate-*` family |\n| `..\u002Fmigrate-agents-to-codex\u002FSKILL.md` | You need the agent-only migration workflow or its direct script entrypoint |\n| `docs\u002Fhow-to\u002Fclaude-to-codex-agentic-migration.md` | You need the repo-level migration contract and CLI examples |\n\n## Scripts\n\n| Script | Purpose |\n| --- | --- |\n| `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py` | Deterministic migration engine with preflight classification, `--analysis-only`, and additive `--json` structured output |\n| `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py` | Read-only readiness layer for the migration family: blocker counts, existing validator failures, drift, pending nativeness review, and oversized packages |\n| `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py` | Script-driven orchestration: doctor -> migrate -> validate -> tracker refresh -> dashboard summary, with optional materialized preview and markdown evidence report |\n| `tools\u002Fmigration_support\u002F` | Shared migration-family support package for tracker CLI, tracker state, nativeness handoff, and repo-root path helpers |\n| `tools\u002Fmigration_support\u002Fvalidate_names.py` | Thin wrapper around the shared Codex migration validator |\n\n## Discovery Summary\n\n- Agent targets are out of scope and must be routed to `migrate-agents-to-codex`.\n- Project-local Claude command markdown files are converted only in batch\u002Fall\n  mode into single-file skills named `command-*` under `.codex\u002Fskills\u002F`.\n- Project-local Claude settings command hooks are converted only in batch\u002Fall\n  mode into the Codex hooks config file.\n  Generated hooks are always reported as \"Check before using.\"\n- Embedded agent sites are a dependency-classification problem first: separate inline delegated slices from file-backed named agent dependencies before any primitive rewrite.\n- The migrator now classifies first: `MECHANICAL_SAFE`, `MANUAL_REVIEW_REQUIRED`, `REFACTOR_REQUIRED`, or `BLOCKED`.\n- Root CLI compatibility matters: zero-argument execution must remain valid even if the implementation moves under `.codex\u002Fskills\u002F`.\n- Provenance markers are not automatically runtime coupling; treat active docs, active scripts, and live references as the real completion gate.\n- Tier 3 migrations usually fail when they are treated as textual conversion instead of behavior-preserving rewrite.\n\n## Known Corrections\n\n- Banner insertion must happen after YAML frontmatter, never before it.\n- Primitive mapping is semantic, not textual. A source primitive name appearing in documentation does not mean the workflow should be auto-rewritten around the nearest Codex tool.\n- Legacy Claude skill-call syntax is context-sensitive during source analysis. Cross-references in prose, tables, and examples are dependency metadata, not orchestration. Operational workflow steps that invoke sibling skills still require rewrite.\n- Embedded `Agent(...)` syntax alone is not enough to choose a migration strategy. What matters is whether the spawned thing is an inline behavior slice or a referenced runtime artifact under `.claude\u002Fagents\u002F`.\n- Inline Claude orchestration forms are refusal triggers here, not transformation targets.\n- Plan-mode-only user-input primitives are not universal replacement targets. Outside Plan mode, normal user interaction or approval flow is the correct fallback.\n- Runtime-coupling checks must distinguish active dependencies from provenance-only strings.\n- Only `.codex\u002Fagents\u002F\u003Cname>.toml` satisfies a named agent dependency. `.md` files are legacy imports and ignored.\n- If a named Claude agent exists in `.claude\u002Fagents\u002F`, it is a hard dependency edge. Missing Codex parity is a stop condition, not a substitution opportunity.\n- If a referenced skill exists only in the Claude tree, it is a hard dependency edge only when the mention is operational. Support or provenance mentions are evidence to classify, not blockers by themselves.\n\n## Migration State\n\n- Default status is `CODEX_COMPATIBLE_BUT_NOT_NATIVE` until Step 5 passes.\n- Any mechanically generated artifact enters `pending_native_review` after\n  write. File existence may unblock downstream migrations, but native status\n  still requires a recorded manual nativeness review.\n- Command-generated `command-*` skills enter the same `pending_native_review`\n  state. Hook config is operational-review-required and is not native-tracked in\n  v1.\n- No migration may be marked `NATIVE` if any active consumer-side script or active doc still points to the old source asset path for that workflow.\n- Preserve the source tree. Do not delete or rewrite the source skill unless the user explicitly asks for cutover work.\n- Agent migration is OUT OF SCOPE. If the target is a Claude agent, stop and route to `migrate-agents-to-codex`.\n- `BLOCKED` means a hard dependency is unresolved: either a named agent runtime dependency or an operational referenced skill that still exists only in the legacy Claude skill tree. Migrate that dependency first.\n- `MANUAL_REVIEW_REQUIRED` means the deterministic classifier found unresolved ambiguous references to Claude-only skills. Do not mechanically migrate until the Codex-layer adjudicator or a human resolves them.\n- `REFACTOR_REQUIRED` means unsafe orchestration exists and the skill must be hand-authored or manually refactored.\n- `MECHANICAL_SAFE` means no inline orchestration forms, hard dependency blockers, or unresolved ambiguous Claude-only references remain, so deterministic migration may proceed.\n\n## User Checkpoints\n\n| Checkpoint | When to stop |\n| --- | --- |\n| Dependency resolution | An operational referenced skill exists only in the legacy Claude skill tree, an ambiguous mention still needs manual classification, or a named agent still lacks a `.codex\u002Fagents\u002F*.toml` contract |\n| Audit escalation | Step 5 still returns any CRITICAL or HIGH findings after the convergence pass |\n| Judgment-required rewrite | A fix changes behavior rather than restoring compatibility |\n\n## Workflow\n\n### 0. Resolve Interaction Mode\n\nBefore running any backend script, decide whether the user gave a directly\nactionable request or needs the family menu:\n\n- direct intent + skill name -> route immediately\n- direct intent + missing skill name -> ask for the missing target\n- vague request -> show the menu from `references\u002Fconversational-migration-contract.md`\n- explicit `review \u003Cskill>` on an already migrated skill -> skip migration\n  write logic and jump to Step 5 as a read-only nativeness audit\n\nPreferred execution path:\n\n- `assess` -> `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py --json ...`\n- `preview` -> `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py --preview --json ...`\n- `migrate live` -> same workflow without `--preview`, but only after an\n  explicit confirmation step\n\nKeep raw `migrate_claude_workflows_to_codex.py` usage as the power-user path,\nnot the default conversational front door.\n\nNamed `--skill \u003Cname>` execution is intentionally narrow: it processes only the\nnamed Claude skill package and does not convert command files or hook settings\nas a side effect. Batch mode (`--all` or zero-argument execution) processes\nnon-archived skills plus project-level command and hook surfaces.\n\n### 1. Resolve Gold Standard and Assess Targets\n\n**Context**: The user provides one skill, a batch of skills, or `--all`.\n**Why first**: bad target classification causes the rest of the workflow to produce polished but invalid output.\n\n**Action**:\n\n1. Confirm `examples\u002Fhello-world-skill\u002FSKILL.md` exists. If it does not, fail fast or fall back explicitly to the template and pattern references.\n2. Reject agent targets immediately. This workflow accepts Claude skills only; if the request points at `.claude\u002Fagents\u002F` or names an agent spec, route to `migrate-agents-to-codex`.\n3. Scan the skill body and active references for embedded agent sites using `references\u002Fembedded-agent-taxonomy.md`:\n   - inline ephemeral `Agent(` \u002F `Task(` blocks with in-body prompt, model, and mode\n   - named file-backed agents where `subagent_type`, `role`, or routing-table outputs match `.claude\u002Fagents\u002F*.md`\n   - mixed routing tables: every reachable named agent is a dependency edge until proven otherwise\n4. Run preflight classification before any transform:\n   - `BLOCKED` if a named agent dependency exists but `.codex\u002Fagents\u002F\u003Cname>.toml` is missing, or if an operational Claude-only skill dependency is confirmed\n   - `REFACTOR_REQUIRED` if inline `Agent()` \u002F `Task()` forms, routing tables, or orchestration primitives survive\n   - `MANUAL_REVIEW_REQUIRED` if unresolved ambiguous references to Claude-only skills remain\n   - `MECHANICAL_SAFE` only when those risks are absent\n5. Classify each skill target with `references\u002Fcomplexity-classifier.md` after preflight.\n6. Run the preservation gate before rewriting:\n   - Does Codex already support the source workflow directly?\n   - Does the source intentionally orchestrate direct tool calls?\n   - Does the source explicitly reject delegation?\n   - Are filesystem artifacts part of the execution contract?\n   - Do prompt templates rely on direct MCP or file access?\n7. Resolve cross-references before migrating. First classify each mention as operational, reference-only, or ambiguous.\n   - For named file-backed agents, `MIGRATE` is the only valid action. Do NOT `SUBSTITUTE`, `DROP`, or `NEUTRALIZE` a named Claude agent dependency.\n   - For referenced skills, if the mention is operational and the source skill exists only in the legacy Claude skill tree with no Codex counterpart, `MIGRATE` is the only valid action. Stop completely, tell the user you cannot proceed with migration because there is a hard dependency on that skill, and tell them to migrate that skill first.\n   - For ambiguous referenced skills, the Python CLI must emit structured candidate data via `--json` and return `MANUAL_REVIEW_REQUIRED`. The interactive Codex skill then routes those candidates through a read-only `gpt-5.4-mini` auditor with `reasoning_effort: \"high\"`. If the auditor returns `operational_dependency`, upgrade to `BLOCKED`. If it returns `reference_only`, clear the candidate. If it returns `uncertain`, remain in `MANUAL_REVIEW_REQUIRED`.\n   - For inline agent slices, preserve prompt\u002Fmodel\u002Feffort intent inline; do not convert them into external dependencies.\n   - Reference-only mentions in Related Skills, troubleshooting, provenance, redirects, or other non-operational prose may be neutralized or rewritten as prose. Do not neutralize a real Claude-only skill dependency once it is classified as operational.\n8. Skip skills whose entrypoint marks them archived or redirected immediately.\n9. Reframe invalid requests early:\n   - agent target -> route to `migrate-agents-to-codex`\n   - repo-wide provenance cleanup -> treat as follow-up work, not proof that the current skill migration failed\n   - behavior-changing rewrite request -> stop and confirm that the user wants more than compatibility migration\n\n**Result**: Each skill target is classified as `MECHANICAL_SAFE`, `MANUAL_REVIEW_REQUIRED`, `REFACTOR_REQUIRED`, or `BLOCKED` before any transform runs.\n\n**Anti-patterns**:\n\n- Do not auto-rewrite `TaskCreate` -> `spawn_agent` before checking orchestration intent.\n- Do not flatten inline prompt-defined agents and file-backed named agents into the same generic `spawn_agent` rewrite.\n- Do not discard inline model\u002Feffort intent by hardcoding generic defaults when the source says `opus`, `sonnet`, or `haiku`.\n- Do not process batch targets in arbitrary order when dependencies are unresolved.\n- Do not use this skill to migrate agents. Use `migrate-agents-to-codex` for `.claude\u002Fagents\u002F*`.\n- Do not substitute an explicitly named Claude agent with a generic worker, different agent, or prose fallback just to keep the skill migration moving.\n- Do not rewrite around a referenced Claude-only skill dependency just because it appears in related-skills prose rather than an operational step.\n\n### 2. Fix Tooling Once Per Session\n\n**Context**: The migration scripts are shared infrastructure. Fix them once, then reuse them.\n**Why this phase exists**: migration defects in shared tooling create repeated downstream drift, so fix the engine before fixing artifacts.\n\n**Action**:\n\n1. Ensure banner insertion happens after YAML frontmatter.\n2. Expand primitive mappings using `references\u002Fprimitive-mapping.md`.\n3. Teach shared tooling to refuse unsafe automation and over-broad dependency blocking:\n   - inline agent slices trigger `REFACTOR_REQUIRED`\n   - named agents trigger `.codex\u002Fagents\u002F\u003Cname>.toml` dependency checks\n   - operational referenced Claude skills trigger `.codex\u002Fskills\u002F\u003Cname>\u002F` dependency checks\n   - support tables, troubleshooting notes, related-skills sections, and provenance markers do not force `BLOCKED`\n   - ambiguous referenced skills are emitted as structured candidates and return `MANUAL_REVIEW_REQUIRED` instead of being auto-blocked or auto-migrated\n   - any missing named agent forces `BLOCKED`, even if inline orchestration also exists\n   - legacy `.codex\u002Fagents\u002F\u003Cname>.md` files do not satisfy runtime dependencies\n4. Add or verify `--skill`, `--all`, `--dry-run`, and `--analysis-only`.\n5. Preserve the root CLI contract: zero-argument execution must remain valid through the repo-level wrapper.\n\n**Result**: The migration engine is safe to use for deterministic conversion.\n\n**Anti-patterns**:\n\n- Do not change the documented root CLI without an explicit compatibility contract.\n- Do not treat mapping-table text as executable replacement targets.\n\n### 3. Verify Domain Content Before Writing\n\n**Context**: Skill content drifts. Verify first, write once.\n**Why this phase exists**: stale paths and broken examples are expensive because they survive syntax validation and only fail when a later agent executes them.\n\n**Action**:\n\n1. Check prompt template paths, file references, and code examples against the live repo.\n2. Replace unverifiable details with neutral prose rather than shipping stale guidance.\n3. Search the active docs, scripts, and migrated tree for old-source runtime coupling.\n4. For Tier 3, scan the full skill package, not just `SKILL.md`.\n\n**Result**: The output will not encode stale paths, broken references, or incorrect repo assertions.\n\n**Anti-patterns**:\n\n- Do not trust the source skill body as current without verification.\n- Do not copy prompt templates containing stale file paths into the target artifact.\n\n### 4. Execute the Migration\n\n**Why this phase exists**: execution strategy must match tier; using the wrong path here is the main source of false “completed” migrations.\n\n**Tier 1**:\n\n1. Run `python3 .codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py --skill \u003Cname>`.\n2. Copy non-markdown files with the migrated package.\n3. Treat the written artifact as `pending_native_review`.\n4. Spot-check the output before relying on it operationally, then complete Step\n   5 before calling it native.\n\n**Tier 2**:\n\n1. Run the mechanical conversion.\n2. Review MCP servers, sandbox choice, primitive semantics, and reference portability.\n3. Keep asset parity: migrate supporting references and scripts together.\n\n**Tier 3**:\n\n1. Do NOT run mechanical conversion -- output would be non-functional.\n2. Read the gold standard and `references\u002Fcodex-skill-template.md`.\n3. Hand-author the native skill, preserving control shape and hard constraints.\n4. For embedded agents, branch by taxonomy:\n   - inline slice -> preserve as inline Codex `spawn_agent(...)` pattern only when delegation is semantically required, and carry model\u002Feffort intent forward\n   - named dependency -> keep the dependency explicit, require `.codex\u002Fagents\u002F\u003Cname>.toml`, and surface it in references or consumption contracts\n5. Copy pure documentation reference files only when they are still correct after Step 3.\n\n**Result**: A migrated skill package exists in `.codex\u002Fskills\u002F`.\n\n**Classifier gate**:\n\n- `MECHANICAL_SAFE` -> deterministic transform may proceed, but manual\n  nativeness review is still mandatory before native completion\n- `MANUAL_REVIEW_REQUIRED` -> refuse deterministic migration until the Codex-layer adjudicator or a human resolves the ambiguous references\n- `REFACTOR_REQUIRED` -> refuse and print action-oriented findings\n- `BLOCKED` -> refuse and print exact routing guidance for the unresolved dependency: `migrate-agents-to-codex` for agents, or \"please migrate that skill first\" for Claude-only skill dependencies\n\n**Anti-patterns**:\n\n- Mechanical conversion on Tier 3.\n- Inventing new orchestration phases because Codex happens to have sub-agents.\n\n### 5. Validate and Audit for Nativeness\n\n**Why this phase exists**: structural validity is necessary but not sufficient; nativeness is a higher bar than “file parses”.\n\n**Review-only entry**: If a skill already exists under `.codex\u002Fskills\u002F` and the\ntracker says it is `pending_native_review`, this phase may be invoked directly\nas a read-only single-skill review flow. In that entry path, audit first,\npresent findings plus next actions, and auto-record `native` by default when\nthe final audit result is `NO_FINDINGS` unless the user explicitly asked for\naudit-only behavior.\n\nDashboard routing note:\n\n- `migration-dashboard` may use this review-only entry as a bounded Verify\n  phase after `review next`, `review \u003Cnumber>`, or `review \u003Cname>`.\n- In that entry path, the parent dashboard remains a thin router. This skill\n  owns the reviewer prompt, delegated lifecycle, evidence-record guidance, and\n  tracker close-out instructions.\n\n**Structural validation**:\n\n1. Run `python3 tools\u002Fmigration_support\u002Fvalidate_names.py --scan-dir .codex\u002Fskills\u002F\u003Cname>`.\n2. Check YAML frontmatter, line count, naming, stale source-path leaks, absolute home paths, and missing local assets.\n3. When using preview mode, validate the preview package before touching the live `.codex\u002Fskills\u002F` tree.\n\n**Native Codex compliance audit**:\n\n- **MANDATORY**: Step 5 MUST use inline `spawn_agent(...)` -- **NEVER** `external Codex review proxy` or `external large-context reviewer`.\n- The audit must verify that the execution contract was re-expressed in Codex terms without flattening the original control shape.\n- Spawn one inline nativeness-audit sub-agent with `model: \"gpt-5.4\"` and `reasoning_effort: \"high\"`.\n- Keep the auditor read-only by prompt contract: do not edit files, do not call `apply_patch`, do not rerun migration scripts, and use shell only for verification commands such as `grep`, `ls`, `sed`, and `cat`.\n- Use a persistent legacy-agent lifecycle for this audit loop:\n  - `spawn_agent(...)` once for the first-pass audit\n  - `wait_agent({\"targets\": [agent[\"id\"]]})` for findings\n  - parent applies CRITICAL and HIGH fixes locally\n  - `send_input(...)` to the same live auditor for convergence\n  - `wait_agent({\"targets\": [agent[\"id\"]]})` again\n  - `close_agent({ target: agent.id })` before leaving Step 5\n- This lifecycle guidance is workflow-local. It does not weaken the global rule that `spawn_agent` should be introduced only when the source workflow genuinely needs delegation.\n- Keep the parent-thread return compact. For dashboard-driven entry, return only\n  verdict, top findings, next action, and evidence path. Do not paste\n  the full audit into the main thread.\n- Fix CRITICAL and HIGH findings immediately with surgical edits.\n- Run one convergence pass. Hard cap: two cycles.\n- Save the full nativeness review to a markdown evidence record when the review is\n  meant to be recorded later. Reuse the existing migration evidence directories\n  or an explicit `\u002Ftmp` review path, then attach that path through\n  `--review-evidence` at tracker close-out.\n- After the final post-fix content is stable, record the nativeness result with:\n  - `python3 tools\u002Fmigration_support\u002Ftracker.py --write --record-review skill:\u003Cname>=native`\n  - `python3 tools\u002Fmigration_support\u002Ftracker.py --write --record-review skill:\u003Cname>=codex_compatible_but_not_native`\n- For `NO_FINDINGS`, use the `native` path by default with summary `No findings after convergence`.\n- Keep manual close-out only when MEDIUM findings remain, when the user requested audit-only behavior, or when the tracker write fails.\n- Do not leave the tracker at `pending_native_review` after a clean nativeness audit.\n\n**Completion gate**:\n\n- The execution contract must be re-expressed in Codex terms without flattening the original control shape. If the result is mechanically compatible but semantically flattened, keep status at `CODEX_COMPATIBLE_BUT_NOT_NATIVE`.\n- `NO_FINDINGS`: auto-record `native` and continue.\n- MEDIUM only: continue with noted risks.\n- Any CRITICAL or HIGH after convergence: stop and escalate.\n\n**Anti-patterns**:\n\n- Skip compliance audit because YAML passed.\n- Let the auditor edit files.\n- Respawn a fresh auditor for convergence when `send_input(...)` to the existing auditor would preserve the same review frame.\n- Loop audit for more than two cycles.\n- Soften MUST\u002FNEVER\u002FONLY during compression.\n\n### 6. Report\n\n**Why this phase exists**: the caller needs a migration status, not just modified files.\n\nReport each migration with:\n\n- Tier\n- Target path\n- Status: `NATIVE`, `CODEX_COMPATIBLE_BUT_NOT_NATIVE`, or `SKELETON_ONLY`\n- Sandbox recommendation\n- Validation status\n- Codex compliance result\n- Assets copied\n- References rewritten or intentionally preserved\n- Remaining risks\n- Evidence report path if the workflow used `.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py`\n- Preview root if `--preview` materialized output outside the live target tree\n\nFor batch mode:\n\n1. Assess all targets first.\n2. Process Tier 1 in batch.\n3. Queue Tier 2 for sequential review.\n4. Queue Tier 3 for hand-authoring.\n5. For nativeness review of a completed migrated batch, auditors may run in\n   bounded parallel waves when write scopes do not overlap, for example\n   `3 parallel auditors -> parent fixes -> convergence -> 3 parallel auditors`.\n6. End with a consolidated summary and recorded review outcomes.\n\n**Anti-patterns**:\n\n- Report completion before Step 5 is finished.\n- Declare native while active docs or scripts still depend on the old source asset path.\n- Report agent migration status from this skill. Agent targets belong to `migrate-agents-to-codex`.\n\n## Verification Checklist\n\n- [ ] Target is a Claude skill, not a Claude agent\n- [ ] Gold standard or explicit fallback was resolved before authoring\n- [ ] Tier classification matches the actual control shape\n- [ ] Cross-references were resolved before migration\n- [ ] Shared tooling preserves the root CLI contract\n- [ ] Banner placement is frontmatter-safe\n- [ ] Primitive mappings were applied semantically, not mechanically\n- [ ] Embedded agent sites were classified as inline slices vs named file-backed dependencies\n- [ ] Inline agent model\u002Feffort intent was preserved or explicitly documented\n- [ ] Any inline `Agent()` \u002F `Task()` site triggered `REFACTOR_REQUIRED`\n- [ ] Any operational referenced skill that exists only in the legacy Claude skill tree triggered `BLOCKED`\n- [ ] Any ambiguous Claude-only referenced skill triggered `MANUAL_REVIEW_REQUIRED` until adjudicated\n- [ ] Named agent dependencies were resolved against `.codex\u002Fagents\u002F*.toml` or escalated to `migrate-agents-to-codex`\n- [ ] Claude-only skill dependencies were not neutralized, substituted, dropped, or rewritten away\n- [ ] `--analysis-only --json` exposes structured ambiguous-reference candidates for the Codex-layer adjudicator\n- [ ] No named Claude agent dependency was substituted, dropped, downgraded, or neutralized\n- [ ] Legacy `.codex\u002Fagents\u002F*.md` imports were ignored as non-authoritative runtime dependencies\n- [ ] No operational old-source path literals remain in the migrated package\n- [ ] Validator passes for the migrated skill package\n- [ ] Single-skill dry run succeeds through the root wrapper\n- [ ] Native audit completed, and any remaining issues are explicitly classified\n",{"name":5,"description":7},"main","51b96c318377cb9b51e767cfb6b593637b46c654",".codex\u002Fskills\u002Fmigrate-to-codex",5,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex","https:\u002F\u002Fgithub.com\u002Fzuharz","2026-08-20 18:04:37",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add zuharz\u002Fccode-to-codex --skill migrate-to-codex",{"tool":62,"command":63},"bunx","bunx skills add zuharz\u002Fccode-to-codex --skill migrate-to-codex",{"tool":65,"command":66},"pnpm","pnpm dlx skills add zuharz\u002Fccode-to-codex --skill migrate-to-codex","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002FSKILL.md",true,[70,76,80,84,88,92,96,102,106,110,114],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Farchitectural-patterns.md","REFERENCE","参考文档",3173,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Freferences\u002Farchitectural-patterns.md",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fcodex-skill-template.md",3132,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Freferences\u002Fcodex-skill-template.md",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fcomplexity-classifier.md",4051,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Freferences\u002Fcomplexity-classifier.md",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fconversational-migration-contract.md",4381,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Freferences\u002Fconversational-migration-contract.md",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fembedded-agent-taxonomy.md",6085,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Freferences\u002Fembedded-agent-taxonomy.md",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fprimitive-mapping.md",8256,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Freferences\u002Fprimitive-mapping.md",{"path":97,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Fmigrate_claude_workflows_to_codex.py","SCRIPT","脚本",67726,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigrate_claude_workflows_to_codex.py",{"path":103,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Fmigration_doctor.py",18415,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fmigration_doctor.py",{"path":107,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Frun_migration_workflow.py",18786,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Frun_migration_workflow.py",{"path":111,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Fvalidate_codex_workflow_names.py",918,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Fscripts\u002Fvalidate_codex_workflow_names.py",{"path":115,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":116,"sourceHtmlUrl":117},"tests\u002Ftest_migrate_claude_workflows_to_codex.py",33585,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002Ftests\u002Ftest_migrate_claude_workflows_to_codex.py",[119,144,161,186,208,221],{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":44},"01M70F7Q7VKHHX3P56E5FAMWT1","hello-world-skill","Create or update hello-world.txt with a Codex greeting. Use when you need a minimal instruction-only Agent Skill example with explicit verification.","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002Fexamples\u002Fhello-world-skill\u002FSKILL.md",[125],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,24,142,143],"hello world","hello","hello world skill","world","greeting","when","you","only","hello-world","create","with","minimal","example","agent skill","use","verification","update",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":44},"01M70F7EKPMNMBV3NHQEK3AJVV","verify-skill-migration","Validator-backed migration QA for Codex skills and related docs","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fverify-skill-migration\u002FSKILL.md",[150],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[152,153,154,155,24,156,157,158,159,160],"verify","migration","verify skill","verify skill migration","docs","qa","validator","for","codex skills",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":175,"publishedAt":44},"01M70F74MM48XA1FNC6GX4373Z","migration-dashboard","Codex-native migration analysis dashboard for Claude→Codex skills and agents. Reads `migration-state.json` to report progress, drift, velocity, nativeness-review state, validator results, and next-batch recommendations. Use for \"migration status\", \"what should I migrate next\", \"migration progress\", or \"migration dashboard\".","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigration-dashboard\u002FSKILL.md",[167,170],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":171,"categoryName":172,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[153,176,177,178,179,180,181,30,158,159,160,42,141,182,26,183,184,24,28,185],"dashboard","migration dashboard","next","velocity","recommendations","progress","results","analysis","state","drift",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":193,"publishedAt":44},"01M70F6BZ832QAPF9BH7Q5WDT3","migrate-agents-to-codex","Migrate Claude agent definitions (.claude\u002Fagents\u002F*.md) to Codex-compatible markdown or TOML outputs under `.codex\u002Fagents\u002F`. Strips frontmatter, maps fields to native Codex contracts, normalizes MCP namespaces, and classifies agents into 3 tiers. Includes adversarial cross-model review (GPT-5.4 inline native sub-agent) with auto-fix loop before completion. Use when asked to \"migrate agents to codex\", \"convert agents\", or \"port agent definitions\". Pipeline stage: CODE → VERIFY.","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-agents-to-codex\u002FSKILL.md",[192],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[194,26,24,195,196,197,28,198,199,200,132,201,202,203,30,31,204,205,206,207],"migrate agents to codex","markdown","pipeline","code","MCP","loop","sub-agent","auto-fix","inline","frontmatter","maps","auto","fix","model",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":215,"publishedAt":44},"01M70F6A9CKGYM43NZKSDZMZAA","example-skill","Minimal placeholder skill for public migration examples.","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fexample-skill\u002FSKILL.md",[214],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[139,216,217,218,159,138,153,219,220],"example skill","public","placeholder skill","examples","placeholder",{"skillNo":222,"name":223,"nameZh":6,"description":224,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":225,"categories":226,"keywords":227,"publishedAt":44},"01M70F685NJA8WV5PCXRHF4DX9","example-commit-helper","Minimal placeholder commit helper for public migration examples.","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fexample-commit-helper\u002FSKILL.md",[],[228,229,139,230,231,159,138,153,217,219,220],"commit","helper","commit helper","example commit helper"]