skill-scan
cheat-on-skill 的核心。连 BOSS 直聘真实招聘数据 + 网页信号,按用户能力画像找「高薪 × 你学得动 × AI 增强」交集里的候选岗位。每个岗位给:薪资量级 / 需求热度 / 你的差距 / 可学性分 / 诚实学习周期,并过 AI 影响分类与反诈红线。触发词:"帮我找岗位"/"找AI时代高薪工作"/"有什么我能学的高薪岗"/"skill scan"/"扫一遍招聘"。前置:需要 .skill-state.json(无则先路由到 skill-init)。
git clone --depth 1 https://github.com/XBuilderLAB/cheat-on-skill /tmp/skill-scan && cp -r /tmp/skill-scan/skills/skill-scan ~/.claude/skills/skill-scanSKILL.md
# /skill-scan — 高薪 × 可学 × AI 增强 的交集挖掘(核心) ## 核心方法(先读这条) **不搜"AI 高薪职业 Top10"那类水文**——它们利益不中立,是卖课/培训机构的获客漏斗。 真正诚实的需求信号是 **BOSS 直聘的真实在招岗位**:某岗位在招、给得起价 = 有人真在花钱买这个能力; 岗位数涨=需求升,降=红海。再叠加你的能力画像,挑出"高薪 × 你学得动 × AI 时代仍要"三个圈的交集。 ## 铁律 1. **主信源是真实招聘数据**(BOSS adapter + 招聘趋势),"职业推荐"水文不作依据。 2. **绝不凭记忆**。薪资量级、岗位热度、技能要求一律实时取(BOSS / 网页检索加年份)。 3. **每个岗位先过 AI 影响分类**(`ai-impact-taxonomy.md`):替代型直接劝退,只推增强 / 新生。 4. **每个岗位按用户起点算可学性**(`learnability-rubric.md`),低于阈值不列为首选。 5. **按档位收敛**(`role-tiers.md`):别给 S0 推够不着的算法岗,别给 S3 推标注。 6. **任何带"培训/内推/包就业"的机会过反诈**(`anti-scam-rubric.md`)。 7. **诚实标注 BOSS 数据边界**:薪资数字被字体混淆(▯ 占位),只拿到量级;精确值要用户手动看详情页。 8. **详情页只读需用户点名**:只读取用户明确选择的详情链接;用户可以从候选里选任意数量,也可以少选或不选。读取时保持低频顺序执行,只提取岗位标题、公司、薪资、地点/地址、JD/要求文本;不读取/保存 HR 信息,不点"立即沟通",不做无选择的批量抓取。 ## 流程 ### Step 0 — 读上下文 - 读 `.skill-state.json` 拿画像 + **`profile.start_tier`**(无 → 路由 `skill-init`)。 - 读 `../../shared-references/role-tiers.md`(按档位分流)。 - 读 `../../shared-references/ai-impact-taxonomy.md`(方向闸门)。 - 读 `../../shared-references/learnability-rubric.md`(可学性打分)。 - 读 `../../shared-references/anti-scam-rubric.md`(反诈,用于培训/内推类)。 - 读 `lessons.md`(若存在):用户过往复盘沉淀,优先参考。 - 任何写入 `found_at` / `found_at_full` 前,先用系统时间取当前时间: ```bash date '+%Y-%m-%d %H:%M %Z %z' ``` `found_at` 写日期,`found_at_full` 写具体时间和时区,跟用户系统时区走(例:`2026-06-26 22:06 CST +0800`)。对用户展示时写成 `2026-06-26 22:06(本机时区 + UTC 偏移,如 中国标准时间 CST,UTC+8)`,不要写死成某个固定国家的时间。 ### Step 1 — 按档位锁定搜索词 先按 `start_tier` 限定方向范围(role-tiers),再结合用户可迁移能力,列 3–6 个 BOSS 搜索关键词。 - S0 → `AI内容运营` `AIGC运营` `AI标注` `数字人运营` `AI客服` - S1 → `AIGC运营` `AI营销` `Prompt工程` `AI设计` `AI视频` - S2 → `AI应用开发` `LLM应用` `大模型应用` `AI工程` `Agent开发` - S3 → `<用户行业>AI` `AI解决方案` `行业AI产品` `AI合规` > 结合用户的 transferable 能力调词,别用模板硬套。把要搜的词先念给用户确认。 ### Step 2 — 取真实招聘数据(BOSS adapter,human-in-the-loop) 用 `../../adapters/boss`。**这是半自动、需用户配合的,先把步骤告诉用户:** ```bash cd ../../adapters/boss # 相对 skill 目录;实际路径见安装位置 ./launch-chrome.sh # 起【有界面】Chrome,用户扫码登录 BOSS,弹滑块手动过 node diagnose-cdp.mjs 9222 # 可选:确认当前环境能读 Chrome 调试端口 node read-boss.mjs "AIGC运营" 100010000 9222 1 # 搜词读第 1 页列表 → JSON(城市码默认全国) node read-boss-detail.mjs 9222 "https://www.zhipin.com/job_detail/..." # 用户明确选中后,只读选中的 JD ``` - 每个关键词跑一次,拿回 JSON(岗位名 / 薪资量级 / 公司 / 列表页标签 / 详情链接 / diagnostics)。列表页标签通常只够判断经验/学历/实习周期,完整技能要求仍需用户手动贴 JD。 - **薪资是 `▯▯-▯▯K` 量级**(BOSS 字体混淆,adapter 不破解)——位数结构泄露量级,够区分档位;要精确值让用户手动开 2–3 个详情页看。 - **JD 真实要求列表页拿不到**:先看列表页筛候选,给用户 2–5 条值得看的岗位;用户明确说"读取这几个 JD"后,才用 `read-boss-detail.mjs` 读取 1–3 个详情页。若详情读取失败,再让用户手动贴 JD。 - 若 `diagnostics.maybeNeedLogin`/`blocked`/`cardCount=0`:提示用户登录/过验证/重跑;选择器腐烂就把 diagnostics 发回校准。 - 若连接不上 `127.0.0.1:9222`:先跑 `node diagnose-cdp.mjs 9222`。若普通终端可读但 Codex/Claude 沙箱内不可读,说明需要非沙箱权限读取本机 Chrome 调试端口,不代表 adapter 选择器坏了。 - ⚠️ 低频、只读列表页,不翻页/不进详情/不私聊(反爬风控 + ToS + 反诈 A6)。 > 若用户当下不方便登录跑 adapter:退而用 WebSearch 搜"<岗位> 招聘 要求 薪资 2026 / 行情报告",但**明确标注这是二手转述、不如 BOSS 一手**。 ### Step 2.5 — 逐页筛选节奏(最多 3 页) 不要一次性把 BOSS 搜索结果全读完。按下面节奏推进: 1. 读取当前关键词第 N 页列表(从第 1 页开始)。 2. 用用户画像 + 反诈 rubric 粗筛,向用户提供 2–5 条"值得打开 JD"的候选,并说明为什么;同时点名明显劝退项(如零经验高薪、提成、培训、获客、金融外呼)。 3. 每看完一页都提示用户可以调整筛选要求(如不要实习、只看深圳、排除销售/提成、薪资下限、只看全职、只看英文/海外方向)。若用户调整要求,后续页面按新要求筛。 4. 等用户明确选择后,调用 `read-boss-detail.mjs` 读取详情页。用户可以选择候选里的任意数量,也可以少选或不选;没有明确选择就不要读详情。一次选择较多时,顺序低频读取并在输出中分批整理,避免并发/高频触发风控。 5. 基于 JD 做差距分析和可学性初判。已经读过/用户选过的岗位,后续页面不再重复推荐,只在最终总结里统一回顾。 6. 用户完成第二轮选择并读完 JD 后,如果已经积累了足够多可比较岗位(通常 4–8 个 JD 或 2–3 个清晰方向),主动提示可以现在生成阶段报告/岗位报告;用户也可以选择继续看第 3 页。 7. 继续下一页,直到看完 3 页、用户要求停止、或已经找到足够强的 2–3 个候选方向。 8. 看完最多 3 页后,给用户一个阶段总结:已看页数、候选岗位、已读 JD、待读 JD、劝退模式、用户中途调整过的筛选要求、推荐下一步。 ### Step 3 — 网页交叉验证 AI 影响与趋势 对每个候选岗位,按 `ai-impact-taxonomy.md` 判增强/新生/替代: - 看 BOSS 同词岗位数量量级(涨/缩)。 - WebSearch(加年份):`<岗位> 招聘趋势 2026`、`<岗位> 会不会被AI取代`、行业用工报告(只用利益中立来源)。 - **替代型直接标"劝退"**,即使现在还有岗。 ### Step 4 — 对每个候选岗位算可学性(核心增量) 按 `learnability-rubric.md` 的 L1–L5 打分(0–10),结合 JD 要求 vs 用户 transferable: - 列**你的差距**(缺哪几块,逐条;哪些可迁移)。 - 给 **可学性分 + 判定**(高可学/中等/吃力/劝退)。 - 给**诚实周期**:以用户每周 N 小时算,大概几个月到能投简历。 ### Step 5 — 反诈过滤(仅对培训/内推/外包类) 若某条路径牵涉付费培训/内推/包就业,过 `anti-scam-rubric.md`,标判定。岗位本身(公司直招)一般不触红线,但若公司查无此人/JD 零门槛高薪等命中 B 信号,也如实标。 ### Step 6 — 输出(每个候选岗位用统一格式) ``` 岗位:<名称> AI 影响:增强 ⬆️ / 新生 🆕 / 替代 ⬇️ 薪资量级:<▯ 量级 + 单位>(精确值需手动看详情页) 需求热度:<同词岗位量级/趋势 + 来源年份> 你的差距:<逐条;可迁移的标出来> 可学性:x/10(L1–L5 一句话) 判定:✅ 高可学 / ⚠️ 中等 / ⛔ 吃力 / ❌ 劝退 诚实周期:<以每周 N 小时算,几个月到能投简历> ``` 按可学性 × 薪资综合排序,**首推 2–3 个交集岗位**,劝退的也列出来并说明为什么(避免用户自己踩)。 ### Step 7 — 落盘 把候选岗位写入 `.skill-state.json` 的 `candidate_roles[]`(含 ai_impact / salary_band / demand / gap / learnability_score / learnability_verdict / honest_timeline / scam_verdict / found_at=今天日期 / found_at_full=具体时间和时区 / status=candidate)。 提示用户:**"我选 XX 这个岗位做学习计划"** → 走 `skill-plan`。
cheat-on-skill 的首次 onboarding。盘点用户能力(现有技能/可迁移底子/学历经验/每周可学时间/能坚持几个月/学习能力自评/地区/目标薪资/转型紧迫度),判定起点档位,创建 .skill-state.json 状态文件,是 skill-scan / skill-plan 的前置。触发词:"能力盘点"/"我想转AI相关工作"/"找AI时代高薪工作"/"skill init"/"职业转型初始化"。**当用户想找/规划 AI 时代工作但 .skill-state.json 不存在时,先路由到此。**
cheat-on-skill 的核心。为用户选定的某个候选岗位生成个性化学习策略:差距分析 → 分阶段学习路径(资源+里程碑)→ 作品集清单 → 求职时间线 → 止损线。强调 AI 加速学习、诚实周期、可验证里程碑。触发词:"我选XX做学习计划"/"这个岗位怎么学"/"给我学习路径"/"skill plan"/"制定转型策略"。前置:该岗位最好已在 skill-scan 的 candidate_roles 里、判定为可学。
cheat-on-skill 的陪跑进度 skill。用户问“今天该干嘛”“我现在做到哪了”“继续学”“打卡”“我卡住了”“下一步是什么”时触发。读取 .skill-state.json 的 active.progress 和 learning_plan,给当天任务、检查完成情况、记录进度、根据快慢调整计划。前置:已有 .skill-state.json 且 active.learning_plan 存在。