appautomaton/collaborating-with-claude
Use the Claude Code CLI to consult Claude and delegate coding tasks for prototyping, debugging, and code review. Supports multi-turn sessions via SESSION_ID. Optimized for low-token, file/line-based handoff.
npx skills add https://github.com/appautomaton/latex-arxiv-SKILL --skill collaborating-with-claude
Use Claude Code CLI as a collaborator while keeping Codex as the primary implementer.
> Host note: this skill is written for a Codex host. If you are already running inside Claude Code, do not bridge to Claude Code (that would be circular); use your own capabilities or another collaborator skill.
This skill provides a lightweight bridge script (scripts/claude_bridge.py) that returns structured JSON and supports multi-turn sessions via SESSION_ID.
claude directly; always use the bridge script (scripts/claude_bridge.py) so output/session handling stays consistent.--cd set to the repo root (it sets the claude process working directory); use --add-dir when Claude needs access to additional directories.--help first if you are unsure of parameters.SESSION_ID and reuse it for follow-ups to keep the collaboration conversation-aware.--SESSION_ID (resume). Session selectors are mutually exclusive: choose one of --SESSION_ID, --continue, or --session-id.timeout_ms to 600000 (10 minutes) unless a shorter/longer timeout is explicitly required.sonnet for routine work; use opus only for complex tasks or when explicitly requested.claude and /login once if needed).--verbose; the bridge enables this automatically.Claude Code supports model aliases, so you can use --model sonnet / --model opus instead of hard-coding versioned model IDs.
--model, Claude Code uses its configured default (typically from ~/.claude/settings.json, optionally overridden by .claude/settings.json and .claude/settings.local.json).--model <full-name>.⚠️ If your prompt contains Markdown backticks ( like/this ), do not pass it directly via --PROMPT "..." (your shell may treat backticks as command substitution). Use a heredoc instead; see references/shell-quoting.md.
PROMPT="$(cat <<'EOF'
Review src/auth.py around login() and propose fixes.
OUTPUT: Unified Diff Patch ONLY.
EOF
)"
python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --cd "." --model sonnet --PROMPT "$PROMPT" --output-format stream-json
Output: JSON with success, SESSION_ID, agent_messages, and optional error / all_messages.
# Start a session
PROMPT="$(cat <<'EOF'
Analyze the bug in foo(). Keep it short.
EOF
)"
python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --cd "." --PROMPT "$PROMPT" --output-format stream-json
# Continue the same session
PROMPT="$(cat <<'EOF'
Now propose a minimal fix as Unified Diff Patch ONLY.
EOF
)"
python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --cd "." --SESSION_ID "<SESSION_ID>" --PROMPT "$PROMPT" --output-format stream-json
Use assets/prompt-template.md as a starter when crafting --PROMPT.
Provide:
Avoid:
Append this to prompts when requesting code:
OUTPUT: Unified Diff Patch ONLY. Strictly prohibit any actual modifications.python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --help.--output-format stream-json and confirm the JSON contains success: true and a SESSION_ID.--output-format text won’t include a newly generated session id; use stream-json/json to capture it. If you resume with --SESSION_ID in text mode, the bridge echoes that SESSION_ID in its JSON output.Keep this short block updated near the end of your reply while collaborating:
[Claude Collaboration Capsule]
Goal:
Claude SESSION_ID:
Files/lines handed off:
Last ask:
Claude summary:
Next ask:
assets/prompt-template.md (prompt patterns)references/shell-quoting.md (shell quoting/backticks)Take appautomaton/collaborating-with-claude from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.