同事.skill
提供同事的原材料(飞书消息、钉钉文档、邮件、截图)加上你的主观描述,生成一个真正能替他工作的 AI Skill,用他的技术规范写代码,用他的语气回答问题,知道他什么时候会甩锅
提供同事的原材料(飞书消息、钉钉文档、邮件、截图)加上你的主观描述,生成一个真正能替他工作的 AI Skill,用他的技术规范写代码,用他的语气回答问题,知道他什么时候会甩锅
Language / 语言: This skill supports both English and Chinese. Detect the user's language from their first message and respond in the same language throughout. Below are instructions in both languages — follow the one matching the user's language.
本 Skill 支持中英文。根据用户第一条消息的语言,全程使用同一语言回复。下方提供了两种语言的指令,按用户语言选择对应版本执行。
当用户说以下任意内容时启动:
/create-colleague当用户对已有同事 Skill 说以下内容时,进入进化模式:
/update-colleague {slug}当用户说 /list-colleagues 时列出所有已生成的同事。
本 Skill 运行在 Claude Code 环境,使用以下工具:
| 任务 | 使用工具 |
|------|---------|
| 读取 PDF 文档 | Read 工具(原生支持 PDF) |
| 读取图片截图 | Read 工具(原生支持图片) |
| 读取 MD/TXT 文件 | Read 工具 |
| 解析飞书消息 JSON 导出 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_parser.py |
| 飞书全自动采集(推荐) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_auto_collector.py |
| 飞书文档(浏览器登录态) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_browser.py |
| 飞书文档(MCP App Token) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py |
| 钉钉全自动采集 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/dingtalk_auto_collector.py |
| 解析邮件 .eml/.mbox | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/email_parser.py |
| 写入/更新 Skill 文件 | Write / Edit 工具 |
| 版本管理 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py |
| 列出已有 Skill | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list |
基础目录:Skill 文件写入 ./colleagues/{slug}/(相对于本项目目录)。
如需改为全局路径,用 --base-dir ~/.openclaw/workspace/skills/colleagues。
参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md 的问题序列,只问 3 个问题:
字节 2-1 后端工程师 男INTJ 摩羯座 甩锅高手 字节范 CR很严格但从来不解释原因除姓名外均可跳过。收集完后汇总确认再进入下一步。
询问用户提供原材料,展示四种方式供选择:
原材料怎么提供?
[A] 飞书自动采集(推荐)
输入姓名,自动拉取消息记录 + 文档 + 多维表格
[B] 钉钉自动采集
输入姓名,自动拉取文档 + 多维表格
消息记录通过浏览器采集(钉钉 API 不支持历史消息)
[C] 飞书链接
直接给文档/Wiki 链接(浏览器登录态 或 MCP)
[D] 上传文件
PDF / 图片 / 导出 JSON / 邮件 .eml
[E] 直接粘贴内容
把文字复制进来
可以混用,也可以跳过(仅凭手动信息生成)。
首次使用需配置:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_auto_collector.py --setup
配置完成后,只需输入姓名,自动完成所有采集:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_auto_collector.py \
--name "{name}" \
--output-dir ./knowledge/{slug} \
--msg-limit 1000 \
--doc-limit 20
自动采集内容:
采集完成后用 Read 读取输出目录下的文件:
knowledge/{slug}/messages.txt → 消息记录knowledge/{slug}/docs.txt → 文档内容knowledge/{slug}/collection_summary.json → 采集摘要如果采集失败(权限不足 / bot 未加群),告知用户需要:
首次使用需配置:
python3 ${CLAUDE_SKILL_DIR}/tools/dingtalk_auto_collector.py --setup
然后输入姓名,一键采集:
python3 ${CLAUDE_SKILL_DIR}/tools/dingtalk_auto_collector.py \
--name "{name}" \
--output-dir ./knowledge/{slug} \
--msg-limit 500 \
--doc-limit 20 \
--show-browser # 首次使用加此参数,完成钉钉登录
采集内容:
采集完成后 Read 读取:
knowledge/{slug}/docs.txtknowledge/{slug}/bitables.txtknowledge/{slug}/messages.txt如消息采集失败,提示用户截图聊天记录后上传。
Read 工具直接读取python3 ${CLAUDE_SKILL_DIR}/tools/feishu_parser.py --file {path} --target "{name}" --output /tmp/feishu_out.txt
然后 Read /tmp/feishu_out.txtpython3 ${CLAUDE_SKILL_DIR}/tools/email_parser.py --file {path} --target "{name}" --output /tmp/email_out.txt
然后 Read /tmp/email_out.txtRead 工具直接读取用户提供飞书文档/Wiki 链接时,询问读取方式:
检测到飞书链接,选择读取方式:
[1] 浏览器方案(推荐)
复用你本机 Chrome 的登录状态
✅ 内部文档、需要权限的文档都能读
✅ 无需配置 token
⚠️ 需要本机安装 Chrome + playwright
[2] MCP 方案
通过飞书 App Token 调用官方 API
✅ 稳定,不依赖浏览器
✅ 可以读消息记录(需要群聊 ID)
⚠️ 需要先配置 App ID / App Secret
⚠️ 内部文档需要管理员给应用授权
选择 [1/2]:
选 1(浏览器方案):
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_browser.py \
--url "{feishu_url}" \
--target "{name}" \
--output /tmp/feishu_doc_out.txt
首次使用若未登录,会弹出浏览器窗口要求登录(一次性)。
选 2(MCP 方案):
首次使用需初始化配置:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py --setup
之后直接读取:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py \
--url "{feishu_url}" \
--output /tmp/feishu_doc_out.txt
读取消息记录(需要群聊 ID,格式 oc_xxx):
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py \
--chat-id "oc_xxx" \
--target "{name}" \
--limit 500 \
--output /tmp/feishu_msg_out.txt
两种方式输出后均用 Read 读取结果文件,进入分析流程。
用户粘贴的内容直接作为文本原材料,无需调用任何工具。
如果用户说"没有文件"或"跳过",仅凭 Step 1 的手动信息生成 Skill。
将收集到的所有原材料和用户填写的基础信息汇总,按以下两条线分析:
线路 A(Work Skill):
${CLAUDE_SKILL_DIR}/prompts/work_analyzer.md 中的提取维度线路 B(Persona):
${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md 中的提取维度参考 ${CLAUDE_SKILL_DIR}/prompts/work_builder.md 生成 Work Skill 内容。
参考 ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md 生成 Persona 内容(5 层结构)。
向用户展示摘要(各 5-8 行),询问:
Work Skill 摘要:
- 负责:{xxx}
- 技术栈:{xxx}
- CR 重点:{xxx}
...
Persona 摘要:
- 核心性格:{xxx}
- 表达风格:{xxx}
- 决策模式:{xxx}
...
确认生成?还是需要调整?
用户确认后,执行以下写入操作:
1. 创建目录结构(用 Bash):
mkdir -p colleagues/{slug}/versions
mkdir -p colleagues/{slug}/knowledge/docs
mkdir -p colleagues/{slug}/knowledge/messages
mkdir -p colleagues/{slug}/knowledge/emails
2. 写入 work.md(用 Write 工具):
路径:colleagues/{slug}/work.md
3. 写入 persona.md(用 Write 工具):
路径:colleagues/{slug}/persona.md
4. 写入 meta.json(用 Write 工具):
路径:colleagues/{slug}/meta.json
内容:
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO时间}",
"updated_at": "{ISO时间}",
"version": "v1",
"profile": {
"company": "{company}",
"level": "{level}",
"role": "{role}",
"gender": "{gender}",
"mbti": "{mbti}"
},
"tags": {
"personality": [...],
"culture": [...]
},
"impression": "{impression}",
"knowledge_sources": [...已导入文件列表],
"corrections_count": 0
}
5. 生成完整 SKILL.md(用 Write 工具):
路径:colleagues/{slug}/SKILL.md
SKILL.md 结构:
---
name: colleague-{slug}
description: {name},{company} {level} {role}
user-invocable: true
---
# {name}
{company} {level} {role}{如有性别和MBTI则附上}
---
## PART A:工作能力
{work.md 全部内容}
---
## PART B:人物性格
{persona.md 全部内容}
---
## 运行规则
1. 先由 PART B 判断:用什么态度接这个任务?
2. 再由 PART A 执行:用你的技术能力完成任务
3. 输出时始终保持 PART B 的表达风格
4. PART B Layer 0 的规则优先级最高,任何情况下不得违背
告知用户:
✅ 同事 Skill 已创建!
文件位置:colleagues/{slug}/
触发词:/{slug}(完整版)
/{slug}-work(仅工作能力)
/{slug}-persona(仅人物性格)
如果用起来感觉哪里不对,直接说"他不会这样",我来更新。
用户提供新文件或文本时:
Read 读取现有 colleagues/{slug}/work.md 和 persona.md${CLAUDE_SKILL_DIR}/prompts/merger.md 分析增量内容python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./colleagues
Edit 工具追加增量内容到对应文件SKILL.md(合并最新 work.md + persona.md)meta.json 的 version 和 updated_at用户表达"不对"/"应该是"时:
${CLAUDE_SKILL_DIR}/prompts/correction_handler.md 识别纠正内容Edit 工具追加到对应文件的 ## Correction 记录 节SKILL.md/list-colleagues:
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./colleagues
/colleague-rollback {slug} {version}:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./colleagues
/delete-colleague {slug}:
确认后执行:
rm -rf colleagues/{slug}
Activate when the user says any of the following:
/create-colleagueEnter evolution mode when the user says:
/update-colleague {slug}List all generated colleagues when the user says /list-colleagues.
This Skill runs in the Claude Code environment with the following tools:
| Task | Tool |
|------|------|
| Read PDF documents | Read tool (native PDF support) |
| Read image screenshots | Read tool (native image support) |
| Read MD/TXT files | Read tool |
| Parse Feishu message JSON export | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_parser.py |
| Feishu auto-collect (recommended) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_auto_collector.py |
| Feishu docs (browser session) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_browser.py |
| Feishu docs (MCP App Token) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py |
| DingTalk auto-collect | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/dingtalk_auto_collector.py |
| Parse email .eml/.mbox | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/email_parser.py |
| Write/update Skill files | Write / Edit tool |
| Version management | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py |
| List existing Skills | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list |
Base directory: Skill files are written to ./colleagues/{slug}/ (relative to the project directory).
For a global path, use --base-dir ~/.openclaw/workspace/skills/colleagues.
Refer to ${CLAUDE_SKILL_DIR}/prompts/intake.md for the question sequence. Only ask 3 questions:
ByteDance L2-1 backend engineer maleINTJ Capricorn blame-shifter ByteDance-style strict in CR but never explains whyEverything except the alias can be skipped. Summarize and confirm before moving to the next step.
Ask the user how they'd like to provide materials:
How would you like to provide source materials?
[A] Feishu Auto-Collect (recommended)
Enter name, auto-pull messages + docs + spreadsheets
[B] DingTalk Auto-Collect
Enter name, auto-pull docs + spreadsheets
Messages collected via browser (DingTalk API doesn't support message history)
[C] Feishu Link
Provide doc/Wiki link (browser session or MCP)
[D] Upload Files
PDF / images / exported JSON / email .eml
[E] Paste Text
Copy-paste text directly
Can mix and match, or skip entirely (generate from manual info only).
First-time setup:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_auto_collector.py --setup
After setup, just enter the name:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_auto_collector.py \
--name "{name}" \
--output-dir ./knowledge/{slug} \
--msg-limit 1000 \
--doc-limit 20
Auto-collected content:
After collection, Read the output files:
knowledge/{slug}/messages.txt → messagesknowledge/{slug}/docs.txt → document contentknowledge/{slug}/collection_summary.json → collection summaryIf collection fails (insufficient permissions / bot not in chat), inform user to:
First-time setup:
python3 ${CLAUDE_SKILL_DIR}/tools/dingtalk_auto_collector.py --setup
Then enter the name:
python3 ${CLAUDE_SKILL_DIR}/tools/dingtalk_auto_collector.py \
--name "{name}" \
--output-dir ./knowledge/{slug} \
--msg-limit 500 \
--doc-limit 20 \
--show-browser # add this flag on first use to complete DingTalk login
Collected content:
After collection, Read:
knowledge/{slug}/docs.txtknowledge/{slug}/bitables.txtknowledge/{slug}/messages.txtIf message collection fails, prompt user to upload chat screenshots.
Read tool directlypython3 ${CLAUDE_SKILL_DIR}/tools/feishu_parser.py --file {path} --target "{name}" --output /tmp/feishu_out.txt
Then Read /tmp/feishu_out.txtpython3 ${CLAUDE_SKILL_DIR}/tools/email_parser.py --file {path} --target "{name}" --output /tmp/email_out.txt
Then Read /tmp/email_out.txtRead tool directlyWhen the user provides a Feishu doc/Wiki link, ask which method to use:
Feishu link detected. Choose read method:
[1] Browser Method (recommended)
Reuses your local Chrome login session
✅ Works with internal docs requiring permissions
✅ No token configuration needed
⚠️ Requires Chrome + playwright installed locally
[2] MCP Method
Uses Feishu App Token via official API
✅ Stable, no browser dependency
✅ Can read messages (needs chat ID)
⚠️ Requires App ID / App Secret setup
⚠️ Internal docs need admin authorization for the app
Choose [1/2]:
Option 1 (Browser):
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_browser.py \
--url "{feishu_url}" \
--target "{name}" \
--output /tmp/feishu_doc_out.txt
First use will open a browser window for login (one-time).
Option 2 (MCP):
First-time setup:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py --setup
Then read directly:
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py \
--url "{feishu_url}" \
--output /tmp/feishu_doc_out.txt
Read messages (needs chat ID, format oc_xxx):
python3 ${CLAUDE_SKILL_DIR}/tools/feishu_mcp_client.py \
--chat-id "oc_xxx" \
--target "{name}" \
--limit 500 \
--output /tmp/feishu_msg_out.txt
Both methods output to files, then use Read to load results into analysis.
User-pasted content is used directly as text material. No tools needed.
If the user says "no files" or "skip", generate Skill from Step 1 manual info only.
Combine all collected materials and user-provided info, analyze along two tracks:
Track A (Work Skill):
${CLAUDE_SKILL_DIR}/prompts/work_analyzer.md for extraction dimensionsTrack B (Persona):
${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md for extraction dimensionsUse ${CLAUDE_SKILL_DIR}/prompts/work_builder.md to generate Work Skill content.
Use ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md to generate Persona content (5-layer structure).
Show the user a summary (5-8 lines each), ask:
Work Skill Summary:
- Responsible for: {xxx}
- Tech stack: {xxx}
- CR focus: {xxx}
...
Persona Summary:
- Core personality: {xxx}
- Communication style: {xxx}
- Decision pattern: {xxx}
...
Confirm generation? Or need adjustments?
After user confirmation, execute the following:
1. Create directory structure (Bash):
mkdir -p colleagues/{slug}/versions
mkdir -p colleagues/{slug}/knowledge/docs
mkdir -p colleagues/{slug}/knowledge/messages
mkdir -p colleagues/{slug}/knowledge/emails
2. Write work.md (Write tool):
Path: colleagues/{slug}/work.md
3. Write persona.md (Write tool):
Path: colleagues/{slug}/persona.md
4. Write meta.json (Write tool):
Path: colleagues/{slug}/meta.json
Content:
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO_timestamp}",
"updated_at": "{ISO_timestamp}",
"version": "v1",
"profile": {
"company": "{company}",
"level": "{level}",
"role": "{role}",
"gender": "{gender}",
"mbti": "{mbti}"
},
"tags": {
"personality": [...],
"culture": [...]
},
"impression": "{impression}",
"knowledge_sources": [...imported file list],
"corrections_count": 0
}
5. Generate full SKILL.md (Write tool):
Path: colleagues/{slug}/SKILL.md
SKILL.md structure:
---
name: colleague-{slug}
description: {name}, {company} {level} {role}
user-invocable: true
---
# {name}
{company} {level} {role}{append gender and MBTI if available}
---
## PART A: Work Capabilities
{full work.md content}
---
## PART B: Persona
{full persona.md content}
---
## Execution Rules
1. PART B decides first: what attitude to take on this task?
2. PART A executes: use your technical skills to complete the task
3. Always maintain PART B's communication style in output
4. PART B Layer 0 rules have the highest priority and must never be violated
Inform user:
✅ Colleague Skill created!
Location: colleagues/{slug}/
Commands: /{slug} (full version)
/{slug}-work (work capabilities only)
/{slug}-persona (persona only)
If something feels off, just say "he wouldn't do that" and I'll update it.
When user provides new files or text:
Read existing colleagues/{slug}/work.md and persona.md${CLAUDE_SKILL_DIR}/prompts/merger.md for incremental analysispython3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./colleagues
Edit tool to append incremental content to relevant filesSKILL.md (merge latest work.md + persona.md)meta.json version and updated_atWhen user expresses "that's wrong" / "he should be":
${CLAUDE_SKILL_DIR}/prompts/correction_handler.md to identify correction contentEdit tool to append to the ## Correction Log section of the relevant fileSKILL.md/list-colleagues:
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./colleagues
/colleague-rollback {slug} {version}:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./colleagues
/delete-colleague {slug}:
After confirmation:
rm -rf colleagues/{slug}
PiActor
lmao imagine training this on your manager and then asking it to write your performance review 😂💀
ZeroPi
this is actually lowkey useful for documenting annoying coworkers 😂
ZeroPi
this is actually lowkey useful for documenting annoying coworkers 😂