handoff_save
Save a session handoff note for cross-device / cross-session continuation. Stored at handoffs/{project}-{topic}-{YYYY-MM-DD}.txt in the user's primary vault. Use the optional time param (HHMM, KST) to disambiguate multiple handoffs saved on the same day — it is appended to the topic slug (e.g. topic='phase-d', time='1555' → handoffs/{project}-phase-d-1555-{date}.txt).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional override date (YYYY-MM-DD). Defaults to today in server timezone. | |
| time | No | Optional time-of-day suffix in HHMM 24h format (KST), e.g. '1555'. Appended to the topic slug so multiple handoffs on the same day stay distinguishable. Omit for once-per-day saves. | |
| topic | Yes | Short topic slug for this handoff, e.g. 'phase-d-port', 'oauth-fix'. Lowercase-hyphen. | |
| content | No | Full handoff text. Should follow the session-handoff skill template (현재 상태 / 작업 위치 / 수정 파일 / 결정 사항 / 다음 STEP / 알려진 이슈). WAF-bypass tip: prefix the string with '__B64__:' followed by base64-encoded payload to bypass Render/Cloudflare edge WAF for large bodies (~10KB+) that get false-positive blocked as SQLi/cmd-injection. | |
| project | Yes | Project slug, e.g. 'logi', 'ainote', 'krx_ai'. Lowercase, no spaces. | |
| device_id | No | Optional: client device identifier (e.g., from ~/.claude/ainote-sync/device.id). Stored on FileIndex so future conflict responses can report which device last wrote the handoff. Same field sync_push uses. | |
| content_b64 | No | Optional: base64-encoded handoff text (use INSTEAD of `content`). For WAF-bypass on large bodies. Server decodes before storing. |