[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70F74MM48XA1FNC6GX4373Z":3,"skill-same:01M70F74MM48XA1FNC6GX4373Z":81},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M70F74MM48XA1FNC6GX4373Z","migration-dashboard",null,"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\".","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\u002Fmigration-dashboard\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"migration dashboard","dashboard","migration","drift","codex skills","for","validator","native","progress","recommendations","velocity","next","review","use","results","migrate","analysis","batch","state","codex","2026-11-10 10:12:30",false,"---\nname: \"migration-dashboard\"\ndescription: >-\n  Codex-native migration analysis dashboard for Claude→Codex skills and agents.\n  Reads `migration-state.json` to report progress, drift, velocity,\n  nativeness-review state, validator results, and next-batch recommendations. Use for \"migration status\",\n  \"what should I migrate next\", \"migration progress\", or \"migration dashboard\".\n---\n\n\u003C!-- Generated by the ccode-to-codex mirror sync on 2026-04-14 from input revision 9a2403fb. -->\n# Migration Dashboard\n\n**Purpose**: Answer \"where are we, what drifted, what should be migrated\nnext, and when should nativeness review take over?\" from the tracker plus live\nrepo state.\n\n## Conversation-First Entry\n\nBare dashboard requests should open with intent routing, not raw flags. Follow\nthe shared contract at\n`..\u002Fmigrate-to-codex\u002Freferences\u002Fconversational-migration-contract.md`.\n\nDefault menu for underspecified requests:\n\n1. Status\n2. What should I migrate next?\n3. Review nativeness backlog\n4. Show unreviewed migrated artifacts\n5. Show migrated agents needing nativeness review\n6. Show migrated skills needing nativeness review\n7. Validate migrated artifacts\n8. Refresh tracker and show status\n\nRouting rules:\n\n- If the user already says `what next`, `review nativeness`, `unreviewed migrated\n  artifacts`, `agents needing nativeness review`, `skills needing nativeness review`,\n  `validate migrations`, or `refresh`, route directly.\n- In Plan mode, use `request_user_input` only for the action choice.\n- Outside Plan mode, render the same menu as numbered text.\n- Require explicit confirmation before `--refresh` because it writes the\n  tracker file.\n- After any non-empty nativeness queue, stay inside that queue subtree and\n  prompt for `review next`, `review \u003Cnumber>`, `review \u003Cname>`, or `back`.\n- Bare numbers are reserved for the root dashboard menu; queue picks must use\n  the `review ...` prefix.\n\n## Advanced CLI\n\n- Canonical front door: `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --plan`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --review-backlog`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --unreviewed --json`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --agent-nativeness`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --skill-nativeness`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --validate --json`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --refresh --json`\n- Power-user raw analyzer: `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --json`\n\n## Sandbox Policy\n\nRecommended mode: `workspace-write`\n\nRationale: the dashboard reads repo state and tracker data, and `--refresh`\nupdates `migration-state.json` through the repo tracker script.\n\n## Runtime Contract\n\n1. Preserve direct script execution. This workflow is script-driven, not\n   sub-agent-driven for status, planning, validation, and refresh modes.\n2. The analyzer is the source of truth for status, planning, drift, velocity,\n   and validator aggregation.\n3. Shared tracker-state helpers live in\n   `tools\u002Fmigration_support\u002F`; analyzer\n   scripts bootstrap that package before importing tracker helpers.\n4. Mode routing stays stable:\n   - default \u002F `--status`: structural progress, nativeness-review state, tier breakdown, drift, velocity\n   - `--plan`: next batch recommendation with dependency ordering\n   - `--review-backlog`: prioritized nativeness-review queue across skills and agents\n   - `--unreviewed`: exhaustive pending nativeness-review queue across migrated skills and agents\n   - `--agent-nativeness`: migrated agents currently parked in `pending_native_review`\n   - `--skill-nativeness`: migrated skills currently parked in `pending_native_review`\n   - `--validate`: validator pass\u002Ffail across migrated skills plus review-state context\n   - `--refresh`: `tools\u002Fmigration_support\u002Ftracker.py --write`, then status\n5. Tracker data comes from `migration-state.json`. Missing or malformed\n   tracker state is a first-class UX case: explain it briefly, offer the repair\n   action, and do not collapse into an opaque stack trace.\n6. Queue-selection state should come from the analyzer's JSON contract, not by\n   reparsing rendered text. Cache the most recent displayed queue with\n   session-scoped state such as `session_state_store` in the parent chat\n   workflow so `review next`, `review \u003Cnumber>`, and `review \u003Cname>` resolve\n   deterministically.\n7. A queued nativeness review is bounded orchestration work. When the user says\n   `review next`, `review \u003Cnumber>`, or `review \u003Cname>` for a displayed queue,\n   this workflow is authorized to route into the sibling migration skill's\n   read-only nativeness-review flow without asking for a second delegation\n   confirmation.\n7. File edits use `apply_patch` only when maintaining the skill package or the\n   analyzer script itself.\n8. Structured analyzer results may include an additive `recommended_action`\n   field. Treat it as the top-level routing hint for chat-first UX, but do not\n   break callers that only rely on `items`, `blockers`, `next_actions`, or\n   `selection`.\n\n## Scripts\n\n| Script | Purpose |\n| --- | --- |\n| `.codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py` | Tracker-driven migration dashboard with status, planning, drift, velocity, and validation modes |\n| `.codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py` | Stable repo-level entrypoint for the dashboard analyzer |\n\n## Workflow\n\n### 1. Resolve User Intent to Mode\n\nMap the request to analyzer flags before running anything.\n\n| User says | Run |\n| --- | --- |\n| `migration status`, `migration dashboard`, no mode | `(no flags)` |\n| `what should I migrate next`, `plan batch` | `--plan` |\n| `review nativeness`, `nativeness backlog`, `what should I review next` | `--review-backlog` |\n| `show unreviewed migrated artifacts`, `what is still unreviewed` | `--unreviewed` |\n| `show migrated agents needing nativeness review`, `agent nativeness queue` | `--agent-nativeness` |\n| `show migrated skills needing nativeness review`, `skill nativeness queue` | `--skill-nativeness` |\n| `validate migrations`, `check migration quality` | `--validate` |\n| `refresh migration tracker`, `update tracker and show status` | `--refresh` |\n\nPass through supported options unchanged:\n- `--batch N`\n- `--all`\n- `--no-color`\n\nFor bare requests, present the action menu from the shared conversational\ncontract instead of defaulting straight to a status dump.\n\n### 2. Run the Analyzer Directly\n\nExecute the skill-owned script with `python3`:\n\n```bash\npython3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py [args]\n```\n\nDo not redesign this into a plan flow or a delegation workflow. The preserved\nbehavior is a single analyzer command plus interpretation.\n\n### 3. Interpret the Output\n\nRead the analyzer output by mode:\n\n- Status: structural progress, nativeness-review state, pending-tier breakdown,\n  velocity, drift alerts, and ignored policy exclusions.\n- Plan: ready skills ordered by unblock impact, blocked skills with the first\n  missing dependency, and ignored skills listed separately.\n- Review backlog: prioritized nativeness-review queue with agents first, then\n  trust level, then skill tier.\n- Unreviewed: all migrated skills and agents still waiting on nativeness\n  review, grouped by artifact type.\n- Agent nativeness: pending nativeness-review queue restricted to migrated\n  agents.\n- Skill nativeness: pending nativeness-review queue restricted to migrated\n  skills.\n- Validate: per-skill validator pass\u002Ffail for migrated Codex skills plus\n  whether each artifact is pending review, reviewed native, or reviewed\n  compatible-but-not-native.\n- Refresh: tracker update first, then the same status interpretation as default.\n\nChat-first recommendation rules:\n\n- If drift exists, drift repair is the primary recommendation.\n- If actionable migration backlog is zero but nativeness-review backlog is\n  non-zero, `review nativeness backlog` becomes the primary recommendation in\n  status, plan, and validate modes.\n- If ready migration backlog remains, planning or migration stays primary and\n  nativeness review stays secondary.\n\nNativeness queue interaction rules:\n\n- If the queue is non-empty, number the rows and recommend one next item.\n- For queue modes, prefer `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --json` so\n  the workflow can store the structured `selection` payload directly.\n- Cache the most recent displayed queue snapshot with:\n  - `scope.mode_name`\n  - displayed `artifact_id`s and `display_index`\n  - `selection.recommended_artifact_id`\n  - timestamp\n- End the turn with:\n  - `review next`\n  - `review \u003Cnumber>`\n  - `review \u003Cname>`\n  - `back`\n- `review \u003Cnumber>` resolves only against the most recent displayed queue.\n- If no valid cached queue exists, fail closed and ask the user to reopen the\n  queue instead of guessing.\n- Treat the displayed queue as a finite session queue. After a review outcome is\n  recorded, re-render the same queue minus the handled item; when it is\n  exhausted, show a done state and require `back` before returning to the root\n  menu.\n- If the queue is truncated, say exact-name selection only works for items shown\n  in the current session queue. Hidden items require backing out and reopening\n  the queue.\n- If tracker integrity is blocked, suppress queue `selection` and\n  `recommended_action` payloads, tell the user to run\n  `python3 tools\u002Fmigration_support\u002Ftracker.py --write`, and do not route\n  `review next`, `review \u003Cnumber>`, or `review \u003Cname>` until the tracker is\n  repaired.\n\n### 4. Offer the Next Action\n\nAfter reporting the analyzer output:\n\n- If drift is detected, suggest rerunning `$migrate-to-codex` for drifted\n  skills.\n- If `--plan` shows blockers, point out the single migration that unblocks the\n  most downstream work.\n- If `--plan` shows ignored items, treat them as backlog context only, not work\n  to unblock.\n- If `--plan` shows no actionable pending items but nativeness review backlog\n  remains, recommend `review nativeness backlog` instead of leaving the user in\n  a dead-end plan screen.\n- If `--review-backlog` or `--unreviewed` returns pending items, point the user\n  at the recommended artifact, then offer `review next`, `review \u003Cnumber>`,\n  `review \u003Cname>`, or `back`.\n- If `--agent-nativeness` returns no items, say the agent nativeness queue is\n  clear rather than redirecting back to migration planning.\n- If `--skill-nativeness` returns no items, say the skill nativeness queue is\n  clear rather than redirecting back to migration planning.\n- If `--validate` fails skills, suggest re-migrating or patching those skill\n  packages before further rollout.\n- If `--validate` passes and nativeness review backlog remains, recommend the\n  backlog next and surface a short list of warning-heavy pending-review\n  artifacts in text mode.\n- If velocity is zero and tracker history looks sparse, note that a new tracker\n  history can suppress velocity without implying a real stall.\n\nIf the user selects a single queued artifact:\n\n- Route into a single-item nativeness review, not back to migration planning.\n- Agent target -> hand off to `migrate-agents-to-codex` review flow.\n- Skill target -> hand off to `migrate-to-codex` review flow.\n- Start read-only: audit first, auto-record `native` by default when the final\n  result is `NO_FINDINGS`, and only ask the user to choose when fixes remain,\n  only MEDIUM findings remain, or the user explicitly requested audit-only behavior.\n- Keep the dashboard as the router only. The sibling migration skill owns the\n  spawned nativeness auditor, convergence loop, evidence handling, and\n  tracker close-out guidance.\n- The parent thread should return a compact summary only:\n  - artifact id and verdict\n  - top findings or `NO_FINDINGS`\n  - recorded review outcome when auto-recorded\n  - next action\n  - evidence path when available\n- Do not paste the full delegated review body back into the main thread unless\n  the user explicitly asks for it.\n\n### 5. Failure Handling\n\n- Missing or malformed tracker file: explain the tracker state is unavailable,\n  then offer `python3 tools\u002Fmigration_support\u002Ftracker.py --write`.\n- Ambiguous archived-review recovery: explain that nativeness queues are\n  blocked until tracker state is repaired, then offer\n  `python3 tools\u002Fmigration_support\u002Ftracker.py --write`.\n- Missing validator: report the missing repo script path directly.\n- Timeout or subprocess errors in `--validate`: surface the failing skill and\n  the truncated error output from the analyzer.\n\n## Notes\n\n- Tier classification is heuristic. The dashboard is for prioritization, not for\n  bypassing skill review.\n- Status semantics:\n  - `blocked` = unresolved dependency blockers inside the active migration backlog\n  - `ignored` = intentionally excluded from migration policy and omitted from\n    actionable backlog math\n- Dependency extraction only trusts explicit skill-call syntax in source skills\n  and agent `skills:` frontmatter, not prose references.\n- Explicit legacy skill-call references are dependency signals for planning, not an\n  automatic Tier 3 classifier by themselves.\n- Runtime references to `.claude\u002F` remain intentional here because the dashboard\n  audits migration from source `.claude\u002F` artifacts into `.codex\u002F` artifacts.\n","\u003C!-- Generated by the ccode-to-codex mirror sync on 2026-04-14 from input revision 9a2403fb. -->\n# Migration Dashboard\n\n**Purpose**: Answer \"where are we, what drifted, what should be migrated\nnext, and when should nativeness review take over?\" from the tracker plus live\nrepo state.\n\n## Conversation-First Entry\n\nBare dashboard requests should open with intent routing, not raw flags. Follow\nthe shared contract at\n`..\u002Fmigrate-to-codex\u002Freferences\u002Fconversational-migration-contract.md`.\n\nDefault menu for underspecified requests:\n\n1. Status\n2. What should I migrate next?\n3. Review nativeness backlog\n4. Show unreviewed migrated artifacts\n5. Show migrated agents needing nativeness review\n6. Show migrated skills needing nativeness review\n7. Validate migrated artifacts\n8. Refresh tracker and show status\n\nRouting rules:\n\n- If the user already says `what next`, `review nativeness`, `unreviewed migrated\n  artifacts`, `agents needing nativeness review`, `skills needing nativeness review`,\n  `validate migrations`, or `refresh`, route directly.\n- In Plan mode, use `request_user_input` only for the action choice.\n- Outside Plan mode, render the same menu as numbered text.\n- Require explicit confirmation before `--refresh` because it writes the\n  tracker file.\n- After any non-empty nativeness queue, stay inside that queue subtree and\n  prompt for `review next`, `review \u003Cnumber>`, `review \u003Cname>`, or `back`.\n- Bare numbers are reserved for the root dashboard menu; queue picks must use\n  the `review ...` prefix.\n\n## Advanced CLI\n\n- Canonical front door: `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --plan`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --review-backlog`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --unreviewed --json`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --agent-nativeness`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --skill-nativeness`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --validate --json`\n- `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --refresh --json`\n- Power-user raw analyzer: `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --json`\n\n## Sandbox Policy\n\nRecommended mode: `workspace-write`\n\nRationale: the dashboard reads repo state and tracker data, and `--refresh`\nupdates `migration-state.json` through the repo tracker script.\n\n## Runtime Contract\n\n1. Preserve direct script execution. This workflow is script-driven, not\n   sub-agent-driven for status, planning, validation, and refresh modes.\n2. The analyzer is the source of truth for status, planning, drift, velocity,\n   and validator aggregation.\n3. Shared tracker-state helpers live in\n   `tools\u002Fmigration_support\u002F`; analyzer\n   scripts bootstrap that package before importing tracker helpers.\n4. Mode routing stays stable:\n   - default \u002F `--status`: structural progress, nativeness-review state, tier breakdown, drift, velocity\n   - `--plan`: next batch recommendation with dependency ordering\n   - `--review-backlog`: prioritized nativeness-review queue across skills and agents\n   - `--unreviewed`: exhaustive pending nativeness-review queue across migrated skills and agents\n   - `--agent-nativeness`: migrated agents currently parked in `pending_native_review`\n   - `--skill-nativeness`: migrated skills currently parked in `pending_native_review`\n   - `--validate`: validator pass\u002Ffail across migrated skills plus review-state context\n   - `--refresh`: `tools\u002Fmigration_support\u002Ftracker.py --write`, then status\n5. Tracker data comes from `migration-state.json`. Missing or malformed\n   tracker state is a first-class UX case: explain it briefly, offer the repair\n   action, and do not collapse into an opaque stack trace.\n6. Queue-selection state should come from the analyzer's JSON contract, not by\n   reparsing rendered text. Cache the most recent displayed queue with\n   session-scoped state such as `session_state_store` in the parent chat\n   workflow so `review next`, `review \u003Cnumber>`, and `review \u003Cname>` resolve\n   deterministically.\n7. A queued nativeness review is bounded orchestration work. When the user says\n   `review next`, `review \u003Cnumber>`, or `review \u003Cname>` for a displayed queue,\n   this workflow is authorized to route into the sibling migration skill's\n   read-only nativeness-review flow without asking for a second delegation\n   confirmation.\n7. File edits use `apply_patch` only when maintaining the skill package or the\n   analyzer script itself.\n8. Structured analyzer results may include an additive `recommended_action`\n   field. Treat it as the top-level routing hint for chat-first UX, but do not\n   break callers that only rely on `items`, `blockers`, `next_actions`, or\n   `selection`.\n\n## Scripts\n\n| Script | Purpose |\n| --- | --- |\n| `.codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py` | Tracker-driven migration dashboard with status, planning, drift, velocity, and validation modes |\n| `.codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py` | Stable repo-level entrypoint for the dashboard analyzer |\n\n## Workflow\n\n### 1. Resolve User Intent to Mode\n\nMap the request to analyzer flags before running anything.\n\n| User says | Run |\n| --- | --- |\n| `migration status`, `migration dashboard`, no mode | `(no flags)` |\n| `what should I migrate next`, `plan batch` | `--plan` |\n| `review nativeness`, `nativeness backlog`, `what should I review next` | `--review-backlog` |\n| `show unreviewed migrated artifacts`, `what is still unreviewed` | `--unreviewed` |\n| `show migrated agents needing nativeness review`, `agent nativeness queue` | `--agent-nativeness` |\n| `show migrated skills needing nativeness review`, `skill nativeness queue` | `--skill-nativeness` |\n| `validate migrations`, `check migration quality` | `--validate` |\n| `refresh migration tracker`, `update tracker and show status` | `--refresh` |\n\nPass through supported options unchanged:\n- `--batch N`\n- `--all`\n- `--no-color`\n\nFor bare requests, present the action menu from the shared conversational\ncontract instead of defaulting straight to a status dump.\n\n### 2. Run the Analyzer Directly\n\nExecute the skill-owned script with `python3`:\n\n```bash\npython3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py [args]\n```\n\nDo not redesign this into a plan flow or a delegation workflow. The preserved\nbehavior is a single analyzer command plus interpretation.\n\n### 3. Interpret the Output\n\nRead the analyzer output by mode:\n\n- Status: structural progress, nativeness-review state, pending-tier breakdown,\n  velocity, drift alerts, and ignored policy exclusions.\n- Plan: ready skills ordered by unblock impact, blocked skills with the first\n  missing dependency, and ignored skills listed separately.\n- Review backlog: prioritized nativeness-review queue with agents first, then\n  trust level, then skill tier.\n- Unreviewed: all migrated skills and agents still waiting on nativeness\n  review, grouped by artifact type.\n- Agent nativeness: pending nativeness-review queue restricted to migrated\n  agents.\n- Skill nativeness: pending nativeness-review queue restricted to migrated\n  skills.\n- Validate: per-skill validator pass\u002Ffail for migrated Codex skills plus\n  whether each artifact is pending review, reviewed native, or reviewed\n  compatible-but-not-native.\n- Refresh: tracker update first, then the same status interpretation as default.\n\nChat-first recommendation rules:\n\n- If drift exists, drift repair is the primary recommendation.\n- If actionable migration backlog is zero but nativeness-review backlog is\n  non-zero, `review nativeness backlog` becomes the primary recommendation in\n  status, plan, and validate modes.\n- If ready migration backlog remains, planning or migration stays primary and\n  nativeness review stays secondary.\n\nNativeness queue interaction rules:\n\n- If the queue is non-empty, number the rows and recommend one next item.\n- For queue modes, prefer `python3 .codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py --json` so\n  the workflow can store the structured `selection` payload directly.\n- Cache the most recent displayed queue snapshot with:\n  - `scope.mode_name`\n  - displayed `artifact_id`s and `display_index`\n  - `selection.recommended_artifact_id`\n  - timestamp\n- End the turn with:\n  - `review next`\n  - `review \u003Cnumber>`\n  - `review \u003Cname>`\n  - `back`\n- `review \u003Cnumber>` resolves only against the most recent displayed queue.\n- If no valid cached queue exists, fail closed and ask the user to reopen the\n  queue instead of guessing.\n- Treat the displayed queue as a finite session queue. After a review outcome is\n  recorded, re-render the same queue minus the handled item; when it is\n  exhausted, show a done state and require `back` before returning to the root\n  menu.\n- If the queue is truncated, say exact-name selection only works for items shown\n  in the current session queue. Hidden items require backing out and reopening\n  the queue.\n- If tracker integrity is blocked, suppress queue `selection` and\n  `recommended_action` payloads, tell the user to run\n  `python3 tools\u002Fmigration_support\u002Ftracker.py --write`, and do not route\n  `review next`, `review \u003Cnumber>`, or `review \u003Cname>` until the tracker is\n  repaired.\n\n### 4. Offer the Next Action\n\nAfter reporting the analyzer output:\n\n- If drift is detected, suggest rerunning `$migrate-to-codex` for drifted\n  skills.\n- If `--plan` shows blockers, point out the single migration that unblocks the\n  most downstream work.\n- If `--plan` shows ignored items, treat them as backlog context only, not work\n  to unblock.\n- If `--plan` shows no actionable pending items but nativeness review backlog\n  remains, recommend `review nativeness backlog` instead of leaving the user in\n  a dead-end plan screen.\n- If `--review-backlog` or `--unreviewed` returns pending items, point the user\n  at the recommended artifact, then offer `review next`, `review \u003Cnumber>`,\n  `review \u003Cname>`, or `back`.\n- If `--agent-nativeness` returns no items, say the agent nativeness queue is\n  clear rather than redirecting back to migration planning.\n- If `--skill-nativeness` returns no items, say the skill nativeness queue is\n  clear rather than redirecting back to migration planning.\n- If `--validate` fails skills, suggest re-migrating or patching those skill\n  packages before further rollout.\n- If `--validate` passes and nativeness review backlog remains, recommend the\n  backlog next and surface a short list of warning-heavy pending-review\n  artifacts in text mode.\n- If velocity is zero and tracker history looks sparse, note that a new tracker\n  history can suppress velocity without implying a real stall.\n\nIf the user selects a single queued artifact:\n\n- Route into a single-item nativeness review, not back to migration planning.\n- Agent target -> hand off to `migrate-agents-to-codex` review flow.\n- Skill target -> hand off to `migrate-to-codex` review flow.\n- Start read-only: audit first, auto-record `native` by default when the final\n  result is `NO_FINDINGS`, and only ask the user to choose when fixes remain,\n  only MEDIUM findings remain, or the user explicitly requested audit-only behavior.\n- Keep the dashboard as the router only. The sibling migration skill owns the\n  spawned nativeness auditor, convergence loop, evidence handling, and\n  tracker close-out guidance.\n- The parent thread should return a compact summary only:\n  - artifact id and verdict\n  - top findings or `NO_FINDINGS`\n  - recorded review outcome when auto-recorded\n  - next action\n  - evidence path when available\n- Do not paste the full delegated review body back into the main thread unless\n  the user explicitly asks for it.\n\n### 5. Failure Handling\n\n- Missing or malformed tracker file: explain the tracker state is unavailable,\n  then offer `python3 tools\u002Fmigration_support\u002Ftracker.py --write`.\n- Ambiguous archived-review recovery: explain that nativeness queues are\n  blocked until tracker state is repaired, then offer\n  `python3 tools\u002Fmigration_support\u002Ftracker.py --write`.\n- Missing validator: report the missing repo script path directly.\n- Timeout or subprocess errors in `--validate`: surface the failing skill and\n  the truncated error output from the analyzer.\n\n## Notes\n\n- Tier classification is heuristic. The dashboard is for prioritization, not for\n  bypassing skill review.\n- Status semantics:\n  - `blocked` = unresolved dependency blockers inside the active migration backlog\n  - `ignored` = intentionally excluded from migration policy and omitted from\n    actionable backlog math\n- Dependency extraction only trusts explicit skill-call syntax in source skills\n  and agent `skills:` frontmatter, not prose references.\n- Explicit legacy skill-call references are dependency signals for planning, not an\n  automatic Tier 3 classifier by themselves.\n- Runtime references to `.claude\u002F` remain intentional here because the dashboard\n  audits migration from source `.claude\u002F` artifacts into `.codex\u002F` artifacts.\n",{"name":5,"description":7},"main","51b96c318377cb9b51e767cfb6b593637b46c654",".codex\u002Fskills\u002Fmigration-dashboard",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":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add zuharz\u002Fccode-to-codex --skill migration-dashboard",{"tool":67,"command":68},"bunx","bunx skills add zuharz\u002Fccode-to-codex --skill migration-dashboard",{"tool":70,"command":71},"pnpm","pnpm dlx skills add zuharz\u002Fccode-to-codex --skill migration-dashboard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigration-dashboard\u002FSKILL.md",true,[75],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"scripts\u002Fanalyze_migration.py","SCRIPT","脚本",77767,"https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigration-dashboard\u002Fscripts\u002Fanalyze_migration.py",[82,108,121,144,166,179],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":91,"publishedAt":49},"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",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[92,93,94,95,96,97,98,99,100,101,48,102,103,104,105,42,106,107],"hello world skill","hello world","hello","world","with","hello-world","you","when","minimal","agent skill","greeting","create","update","verification","example","only",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":49},"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",[114],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},[116,31,117,118,119,48,120,35,34,33],"verify","verify skill","verify skill migration","docs","qa",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":49},"01M70F6T65KA26WPCXS7B50H5X","migrate-to-codex","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.","https:\u002F\u002Fgithub.com\u002Fzuharz\u002Fccode-to-codex\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fmigrate-to-codex\u002FSKILL.md",[127],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},[44,129,48,130,131,36,132,133,46,134,135,136,137,138,139,140,141,142,41,143],"migrate to codex","result","mode","port","as","classify","commands","project","local","compatibility","hooks","command","audit","workflow","codex skill",{"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":49},"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",[150],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},[152,44,48,153,154,155,41,156,157,158,99,159,160,161,36,132,162,163,164,165],"migrate agents to codex","markdown","pipeline","code","MCP","loop","sub-agent","auto-fix","inline","frontmatter","maps","auto","fix","model",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":173,"publishedAt":49},"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",[172],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},[106,174,175,176,34,100,31,177,178],"example skill","public","placeholder skill","examples","placeholder",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":49},"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",[],[186,187,188,106,189,34,100,31,175,177,178],"commit","helper","commit helper","example commit helper"]