{"id":"912a6114-8efe-44b6-8b6f-c0bde32655aa","shortId":"Lz2QCw","kind":"skill","title":"specstory-session-summary","tagline":"Summarize recent SpecStory AI coding sessions in standup format. Use when the user wants to review sessions from .specstory/history, prepare for standups, track work progress, or understand what was accomplished.","description":"## Context\n\nYou will analyze recent SpecStory session history files to provide a standup-style summary.\n\nArgument provided: `$ARGUMENTS` (default: 5 sessions, or \"today\" for today's sessions only)\n\n## Your Task\n\n### Step 1: Find Recent Sessions\n\nFirst, check if the SpecStory history folder exists and list recent session files:\n\n```zsh\nls -t .specstory/history/*.md 2>/dev/null | head -20\n```\n\n**If no `.specstory/history` folder exists or it's empty**, respond with:\n\n> No SpecStory session history found in this directory.\n>\n> SpecStory automatically saves your AI coding sessions for later reference. To start recording your sessions, install SpecStory from https://specstory.com\n\nThen stop - do not proceed with the remaining steps.\n\n**If sessions are found**, continue with the analysis. If the argument is \"today\", filter to today's date. Otherwise use the number provided (default 5).\n\n### Step 2: Read and Analyze Each Session\n\nSession files can be very large and may contain multiple user requests. Use this chunked reading strategy:\n\n**Step 2a: Understand the session structure**\n\nFirst, grep for all user message markers to see the session's scope:\n```\ngrep -n \"_\\*\\*User\\*\\*_\" <file> | head -10\n```\n\nThis shows line numbers of user messages, helping you understand:\n- How many distinct requests were made\n- Where to read for each request's context\n\n**Step 2b: Read strategically based on structure**\n\n1. **Beginning (first 500 lines)** - Read with `offset=0, limit=500`\n   - Captures the initial request even if it includes pasted code/logs\n   - May include early assistant responses showing the approach taken\n\n2. **End (last 300 lines)** - Use `tail -300 <file>` via Bash\n   - Contains the final outcome and conclusion\n   - Shows whether tasks were completed or left pending\n\n3. **File operations** - Grep for modifications:\n   ```\n   grep -E \"(Edit|Write)\\(\" <file>\n   ```\n\n**Step 2c: For multi-request sessions**\n\nIf the grep in 2a shows multiple user messages at distant line numbers (e.g., lines 50, 800, 1500), this indicates multiple distinct tasks. For these sessions:\n- Read around each user message line number (e.g., `offset=795, limit=100`)\n- Summarize the 2-3 main tasks rather than just the first one\n\n**Extract this information:**\n\n1. **Goal(s)**: The user's request(s) from `_**User**_` blocks\n   - For single-task sessions: one main goal\n   - For multi-task sessions: list the 2-3 primary tasks\n2. **Outcome**: Determine from the end of the conversation:\n   - ✅ Completed - task was finished successfully\n   - 📚 Research - information gathering, no code changes\n   - 🔧 In Progress - work started but session ended mid-task\n   - ❌ Abandoned - user changed direction or gave up\n   - 🚧 Blocked - ended with unresolved error or blocker\n3. **Files**: Modified files from Edit/Write tool uses (extract filenames only)\n4. **Key decisions**: Look in the conversation for:\n   - Explicit choices (\"decided to\", \"chose\", \"instead of\")\n   - Trade-off discussions\n   - Architecture or design conclusions\n\n### Step 3: Format Output\n\nPresent each session as:\n\n```\n### {YYYY-MM-DD HH:MM} - {Brief Title from Main Goal}\n**Goal**: {1 sentence summarizing what user wanted}\n**Outcome**: {emoji} {Brief result description}\n**Files**: {comma-separated list, or \"None\" if research only}\n**Key insight**: {Notable decision or learning, if any}\n```\n\nFor multi-task sessions, adjust the format:\n\n```\n### {YYYY-MM-DD HH:MM} - {Overall Theme or Primary Task}\n**Tasks**:\n  1. {First task} - {outcome emoji}\n  2. {Second task} - {outcome emoji}\n**Files**: {comma-separated list}\n**Key insight**: {Notable decision or learning, if any}\n```\n\n### Step 4: Summary Section\n\nAfter all sessions, add:\n\n```\n---\n**Patterns**: {Note any recurring themes, files touched multiple times, ongoing work}\n**Unfinished**: {Any sessions that ended with TODOs, blockers, or incomplete work}\n```\n\n## Guidelines\n\n- Keep each session summary to 5-6 lines maximum (slightly more for multi-task sessions)\n- Infer the title from the user's goal, not the filename\n- For files, prefer showing just the filename, not full paths\n- Skip sessions that are just quick questions with no real work\n- For multi-task sessions, summarize up to 3 main tasks; group minor tasks as \"various small fixes\"\n- Be concise - this is for quick daily review, not detailed documentation\n- If a file read fails or is too large, work with what you can extract; don't skip the session entirely\n\n## Example Output\n\n```\n## Session Summary (Last 3 Sessions)\n\n### 2025-10-18 11:42 - Investigate Chat CRDT Storage\n**Goal**: Understand why chat index CRDT doesn't contain the thread\n**Outcome**: 📚 Explained dual storage design for offline/online sync\n**Files**: threads.json, crdt-debug/4X/, crdt-debug/aT/\n**Key insight**: Two storage layers (CRDT + JSON) serve different sync scenarios\n\n### 2025-10-18 11:09 - Address Code Review Comments\n**Goal**: Fix clarity issues from code review\n**Outcome**: ✅ Refactored normalizeChatIndexDoc function\n**Files**: chat.go, automerge-bridge.js\n**Key insight**: Replaced complex normalization with toPlainString helper\n\n### 2025-10-11 14:30 - Automerge Architecture Deep Dive\n**Goal**: Document how Automerge docs are constructed temporally\n**Outcome**: 📚 Research complete, walkthrough provided\n**Files**: automerge-bridge.js, document.go (read only)\n\n---\n**Patterns**: 3 sessions focused on CRDT/chat subsystem; automerge-bridge.js touched repeatedly\n**Unfinished**: None detected\n```","tags":["specstory","session","summary","agent","skills","specstoryai","agent-skills","claude-code-plugin"],"capabilities":["skill","source-specstoryai","skill-specstory-session-summary","topic-agent-skills","topic-claude-code-plugin","topic-skills"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/specstoryai/agent-skills/specstory-session-summary","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add specstoryai/agent-skills","source_repo":"https://github.com/specstoryai/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.462","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 24 github stars · SKILL.md body (5,475 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T01:01:28.914Z","embedding":null,"createdAt":"2026-04-18T22:23:47.983Z","updatedAt":"2026-04-22T01:01:28.914Z","lastSeenAt":"2026-04-22T01:01:28.914Z","tsv":"'-10':212,705,754,785 '-11':786 '-18':706,755 '-20':92 '-3':356,395 '-300':281 '-6':605 '/4x':737 '/at':741 '/dev/null':90 '0':252 '09':757 '1':67,244,368,496,545 '100':352 '11':707,756 '14':787 '1500':332 '2':89,166,274,355,394,398,550 '2025':704,753,784 '2a':190,319 '2b':238 '2c':309 '3':298,442,477,655,702,812 '30':788 '300':277 '4':453,569 '42':708 '5':55,164,604 '50':330 '500':247,254 '795':350 '800':331 'abandon':428 'accomplish':34 'add':575 'address':758 'adjust':530 'ai':8,116 'analysi':147 'analyz':38,169 'approach':272 'architectur':472,790 'argument':51,53,150 'around':342 'assist':268 'automat':113 'automerg':789,796 'automerge-bridge.js':775,807,818 'base':241 'bash':283 'begin':245 'block':378,435 'blocker':441,594 'brief':490,504 'captur':255 'chang':417,430 'chat':710,716 'chat.go':774 'check':72 'choic':462 'chose':465 'chunk':186 'clariti':764 'code':9,117,416,759,767 'code/logs':264 'comma':509,557 'comma-separ':508,556 'comment':761 'complet':294,407,803 'complex':779 'concis':666 'conclus':289,475 'construct':799 'contain':180,284,721 'context':35,236 'continu':144 'convers':406,459 'crdt':711,718,735,739,747 'crdt-debug':734,738 'crdt/chat':816 'daili':671 'date':157 'dd':487,536 'debug':736,740 'decid':463 'decis':455,520,563 'deep':791 'default':54,163 'descript':506 'design':474,728 'detail':674 'detect':823 'determin':400 'differ':750 'direct':431 'directori':111 'discuss':471 'distant':325 'distinct':225,336 'dive':792 'doc':797 'document':675,794 'document.go':808 'doesn':719 'dual':726 'e':305 'e.g':328,348 'earli':267 'edit':306 'edit/write':447 'emoji':503,549,554 'empti':101 'end':275,403,424,436,591 'entir':696 'error':439 'even':259 'exampl':697 'exist':78,97 'explain':725 'explicit':461 'extract':365,450,690 'fail':680 'file':43,83,173,299,443,445,507,555,581,627,678,732,773,806 'filenam':451,625,632 'filter':153 'final':286 'find':68 'finish':410 'first':71,195,246,363,546 'fix':664,763 'focus':814 'folder':77,96 'format':13,478,532 'found':108,143 'full':634 'function':772 'gather':414 'gave':433 'goal':369,386,494,495,622,713,762,793 'grep':196,208,301,304,317 'group':658 'guidelin':598 'head':91,211 'help':220 'helper':783 'hh':488,537 'histori':42,76,107 'includ':262,266 'incomplet':596 'index':717 'indic':334 'infer':615 'inform':367,413 'initi':257 'insight':518,561,743,777 'instal':127 'instead':466 'investig':709 'issu':765 'json':748 'keep':599 'key':454,517,560,742,776 'larg':177,684 'last':276,701 'later':120 'layer':746 'learn':522,565 'left':296 'limit':253,351 'line':215,248,278,326,329,346,606 'list':80,392,511,559 'look':456 'ls':85 'made':228 'main':357,385,493,656 'mani':224 'marker':201 'maximum':607 'may':179,265 'md':88 'messag':200,219,323,345 'mid':426 'mid-task':425 'minor':659 'mm':486,489,535,538 'modif':303 'modifi':444 'multi':312,389,527,612,649 'multi-request':311 'multi-task':388,526,611,648 'multipl':181,321,335,583 'n':209 'none':513,822 'normal':780 'normalizechatindexdoc':771 'notabl':519,562 'note':577 'number':161,216,327,347 'offline/online':730 'offset':251,349 'one':364,384 'ongo':585 'oper':300 'otherwis':158 'outcom':287,399,502,548,553,724,769,801 'output':479,698 'overal':539 'past':263 'path':635 'pattern':576,811 'pend':297 'prefer':628 'prepar':24 'present':480 'primari':396,542 'proceed':135 'progress':29,419 'provid':45,52,162,805 'question':642 'quick':641,670 'rather':359 'read':167,187,231,239,249,341,679,809 'real':645 'recent':6,39,69,81 'record':124 'recur':579 'refactor':770 'refer':121 'remain':138 'repeat':820 'replac':778 'request':183,226,234,258,313,374 'research':412,515,802 'respond':102 'respons':269 'result':505 'review':20,672,760,768 'save':114 'scenario':752 'scope':207 'second':551 'section':571 'see':203 'sentenc':497 'separ':510,558 'serv':749 'session':3,10,21,41,56,62,70,82,106,118,126,141,171,172,193,205,314,340,383,391,423,482,529,574,589,601,614,637,651,695,699,703,813 'show':214,270,290,320,629 'singl':381 'single-task':380 'skill' 'skill-specstory-session-summary' 'skip':636,693 'slight':608 'small':663 'source-specstoryai' 'specstori':2,7,40,75,105,112,128 'specstory-session-summari':1 'specstory.com':130 'specstory/history':23,87,95 'standup':12,26,48 'standup-styl':47 'start':123,421 'step':66,139,165,189,237,308,476,568 'stop':132 'storag':712,727,745 'strateg':240 'strategi':188 'structur':194,243 'style':49 'subsystem':817 'success':411 'summar':5,353,498,652 'summari':4,50,570,602,700 'sync':731,751 'tail':280 'taken':273 'task':65,292,337,358,382,390,397,408,427,528,543,544,547,552,613,650,657,660 'tempor':800 'theme':540,580 'thread':723 'threads.json':733 'time':584 'titl':491,617 'today':58,60,152,155 'todo':593 'tool':448 'topic-agent-skills' 'topic-claude-code-plugin' 'topic-skills' 'toplainstr':782 'touch':582,819 'track':27 'trade':469 'trade-off':468 'two':744 'understand':31,191,222,714 'unfinish':587,821 'unresolv':438 'use':14,159,184,279,449 'user':17,182,199,210,218,322,344,372,377,429,500,620 'various':662 'via':282 'walkthrough':804 'want':18,501 'whether':291 'work':28,420,586,597,646,685 'write':307 'yyyi':485,534 'yyyy-mm-dd':484,533 'zsh':84","prices":[{"id":"44fdbb57-c583-4258-b74d-10888daabdbd","listingId":"912a6114-8efe-44b6-8b6f-c0bde32655aa","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"specstoryai","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:47.983Z"}],"sources":[{"listingId":"912a6114-8efe-44b6-8b6f-c0bde32655aa","source":"github","sourceId":"specstoryai/agent-skills/specstory-session-summary","sourceUrl":"https://github.com/specstoryai/agent-skills/tree/main/skills/specstory-session-summary","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:47.983Z","lastSeenAt":"2026-04-22T01:01:28.914Z"}],"details":{"listingId":"912a6114-8efe-44b6-8b6f-c0bde32655aa","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"specstoryai","slug":"specstory-session-summary","github":{"repo":"specstoryai/agent-skills","stars":24,"topics":["agent-skills","claude-code-plugin","skills"],"license":"apache-2.0","html_url":"https://github.com/specstoryai/agent-skills","pushed_at":"2026-01-31T01:24:32Z","description":"SpecStory's official collection of agent skills. Summarize, organize and create with `.specstory/history`","skill_md_sha":"0d1108cf67ecea8c0addbb1abb215be883450038","skill_md_path":"skills/specstory-session-summary/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/specstoryai/agent-skills/tree/main/skills/specstory-session-summary"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"specstory-session-summary","description":"Summarize recent SpecStory AI coding sessions in standup format. Use when the user wants to review sessions from .specstory/history, prepare for standups, track work progress, or understand what was accomplished."},"skills_sh_url":"https://skills.sh/specstoryai/agent-skills/specstory-session-summary"},"updatedAt":"2026-04-22T01:01:28.914Z"}}