skills/handoff/SKILL.md
Create and resume structured manual session handoffs for long-running development work. Use when approaching context limits, before manual reset, before switching models or IDEs, after a milestone, or when automatic compact would lose important implementation state.
npx skillsauth add jochenyang/jochen-ai-rules handoffInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to preserve task state across manual context resets with a structured handoff artifact. This is the preferred path for long-running engineering work when exact status, decisions, risks, and next actions matter more than keeping the current thread alive.
Before deciding which handoff file to read or write, run the local resolver script first so path selection does not depend on model judgment.
Path resolution rule:
scripts/handoff.py relative to this installed SKILL.md, not
relative to the active repository root.python scripts/handoff.py ... from the project root unless that
repository really contains its own copy of the script.--project-root. If repo/progress/
exists only in a parent workspace directory, the resolver should use the
nearest ancestor that already contains it.cd <installed-handoff-skill-dir> && python scripts/handoff.py ... --project-root <active-repo-root>Preferred command:
cd <installed-handoff-skill-dir> && python scripts/handoff.py <write|read> <topic-or-existing-file> --project-root <active-repo-root>
Fallback when python is unavailable:
cd <installed-handoff-skill-dir> && python3 scripts/handoff.py <write|read> [target] --project-root <active-repo-root>
The script is the source of truth for:
repo/progress/handoffs/repo/progress/write creates a new file or updates an existing oneread should load by defaultscripts/git_changes.py is the source of truth for changed files, line
ranges, and diff/content snippets that should appear in the handoff bodyscripts/session_changes.py is the fallback formatter when git evidence is
unavailable, clean, or does not cover important changes already completed in
the current sessionIf the script result conflicts with intuition, trust the script.
Critical path rule:
handoff skill.--project-root must point to the active project path, not the skill
installation directory.repo/progress/
belongs to a parent workspace, passing the subproject path is valid; the
resolver should lift to the nearest matching ancestor automatically.~/.claude/skills/handoff or any similar install path as the
project root.scripts/handoff.py unless the repository explicitly contains that file.Manual handoff is not a total replacement for automatic compact.
The point of handoff is to reset into a cleaner context while keeping a reviewable, explicit, file-backed artifact.
The handoff document should be written in the same language as the current conversation/interaction:
| Conversation Language | Handoff Document Language | |-----------------------|-----------------------------| | 中文 | 中文 | | English | English | | 日本語 | 日本語 | | Other | Match conversation language |
Implementation rule: Detect the language of the current conversation from system context (user's input language, conversation history). Write all handoff content in that language. Section headers, field names, and body text should all be in the detected language.
Create or update a handoff document before reset.
Default output path:
{project}/repo/progress/handoffs/YYYY-MM-DD-HHMM-<topic>.mdFile lifecycle:
Trigger when:
Execution steps:
cd <installed-handoff-skill-dir> && python scripts/handoff.py write <topic-or-existing-file> --project-root <active-repo-root>cd <installed-handoff-skill-dir> && python scripts/git_changes.py --project-root <active-repo-root>path from scripts/handoff.py as the only valid
handoff target.scripts/git_changes.py returns evidence_source=git with meaningful
file changes, use its returned JSON markdown to populate the
Changed Files section.scripts/git_changes.py reports git-unavailable, a clean tree, or
misses important changes that already happened in this session, build a
session file manifest from the current conversation and run:
cd <installed-handoff-skill-dir> && python scripts/session_changes.py
Pass JSON on stdin with files[].path, status, summary, optional
line_ranges, optional snippets, and confidence.references/handoff-template.md.Mandatory rules:
"topic_required" error if the topic is missing.Changed Files section MUST be populated from scripts/git_changes.py
output (or scripts/session_changes.py when git evidence is insufficient).
Never write file change entries from memory.scripts/git_changes.py reports a clean tree or unavailable git, switch
to session-derived evidence whenever the current session still touched files
that matter for resume.Do not:
Before finalizing the handoff, confirm:
Resume from a handoff document after reset.
Trigger when:
Execution steps:
cd <installed-handoff-skill-dir> && python scripts/handoff.py read [handoff-file] --project-root <active-repo-root>no_handoff_found, specified_handoff_not_found, or
invalid_project_root,
report that exact state instead of guessing alternatives.path and use that file as the primary continuity
artifact.Mandatory rules:
Do not:
A good handoff should answer these questions quickly:
If the next session still needs to reconstruct basic status from scratch, the handoff is not good enough.
# Handoff: User auth refactor
## Task
- Objective: Refactor auth module to support OAuth2
- Current phase: Core implementation 70% done
- Requested outcome: Complete auth flow by EOD
## Repository State
- Repo: d:/codes/myapp
- Branch: feat/oauth-refactor
- Working tree: 3 modified files staged
- Relevant commit: a3f2b1c "add auth base structure"
## Current Status
- Completed: Token generation, user lookup
- In progress: OAuth callback handler
- Not started: Integration tests, docs
## Key Files
- src/auth/token.ts: Token generation logic
- src/auth/oauth.ts: OAuth flow (work here next)
- src/db/user.ts: User model
## Decisions Already Made
- Decision: Use JWT for tokens, not sessions
Reason: Stateless, better for API auth
- Decision: Store OAuth tokens encrypted
Reason: Security requirement
## Verification
- Commands run:
- npm test -> passed
- npm run lint -> passed
- Tests: 12/15 passing for auth module
## Risks And Blockers
- Risk: OAuth callback URL may need ngrok for dev
Impact: Medium
Mitigation: Already have ngrok config ready
## Resume Order
1. Read src/auth/oauth.ts and confirm callback handler structure
2. Run npm test to verify current state
3. Implement callback handler in oauth.ts
## Next Action
- Implement OAuth callback handler in src/auth/oauth.ts
# Handoff: Auth work
## Task
Working on auth, it's mostly done but some stuff left.
## Current Status
Did some auth stuff, might need more tests.
## Next Action
Keep working on auth.
| Aspect | Good | Bad | |--------------|--------------------------|--------------------| | Specificity | Exact file paths | Vague "auth stuff" | | Verification | Test results listed | Not mentioned | | Resume path | Clear 1-2-3 steps | "keep working" | | State | Branch, working tree | Unknown | | Blockers | Explicit with mitigation | Hidden |
Always follow the template in references/handoff-template.md.
The essential sections are:
scripts/git_changes.pyRead references/handoff-vs-compact.md when:
Short version:
Read only as needed:
scripts/handoff.pyscripts/git_changes.pyscripts/session_changes.pyreferences/handoff-template.mdreferences/handoff-vs-compact.mdSkip handoff when:
Pause and ask the owner before:
Every use of this skill should end with:
Skill Fit - why a handoff artifact is needed nowPrimary Deliverable - handoff path and captured status summaryExecution Evidence - resolver result, changed-files summary, session
evidence fallback when used, files written, and state includedRisks / Open Questions - missing evidence, pending checks, or resume hazardsNext Action - the exact resume instruction or next operator stepdatabases
Review current conversation, analyze tasks, errors, and user feedback, extract learning opportunities for skill improvement. Use when user says "reflect", "review session", "what did we learn", "session summary", or after completing a complex task.
development
Implement distinctive, production-grade frontend UI code with strong visual direction, motion systems, local media asset generation, conversion-aware copy, and polished frontend execution. Use when building landing pages, marketing sites, product pages, dashboards, motion-heavy interfaces, or frontend experiences that need real assets and compelling copy.
development
Project context engine for repo orientation, cached handoff, and task-focused code retrieval.
tools
--- name: vercel-deploy description: Deploy projects to Vercel with one command. Use when user wants to deploy to Vercel, publish website, or needs production/preview deployment. Triggers on: "deploy to vercel", "vercel deploy", "发布到vercel", "部署到线上". --- # Vercel Deploy Skill Deploy current project to Vercel using Vercel CLI. ## Quick Start 1. Check if Vercel CLI is installed: ```bash vercel --version ``` If not installed, prompt user to install: ```bash npm i -g vercel ``` 2. Check login