A cxsk_invoker-facing skill that lets the cxsk_invoker collaborate with one or more managed Codex cxsk_channels.
Main branch currently supports:
- cxsk_invoker-agnostic invocation
- Codex-managed cxsk_channels
- per-cxsk_channel
can_mutate - cxsk_invoker-side and cxsk_channel-side reminders
- managed session continuity
Main branch does not yet support non-Codex runners.
mkdir -p ~/.claude/skills
git clone https://github.com/madwiki/codex-skill ~/.claude/skills/codex-skillThe managed config lives at:
<repo>/.codex-skill/cxsk_channels.json
Top-level keys:
cxsk_invokershared_stagescxsk_channels
Important behavior:
cxsk_invoker.can_mutateis reminder-only.cxsk_channels[*].can_mutateis enforced forexecute-this-planandexecute-this-plan-part.cxsk_invoker.*is returned to the cxsk_invoker, not injected into Codex prompts.cxsk_channels[*].*is injected only into the targeted Codex prompt.shared_stagesmay be shown on both sides.- wrapper-generated blocks are boundary-tagged with
<<<NAME.BEGIN>>> ... <<<NAME.END>>> - block names use underscores; block state uses dotted suffixes such as
.BEGINand.END
bin/codex-skill-initbin/codex-skill-invokebin/codex-skill-syncbin/codex-skill-review-this-planbin/codex-skill-review-this-workbin/codex-skill-execute-this-planbin/codex-skill-execute-this-plan-partbin/codex-skill-configurebin/codex-skill-update-configbin/codex-skill-dangerous-new-session
All commands accept optional --cxsk-channel <name>. When omitted, the wrapper uses the default cxsk_channel.
Preferred calling pattern:
- use
invokewhen you want one blocking wrapper call that waits for one or more cxsk_channel results - let
invokewait internally instead of wrapping rawcodex-skill-*commands in external polling - if all requests are read-only,
invokewill fan them out concurrently and return the settled results together - if any request mutates,
invokewill still use one wrapper call, but it will run those requests sequentially
Use:
configurewhen you want to patch cxsk_invoker guidance, shared guidance, or cxsk_channel metadata with explicit JSON fieldsupdate-configwhen you want the wrapper to read whatever managed state already exists, normalize it, and rewrite the canonical config at.codex-skill/cxsk_channels.json
- Use wrapper commands only. Do not call raw
codexdirectly. - Do not manually edit or delete the managed config.
- Legacy config is auto-migrated on first use.