原始内容
Franke Skills
Keep the smart model in the chair. Send the coding to detached workers.
Newer orchestration-grade models (Fable-class and up) are excellent at planning, decomposing, and judging work. Actual coding still runs best in isolated executors with their own context, logs, tests, and failure states. This repo gives the orchestrator a way to stay in control while it fans out the token-heavy implementation, review, and investigation to cheaper or more specialized workers.
The first skill, cxcc-subagent, wraps Codex CLI, Claude Code, and Grok Build CLI as detached coding subagents behind one small, agent-first CLI.
Why this over codex exec directly
Three things you don't get from spawning a raw coding CLI in a loop:
- A stuck run comes back as state, not silence. A watchdog reaps true hangs, and when a worker needs input it surfaces as an explicit
awaiting_replyinstead of dying quietly in a log. The orchestrator polls attention-first:awaiting_reply/failed/stalledsort to the top. - Three backends, one interface. Codex CLI (
codex exec --json), Claude Code (claude -p --output-format stream-json), and Grok Build CLI (grok --prompt-file --output-format streaming-json) run through the same verbs. Pick the workhorse per task; the orchestrator doesn't change. - Review is built in, not improvised. Composable role prompts include two-axis code review, against repo standards and against the spec the change was built from, run in parallel and adjudicated.
Division of labour stays honest: Codex types, you think. Spec before, review after.
Quickstart
Install for Codex:
npx skills@latest add boldprojekte/franke_skills \
--skill cxcc-subagent \
--agent codex \
--copy -y
Install for Codex and Claude Code:
npx skills@latest add boldprojekte/franke_skills \
--skill cxcc-subagent \
--agent codex claude-code \
--copy -y
That writes the skill to .agents/skills/cxcc-subagent for Codex and .claude/skills/cxcc-subagent for Claude Code.
Needs Python 3.10+ and at least one backend CLI (codex, claude, or grok) on your PATH. Task state lives under ~/.codex-agents by default.
The loop
CDX=".agents/skills/cxcc-subagent/scripts/cdx.py"
ROLES=".agents/skills/cxcc-subagent/references/roles"
# 1. Spawn a worker from a role + a work order - returns instantly, runs detached
python3 $CDX spawn -f $ROLES/general.md -f task.md -C /path/to/repo --json
# 2. Go do other things. The run stays alive across everything short of a machine restart.
# 3. Check in at natural pauses - attention-first, not on a poll loop
python3 $CDX list --json
# 4. Collect, then verify it yourself: read the diff, run the proof command
python3 $CDX result <task> --json
Every verb takes --json: stdout is pure JSON, diagnostics go to stderr. Answering a worker's question and steering a wrong turn share one verb (send), same thread, full context retained.
When using the source checkout directly, replace .agents/skills/cxcc-subagent with skills/engineering/cxcc-subagent.
Model tiers and a uniform effort dial
The orchestrating agent picks a model tier per backend through stable aliases — opus|sonnet on claude, sol|terra on codex (default sol) — and a reasoning effort that translates uniformly everywhere:
cdx --effort |
codex (Sol/Terra) | claude (Opus/Sonnet) | grok |
|---|---|---|---|
medium (default) |
medium | medium | medium |
high |
high | high | high |
max |
xhigh | xhigh | high (its ceiling) |
Each provider's very top reasoning tier (Claude max, Codex ultra) is deliberately unreachable through this surface. cdx pins the aliases to concrete model IDs (currently GPT-5.6 Sol/Terra), so provider model bumps never require agent-facing changes.
Fable 5 is never selected automatically. It is available only through an explicit user-directed model override and gets its own effort translation (medium → low, high → medium, max → xhigh) to keep subagent cost in check. JSON responses report the public effort, resolved model, and provider effort separately.
Skills
cxcc-subagent
Spawn, monitor, steer, and collect detached coding subagents via scripts/cdx.py.
Use it when an orchestrating agent should fan out implementation, refactors, test-writing, investigation, or review while the main session keeps moving.
Supported backends:
- Codex CLI via
codex exec --json - Claude Code via
claude -p --output-format stream-json - Grok Build CLI via
grok --prompt-file --output-format streaming-json
Platform support:
- macOS: tested locally, CI-covered
- Linux: CI-covered
- Windows: experimental; not CI-gated yet
Repository layout
.claude-plugin/plugin.json
skills/engineering/cxcc-subagent/
SKILL.md
references/ # review contract, role prompts
scripts/cdx.py # the supervisor CLI
scripts/tests/ # fast unit suite
Development
Run the fast local test suite from skills/engineering/cxcc-subagent/scripts/tests:
python3 -m unittest -v \
test_cdx.StateDerivationTests \
test_cdx.TurnAccountingRaceTests \
test_cdx.WatchdogTests \
test_cdx.CliSubprocessTests
Real-backend smoke tests are intentionally separate; they need installed and authenticated agent CLIs.
Credits
Created and maintained by Jan Franke.
Peter Steinberger's codex-first skill inspired treating Codex as a focused coding workhorse. Matt Pocock's skills repo helped shape the lightweight skill-catalog structure and the code-review subagent framing.
License
MIT