boss-daily-brief-v2
- Repo stars 60
- Author updated Live
- Author repo boss-daily-brief
- Domain
- Other
- Compatible agents
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- Trust score
- 88 / 100 · community maintained
- Author / version / license
- @Viy1204 · no license declared
- Token usage
- Lean
- Setup complexity
- Guided setup
- External API key
- Not required
- Operating systems
- Windows
- Runtime requirements
- Node.js
- Permissions
-
- Read-only
- Write / modify
- Shell exec
- Network behavior
- Local-only
- Install commands
- 26 variants
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: boss-daily-brief-v2
description: > 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行…
category: other
runtime: Node.js
---
# boss-daily-brief-v2 output preview
## PART A: Task fit
- Use case: > 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行以下四个阶段。每个阶段完成后明确告知用户,再进入下一阶段。 boss --version 2>&1 lark-cli --version 2>&1 runs entirely locally; runs on Node.js. Works with Claude Code, Cursor, Cline and 23 more..
- Inputs: target material, constraints, expected output, and acceptance criteria.
- Evidence boundary: follow “初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权” and do not present inference as author intent.
## PART B: Execution result
- **01** The card summarizes the use case; runtime output centers on “> 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行以下四个阶段。每个阶段完成后明确告知用户,再进入下一阶段。 boss --version 2>&1 lark-cli --version 2>&1 runs entirely locally; runs on Node.js. Works with Claude Code, Cursor, Cline and 23 more.”.
- **02** When the source has headings, the agent prioritizes “初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权” so the result follows the author’s structure.
- **03** Typical output includes task judgment, concrete steps, required commands or file edits, validation, and follow-up options.
- **04** Risk context follows the fingerprint: read files, write/modify files, run shell commands; mostly runs locally; usually needs no extra API key.
## Running Rules
- read files, write/modify files, run shell commands; mostly runs locally; usually needs no extra API key.
- Validate with a small sample before expanding scope.
- Return the result, validation criteria, and next iteration options. The source mentions slash commands such as `/open-apis`; use them first when your agent supports command triggers.
Name target files or source material, expected output, forbidden changes, and whether network or shell access is allowed. Permission fingerprint: read files, write/modify files, run shell commands.
Start with a small task and check whether the result follows “初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权”. Inspect diffs, logs, previews, or tests before expanding scope.
Confirm the final output includes a concrete result, evidence, and next action. If it stays generic, tighten inputs, boundaries, and acceptance criteria.
---
name: boss-daily-brief-v2
description: > 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行…
category: other
source: Viy1204/boss-daily-brief
---
# boss-daily-brief-v2
## When to use
- > 配置文件路径:与本 skill.md 同目录的 config.json(参考 config.example.json)。 当用户说"boss init"、"初始化"、"第一次配置"时,运行以下四个阶段。每个阶段完成后明确告知用户,再…
- Use it when the task has clear inputs, repeatable steps, and validation criteria.
## What to provide
- Target material, scope, expected result, and forbidden changes.
- Whether network, commands, file writes, or external services are allowed.
## Execution rules
- Organize steps around “初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权” and keep inference separate from source facts.
- read files, write/modify files, run shell commands; mostly runs locally; usually needs no extra API key.
- Validate with a small sample before expanding the task.
## Output requirements
- Return the deliverable, key evidence, validation method, and next action.
- Mark missing information as unknown; do not invent commands, platforms, or dependencies. The author source anchors workflow facts; repository files anchor sources and commands; Fluxly only adds fit, limitations, and quality judgment.
skill "boss-daily-brief-v2" {
input -> user goal + target files + boundaries + acceptance criteria
context -> 初始化(boss init — 首次使用) / Phase 1:工具检查 / Phase 2:登录授权
rules -> SKILL.md triggers / order / output contract
runtime -> Node.js | read files, write/modify files, run shell commands | mostly runs locally
guardrails -> usually needs no extra API key + small-sample validation + diff/log review
output -> copyable result + checklist + next iteration
} 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 必须紧跟子命令 |
| 机器人发送失败 | 确认用户已先给机器人发过消息(建立会话) |
Decide Fit First
Design Intent
How To Use It
Boundaries And Review