К основному содержанию
скилл CX Codex

session-handoff · entireio — скилл для Claude Code: что делает и как установить

Передаёт контекст и историю работы между разными ИИ-агентами через CLI entire без лишних вопросов и ручного копирования.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add entireio/skills --skill session-handoff -a claude-code
Открыть на GitHub

Что делает session-handoff

Скилл связывает сессии разных ассистентов в одном репозитории. Когда вы переключаетесь с Claude Code на Codex или Cursor, он автоматически находит последнюю сохранённую сессию, вытаскивает сырой транскрипт и формирует сводку. Агент фиксирует задачи, статус файлов и принятые решения, после чего сразу берётся за продолжение работы без лишних уточнений.

Под капотом работают исключительно команды утилиты entire версии не ниже 0.6.2. Скиллу запрещено запускать git status, git log или опрашивать процессы через ps aux. Утилита сломается без установленной CLI entire 0.6.2+, поэтому её версию придётся проверить заранее. Если предыдущий агент оставил вопрос без ответа, скилл остановится и задаст именно его перед переходом к коду.

Какие задачи решает

  • передать контекст задачи из одного ИИ-агента в другой
  • разобрать транскрипт недавней сессии без ручного копирования логов
  • сжать контекст текущей сессии при нехватке памяти
  • продолжить прерванную работу без повторного описания требований

Примеры запросов агенту

  • Подхвати работу из сессии Codex в этой папке
  • Покажи сводку последней сессии и продолжи задачу
  • Сделай handoff текущей сессии Claude Code

Как установить session-handoff

1Через Skills CLI (Vercel)

npx skills add entireio/skills --skill session-handoff -a claude-code

2Вручную: положить файлы

~/.claude/skills/session-handoff/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/session-handoff/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о session-handoff

Как установить session-handoff в Claude Code?

Выполните команду npx skills add entireio/skills --skill session-handoff -a claude-code. Файлы скилла будут добавлены в конфигурацию агента.

Что делает скилл session-handoff?

Он читает транскрипт предыдущей сессии через утилиту entire, формирует структурированный отчёт по задаче и сразу начинает выполнять следующий шаг.

Что нужно для работы session-handoff?

Нужна установленная CLI-утилита entire версии 0.6.2 или выше. Без неё команды чтения сессий вернут ошибку.

Исходный текст

SKILL.md · MIT
---
name: session-handoff
description: Use when the user wants to continue work from one agent in another agent, inspect recent sessions, or summarize a saved session or checkpoint for handoff
---

# Hand-Off Session

## Response Format

Begin the first response to this skill invocation with the line:

`Entire Session Handoff:`

followed by a blank line, then the content. Apply the header to the **first response of the invocation only** — not on follow-up turns and not on error / early-exit responses (no sessions found, transcript missing). Its presence signals the skill ran and produced real output. The "Unanswered Question" branch still gets the header.

## STOP — Read these rules before doing ANYTHING

1. **Do NOT ask clarifying questions.** Auto-detect the session and read the transcript.
2. **Do NOT run** `git log`, `git status`, `git branch`, `ps aux`, or any other exploratory commands. Use only the `entire` CLI commands listed below.
3. **Do NOT say** "Would you like me to continue?" or "Let me know if you want me to pick this up." Just read the transcript and start working. Exception: if the previous agent asked the user a question that was never answered, you MUST ask the user that question before proceeding.

Required CLI: entire 0.6.2+ (`session list --json`, `session info --transcript`, `session current --json|--transcript`, `checkpoint explain --json|--transcript|--raw-transcript --session-index N`). If a flag is rejected, tell the user to upgrade and stop.

## Flow: Active session handoff (default — also covers bare invocation and "current"/"active")

### Step 1: Resolve the canonical worktree path

```bash
entire session current --json
```

If the output is valid JSON, read its `worktree_path` field — that is **the** canonical worktree root for this invocation, set by Entire itself. Use it verbatim in the next step (no `cwd` heuristic needed; symlinks, `/private/var`/`/var` quirks, and subdirectory invocation are all handled).

If the output is not JSON (Entire prints `No active session found in this worktree.` when nothing is active), set the canonical worktree path to `null` and rely on the bidirectional prefix-match fallback in Step 2.

### Step 2: Pick the session

```bash
entire session list --json
```

Each entry has `session_id`, `agent`, `status`, `worktree_path`, `started_at`, `last_active`, `turns`, `last_prompt`, `files_touched`. Apply filters in this order:

1. **Worktree scope.** If you got a canonical worktree path in Step 1, keep entries where `worktree_path` equals it exactly. Otherwise, keep entries where `cwd` starts with `worktree_path` **or** `worktree_path` starts with `cwd`. If either filter yields zero entries, fall back to the unscoped list — better to summarize a slightly-off session than to refuse the handoff.
2. **User-named agent filter** (optional). If the user said "codex", "claude", "kiro", "gemini", etc., keep only entries whose `agent` matches case-insensitively as a substring (so `gemini` matches `Gemini CLI`).
3. **Drop self.** Drop entries where `agent` matches the agent currently running this skill (e.g. `Claude Code`, `Codex`, `Cursor`, `Gemini CLI`, `Copilot CLI`, `Factory AI Droid`, `OpenCode`). **If this empties the list**, undo this filter and keep self — the user is asking you to summarize *your own* current session for compaction. Note that fact in the announcement (Step 5).
4. **Pick most recent.** Sort by `last_active` (fall back to `started_at`) descending; take the first.

If filtering still leaves zero entries (truly nothing in the list, even self), print a one-line error (no header) and stop.

### Step 3: Stream the raw transcript

```bash
entire session info <session_id> --transcript > /tmp/handoff-<session_id>.jsonl
```

Snapshot is bounded to the file size at command start. Output is JSONL for most agents and a single JSON document for Gemini CLI.

### Step 4: Extract conversation content

**JSONL agents** (Claude Code / Codex / Cursor / Copilot CLI / Factory AI Droid / OpenCode):

```bash
grep -E '"type":"(message|function_call|user|assistant)"' /tmp/handoff-<session_id>.jsonl | cut -c1-2000 | head -20    # original task
grep -E '"type":"(message|function_call|user|assistant)"' /tmp/handoff-<session_id>.jsonl | cut -c1-2000 | tail -100   # final state
```

**Gemini CLI** (single JSON document — no JSONL grep):

```bash
jq 'keys' /tmp/handoff-<session_id>.jsonl
```

The top-level shape varies by Gemini CLI version, but messages live under one of `messages`, `contents`, `history`, or `turns`. Each entry has a `role` (`user`/`model`/`function`/`tool`) and a content payload under one of `parts[].text`, `content`, or `text`. Extract role + text in chronological order:

```bash
# Example — adapt the path based on what `jq 'keys'` showed.
jq -r '.messages[] | "\(.role): \([.parts[]? | .text // ""] | join(" "))"' /tmp/handoff-<session_id>.jsonl | head -20
jq -r '.messages[] | "\(.role): \([.parts[]? | .text // ""] | join(" "))"' /tmp/handoff-<session_id>.jsonl | tail -100
```

If neither shape works, fall back to the Read tool on the JSON file and locate the message array by inspection.

Do not show the raw extracted lines to the user. They are inputs for Step 5.

### Step 5: Announce, summarize, present

**Announcement.** First line of the body: `Handing off <agent> session — <turns> turns, last active <relative time>, ID <first-8-of-session-id>.` If the picked session is your own (Step 2 self-filter fallback), prepend a one-clause note: `Self-handoff (no other sessions in this worktree)`. This gives the user a chance to catch a wrong pick before reading the summary.

**Summary structure** (skip any section with no genuine content — do **not** hallucinate filler):

1. **Task Overview** — the user's core request, success criteria, stated constraints.
2. **Current State** — completed work: files created/modified, key decisions, artifacts produced.
3. **Important Discoveries** — technical constraints found, rationale behind decisions, errors hit and how they were resolved, failed approaches and why.
4. **Next Steps** — specific remaining actions, blockers, priority ordering.
5. **Context to Preserve** — user preferences, domain details, commitments made during the session.
6. **Unanswered Question** *(only if applicable)* — if the previous agent's last message asked the user a question or presented options that were never answered, capture it exactly as asked.

A one-bug-fix session might legitimately have only Task Overview + Current State + Next Steps. A pure-research session might have only Task Overview + Important Discoveries. Empty sections are a feature; pad them only if you have real content.

**Continue.** Show announcement + summary.

- If section 6 exists, ask the user that question and wait. Do NOT pick a default.
- Otherwise, **immediately pick up the work** — plan, code, or whatever the next step is. Do not ask permission.

## Flow: Checkpoint handoff (user gives a checkpoint ID)

### Step 1: Enumerate sessions

```bash
entire checkpoint explain <checkpoint-id> --json
```

The envelope's `sessions` array lists every session that contributed. Multi-session checkpoints are common (parallel agents, retries, multi-phase work) and earlier sessions often carry the rationale, failed approaches, and user constraints that the latest session takes for granted.

### Step 2: Pick which sessions to stream

- **1 session.** Stream the normalized compact transcript:

  ```bash
  entire checkpoint explain <checkpoint-id> --transcript > /tmp/handoff-ckpt-<checkpoint-id>.jsonl
  ```

- **2–8 sessions.** Iterate every index 0..N-1. Do **not** rely on the `--transcript` default (latest session only):

  ```bash
  # for N in 0 .. sessions.length-1
  entire checkpoint explain <checkpoint-id> --raw-transcript --session-index <N> > /tmp/handoff-ckpt-<checkpoint-id>-<N>.jsonl
  ```

- **More than 8 sessions.** Sort the `sessions` array by timestamp (`started_at` or whichever field the envelope provides) descending and take the 8 most recent. Note the cap in the announcement: `<M of N> sessions summarized; oldest <M-N> elided as too old to matter.` This keeps the skill bounded while still covering the recent rationale layer.

`--raw-transcript` keeps the per-agent raw bytes so the same JSONL grep extraction works. Index 0 is the first session chronologically.

### Step 3: Extract, announce, summarize, continue

Run the Step 4 extraction (head + tail per file) on each `/tmp/handoff-ckpt-*.jsonl`, then merge into a single five-section summary. Treat earlier sessions as the source of "Important Discoveries" and "Context to Preserve"; the latest session feeds "Current State" and "Next Steps". Empty-section rule from the active-session flow applies. Then announce + present per Step 5 of the active-session flow, with the announcement adapted to checkpoint context (`Handing off checkpoint <short-id> — <M> sessions, <total turns> turns total.`).

© entireio · MIT · entireio/skills

Похожие скиллы

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Сначала — session-handoff от других авторов.

session-handoff softaworks Создаёт документы передачи контекста между сессиями агента. Помогает при переполнении окна контекста и долгих проектах. CX Codex +1 4 200установок handoff rohitg00 Возобновляет последнюю сессию агента для текущей папки и сразу показывает незакрытый вопрос. CX Codex +1 13 400установок ce-handoff EveryInc Сохраняет контекст текущей сессии в неизменяемый файл передачи и помогает новому агенту продолжить работу без доступа к прошлой истории. CX Codex +1 697установок nemo-rl-session-memory NVIDIA Ведёт durable-заметки о рабочей сессии в каталоге session/, чтобы другой агент поднял контекст после обрыва связи или перезапуска VS Code. CX Codex +1 2 000установок save-handoff nowledge-co Скилл сохраняет короткую сводку о ходе работы, когда вы просите сделать checkpoint. Пригодится, если нужно вернуться к задаче в другом агенте. CX Codex +1 347установок pulumi-neo-handoff pulumi Передаёт текущую задачу из Claude в новую задачу Pulumi Neo одним промптом. Односторонний хендофф: управление уходит к Neo и не возвращается. CX Codex +1 435установок ketchup backnotprop Пересказывает изменения в чате с момента последней реплики пользователя и собирает список решений, которые зависят только от человека. CX Codex +1 2 900установок

Из того же набора8

what-happened Объясняет историю строк кода через git blame и контрольные точки entire. Помогает понять, кто и зачем менял фрагмент. CX Codex +1 519установок search Ищет решения, обсуждения и код в сохранённой истории Entire по всем доступным репозиториям. Помогает вспомнить контекст прошлых задач до чтения файлов проекта. CX Codex +1 458установок session-to-skill Превращает сессии и чекпоинты Entire в черновик скилла: берёт повторяющийся рабочий процесс и описывает его как будущее поведение агента. CX Codex +1 426установок recall Ищет прошлые сессии по описанию задачи через Entire CLI и превращает найденные чекпоинты в пошаговый план работы. CX Codex +1 404установок using-entire Скилл заставляет агента сначала читать записанные намерения в чекпоинтах Entire, а уже потом открывать файлы и грепать. Пригодится, когда разбираешься в чужом коде. CX Codex +1 401установок review Читает checkpoint-транскрипты, чтобы понять, чего хотел разработчик, и только потом проверяет диф. Пригодится перед мержем, когда важно поймать расхождение между задумкой и кодом. CX Codex +1 395установок session-crosslink Привязывает сессию агента к HEAD-коммиту каждого репозитория с Entire, если работа шла вне того репозитория, который должен её записать. CX Codex +1 311установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой