关于 specstory-session-summary
用于分析近期 SpecStory 会话记录并生成简洁的站会式摘要。它提取目标、结果、修改文件和关键决策,并归纳重复主题与未完成事项。
主要功能
- 01查找近期会话记录
- 02按日期或数量筛选会话
- 03分析目标与结果
- 04列出修改文件和决策
- 05归纳主题与未完成事项
适用场景
- 01回顾近期 AI 编码会话
- 02准备站会进展更新
- 03查找多个会话中的未完成工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ specstoryai/ agent-skills --skill specstory-session-summary安装后在 Claude Code 中输入/specstory-session-summary确认已加载。
附带文件LICENSE.txt
详细介绍
上下文
你将分析最近的 SpecStory 会话历史文件,提供一份站会风格的摘要。
提供的参数:$ARGUMENTS(默认为 5 个会话;若为 "today",则仅分析今天的会话)
任务
步骤 1:查找最近的会话
首先,检查 SpecStory 历史文件夹是否存在,并列出最近的会话文件:
ls -t .specstory/history/*.md 2>/dev/null | head -20
如果 .specstory/history 文件夹不存在或为空,请回复:
在此目录中未找到 SpecStory 会话历史。
SpecStory 会自动保存 AI 编码会话,供日后参考。要开始记录会话,请从 https://specstory.com 安装 SpecStory
然后停止,不要继续执行其余步骤。
如果找到会话,请继续分析。如果参数为 "today",则筛选今天的会话;否则使用提供的数量(默认为 5)。
步骤 2:读取并分析每个会话
会话文件可能很大,也可能包含多个用户请求。请采用分块读取策略:
步骤 2a:了解会话结构
首先,搜索所有用户消息标记,了解会话范围:
grep -n "_\*\*User\*\*_" <file> | head -10
这会显示用户消息的行号,帮助你了解:
- 提出了多少个不同的请求
- 应该在哪里读取每个请求的上下文
步骤 2b:根据结构有策略地读取
-
开头(前 500 行) - 使用
offset=0, limit=500读取- 捕获初始请求,即使其中包含粘贴的代码或日志
- 可能包含较早的助手回复,展示所采取的方法
-
结尾(最后 300 行) - 通过 Bash 使用
tail -300 <file>- 包含最终结果和结论
- 显示任务是否已完成或仍待处理
-
文件操作 - 搜索文件修改记录:
grep -E "(Edit|Write)\(" <file>
步骤 2c:处理包含多个请求的会话
如果步骤 2a 的搜索结果显示多个用户消息位于相距较远的行号(例如第 50、800、1500 行),则表示会话中包含多个不同任务。对于这类会话:
- 在每条用户消息的行号附近读取(例如
offset=795, limit=100) - 总结 2–3 个主要任务,而不是只总结第一个任务
提取以下信息:
- 目标:用户在
_**User**_块中的请求- 单任务会话:一个主要目标
- 多任务会话:列出 2–3 个主要任务
- 结果:根据对话结尾判断:
- ✅ 已完成 - 任务已成功完成
- 📚 调研 - 收集了信息,没有修改代码
- 🔧 进行中 - 已开始工作,但会话在任务完成前结束
- ❌ 已放弃 - 用户改变方向或放弃
- 🚧 受阻 - 结束时仍存在未解决的错误或阻碍
- 文件:通过 Edit/Write 工具操作修改的文件(仅提取文件名)
- 关键决策:在对话中查找:
- 明确的选择(“决定……”“选择……”“而非……”)
- 权衡讨论
- 架构或设计结论
步骤 3:设置输出格式
每个会话按以下格式呈现:
### {YYYY-MM-DD HH:MM} - {Brief Title from Main Goal}
**Goal**: {1 sentence summarizing what user wanted}
**Outcome**: {emoji} {Brief result description}
**Files**: {comma-separated list, or "None" if research only}
**Key insight**: {Notable decision or learning, if any}
对于多任务会话,请调整格式:
### {YYYY-MM-DD HH:MM} - {Overall Theme or Primary Task}
**Tasks**:
1. {First task} - {outcome emoji}
2. {Second task} - {outcome emoji}
**Files**: {comma-separated list}
**Key insight**: {Notable decision or learning, if any}
步骤 4:摘要部分
在所有会话之后,添加:
---
**Patterns**: {Note any recurring themes, files touched multiple times, ongoing work}
**Unfinished**: {Any sessions that ended with TODOs, blockers, or incomplete work}
指南
- 每个会话摘要最多 5–6 行(多任务会话可稍长)
- 根据用户目标推断标题,不要使用文件名
- 文件名尽量只显示文件名,不显示完整路径
- 跳过仅包含简单问题、没有实际工作的会话
- 对于多任务会话,最多总结 3 个主要任务;将次要任务合并为“各种小修复”
- 保持简洁,便于每日快速回顾,而非作为详细文档
- 如果文件读取失败或文件过大,请根据可提取的信息进行处理;不要完全跳过该会话
输出示例
## Session Summary (Last 3 Sessions)
### 2025-10-18 11:42 - Investigate Chat CRDT Storage
**Goal**: Understand why chat index CRDT doesn't contain the thread
**Outcome**: 📚 Explained dual storage design for offline/online sync
**Files**: threads.json, crdt-debug/4X/, crdt-debug/aT/
**Key insight**: Two storage layers (CRDT + JSON) serve different sync scenarios
### 2025-10-18 11:09 - Address Code Review Comments
**Goal**: Fix clarity issues from code review
**Outcome**: ✅ Refactored normalizeChatIndexDoc function
**Files**: chat.go, automerge-bridge.js
**Key insight**: Replaced complex normalization with toPlainString helper
### 2025-10-11 14:30 - Automerge Architecture Deep Dive
**Goal**: Document how Automerge docs are constructed temporally
**Outcome**: 📚 Research complete, walkthrough provided
**Files**: automerge-bridge.js, document.go (read only)
---
**Patterns**: 3 sessions focused on CRDT/chat subsystem; automerge-bridge.js touched repeatedly
**Unfinished**: None detected