Port a Codex plugin to every harness

Convert a Codex layout into one portable plugin for Claude Code, Codex, Gemini CLI, Copilot, Cursor, Windsurf, Pi, and OpenCode.

The detector recognizes this source when it finds .codex or .agents, plus .codex/prompts for prompt commands.

bash
npx ap-sdk port ./my-plugin
npx ap-sdk port ./my-plugin --dry-run

Mapping

Codex sourceap-sdk output
.codex/prompts/*.mddefineCommand
.agents / agents/*.mddefineSubagent
AGENTS.mdinstructions

What does not carry over

The generator only claims what src/port.ts can read: manifests, instruction files, SKILL.md skills, markdown commands, markdown agents, Claude-style hook JSON, hook script folders, and non-structural companion directories. Native hook events without a portable mapping are emitted as stop with a TODO comment so you can choose the right event. Harness-specific settings outside those files remain in your source tree but are not modeled unless you add them to the generated plugin.ts.

Next steps

npx ap-sdk check plugin.ts
npx ap-sdk build plugin.ts

Then review the support matrix and install the plugin into the harnesses you use.