Word总结
- 作者仓库星标 60
- 作者更新于 实时读取
- 作者仓库 boss-daily-brief
- 领域
- 通用
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 88 / 100 · 社区维护
- 作者 / 版本 / 许可
- @Viy1204 · 未声明 license
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 需简单配置
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- Windows
- 底层运行要求
- Node.js
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: boss-daily-brief-v2
description: > 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行…
category: 通用
runtime: Node.js
---
# boss-daily-brief-v2 输出预览
## PART A: 任务判断
- 适用问题:通用任务拆解、检查和交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于通用任务拆解、检查和交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、执行终端命令、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件、执行终端命令;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文出现了 `/open-apis` 这类斜杠命令;如果你的 Agent 支持命令触发,优先用命令开场,再补充目标和边界。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件、执行终端命令。
先用一个小任务确认它会围绕“初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: boss-daily-brief-v2
description: > 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行…
category: 通用
source: Viy1204/boss-daily-brief
---
# boss-daily-brief-v2
## 什么时候使用
- 当用户说"boss init"、"初始化"、"第一次配置"时,运行以下四个阶段 适合处理通用任务拆解、检查、交付和复盘,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可继续…
- 面向通用任务拆解、检查和交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件、执行终端命令;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "boss-daily-brief-v2" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> 初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Node.js | 读取文件、写入/修改文件、执行终端命令 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} Boss直聘每日简历Brief工作流
配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。
初始化(boss init — 首次使用)
当用户说"boss init"、"初始化"、"第一次配置"时,运行以下四个阶段。每个阶段完成后明确告知用户,再进入下一阶段。
Phase 1:工具检查
依次检查:
boss --version 2>&1
lark-cli --version 2>&1
node --version 2>&1
- ✅ 三个工具均存在 → 进入 Phase 2
- ❌
boss未找到 → 提示:npm install -g @joohw/boss-cli - ❌
lark-cli未找到 → 提示:npm install -g @larksuite/cli - ❌
node未找到 → 提示安装 Node.js(https://nodejs.org)
工具全部就绪后继续。
Phase 2:登录授权
2.1 boss CLI
boss list 2>&1 | head -3
- ✅ 返回候选人列表 → 已登录
- ❌
未检测到 .menu-list→ 提示用户运行boss login,在浏览器完成登录后告知我继续
2.2 lark-cli
lark-cli auth status 2>&1
valid→ 已授权- 其他状态 → 运行授权命令:
lark-cli auth login --scope "drive:drive:readonly drive:file:create docx:document:create docx:document:write_only docx:document:readonly bitable:app:create bitable:app:update bitable:table:create bitable:table:update bitable:field:create bitable:record:create bitable:record:read im:message im:message.send_as_user contact:user.base:readonly" --as user 2>&1
提示用户打开返回的授权链接,完成后确认继续。
Phase 3:飞书资源配置
3.1 文档文件夹
列出云盘根目录,找或创建存放每日 brief 的文件夹:
lark-cli api GET /open-apis/drive/v1/files --as user 2>&1
询问用户:文件夹名称是什么?(默认:boss直聘每日简历brief)
- 在返回列表中找到对应
folder类型的条目 → 记录folder_token - 未找到 → 创建:
lark-cli api POST /open-apis/drive/v1/files/create_folder \
--body '{"name":"boss直聘每日简历brief","folder_token":""}' \
--as user 2>&1
记录 folder_token。
3.2 多维表格
询问用户:是否已有候选人管理表格?
选项 A:已有表格 → 请输入 base_token 和 table_id,验证后记录。
选项 B:自动创建
Step 1 创建多维表格:
lark-cli api POST /open-apis/bitable/v1/apps \
--body '{"name":"Boss直聘候选人招聘管理","folder_token":"<folder_token>"}' \
--as user 2>&1
从返回值取 app_token(即 base_token)。
Step 2 获取默认 table_id:
lark-cli api GET /open-apis/bitable/v1/apps/<base_token>/tables --as user 2>&1
取第一个 table_id,重命名默认表:
lark-cli api PATCH /open-apis/bitable/v1/apps/<base_token>/tables/<table_id> \
--body '{"name":"候选人信息"}' \
--as user 2>&1
Step 3 询问用户:你们目前在招哪些职位?(多选,输入序号,可追加自定义)
给出参考选项让用户勾选:
1. 安卓开发工程师 7. 产品营销
2. iOS开发工程师 8. 技术美术(TA)
3. 前端开发工程师 9. UI/UX设计师
4. 后端开发工程师 10. 供应链/采购
5. APP软件产品经理 11. 运营
6. 智能硬件产品经理 12. 自定义输入...
收集用户选择的职位列表,后续作为"应聘职位"字段的预设选项。
Step 4 创建字段(逐个执行,失败不中断,记录错误在最后统一提示):
# 应聘职位(单选,动态选项)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{
"field_name": "应聘职位",
"type": 3,
"property": {
"options": [<用户选择的职位列表,格式: {"name":"职位名"},逗号分隔>]
}
}' --as user 2>&1
# 性别(单选)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"性别","type":3,"property":{"options":[{"name":"男"},{"name":"女"}]}}' \
--as user 2>&1
# 年龄(数字)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"年龄","type":2}' --as user 2>&1
# 学历(单选)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"学历","type":3,"property":{"options":[{"name":"博士"},{"name":"硕士"},{"name":"本科"},{"name":"大专"}]}}' \
--as user 2>&1
# 毕业院校(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"毕业院校","type":1}' --as user 2>&1
# 专业(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"专业","type":1}' --as user 2>&1
# 工作年限(数字)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"工作年限","type":2}' --as user 2>&1
# 期望城市(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"期望城市","type":1}' --as user 2>&1
# 期望薪资(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"期望薪资","type":1}' --as user 2>&1
# 活跃状态(单选)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"活跃状态","type":3,"property":{"options":[{"name":"刚刚活跃"},{"name":"今日活跃"},{"name":"昨天"},{"name":"3天内"},{"name":"本周内"}]}}' \
--as user 2>&1
# 近期工作经历(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"近期工作经历","type":1}' --as user 2>&1
# 初筛评级(单选)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"初筛评级","type":3,"property":{"options":[{"name":"⭐⭐⭐⭐⭐ 强推"},{"name":"⭐⭐⭐⭐ 推荐"},{"name":"⭐⭐⭐ 可约"},{"name":"⭐⭐ 观望"},{"name":"⭐ 不推荐"},{"name":"❌ 排除"}]}}' \
--as user 2>&1
# 初筛理由(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"初筛理由","type":1}' --as user 2>&1
# 跟进状态(单选)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"跟进状态","type":3,"property":{"options":[{"name":"待联系"},{"name":"已发邀约"},{"name":"面试中"},{"name":"已通过"},{"name":"已Offer"},{"name":"已录用"},{"name":"已淘汰"}]}}' \
--as user 2>&1
# 排除原因(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"排除原因","type":1}' --as user 2>&1
# 录入日期(日期)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"录入日期","type":5,"property":{"date_formatter":"yyyy/MM/dd"}}' \
--as user 2>&1
# Boss直聘消息摘要(文本)
lark-cli api POST /open-apis/bitable/v1/apps/<base_token>/tables/<table_id>/fields \
--body '{"field_name":"Boss直聘消息摘要","type":1}' --as user 2>&1
多维表格自带一个默认文本字段"文本",建完后在飞书手动删除即可(不影响写入)。
记录 base_token 和 table_id。
3.3 机器人配置
询问用户:飞书机器人的 App ID 是多少?(格式:cli_xxxxxxxxxxxxxxxx)
提示用户在飞书里搜索该机器人并发送一条消息(如"hi"),建立会话后继续。
记录 bot_app_id。
3.4 获取用户 open_id
自动获取:
lark-cli api GET /open-apis/contact/v3/users/me --as user 2>&1
从返回值取 user_id 字段(ou_ 开头)。
记录 user_open_id。
Phase 4:筛选标准配置
逐项询问用户,提供默认值,用户直接回车则使用默认值:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 年龄上限 | 超过此年龄直接排除 | 40 |
| 年龄降权阈值 | 超过此年龄但未达上限,评级降权 | 35 |
| 技术岗角色关键词 | 命中这些关键词的职位适用学历门槛(逗号分隔) | 工程师,软件产品经理,硬件产品经理 |
| 技术岗最低学历 | 技术岗低于此学历直接降权(可填:211/985、本科、硕士) | 211/985 |
| 直接排除的学历 | 命中则不获取简历、直接点不合适(逗号分隔) | 大专,学院 |
写入 config.json
将以上收集到的信息写入 skill 目录下的 config.json:
{
"feishu": {
"folder_token": "<从 3.1 获取>",
"base_token": "<从 3.2 获取>",
"table_id": "<从 3.2 获取>",
"bot_app_id": "<从 3.3 获取>",
"user_open_id": "<从 3.4 获取>"
},
"screening": {
"age_limit": 40,
"age_downgrade_threshold": 35,
"tech_role_keywords": ["工程师", "软件产品经理", "硬件产品经理"],
"tech_min_degree": "211/985",
"excluded_degrees": ["大专", "学院"]
},
"positions": ["<用户在 3.2 选择的职位列表>"]
}
写入完成后告知用户:
- 配置文件路径
- 多维表格链接:
https://www.feishu.cn/base/<base_token> - 初始化完成,可以运行"帮我做今天的招聘简报"
日常运行流程
Step 0:读取配置
读取 skill 目录下的 config.json,提取所有字段。
若文件不存在,提示用户先运行"boss init"完成初始化。
Step 1:拉取候选人列表
boss list 2>&1
输出格式:序号. 姓名|应聘职位|未读:N|时间:XX|消息:XX
记录所有候选人的序号、姓名、应聘职位、未读数、最新消息时间。优先处理未读候选人。
Step 2:逐个获取简历
对每位候选人,先按 screening.excluded_degrees 判断学历:
| 判断条件 | 处理方式 |
|---|---|
学历命中 excluded_degrees |
直接点不合适(boss action not-fit),跳过,不纳入统计 |
技术岗 + 学历低于 tech_min_degree |
获取简历,评级时降权 |
| 其他 | 正常获取简历 |
获取简历:
boss chat "<姓名>" 2>&1
boss chat 直接返回人才摘要,不需要再执行 boss action resume。
点不合适:
# 先打开候选人会话,再执行
boss action not-fit 2>&1
每批处理 3~5 人,避免浏览器超时。若
boss chat报"未找到联系人",加--strict参数;仍失败则标记"未获取",继续下一位。
Step 3:应用筛选 & 整理为 Markdown
按 screening 配置应用筛选规则:
| 条件 | 处理方式 |
|---|---|
学历命中 excluded_degrees |
已在 Step 2 处理,不展示 |
年龄 ≥ age_limit |
❌ 排除,不展示详细简历 |
年龄 ≥ age_downgrade_threshold |
保留,评级降权,备注"年龄降权" |
技术岗 + 学历低于 tech_min_degree |
降级,最高不超过 ⭐⭐ 观望 |
整理格式(按应聘职位分组):
## [职位名称]
### 姓名
- **性别/年龄**:男/女 · XX岁
- **学历/经验**:本科/硕士 · XX年
- **活跃状态**:刚刚活跃 / 今日活跃 / 昨天 / 3天内
- **期望**:城市 · 职位方向 · 薪资范围
- **工作经历**:
- 时间 公司 · 职位
- **教育**:学校 · 专业 · 学历(年份)
文档开头注明:生成时间、有效候选人总数(不含已点不合适的)、筛选标准摘要。
Step 4:创建飞书云文档
cd <工作目录>
lark-cli docs +create \
--title "Boss直聘候选人简历Brief $(Get-Date -Format 'yyyyMMdd')" \
--folder-token "<config.feishu.folder_token>" \
--markdown "@tmp_boss_brief.md" \
--as user 2>&1
先用 Write 工具将 Markdown 内容写入
tmp_boss_brief.md,再执行上述命令。--markdown必须用相对路径@filename.md,先cd到文件所在目录再执行。
记录返回的 doc_id。
Step 5:AI 初筛并生成推荐等级
评估三个维度:经验匹配度、学历背景、薪资合理性。学历权重按 screening 配置执行。
推荐等级:
| 等级 | 含义 | 行动 |
|---|---|---|
| ⭐⭐⭐⭐⭐ 强推 | 高度匹配,学历经验俱佳 | 优先约谈 |
| ⭐⭐⭐⭐ 推荐 | 基本匹配,有明显亮点 | 优先约谈 |
| ⭐⭐⭐ 可约 | 部分匹配,需面试确认 | 可选约谈 |
| ⭐⭐ 观望 | 匹配度弱 | 暂不操作 |
| ⭐ 不推荐 | 明显不合适 | 报告中列出 |
| ❌ 排除 | 不符合硬性筛选条件 | 报告中列出 |
生成初筛报告:各职位分组评级表 + 结尾「优先约谈名单」(⭐⭐⭐⭐及以上)。
Step 6:追加初筛报告到飞书文档
cd <工作目录>
lark-cli docs +update \
--doc "<doc_id>" \
--mode append \
--as user \
--markdown "@tmp_boss_screening.md" 2>&1
表格超过 50 行时拆分多次追加。
Step 7:追加全量顺序汇总表
cd <工作目录>
lark-cli docs +update \
--doc "<doc_id>" \
--mode append \
--as user \
--markdown "@tmp_boss_summary.md" 2>&1
Step 8:写入多维表格
将有效候选人批量写入多维表格(config.feishu.base_token + config.feishu.table_id)。
字段映射注意点:
- "应聘职位"必须匹配
config.positions中的选项值,不存在的选项跳过并记录 - "活跃状态":
3日内活跃→3天内 - 工作年限必须是数字(
10年以上→10,应届生 →0) - 录入日期格式:
yyyy-MM-dd
cd <工作目录>
lark-cli base +record-batch-create \
--base-token "<config.feishu.base_token>" \
--table-id "<config.feishu.table_id>" \
--as user \
--json @boss_records_YYYYMMDD.json 2>&1
JSON 格式:lark-cli 简化格式
{"fields": [...], "rows": [...]},非标准飞书 API 格式。--json用相对路径,先cd到文件目录再执行。
Step 9:推送简报到飞书机器人
使用 scripts/send-feishu-msg.js(从 config.json 读取 bot_app_id 和 user_open_id):
node <skill目录>/scripts/send-feishu-msg.js --brief brief_data.json
其中 brief_data.json:
{
"date": "2026-04-28",
"total": 20,
"rejected": 5,
"excluded": 3,
"priority": 5,
"priorityList": [
{ "name": "张三", "position": "APP软件产品经理", "highlight": "985院校,8年经验" }
],
"docUrl": "https://www.feishu.cn/docx/<doc_id>",
"baseUrl": "https://www.feishu.cn/base/<base_token>",
"note": ""
}
严禁直接用 PowerShell 命令行发多行文本——
\n会被转义导致只发出第一行,必须通过 Node.js 脚本发送。
完成后输出
告知用户:
- 飞书文档链接
- 多维表格链接
- 优先约谈名单(⭐⭐⭐⭐及以上)
- 已点不合适人数
- 被排除人数及原因分布
- 未获取简历人数(建议手动查看)
- 未写入表格的候选人及原因(如职位选项不匹配)
常见问题
| 问题 | 解决方案 |
|---|---|
| 找不到 config.json | 先运行"boss init"完成初始化 |
未检测到 .menu-list |
运行 boss login 完成浏览器登录 |
boss chat 找不到联系人 |
加 --strict 参数;仍失败则标记"未获取" |
| 机器人消息只有第一行 | 必须用 scripts/send-feishu-msg.js,不能用 PowerShell 直接发 |
多维表格写入报 not_found |
职位不在 config.positions 选项中,需在飞书手动添加该选项 |
多维表格写入报 Provide a number value |
年龄/工作年限传了字符串,改为纯数字 |
多维表格报 Provide a value of type array |
JSON 格式错误,改用 lark-cli 简化格式 |
--as bot 不生效 |
--as bot 必须紧跟子命令 |
| 机器人发送失败 | 确认用户已先给机器人发过消息(建立会话) |
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核