agentleFS
dachentdachent/skills/document-handoff/SKILL.md

document-handoff

Skill27 starsChanged 3 months agoMITView on GitHub

Create a comprehensive project archive and handoff package — curated workfolder copy, evidence and state, agent context, and dark-mode HTML memo — from Claude Code or Codex projects. Use for milestone archives, cold-start continuation packages, or comprehensive handoffs; use a lightweight session-handoff skill for a short continuation note.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Ask the user (or infer from context):

    line 48
  2. Very specific:

    If you need it: open $outputDir\.handoff\catalog.json, set "action": "copy" on that entry, save.

    line 83
  3. Distinctive:

    If excluded files are correct: proceed.

    line 84
  4. Very specific:

    If sessions are missing: they may not have a matching cwd in their metadata.

    line 108

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

document-handoff

Produce a self-contained handoff package: a curated workfolder copy of project files plus a dark-mode HTML memo covering 16 structured sections. Enables any agent to cold-start on the project without re-reading sessions.

Announce at start: "I'm using the document-handoff skill to create a project handoff package."


Prerequisites

Resolve the CLI path once at session start:

$cli = (Get-ChildItem "$env:USERPROFILE\.claude\plugins\cache" -Recurse -Filter "cli.mjs" -ErrorAction SilentlyContinue |
  Where-Object { $_.FullName -match [regex]::Escape("document-handoff\scripts") } |
  Select-Object -First 1).FullName

if (-not $cli) {
  $cli = (Get-ChildItem "$env:USERPROFILE\.claude\skills" -Recurse -Filter "cli.mjs" -ErrorAction SilentlyContinue |
    Where-Object { $_.FullName -match [regex]::Escape("document-handoff\scripts") } |
    Select-Object -First 1).FullName
}
if (-not $cli) {
  # Codex skill install: respects CODEX_HOME env var
  $codexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { "$env:USERPROFILE\.codex" }
  $cli = (Get-ChildItem "$codexHome\skills" -Recurse -Filter "cli.mjs" -ErrorAction SilentlyContinue |
    Where-Object { $_.FullName -match [regex]::Escape("document-handoff\scripts") } |
    Select-Object -First 1).FullName
}
if (-not $cli) {
  # Legacy: Codex plugin cache
  $cli = (Get-ChildItem "$env:USERPROFILE\.codex\plugins" -Recurse -Filter "cli.mjs" -ErrorAction SilentlyContinue |
    Where-Object { $_.FullName -match [regex]::Escape("document-handoff\scripts") } |
    Select-Object -First 1).FullName
}
if (-not $cli) { Write-Error "document-handoff cli.mjs not found. Install via: claude skills install / codex skills install"; return }

Collect Inputs

Ask the user (or infer from context):

  1. Project slug — short name used in output file names (e.g. my-project)
  2. Source root — absolute path to the project directory to archive
  3. Output directory — where to write the workfolder and memo. Honor the active harness/session output policy when one exists; otherwise default to <source_root>\.handoff-output.
  4. Fresh or resume? — --fresh overwrites existing state; --resume continues from last completed phase

Provider detection note: The default session adapters discover Claude Code and Codex. A session-capture JSON file can also enable Kimi Code, Hermes SQLite, or declared JSONL/supporting sources from another harness. See references/session-capture.md.

$slug = "<project-slug>"
$sourceRoot = "<absolute-path-to-project>"
$outputDir = "$sourceRoot\.handoff-output"
$statePath = "$outputDir\.handoff\state.json"

Phase 0 — Initialize

node --no-warnings $cli init --project $slug --source-root $sourceRoot --output-dir $outputDir --fresh

For multi-harness or explicit-source capture, add --session-config <absolute-path-to-config.json>.


Phase 1 — Discover

node --no-warnings $cli discover --state $statePath

GATE: Review $outputDir\.handoff\catalog.html in a browser. For each high-risk file listed as excluded:

  • If you need it: open $outputDir\.handoff\catalog.json, set "action": "copy" on that entry, save.
  • If excluded files are correct: proceed.

Type PROCEED to continue.


Phase 2 — Populate

node --no-warnings $cli populate --state $statePath

Phase 3 — Extract Sessions

node --no-warnings $cli extract-sessions --state $statePath

Unless capture_raw:false is configured, this phase also creates content-addressed raw evidence under .handoff/session-evidence/. Active JSONL logs are captured as verified complete-record prefixes; Hermes sessions are exported from a read transaction. This phase does not add an ACL or privacy-classification gate.

GATE: Review the sessions listed above. Confirm these are the right sessions for this project.

If sessions are missing: they may not have a matching cwd in their metadata. You can manually add session entries to $statePath under sessions_found.

Type PROCEED and set sessions_validated: true in state, or edit state manually.


Phase 4 — Synthesize

node --no-warnings $cli synthesize --state $statePath

Phase 5 — Sections (GATE — no script)

Review $outputDir\.handoff\synthesis.md. The skill will write these 16 sections:

bootstrap, executive-summary, deliverables, current-state, technical-decisions, challenges-blockers, next-steps, context-sources, open-questions, dependencies, environment, testing, architecture, data-flow, changelog

Plus privacy-security if any risk-flagged files were found.

GATE: Confirm the section list or remove any sections you don't need.

Type PROCEED to render.


Phase 6 — Render Memo

node --no-warnings $cli render-memo --state $statePath

Open $outputDir\$slug-memo.html in a browser to preview.


Phase 7 — Verify

node --no-warnings $cli verify --state $statePath

Review $outputDir\.handoff\verification.json. If overall: false, fix the reported issues and re-run this phase.


Outputs

FileDescription
$outputDir\$slug-memo.htmlDark-mode HTML handoff memo (16 sections)
$outputDir\$slug-agent-context.jsonAgent cold-start context with citation index
$outputDir\.handoff\catalog.jsonFull file inventory with risk flags
$outputDir\.handoff\catalog.htmlVisual catalog browser
$outputDir\.handoff\digests.jsonSession digests
$outputDir\.handoff\session-evidence\manifest.jsonMulti-harness raw-evidence manifest
$outputDir\.handoff\session-evidence\checksums.sha256Content-addressed evidence checksums
$outputDir\.handoff\synthesis.mdSynthesis narrative
$outputDir\.handoff\verification.jsonVerification results
$outputDir\.handoff\{slug}-citation-index.jsonCitation graph
$outputDir\plans\, code\, artifacts\, inputs\Curated workfolder

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.