Our review
Ends a work session by updating task and state files and committing changes so a future AI session can resume without reading the full chat history.
Strengths
- Ensures a clean handoff between sessions with all tracking files in sync.
- Prevents loss of progress and reduces context required for the next session.
- Enforces clear commit messages tied to task IDs for traceability.
Limitations
- Relies on adherence to the specific TASKS.md and STATE.md format.
- Does not capture informal decisions unless explicitly added to docs/decisions.md.
- Requires consistent discipline from the user or agent to run at session end.
Use at the end of every work session on the sdg-skill repo to enable seamless resumption.
Avoid for quick, throwaway explorations or when no future continuation is planned.
Security analysis
SafeThe skill only updates markdown files and runs `git add -A` + `git commit` with a prefixed message. No destructive commands, no exfiltration, no network access beyond git. The instructions are straightforward and do not include any obfuscated payloads or dangerous operations.
No concerns found
Examples
Handoff, please.Run the handoff protocol for the sdg-skill repo.Finish up and prepare for next session using the handoff protocol.name: handoff description: Use at the end of a session in the sdg-skill repo to close out work cleanly so the next session can resume without reading the chat history. Updates TASKS.md / STATE.md, appends to docs/decisions.md if needed, and commits with the right T<id>: prefix. disable-model-invocation: true
Handoff protocol for sdg-skill
Run this when work is complete (or when stopping for the day) so the next
session can pick up cleanly via /resume. The goal: every session ends with
the repo in a state where git, STATE.md, and TASKS.md all agree.
Steps
-
Tick
TASKS.md. For each task completed in this session, change[ ]→[x]and append(done <ISO date YYYY-MM-DD>, <commit-sha>)to the same line. Use today's date. -
Update
STATE.md. Set:Active task— the task you just finished, orNoneif at a boundary.Last commit— the SHA you're about to create (or just created).Last action— one-line summary of what was done.Next action— the next concrete thing a future session should do (typically the next unblocked task inTASKS.md).Blockers— list any new blockers; clear any that were resolved.
-
Append to
docs/decisions.mdONLY if the work involved an architectural or non-obvious choice that a future contributor would need the rationale for. If it was a routine implementation, skip this step —docs/decisions.mdis for ADRs, not changelogs. -
Commit.
git add -A git commit -m "T<id>: <one-line summary>"- Use the task ID being closed (or the most relevant one).
- One-line subject; keep it under ~70 chars.
- Include a body only if the change is non-obvious from the diff.
Branch note
- Small fixes: commit directly to
mainwith theT<id>:prefix. - Risky / large changes: you should already be on a
feat/T<id>-<slug>branch — push and open a PR for squash-merge instead of committing direct.
Don't
- Don't tick a task as
[x]if its acceptance criteria (Acceptance:line inTASKS.md) was not actually met. Leave it[~]and note the gap inSTATE.md. - Don't bypass the redact / provenance rules in any handoff commit (those
are hard rules in
CLAUDE.md). - Don't commit
key.json,.env*,runs/, orhtmlcov/(already gitignored, but double-checkgit status). - Don't run
git push --forceor amend commits that are already onmain.
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.