call-handoff
Cold-start briefing from the project's newest handoff, open bugs and next-session prompt in two round-trips, then stop.
Skill by mhshaon98
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mhshaon98-call-handoff
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/call-handoff
What's inside
- Skill name
call-handoff- Description
- Cold-start briefing from the project's newest handoff, open bugs and next-session prompt in two round-trips, then stop. Use at session start or on "call handoff", "catch up", "where did we leave off".
- License
- MIT
- Instructions
- 157 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- layouts.md · references/
- sibling-handshake.md · references/
SKILL.md (first lines)
# Call Handoff — token-efficient cold start
Goal: **one pass, ≤2 tool round-trips to the briefing** (script + ToolSearch, then
Step 3's first message, alongside any one follow-up Read; the other-session renames follow),
know what the project is, where the last session stopped, what is open, what must not
break — brief the user, fix session titles, then stop. This is the single session-start
ritual (the `session-start` skill is a stub that points here): orientation only, with
the code read later, once a task is chosen (last section).
## Budget
- Every round-trip re-reads the session's entire fixed context (tens of k tokens), so
batching is the saving. Target: the one-shot script below + at most one
follow-up Read (a >600-line handoff sliced, or one superseded handoff the newest one
explicitly defers to) + the Step-3 pass (one message: self-rename + Remote Control on +
`list_sessions`; then one batched rename message).
- **Load the Step-3 tools with the script, not after it.** The `ccd_session_mgmt` tools
are deferred: send ONE `ToolSearch` (`select:mcp__ccd_session_mgmt__set_session_title,mcp__ccd_session_mgmt__list_sessions,mcp__ccd_session_mgmt__set_remote_control`)
in the same message as the Step-1 Bash call, so loading costs no round-trip.
- **No dollar sign followed by a digit in this file**: the Skill tool replaces it with a
word of the invocation's arguments, which breaks shell and awk code.
- **No codebase exploration.** No directory walks, no grep sweeps, no source files, no
subagents. The handoff is the index; code gets read later, when a task is chosen.
- The project's `CLAUDE.md` and memory are already auto-loaded into context, so a
re-read spends a round-trip on nothing. Skim what's in context instead.
## Step 1 — the one-shot script (single Bash call; Git Bash works on Windows)
Set `S` to the local clone of your skills repo if you keep one in git (leave it empty
to skip the sync block).
```bash
S="${SKILLS_REPO:-}"; echo "=== SKILLS SYNC (${S:-none configured})"
if [ -n "$S" ] && [ -d "$S/.git" ]; then D=$(git -C "$S" status --porcelain=v1 | head -3); if [ -n "$D" ]; then echo "DIRTY skills clone - not pulling:"; echo "$D"; else B=$(git -C "$S" rev-parse HEAD); git -C "$S" pull --ff-only 2>&1 | tail -1; git -C "$S" diff --name-only "$B" HEAD | grep -qE '^(skills|agents|hooks)/' && echo "SKILLS CHANGED -> re-install needed"; fi; git -C "$S" log -1 --format='skills @ %h %ad %s' --date=short; git -C "$S" status -sb | head -1
elif [ -n "$S" ]; then echo "NO CLONE at $S - clone your skills repo there first"; fi
echo "=== ENTRY POINT?"; if [ -z "$(find _claude _claude/handoffs . docs handoffs -maxdepth 1 -name 'HANDOFF-*.md' 2>/dev/null | head -1)" ] && [ ! -d .git ] && ! grep -q '^## Topic table' CLAUDE.md 2>/dev/null; then for P in _claude/WHERE-IS-THE-CODE.md WHERE-IS-THE-CODE.md CLAUDE.md; do [ -f "$P" ] || continue; T=$(grep -oE '([A-Za-z]:[\/]|~/)[^`"<>|*?]+' "$P" | head -1 | tr '\134' '/' | sed -e "s|^~|$HOME|" -e 's|[[:space:]]*$||'); case "$T" in [A-Za-z]:/*) T="/$(printf %s "${T%%:*}" | tr 'A-Z' 'a-z')${T#?:}";; esac; [ -n "$T" ] && [ -d "$T" ] && { echo "pointer $P -> $T (cd there; this folder is the entry point only)"; cd "$T" || true; break; }; done; fi; pwd
echo "=== PROJECT SYNC"; if git remote get-url origin >/dev/null 2>&1; then if [ -z "$(git status --porcelain=v1 -uno)" ]; then git pull --ff-only 2>&1 | tail -1; else echo "dirty tree - not pulling"; fi; git status -sb | head -1; else echo "no remote"; fi
C=_claude; if [ ! -d _claude ]; then C=.; [ -n "$(ls -d HANDOFF-*.md NEXT-SESSION-PROMPT.md BUG_LIST.md WHERE-IS-THE-CODE.md handoffs 2>/dev/null)" ] && echo "LEGACY LAYOUT: continuity files at project root -> update-handoff moves them into _claude/"; fi
if grep -q '^## Topic table' CLAUDE.md 2>/dev/null; then echo "=== LAYERED HANDOFFS (router = CLAUDE.md topic table, already in context - read ONE topic file)"; find "$C/handoffs" -maxdepth 1 -name '*.md' 2>/dev/null | sort | while read -r f; do echo "$f · $(grep -m1 -i '^Last updated' "$f")"; done
else
HL=$( { find "$C" docs -maxdepth 1 -name 'HANDOFF-*.md'; find "$C/handoffs" -maxdepth 2 -name 'HANDOFF-*.md'; } 2>/dev/null | while read -r f; do printf '%s|%s\n' "${f##*/}" "$f"; done | sort)
H=$(printf '%s\n' "$HL" | tail -1 | cut -d'|' -f2)
echo "=== NEWEST HANDOFF: ${H:-NONE} · prior: $(printf '%s\n' "$HL" | tail -3 | sed '$d' | cut -d'|' -f2 | tr '\n' ' ')"
[ -n "$H" ] && sed -n '1,600p' "$H"; fi
echo "=== RECENCY"; git log --oneline -5 2>/dev/null; git status --porcelain=v1 -uno 2>/dev/null | head -10; ls -t | head -8
B="$C/BUG_LIST.md"; [ -f "$B" ] || B=BUG_LIST.md; echo "=== OPEN BUGS ($B)"; [ -f "$B" ] && grep -n "^## \|Status:" "$B" | head -40 || echo "no BUG_LIST.md"
N="$C/NEXT-SESSION-PROMPT.md"; [ -f "$N" ] || N=NEXT-SESSION-PROMPT.md; echo "=== NEXT SESSION PROMPT ($N)"; [ -f "$N" ] && cat "$N" || echo "none"
```
Optional final line, if you use the `usage-here` skill — it records a usage baseline
for the session so a later report can isolate this session's burn:
```bash
echo "=== USAGE BASELINE"; "$(command -v python3 || command -v python)" "$HOME/.claude/skills/usage-here/usage_report.py" --snapshot
```
## Step 2 — reconcile and (rarely) follow up
- **Sync lines first.** `SKILLS CHANGED` ⇒ the installed copies under `~/.claude/skills`
are stale: re-run your install step from the clone in one Bash call of its own and
report its last lines. `DIRTY skills clone` or `ahead` in the status line ⇒ a previous
session on THIS machine left work uncommitted/unpushed: say so in the briefing (it is
invisible to other machines) and offer `update-handoff` to finish it. `NO CLONE` ⇒
tell the user to clone the repo and stop. A pull that fails (offline, diverged) is
reported, never retried with force.
- **`_claude/NEXT-SESSION-PROMPT.md`** (written by `update-handoff`) is the fastest
orientation: if its date matches or post-dates the newest handoff, build the
briefing around it. If it's OLDER than the handoff or the latest commits, it's
stale — say so and trust the handoff instead (on any conflict the handoff wins).
- Commits or mtimes post-dating the handoff's date ⇒ handoff is **STALE** — say so in
the briefing and treat git/files as truth.
- Bug entries: read in full only open/reopened ones (one targeted Read if the grep
headers aren't enough). A ✅ entry matching a fresh symptom ⇒ suspect regression.
- Script printed `pointer …` or `LAYERED HANDOFFS`? Read this skill's
`references/layouts.md` before the briefing (one extra Read that only these two
layouts pay).
- **`LEGACY LAYOUT` printed?** The assistant's continuity files (handoffs, prompt, bug
ledger, pointer) still sit at the project root; they belong in `_claude/` (layout:
`update-handoff` → "The `_claude/` folder"). Say so in one briefing line; the next
`update-handoff` moves them. Don't move them during orientation.
- **Flat handoff juggling several independent issues** (≥2 unrelated threads — different
devices, vendors, customer contacts, or source folders — each with its own TODO)?
Mention once in the briefing that `update-handoff` can split it into layered topic files.
- **No handoff at all?** The script output already shows it: orient from `README.md`
(one Read) + the git log, say plainly there is no handoff, note one must be created
before session end (`update-handoff` skill).
## Output — the briefing (≤200 words; written once Step 3's first message has returned, so the title and Remote Control lines are real; then the other renames, then STOP)
- **Project:** 1–2 sentences. · **Last session (date, source file):** what landed.
- **Freshness:** current, or stale vs. git (evidence).
- **Open now:** unfinished work, open bugs, NOT-verified items.
- **Highest-value next item.** · **Dead paths / must-not-break** (constraints, not
suggestions). · **Session title:** `<topic> · <YYYY-MM-DD>` · **Remote Control:**
the state the Step-3 call returned.
- **Ready — what do you want to work on?**
## Step 3 — Remote Control on + session-title hygiene (desktop app only; skip in the plain CLI)
*Requires the desktop app's `ccd_session_mgmt` MCP tools. If they aren't available,
skip this whole step silently.*
Order: script result → ONE message with the self-rename, Remote Control on and
`list_sessions` (plus any Step-2 follow-up Read) → the briefing → ONE batched message
renaming the other sessions.
**Remote Control on.** Invoking this skill is the user's standing request to reach the
session from claude.ai/code and the phone: call
`mcp__ccd_session_mgmt__set_remote_control` `{"session_id": "self", "enabled": true}`
(the app may ask them to approve). Report the returned state in the briefing (`on`,
`connecting`); a refusal (phone-started sessions have it on and locked), `unavailable`, or
a declined/auto-mode-denied approval → one line saying which, never a retry. THIS
session only; `update-handoff` Step 6 switches it off.
Skill-started sessions all get auto-titled "Call handoff", making the session list
unsortable. `mcp__ccd_session_mgmt__set_session_title` renames the CURRENT session
too — pass `session_id: "self"`.From mhshaon98/agent-skills, MIT.
More from mhshaon98/agent-skills
- 0.570score
eng-report
mhshaon98
Apply an engineering house style (vendor-manual layout, the user's own logo and colours, ANSI safety notices, document-control blocks) to a Word, Markdown or…
SkillAFreshness: AClaude Code +9 - 0.570score
client-cms
mhshaon98
Add a secure client-facing admin/content layer to the current website so nontechnical staff can edit approved content without touching source.
SkillAFreshness: AClaude Code +9 - 0.567score
codex-bridge
mhshaon98
Delegate a task to OpenAI Codex or get a non-Claude second review via the codex plugin.
SkillAFreshness: AClaude Code +9 - 0.567score
doc-metadata
mhshaon98
Stamp the project's chosen author and company on every Word, Excel, PowerPoint or PDF file the agent creates or edits, and strip tool and AI fingerprints such…
SkillAFreshness: AClaude Code +9 - 0.567score
antigravity-bridge
mhshaon98
Delegate bounded work or get a third-provider opinion from Google's Antigravity CLI (agy, Gemini).
SkillAFreshness: AClaude Code +9 - 0.567score
commissioning-logger
mhshaon98
Only when explicitly asked to log a multi-step hands-on process (commissioning, wiring, bring-up, troubleshooting): "log this", "start a commissioning log"…
SkillAFreshness: AClaude Code +9 - 0.567score
compliance-check
mhshaon98
Check what is actually live (store listing and labels, published policies, deployed backend, retention jobs) against the code and published words, then work…
SkillAFreshness: AClaude Code +9 - 0.565score
new-project
mhshaon98
Bootstrap a brand-new project with proven architecture defaults and continuity scaffolding.
SkillAFreshness: AClaude Code +9 - 0.565score
bug-ledger
mhshaon98
Use when a bug is reported, found, fixed, or reopened, or before working in a bug-prone area.
SkillAFreshness: AClaude Code +9 - 0.565score
apply-richformat
mhshaon98
Give any text-bearing surface (app screen, document, report, README, chat answer, CLI output, table) visible rank and separation.
SkillAFreshness: AClaude Code +9 - 0.565score
deepen
mhshaon98
Before planning a substantial build, redesign, feature, research question or subagent brief, answer four questions (what a top professional would add, the…
SkillAFreshness: AClaude Code +9 - 0.563score
app-audit
mhshaon98
Automated technical and disclosure compliance-assistance audit of a project: profiling, read-only specialist subagents, fresh research, optional Codex peer…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 23, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/mhshaon98/agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from mhshaon98
- 0.570score
client-cms
mhshaon98
Add a secure client-facing admin/content layer to the current website so nontechnical staff can edit approved content without touching source.
SkillAFreshness: AClaude Code +9 - 0.570score
eng-report
mhshaon98
Apply an engineering house style (vendor-manual layout, the user's own logo and colours, ANSI safety notices, document-control blocks) to a Word, Markdown or…
SkillAFreshness: AClaude Code +9 - 0.567score
codex-bridge
mhshaon98
Delegate a task to OpenAI Codex or get a non-Claude second review via the codex plugin.
SkillAFreshness: AClaude Code +9 - 0.567score
doc-metadata
mhshaon98
Stamp the project's chosen author and company on every Word, Excel, PowerPoint or PDF file the agent creates or edits, and strip tool and AI fingerprints such…
SkillAFreshness: AClaude Code +9 - 0.567score
commissioning-logger
mhshaon98
Only when explicitly asked to log a multi-step hands-on process (commissioning, wiring, bring-up, troubleshooting): "log this", "start a commissioning log"…
SkillAFreshness: AClaude Code +9 - 0.567score
antigravity-bridge
mhshaon98
Delegate bounded work or get a third-provider opinion from Google's Antigravity CLI (agy, Gemini).
SkillAFreshness: AClaude Code +9
Cite this page
call-handoff skill. Agent Mart. https://agentmart.dev/skills/mhshaon98-call-handoff (last updated 2026-10-24)