Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Catch up on everything that changed in an indexed source-code repo since the last session, using stored session anchors and Memtrace change memory. Use when the user asks to continue, catch up, resume, see what changed while away, recover prior context, or orient at session start without guessing timestamps. Do not use git log, Grep, or manual file search for catch-up; Memtrace provides session anchors and change memory.
.claude/skills/syncable-dev-memtrace-session-continuity/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 500% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -4% | 0% |
Session continuity for agents. Store a timestamp from your last session and call get_changes_since to see exactly what happened since then — then drill into details with get_evolution if needed.
Core principle: Persist a since timestamp (or the until from your last catch-up call). Never invent a days parameter.
Look for a stored anchor from your last session:
json{ "repo_id": "memdb", "since": "2026-04-13T10:43:00Z" }
If you have no anchor yet (first run), call list_indexed_repositories. Use last_episode_time from the repo entry as a bootstrap since value, or ask the user how far back to look.
get_changes_sincejson{ "repo_id": "memdb", "since": "2026-04-13T10:43:00Z" }
Optional: pass until to cap the upper bound (defaults to now).
Required param is since — not last_episode_id, not days. Same time formats as get_evolution.from ("7d ago", ISO-8601, etc.).
Full parameter spec for every Memtrace tool: references/mcp-parameters.md (bundled at the memtrace-skills plugin root).
Response shape: see Output below. Act on totals.episode_count:
| totals.episode_count | Action | |---|---| | 0 | Nothing changed — safe to proceed | | 1–20 | Review each episode's touched_files and change counts | | Many episodes | Scan touched_files for overlap with your task; drill down with get_evolution |
episodes returned
├── Any touched_files overlap your current task area?
│ ├── YES → call get_evolution(from: since, mode: compound) for hotspots
│ └── NO → safe to continue
└── Need per-commit detail?
└── get_evolution(from: since, mode: recent, limit: 100)Store the until value from the response (or the latest episode's reference_time) for next session:
json{ "repo_id": "memdb", "since": "2026-04-13T14:22:00Z" }
get_changes_since returns:
| Field | Meaning | |---|---| | episodes[] | Each episode since since, with touched_files, nodes_added/removed, reference_time | | totals.episode_count | How many episodes in the window — 0 means nothing changed | | since / until | The resolved window boundaries |
json{ "since": "2026-04-13T10:43:00Z", "until": "2026-04-13T14:22:00Z", "episodes": [ { "reference_time": "2026-04-13T12:05:00Z", "touched_files": ["src/engine/page_cache.rs"], "nodes_added": 4, "nodes_removed": 1 } ], "totals": { "episode_count": 1 } }
| Mistake | Reality | |---|---| | Passing last_episode_id or days | get_changes_since requires since — a timestamp string | | Using get_evolution without from | Always pass from (e.g. "7d ago") — never omit it or use days | | Expecting status, by_module, or session_anchor in the response | Not in the current shape — use episodes[] and totals | | Discarding the stored since timestamp | Without it, next session reverts to guessing | | Calling this repeatedly within one session | Call once at session start; reuse the result for the rest of the session |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 13,562 | 5,098 | -62% | 1 | 1 | 0% | 283 | 1,378 | +387% | 0 | 0 | — |
case-02 | fail→fail | 3,916 | 2,498 | -36% | 1 | 1 | 0% | 485 | 1,368 | +182% | 0 | 0 | — |
case-03 | fail→fail | 6,001 | 5,040 | -16% | 1 | 1 | 0% | 344 | 1,413 | +311% | 0 | 0 | — |
case-04 | fail→fail | 6,378 | 7,265 | +14% | 1 | 1 | 0% | 1,068 | 1,641 | +54% | 0 | 0 | — |
case-05 | fail→pass | 4,852 | 5,212 | +7% | 1 | 1 | 0% | 332 | 1,993 | +500% | 0 | 0 | — |
case-06 | fail→pass | 10,468 | 2,902 | -72% | 1 | 1 | 0% | 1,729 | 1,606 | -7% | 0 | 0 | — |
case-07 | fail→pass | 12,305 | 3,476 | -72% | 1 | 1 | 0% | 2,233 | 1,746 | -22% | 0 | 0 | — |
case-08 | fail→pass | 8,620 | 2,886 | -67% | 1 | 1 | 0% | 1,465 | 1,567 | +7% | 0 | 0 | — |
case-09 | pass→pass | 6,471 | 4,649 | -28% | 1 | 1 | 0% | 1,272 | 1,917 | +51% | 0 | 0 | — |
case-10 | fail→pass | 11,867 | 4,380 | -63% | 1 | 1 | 0% | 1,957 | 1,888 | -4% | 0 | 0 | — |
case-11 | fail→pass | 6,691 | 4,755 | -29% | 1 | 1 | 0% | 974 | 1,795 | +84% | 0 | 0 | — |
case-12 | fail→pass | 6,499 | 3,464 | -47% | 1 | 1 | 0% | 1,093 | 1,573 | +44% | 0 | 0 | — |
case-13 | fail→pass | 10,227 | 2,677 | -74% | 1 | 1 | 0% | 1,637 | 1,412 | -14% | 0 | 0 | — |
case-14 | pass→pass | 8,349 | 2,370 | -72% | 1 | 1 | 0% | 1,313 | 1,449 | +10% | 0 | 0 | — |
case-15 | fail→pass | 11,828 | 4,028 | -66% | 1 | 1 | 0% | 1,846 | 1,802 | -2% | 0 | 0 | — |
case-16 | pass→pass | 7,155 | 3,385 | -53% | 1 | 1 | 0% | 1,194 | 1,625 | +36% | 0 | 0 | — |
case-17 | pass→pass | 6,295 | 2,606 | -59% | 1 | 1 | 0% | 1,143 | 1,458 | +28% | 0 | 0 | — |
case-18 | fail→pass | 10,812 | 1,822 | -83% | 1 | 1 | 0% | 1,627 | 1,264 | -22% | 0 | 0 | — |
case-19 | fail→pass | 14,988 | 4,320 | -71% | 1 | 1 | 0% | 2,373 | 1,711 | -28% | 0 | 0 | — |
case-20 | pass→pass | 10,664 | 5,562 | -48% | 1 | 1 | 0% | 1,810 | 1,908 | +5% | 0 | 0 | — |
case-21 | pass→pass | 11,115 | 7,623 | -31% | 1 | 1 | 0% | 2,001 | 2,349 | +17% | 0 | 0 | — |
case-22 | pass→pass | 15,365 | 12,330 | -20% | 1 | 1 | 0% | 2,687 | 3,201 | +19% | 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. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 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 +50 percentage points is the difference between those two pass rates over the 20 comparable cases.
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.