Community生产力与协作github.com

akira82-ai/airay-skills

Claude Code skills by airay for daily productivity

兼容平台Claude Code~Codex CLI~Cursor
npx add-skill akira82-ai/airay-skills

name: airay-agent-review version: 1.0.0 description: | 每日复盘。根据 Claude Code 本地对话记录,生成结构化的每日工作复盘报告。支持当天、昨天、近 3 天、近 7 天。

当用户说"复盘"、"agent review"、"/agent-review"、"/复盘"时触发。

每日复盘

启动横幅

技能启动时,输出以下横幅:

═══════════════════════════════════════════════════════════════
▌ 每日复盘 ▐
根据 Claude Code 本地对话记录,生成结构化的每日工作复盘报告
═══════════════════════════════════════════════════════════════
磊叔 │ 微信:AIRay1015 │ github.com/akira82-ai
───────────────────────────────────────────────────────────────
- 支持 4 种时间范围:今天 / 昨天 / 近 3 天 / 近 7 天
- 自动提取对话记录、工具调用统计、Git 提交记录
- 生成结构化报告:概要 / 工作量统计 / 成功与进展 / 困难与卡点 / AI 自评
- 报告自动保存至当前工作目录
═══════════════════════════════════════════════════════════════
最后更新:2026-04-06

参数处理

如果用户没有指定时间范围,用 AskUserQuestion 询问,选项为:

  • 今天
  • 昨天
  • 近 3 天
  • 近 7 天

不提供其他选项。根据用户选择,计算对应的日期范围(当天、前 1 天、前 3 天、前 7 天),时间戳使用 UTC 时区。

数据提取步骤

第 1 步:从 history.jsonl 获取消息列表

用 Bash 执行 Python 脚本,读取 ~/.claude/history.jsonl,按时间戳筛选指定日期范围内的所有记录。 每条记录包含:display(用户输入内容)、timestamp(Unix 毫秒)、project(项目路径)、sessionId。 统计精确的消息条数。 如果选择了多天(近 3 天、近 7 天),按天分别统计。

第 2 步:获取涉及的 session 列表

从第 1 步中提取不重复的 sessionId 和对应的项目路径。

时间戳格式说明(重要)

两个数据源的时间戳格式不同,脚本中必须统一处理:

  1. history.jsonl 的 timestamp 字段是 int(Unix 毫秒),如 1770288337219
  2. 项目 JSONL 文件的 timestamp 字段是 ISO 8601 字符串,如 "2026-03-31T04:24:20.514Z"

在脚本开头定义统一的解析函数:

def to_ms(ts):
    if isinstance(ts, (int, float)):
        return ts
    if isinstance(ts, str):
        dt = datetime.datetime.fromisoformat(ts.replace('Z', '+00:00'))
        return int(dt.timestamp() * 1000)
    return 0

后续所有时间戳比较和过滤都使用 to_ms() 转换后再比较。

第 3 步:从项目 JSONL 文件中提取详细内容

使用技能自带的 extract.py 脚本提取数据,确保时间戳处理稳定可靠。

调用脚本

python ~/.claude/plugins/marketplaces/airay-skills/skills/airay-agent-review/scripts/extract.py --start_ms <start_ms> --end_ms <end_ms>

脚本返回的数据结构

{
  "sessions": [...],
  "total_messages": N,
  "tool_calls": {"Bash": 36, "Read": 2, "Write": 2, ...},
  "tool_errors": {...},
  "files_touched": ["path/to/file1", "path/to/file2", ...],
  "projects": ["/path/to/project1", "/path/to/project2"],
  "user_messages": [...]
}

脚本内部会自动处理:

  • 时间戳格式转换(int 毫秒 / ISO 8601 字符串统一处理)
  • content 数组遍历(检查 tool_use 和 server_tool_use)
  • 路径编码(项目路径中的 / 替换为 -)
  • 错误统计(is_error 标记)

第 4 步:获取 Git 提交记录

对当天涉及的项目目录,执行 git log --since="<起始日期> 00:00:00" --until="<结束日期+1天> 00:00:00" --oneline,获取提交记录。

报告格式

1. 概要(100 字以内)

  • 用一段话概括指定时间范围内完成了哪几件事
  • 重点突出,信息密度高
  • 可以用「金句」开头。

2. 工作量统计

  • 精确数字,不估算。表格形式: | 指标 | 数值 | | 你发的消息 | N 条 | | 涉及项目 | N 个 | | 工具调用 | N 次(失败 N 次) | | Git 提交 | N 次 |

3. 成功与进展

  • 按项目分组,每个项目一个子标题:### [项目名] 简要标题
  • 内容描述完成了什么任务、发现了什么、哪些过程顺畅。
  • 不出现具体时间点。

模板可参考:

### [ 项目名 ]
内容描述等内容

4. 困难与卡点

  • 列出遇到的困难和阻碍,包括:外部限制(API 限流等)、工具能力边界、操作策略失误等。
  • 不出现具体时间点。

5. AI 自评:对你的评价

站在 AI 的角度评价用户。要求:

  • 直接了当,不客套,深刻
  • 基于具体对话行为给出评价,有例子
  • 包含:用户的强项、可改进的地方、值得肯定的思维特质
  • 语气坦诚,可以指出不足

输出

报告生成后:

  • 在终端中完整展示
  • 保存到 当前工作目录下,命名为:YYYY-MM-DD.md(多天范围时文件名用 YYYY-MM-DD~YYYY-MM-DD.md)
  • 如果文件已存在则覆盖

格式规则

  • 所有统计数字必须精确,不允许"约"、"大概"
  • 不出现具体时间点(如 02:35、凌晨)
  • 成功与进展按项目分组,不按时间分组
  • 不设"下一步"章节
  • 使用中文
  • 不使用 emoji

相关技能