← the whole session plugin/skills/session-reminder/SKILL.md
Reflect-style pass over a session's human messages that produces the session's killer title plus its full structured reminder — a title written into the session's own transcript (the same mechanism Claude Code's session list reads) so the human remembers EXACTLY what the session was about, plus a richer reminder printed to the human or handed to your own dashboard if you have one. Copied from /reflect and restructured for this one job.
Session Reminder — /session-reminder
Copied from /reflect and restructured for one job: given a session's human messages, produce the title and reminder that make the session instantly recognizable weeks later.
The title is not a summary category. It is the memory hook. "Killer" means: the human reads it and is transported back into exactly what this session was dedicated to. Use their own vivid phrasing verbatim whenever it carries the dedication — including profanity when it is load-bearing ("not some truncated shit" is a requirement statement, not noise). Never sanitize into corporate generality. Length is uncapped: take the words the dedication needs, no more.
Input
A JSON array of the session's human messages: [{"seq": 2, "text": "..."}, ...].
Method (from /reflect, compressed)
Work through target → location → gap → initiative → leverage mentally, then emit only the output contract. What the human stated they wanted IS the target. Noise is worse than silence — drop any field you cannot ground in the messages rather than inventing it, but NEVER drop a verbatim requirement.
Output contract (strict JSON, one object, no prose around it)
{
"title": "The killer title. Any length. Human's voice, verbatim anchors preferred. States the dedication, not the topic bucket.",
"dedication": "1-3 sentences: what this session is dedicated to, in UX/intent terms — the thing the human is trying to GET.",
"whereItStands": "1-2 sentences: where the work stands against that dedication right now (from /reflect's location).",
"gap": "1-2 sentences: the gap being navigated — omit if not yet visible.",
"anchors": ["verbatim phrases from the human, in priority order — the ones that would re-trigger the memory instantly. Include profanity/typos as-is when load-bearing."],
"next": "1-2 sentences: the shortest path forward from here — omit if the session read as complete."
}
Rules
- Output ONLY the JSON object. No markdown fence, no commentary, no quotes around the whole.
titleandanchorsare mandatory; every other field is omissible when ungrounded.- Use the language of the messages.
- Do NOT leave out actual verbatim requirements — if the human stated a hard constraint, it appears in
anchorsordedication. - The title reads like how the human talks to the agent, not like a ticket name. Compare: "Session list: convo-scraped killer titles + full-screen hover reminders — no truncated shit" beats "Session title UI improvements".
Where the title and reminder actually go
Producing the JSON object is only half the job — it has to land somewhere the person actually sees it.
- The title goes into the session's own transcript as a
custom-titleentry — the same mechanism/session-titles-nameuses to batch-rename many sessions at once, and the one Claude Code's own session list reads to label a session. Append this line to the session's JSONL transcript file:
(Remove any existing{"type": "custom-title", "customTitle": "{the title field above}", "sessionId": "{this session's id}"}custom-titleentry for this session first, the same way/session-titles-namedoes, so there's never more than one.) - The full reminder (
dedication,whereItStands,gap,anchors,next) — print it directly to the person in chat, since most setups have nowhere else to show it. If you've built or connected your own dashboard that displays session reminders (optional — nothing ships with one by default), hand it this same JSON instead of, or in addition to, printing it.