| name | savepoint |
| description | Recoverable coding-session checkpoint at .savepoint/SAVEPOINT.md for context reset/session transfer. Use for 세이브포인트 만들어줘, 세이브포인트 로드해줘, 세이브포인트 읽어줘, 세이브포인트 이어서 해줘. Not for SQL SAVEPOINT, ordinary summaries, direct code/docs edits without checkpoint intent, /status, /new, PTY/session control, session rotation, or app features named savepoint. |
Modes:
- default or
save: create or refresh .savepoint/SAVEPOINT.md
load: verify an existing savepoint and report whether continuation is safe
text: response-only copy-paste handoff; no file recovery guarantee
Rules
- During save/load verification, stay in savepoint scope; do not edit application code.
- Resolve
<savepoint-skill-dir> before running commands; Claude Code: ${CLAUDE_SKILL_DIR}.
- Do not run
/new, /status, PTY/session rotation, threshold policy, or background process control.
- Run the bundled CLI; do not inspect implementation source during normal use.
- Prefer current disk/Git/durable state over chat memory.
- Do not paste transcripts, diffs, logs, shell history, PRDs, ADRs, issues, or commit text; cite paths, URLs, branches, or commits.
- Redact API keys, tokens, cookies, credentials, private keys, passwords,
.env values, and PII as <redacted>; never put raw secrets in input.
- File savepoints must end with exactly one
SAVEPOINT_V1 marker block.
- Keep top-level
SAVEPOINT.md compact; use generated details/*.md only when needed for recovery.
Create / Save
- Treat any focus text only as next-session focus.
- Prepare compact input JSON with
goal, current_state, next_action, files_to_inspect_first, and unresolved_blockers; if none exists, run python3 <savepoint-skill-dir>/scripts/savepoint.py init-input --output .savepoint/input.json.
- Set
validation.project.status to passed, failed-expected, failed-blocking, not-run-justified, or not-run-unknown. failed-expected needs failed command/result/summary, reason, next validation; not-run-justified needs reason and next validation.
- Run
python3 <savepoint-skill-dir>/scripts/savepoint.py save --input .savepoint/input.json --output .savepoint/SAVEPOINT.md --assert-no-active-commands --scan-redaction --validate.
- Inspect only generated
.savepoint/SAVEPOINT.md; report exact path, RESUME_READY, blockers if any, and the first next action.
Exit code 2 may write not-ready SAVEPOINT.md; inspect, report blockers, and do not continue unless RESUME_READY: yes.
Load / Resume
- Select user path first, else
.savepoint/SAVEPOINT.md; run python3 <savepoint-skill-dir>/scripts/savepoint.py inspect <path> --json.
- Verify cwd, Git root, branch, short HEAD, status, and diff against disk state.
- Disk state wins over savepoint text. Report drift before edits.
- Continue only when the user requested continuation and
RESUME_READY is yes, with no blocking drift or missing required file.
- For inspect-only requests, do not clean up by default.
Text Mode
Use text mode only for explicit copy-paste, text-only, no-file, no files, in-response, or in the response requests.
Prepare .savepoint/input.json as in Save, then run python3 <savepoint-skill-dir>/scripts/savepoint.py text --input .savepoint/input.json.
Text mode must not claim .savepoint/SAVEPOINT.md was written, repo recovery is guaranteed, or RESUME_READY: yes.
Advanced Cases
Read references only when normal CLI use is insufficient: references/contract.md for marker/resume/cleanup/stale/detail/overwrite, references/safety.md for secrets, references/template.md for renderer fallback.
For refresh, append --force only when existing .savepoint/SAVEPOINT.md is the generated, untracked, valid default artifact and no history preservation was requested; otherwise preserve or ask.