agentsclimarketplace

Personal worklog

Skill Jim4546/ai-workflow-skills/personal-worklog

AI 工作流 Skill 合集:办公、研究、归档、日报、尽调、文档转换等可复用工作流

Install
npx -y skills add Jim4546/ai-workflow-skills --skill personal-worklog

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

个人工作小结(全天版):扫今天所有 Claude Code 窗口的对话记录,按大项目自动聚类,提炼「你本人」做了什么——拆需求、拍板、纠正 AI、把控节奏、实测把关——写入飞书 wiki『每日个人总结』节点下的 `Worklog YYYY-MM-DD` docx。触发:「写今天的 worklog」「个人工作小结」「总结我今天做了什么」「我今天指挥 AI 做了什么」「写一份像人写的小结」「在日报基础上加个人版」。

SKILL.md

13.9 KB, ~5.4k tokens by cl100k_base, as published. Nobody here has run it

个人工作小结(全天版)

把「AI 做了什么开发」翻面,提炼出**「你这个人」做了什么**——拆解需求、拍板决策、纠正 AI、把控节奏、实测把关——给领导看到人的贡献和工作逻辑。

核心原则(必须遵守)

  1. 只写人做的事,不写 AI 的开发细节。 主语是「人」,动词是 决策 / 否决 / 拍板 / 叫停 / 推动 / 实测 / 发现 / 指挥,不是 编写 / 实现 / 开发。
  2. 不许拔高、不许编。 每一条都要能在对话记录里找到出处。挑不出证据的点就不写。
  3. 具体优先。 「积极推进项目」这种空话没用;「否决了 X 建议、改成 Y」才可信。带上数字、原话、具体名词。
  4. 核心决策点优先,不设条数硬上限。 「这条拿掉工作逻辑链就断」就保留;可有可无的合并或砍掉。
  5. 每一次否决 / 纠正 AI 单独成一条,绝不合并。 这是「指挥 AI」最硬的证据。
  6. 产物是草稿。 收尾提醒用户:内容是 AI 起草的草稿,建议逐句改写成自己的话再正式提交。

工作流程(一条主线)

1. 扫今天所有 jsonl(双重过滤)
2. 自动聚类成 N 个大项目(路径关键词 + 共享专有名词)
3. ★ 归类预览 → 用户一句话确认 / 调整(唯一的确认环节)
4. per-window 并行提炼(subagent,按六维度抽取结构化要点)
5. 主 agent 合并:同大项目内合并去重;否决项不合并
6. 组装 docx 内容(结构见下文)
7. 写入飞书 wiki『每日个人总结』节点下的 `Worklog YYYY-MM-DD` 子 docx(已存在则覆盖)
8. 推送链接到「每日日报组」飞书群(与日报合并成一条发)
9. 输出文档链接 + 提醒「AI 草稿,请逐句改写」

步骤 1:扫今天所有 jsonl(双重过滤)

Claude Code 每个对话窗口都在 ~/.claude/projects/*/*.jsonl 存了完整记录。

双重过滤规则

  • 过滤 1(mtime):文件最后修改时间在本地今天 00:00 之后。
  • 过滤 2(内容):文件至少含一条 timestamp 在今天的 type=="user"isSidechain!=true 的消息。

只取项目目录下一层.jsonl;忽略 <uuid>/ 子目录里的 subagent 记录。

每个 jsonl 当作一个窗口,提取:

  • cwd(判属于哪个项目)
  • 全部 user 真文本消息(message.contenttype=="text"
  • 时间戳范围

跳过纯 <command-...>Caveat<system-reminder><task-notification>tool_result 项。 对于 Base directory for this skill: ... 这种 skill 加载提示,只保留末尾的 ARGUMENTS: 用户实际命令。


步骤 2:自动聚类成 N 个大项目

为每个窗口生成「指纹」:

  • 路径关键词cwd 最后两段(如 Desktop/知识库
  • 专有名词:前 5 条用户消息里出现的飞书 token、URL host、独有名词(项目名、人名、文档名等)

聚类规则(并查集):两个窗口满足任一条件即合并到同一大项目——

  • 共享 ≥1 个专有名词(飞书 token、独有项目名等)
  • 路径关键词完全相同 时间窗口接近(≤4 小时间隔)

注意:仅"路径相同"不足以聚到一起——同一目录下的两个不同子任务应拆分。

每个大项目起一个简短名称(≤10 字),从共享专有名词或共同主题里挑。


步骤 3:归类预览(★ 唯一的确认环节)

向用户展示:

检测到今天有 N 个窗口,自动归为 M 个大项目:

📦 大项目 A:<名称>(X 个窗口)
  - <cwd 末段>(窗口标识 / 主要话题一句话)
  - ...

📦 大项目 B:<名称>(Y 个窗口)
  - ...

归类对吗?回复 ok 继续;或者告诉我怎么调整("把 X 挪到 A"、"A 和 B 合并"等)。

用户 ok / 用户调整后再次 ok → 进入步骤 4。


步骤 4:per-window 并行提炼(subagent)

对每个窗口并行启动一个 subagentAgent 工具,subagent_type: general-purpose),单条消息内多次 tool use 并行发起。

每个 subagent 任务:

<jsonl 路径>,按以下六个维度提炼「人做了什么」的结构化要点,返回 JSON:

{
  "window_id": "<jsonl 文件 8 位前缀>",
  "time_range": "<HH:MM-HH:MM>",
  "points": [
    {"dim": "需求定义|方案决策|节奏把控|实测把关|工具链升级|能力选型|任务指挥|历史资产复用", "text": "<一句话>", "evidence": "<用户原话片段 + 时间>"},
    {"dim": "独立否决 AI 推荐", "text": "否决「...」,改为「...」,因为...", "evidence": "<原话 + 时间>"},
    ...
  ]
}

要求:

  • 只看 type=="user"isSidechain!=true 的消息。
  • 每一次否决 / 纠正 AI 单独成一条,不合并;标签固定为「独立否决 AI 推荐」。
  • 其他维度可有可无,能写则写;写不出证据的不写。
  • 不要堆报告腔,不要"我",客观陈述。
  • 不要写 AI 干了什么;只写人的决策、否决、判断、推动、实测。

主 agent 收 N 份 JSON。


步骤 5:合并

按步骤 3 确认的聚类,把同一大项目的多个窗口的 points 合并:

  • 同维度的可合并条目:同维度且语义相近的多条要点 → 合并成一条,证据并列。
  • 否决项绝不合并:每条「独立否决 AI 推荐」原样保留,依次编号(一)、(二)、(三)……
  • 核心决策点筛选:拿掉一条不影响工作逻辑链 → 砍;保留下来的必须是骨架性的决策/动作。
  • 窗口痕迹不要带出来:合并后的产出里不出现 "窗口 A / B"、jsonl ID 等技术痕迹。
  • 提取相关飞书文档链接:扫该大项目内所有窗口的 user 消息,用正则 https?://[^\s)]*feishu\.cn/(base|docx|wiki|sheets|file)/[A-Za-z0-9]+(\?[^\s)]*)? 抓所有飞书云文档 URL;去重后按出现顺序保留前 5 条,组装到 <h3>相关飞书文档</h3> 节。对每个 URL,如果能从对话上下文推断出文档名/用途(如"书目录入 Base 表"),就作为 <a> 的链接文本;推断不出就用裸 URL。本文档自身的链接也要列出(标注"(本文档)")。

步骤 6:组装 docx 内容(DocxXML 格式)

完整文档结构(使用 HTML 风格标签:要点用 <ol><li> 有序列表体现先后逻辑、<b> 加粗维度标签;不要用 <bullet> / <text_run>):

<title>Worklog YYYY-MM-DD</title>

<p><i>一句导语:今天跨 N 个方向(项目列表),本人主导了 X 项决策拍板、Y 次否决 AI 建议、Z 项实测把关。</i></p>

<h2>一、大项目 A 名称</h2>
<ol>
<li><b>需求定义</b>:……</li>
<li><b>方案决策</b>:对 N 个问题逐一拍板——……</li>
<li><b>独立否决 AI 推荐(一)</b>:否决「……」,改为「……」,因为……</li>
<li><b>独立否决 AI 推荐(二)</b>:……</li>
<li><b>实测把关</b>:亲自……,发现……</li>
</ol>

<h3>相关飞书文档</h3>
<ul>
<li><a href="https://...">文档名(base / docx / wiki / sheets)</a></li>
</ul>

<h3>本项工作逻辑</h3>
<p>① 拿到任务(含糊指令 / 链接 / 截图)</p>
<p>↓</p>
<p>② 读懂并定义成明确目标</p>
<p>↓</p>
<p>③ 逐项决策、选型、拍板(其中否决 / 修正 AI 建议)</p>
<p>↓</p>
<p>④ 亲自实测把关(发现并上报问题)</p>
<p>↓</p>
<p>⑤ 交付落地</p>

<h2>二、大项目 B 名称</h2>
<ol>
<li>……</li>
</ol>

<h3>本项工作逻辑</h3>
<p>① ……</p>
<p>↓</p>
<p>② ……</p>

<h2>原话证据</h2>
<ul>
<li>「……」——大项目 A,HH:MM</li>
<li>「……」——大项目 B,HH:MM</li>
</ul>

关键约束

  • 大项目标题用 中文序号前缀(一、二、三……),便于飞书目录侧栏一眼看到顺序
  • 每个大项目必须含 <h3>相关飞书文档</h3> 小节,列出该项工作触及的飞书 base / docx / wiki / sheets 链接(提取方法见步骤 5 末尾)
  • 要点必须用 <ol><li>(有序列表),不要 <ul> —— 编号体现先后逻辑
  • 每个大项目独立的 <h3>本项工作逻辑</h3> 流程图,不要全文档共用一个
  • 原话证据保持 <ul><li>(无序),仅作为可追溯附录
  • 流程图保持竖排文字+箭头格式;如果未来要框线图,走 lark-whiteboard skill 嵌入画板(当前不做)

参考既有日报模板 daily-report/references/template-example.md 的 DocxXML 写法。

流程图规则:竖排带序号的箭头流,每步独立 <p>禁止 ASCII 框线方块图(飞书等非等宽字体会错位)。

导语规则:一句话,提到今天跨几个方向 + 关键数字(决策数、否决次数、实测次数)。


步骤 7:写入飞书

硬编码 wiki 根节点

URL: https://t2rvx54o5x.feishu.cn/wiki/XAMewJpVniOSXSkEKaGcASM4nkg
title: 每日个人总结
node_token: XAMewJpVniOSXSkEKaGcASM4nkg
space_id: 7631109155675196628

7.1 检查今天的 docx 是否已存在

lark-cli wiki +node-list --as user \
  --space-id 7631109155675196628 \
  --parent-node-token XAMewJpVniOSXSkEKaGcASM4nkg

在返回的 nodes 里找 title == "Worklog YYYY-MM-DD"

7.2a 不存在 → 创建

lark-cli wiki +node-create --as user \
  --space-id 7631109155675196628 \
  --parent-node-token XAMewJpVniOSXSkEKaGcASM4nkg \
  --obj-type docx \
  --title "Worklog YYYY-MM-DD"

返回里取 data.obj_token 备用。

7.2b 已存在 → 覆盖

终端打印 ⚠️ 覆盖已有 Worklog YYYY-MM-DD(旧版可从飞书版本历史找回),取已有节点的 obj_token

7.3 写入正文(覆盖模式)

把步骤 6 组装的 DocxXML 写到临时文件 worklog_<date>.xml,然后:

lark-cli docs +update --api-version v2 \
  --doc <obj_token> \
  --command overwrite \
  --content @./worklog_<date>.xml \
  --as user

7.4 推送到「每日日报组」飞书群(固定,每次写完后必做)

写入成功后,自动把 Worklog 链接发到飞书群「每日日报组」(不需要再问用户)。

群名:每日日报组
chat_id:oc_03cc17c6ca043704f9fc252e6fe86623

合并发送规则(重要):如果本次会话也跑了 daily-report(日报),就把日报 + Worklog 两条链接合并成一条消息发,别发两条刷屏;用同一 --idempotency-key "report-<date>"。只跑了 Worklog 时只发 Worklog 一条。

# 情况 A:日报 + Worklog 一起发(合并一条)
$md = @'
📋 **日报 · <date>**
[日报 · <date>](<日报url>)

📝 **Worklog <date>**
[Worklog <date>](<worklog url>)
'@
lark-cli im +messages-send --as user `
  --chat-id oc_03cc17c6ca043704f9fc252e6fe86623 `
  --markdown $md --idempotency-key "report-<date>"

# 情况 B:只发 Worklog
$md = @'
📝 **Worklog <date>**
[Worklog <date>](<worklog url>)
'@
lark-cli im +messages-send --as user `
  --chat-id oc_03cc17c6ca043704f9fc252e6fe86623 `
  --markdown $md --idempotency-key "worklog-<date>"
  • --idempotency-key 防止重跑当天重复刷屏。
  • chat_id 失效 / 群改名时,用 lark-cli im +chat-search --query "每日日报" --as user 重新查回。

7.5 输出

打印文档链接(https://<host>/wiki/<node_token>https://<host>/docx/<obj_token>),加上小结:

✅ 已写入:<URL>
   - 大项目数:M
   - 总要点:N 条(其中独立否决 AI:K 次)
   - 工作逻辑:6 步

⚠️ 内容是 AI 起草草稿,建议在飞书里逐句改写成你自己的话。

边界情况

  • 今天 0 个 user 消息:报告"今天还没有实质用户输入,无须 worklog",不写文档。
  • 所有窗口加起来 0 条核心决策:报告"今天对话以单向问答为主,未捕获到决策/否决/实测",不写文档。
  • lark-cli 未登录 / scope 不足:按 lark-shared skill 提示用户走 auth login 流程。
  • 跨天边界:以本地日期判定"今天"——Worklog 2026-05-26 严格对应本地 2026-05-26 00:00 起的对话。

附:纯 prompt 版本(不想用 skill 时)

复制下面这段进对话即可:

扫描 ~/.claude/projects/*/*.jsonl 中今天修改的文件(双重过滤:mtime + 内容含今日 user 消息),按大项目自动聚类(路径关键词 + 共享专有名词),提炼出「我这个人」做了什么,写一份个人工作小结草稿。要求:

  1. 按大项目分组,每个项目一个小标题 + 一组要点;不设条数硬上限,但只写核心决策点。
  2. 每条以加粗维度标签开头:需求定义 / 方案决策 / 节奏把控 / 实测把关 / 工具链升级 / 能力选型 / 任务指挥 / 历史资产复用。
  3. 每一次否决或纠正 AI 的建议都单独成一条,标签写「独立否决 AI 推荐(一)(二)…」,写明否决了什么、改成什么、为什么。
  4. 只写我做的事(决策、否决、拍板、叫停、推动、实测、发现),不写 AI 的开发实现细节;无人称、不出现「我」。
  5. 不许拔高、不许编,每条都要在对话里有出处;挑不出证据的不写。
  6. 末尾配一个竖排带序号的箭头流程图(不要 ASCII 框线方块)。
  7. 收尾附一段原话证据(带大项目 / 时间)。
  8. 这是给我手写定稿用的草稿。

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.