delegate
Live in-session delegation from Claude to Codex via the approval/delegation packet contract
- License 许可
- MIT
- 最近更新
- 2026-11-10
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- delegate
- type
- shipping
- version
- v0.1
- description
- Live in-session delegation from Claude to Codex via the approval/delegation packet contract
- argument-hint
- [target-skill] [--allow-dirty <glob>] [--inline-fallback]
- required_conventions
- [ "alignment-page" ]
02 资源文件 3
- 参考文档ALIGNMENT-PAGE.md51.2 KB
- 参考文档CHANGELOG.md311 B
- 参考文档references/languages.md4.7 KB
03 SKILL.md 正文
Delegate
Delegate the next step's execution to Codex live, inside the current Claude session. Produces an approved packet via the shared contract (same helpers /handoff --target=codex uses), then invokes Codex synchronously with codex exec "<target-skill> --execute-approved". Claude stays the orchestrator; Codex executes; Claude resumes once Codex returns.
Unlike /handoff --target=codex (async — user resumes later), /delegate is live cross-CLI transport. The target skill defaults to $exec; other executor skills (e.g. $ship) may be named but $exec is the primary use case.
Mode requirement
/delegate is hybrid-only by design. claude-only has no executor to delegate to; codex-only plans in Codex directly. In either non-hybrid mode, the skill exits non-zero with a mode-mismatch: reason and touches no packet state.
Transport dependency
/delegate requires the codex binary on PATH. If missing (or auth-failed, or the start marker never prints), the skill falls cleanly into the pre-start-failure branch of the fallback matrix — it does not crash, and the packet stays at approved.
Process
-
Resolve agent mode via
./scripts/agent-mode.sh. If the effective mode is anything other thanhybrid, exit non-zero with amode-mismatch:message naming the resolved mode. Do not touch the packet. -
Parse arguments from
$ARGUMENTS:- First positional token (if any) is the target skill; defaults to
$exec. - Collect repeatable
--allow-dirty <glob>flags (shell-glob semantics, same asscripts/approved-plan.sh check). Note: back-to-back hybrid cycles rewrite thetasks/approved-plan.mdmirror on eachconsume; commit it between cycles, or pass--allow-dirty tasks/approved-plan.mdso the nextdrafttolerates the uncommitted mirror. --inline-fallbackauto-selects inline Claude execution in the pre-start-failure branch without prompting.
- First positional token (if any) is the target skill; defaults to
-
Derive
phase/step/titlefromtasks/todo.md, using the same rules as/handoff --target=codex:- First unchecked
- [ ]under the### Active Step Planblock. - Fallback: first unchecked
- [ ]under the current## Phase Nheader. - Parse
Phase NandStep N.Xtokens from the surrounding context; the checkbox text (stripped of- [ ] **Step N.X** —) becomestitle.
- First unchecked
-
Produce the approval packet:
./scripts/approved-plan.sh draft --phase "Phase N" --step "Step N.X" --title "<title>"plus any--allow-dirty <glob>flags. Surface the helper's single-line failure reason verbatim if it fails.- Pretty-print the drafted packet (
jq . .agents/approved-plan.json). - Ask exactly one concise question: "Approve this packet for Codex execution via /delegate?"
- On yes →
./scripts/approved-plan.sh approve. On no → leave atdraftand stop; the user can approve later or discard with./scripts/approved-plan.sh supersede.
-
Invoke Codex synchronously:
- Record a start-marker timestamp (ISO-8601 UTC) before the exec call so the fallback matrix can classify outcomes.
- Shell out to
codex exec "<target-skill> --execute-approved". Capture stdout, stderr, and the exit code. - The Step 4 consumer (
$exec --execute-approved) is what actually runsscripts/approved-plan.sh check && consumeinside Codex./delegateis transport only.
-
Classify via the safe-fallback matrix — never blind-retry:
-
Pre-start failure —
codexbinary not found, auth failure, or the start marker was never printed by Codex before exit:- Packet stays at
approved(no writer ran). - Offer two options: (a) run inline in Claude (same session, no CLI boundary), or (b) keep the packet
approvedfor later manual$exec --execute-approvedin Codex. - If
--inline-fallbackwas passed, auto-select (a) without prompting. - Under an
agent-teamexecution profile, inline fallback is a downgrade requiring explicit interactive confirmation unless--inline-fallbackis already on the command line.
- Packet stays at
-
Success — Codex exited 0, printed
Approved packet consumed: …, andtasks/approved-plan.mdreportslifecycle: consumed:- Step 4's
consumealready flippedapproved → consumed. - Read
tasks/approved-plan.mdto confirmlifecycle: consumed. If confirmed, report success and hand back to the user. - If the mirror does not report
consumed, treat as the ambiguous case below.
- Step 4's
-
Ambiguous — non-zero exit, timeout, or crash after the start marker printed (Codex may have started mutating state):
- Call
./scripts/approved-plan.sh mark-uncertain. The packet lifecycle becomesuncertain. - Prompt the user with three explicit options: inspect repo state manually / discard the packet via
./scripts/approved-plan.sh supersede/ continue inline in Claude from the current repo state. - Never blind-retry
codex execon the same packet. Re-executing against a packet whose consumer may have partially mutated state risks double-execution.
- Call
-
-
Report the classified outcome, the final lifecycle, and whatever the user chose from the fallback prompt.
Constraints
- Hybrid-only. Non-hybrid modes exit with
mode-mismatch:before any packet operation. - Never blind-retry cross-CLI. The invariant. Ambiguous failures always go through
mark-uncertain+ explicit user prompt. - Contract is frozen. Do not edit
docs/operating-modes.md,specs/approved-plan.schema.json, or add new lifecycle states / freshness checks.uncertainis already in the schema enum; Step 6 is just its first writer. mark-uncertainis only valid fromapproved. The helper rejectsdraft,consumed,stale,superseded, anduncertainsource states.codexbinary is a transport dependency. Fall cleanly into pre-start-failure if missing; do not crash.
Alignment Page
Follow the shared alignment-page convention via the packaged convention resolver; output path is alignment/delegate-{topic}.html.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.
04 同仓库更多 Skills
source-checkout-allowed
Valid source-checkout-only fixture.
deck-install-valid
Valid deck install fixture.
codex-pack-guard-valid
Valid Codex Pack Availability Guard fixture.
codex-missing-skill-valid
Valid Codex missing skill fallback fixture.
codex-base-skill-fallback-valid
Valid Codex base skill fallback fixture.
claude-pack-guard-valid
Valid Claude Pack Availability Guard fixture.