Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Write a handoff/continuity note for the NEXT Sutando session. Captures what was just in flight, what to check first, what might go wrong, and implicit context the structured snapshot doesn't carry. Read first by /catchup-after-startup.
.claude/skills/sonichi-relay/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 66% | 0% |
Pass the baton to the next Sutando session. Where session-handoff.sh writes structured facts (recent commits, open PRs, pending Qs), /relay writes the narrative continuity — what you were just working on, what should be checked first, what might break and how to detect it.
Usage: /relay (writes a new relay file) or /relay --append (appends to the most recent unprocessed relay file rather than creating a new one).
src/session-handoff.sh pulls together the structured state for the next session — system status, recent commits, open PRs, pending questions, tasks, conversation tail, quota, repo stats — and writes it to session-state.md. But "I was about to land PR #X and Mini's review said Y matters most" isn't captured by git log, gh pr list, or pending-questions.md tail. The next session reads structured facts but has to RE-INFER the continuity, which costs context and frequently misses the load-bearing decision.
The relay note encodes intent + judgment — the thing only the LLM that lived through the session can write.
Mirrors Sutando's existing tasks/ and results/ convention:
workspace/relay/
├── relay-{epoch_seconds}.md # pending relay notes (drained into session-state.md, then archived)
└── processed/
└── relay-{epoch_seconds}.md # already drained; kept for auditrelay-{epoch}.md — sortable + greppable, matches the task-{epoch}.txt shape./relay always creates a NEW file by default. --append appends to the LATEST unprocessed relay-*.md instead of creating a new one.src/session-handoff.sh reads ALL unprocessed relay-*.md files in sorted order, appends them to session-state.md under ## Relay Notes (from prior sessions), then mvs each one to processed/ — but only after confirming its ### <basename> header landed in the written file, so an interrupt cannot retire an uncaptured note.scripts/sync-workspace.sh) for fleet visibility — the legacy sync-memory.sh flow is deprecated in v0.3.0 and removed in v0.4.0.Write a narrative note (~150–300 words typical, no fixed schema) covering:
## Relay Notes section, the relay/ dir is probably orphaned; check ls workspace/relay/.")Don't write things that are already in the structured snapshot (recent commits, open PRs, pending-questions tail). session-state.md already carries those. Relay's value is the things the structured snapshot can't reach.
WORKSPACE="$(bash scripts/sutando-config.sh workspace)".mkdir -p "$WORKSPACE/relay" "$WORKSPACE/relay/processed" (idempotent).--append: find the latest unprocessed file via ls -t "$WORKSPACE/relay/"relay-*.md 2>/dev/null | head -1. If none, fall through to new-file mode. If found, append to it (with a --- separator + timestamp header).relay-$(date +%s).md under $WORKSPACE/relay/.A good relay note is the difference between the next session starting at full speed vs. spending its first 5–10 minutes re-inferring state. Write something useful, not "I did stuff."
Bad: "Worked on some PRs. Ended session."
Good: "PR #1429 (import-UX) merged at 06:21Z; owner asked to start relay-skill PR next. Lucy's nit on stderr-parity landed pre-merge (commit 0ca0c89). Open thread: catchup PID-stamp variant — local edits applied to repo/skills/, NOT committed; owner is doing E2E test. If they greenlight, PR off staging-workspace-revamp with ~25-line diff in 2 SKILL.md files."
If the session was genuinely uneventful (read-only, no decisions, no in-flight work), say so explicitly: "No new work this session; previous relay note still valid." (Still write the file so the next session has a current heartbeat to read.)
/proactive-loop) deferred to Phase 2 once we see how owners actually use the manual path.src/session-handoff.sh — see its relay-drain block for the read-then-archive flow./proactive-loop: if workspace/relay/relay-*.md is mtime-stale (> 30 min) AND substantive work has happened since, write a fresh relay note as part of the loop.--skip flag for genuine no-op sessions.workspace/relay/relay-{epoch}.md (pending) + workspace/relay/processed/relay-{epoch}.md (drained by session-handoff). Workspace-root parallel to build_log.md + pending-questions.md + tasks/. Owner-readable; both LLM and human can cat it cleanly.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | fail→pass | 15,058 | 4,613 | -69% | 1 | 1 | 0% | 2,239 | 2,315 | +3% | 0 | 0 | — |
case-05 | fail→fail | 12,373 | 9,944 | -20% | 1 | 1 | 0% | 2,060 | 3,178 | +54% | 0 | 0 | — |
case-01 | fail→fail | 9,093 | 10,798 | +19% | 1 | 1 | 0% | 1,300 | 1,978 | +52% | 0 | 0 | — |
case-02 | fail→fail | 8,663 | 6,848 | -21% | 1 | 1 | 0% | 1,163 | 1,911 | +64% | 0 | 0 | — |
case-03 | fail→fail | 6,212 | 9,427 | +52% | 1 | 1 | 0% | 890 | 2,192 | +146% | 0 | 0 | — |
case-04 | fail→fail | 10,871 | 4,963 | -54% | 1 | 1 | 0% | 1,639 | 2,393 | +46% | 0 | 0 | — |
case-06 | fail→fail | 9,036 | 13,957 | +54% | 1 | 1 | 0% | 1,563 | 3,922 | +151% | 0 | 0 | — |
case-07 | fail→pass | 33,158 | 2,271 | -93% | 1 | 1 | 0% | 1,504 | 1,962 | +30% | 0 | 0 | — |
case-08 | fail→fail | 14,603 | 2,007 | -86% | 1 | 1 | 0% | 2,491 | 1,906 | -23% | 0 | 0 | — |
case-09 | fail→pass | 9,796 | 4,297 | -56% | 1 | 1 | 0% | 1,482 | 2,291 | +55% | 0 | 0 | — |
case-15 | pass→pass | 6,890 | 3,174 | -54% | 1 | 1 | 0% | 988 | 2,022 | +105% | 0 | 0 | — |
case-10 | fail→pass | 7,757 | 3,098 | -60% | 1 | 1 | 0% | 1,233 | 2,112 | +71% | 0 | 0 | — |
case-11 | fail→pass | 9,353 | 4,676 | -50% | 1 | 1 | 0% | 1,366 | 2,269 | +66% | 0 | 0 | — |
case-12 | fail→pass | 8,560 | 4,400 | -49% | 1 | 1 | 0% | 1,338 | 2,313 | +73% | 0 | 0 | — |
case-13 | fail→pass | 6,601 | 2,649 | -60% | 1 | 1 | 0% | 956 | 1,965 | +106% | 0 | 0 | — |
case-14 | pass→pass | 13,764 | 9,979 | -27% | 1 | 1 | 0% | 2,004 | 3,085 | +54% | 0 | 0 | — |
case-16 | fail→pass | 9,130 | 2,465 | -73% | 1 | 1 | 0% | 1,394 | 1,972 | +41% | 0 | 0 | — |
case-17 | fail→pass | 11,156 | 3,888 | -65% | 1 | 1 | 0% | 1,660 | 2,194 | +32% | 0 | 0 | — |
case-18 | fail→pass | 9,731 | 1,808 | -81% | 1 | 1 | 0% | 1,538 | 1,865 | +21% | 0 | 0 | — |
case-19 | fail→pass | 8,925 | 1,940 | -78% | 1 | 1 | 0% | 1,313 | 1,881 | +43% | 0 | 0 | — |
case-20 | fail→pass | 11,564 | 7,597 | -34% | 1 | 1 | 0% | 1,713 | 2,760 | +61% | 0 | 0 | — |
case-22 | fail→fail | 11,115 | 8,161 | -27% | 1 | 1 | 0% | 1,635 | 2,616 | +60% | 0 | 0 | — |
case-23 | pass→pass | 11,880 | 2,328 | -80% | 1 | 1 | 0% | 1,762 | 1,968 | +12% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +52 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.