← ClaudeAtlas

handofflisted

Mirror a live conversation into the other agent's history as it happens, so Claude Code sessions show up in Codex and Codex threads show up in Claude Code. Hooks on both sides watch their own transcript and write each exchange into the other side's format. Use when asked to share sessions between Claude and Codex, see my Codex conversations in Claude, continue this in Codex without re-explaining, keep the two agents' history in sync, 让 Codex 看到 Claude 的会话, 两个 agent 的历史同步, 把这段对话搬到 Codex, 在 Codex 里接着聊. Not for one agent's own per-account sidebar, which reunite covers; not for naming conversations; not for carrying history to a different computer.
Misoto22/skills · ★ 0 · AI & Automation · score 76
Install: claude install-skill Misoto22/skills
# Handoff Mirror a live conversation into the other agent's history, so closing one tool and opening the other finds the work already there. ## Why this is possible at all Claude Code and Codex converged on the same two mechanisms, which is the whole reason a bridge is cheap: - **The same hook schema.** `~/.codex/hooks.json` uses Claude Code's shape — `PostToolUse`, `Stop`, `matcher`, `hooks[].command`, even `$CLAUDE_TOOL_ARG_*`. One script registers on both sides. - **The same storage idea.** Both append one JSON object per line as the conversation runs. Neither writes a conversation only at the end, so a hook can read what has accumulated and translate just that. They disagree on every field name, and that is all `scripts/formats.py` does: | Claude Code | Codex | |---|---| | no header; `cwd` on every line | `session_meta`, first line only | | `type:user`, `message.content` | `response_item/message` role=user | | `type:assistant`, `content[text]` | `response_item/message` role=assistant | | `content[thinking]` | `response_item/reasoning` | | `content[tool_use]` | `response_item/function_call` | | `type:user`, `content[tool_result]` | `response_item/function_call_output` | | `parentUuid` linked list | file order, `turn_id` per item | ## Two things the existing converters get wrong Worth knowing before reading their source, because both mistakes look like success. **A mirror must be its own conversation.** Appending into a history the other tool has open races that to