xbuilderlab/skill-init
cheat-on-skill 的首次 onboarding。盘点用户能力(现有技能/可迁移底子/学历经验/每周可学时间/能坚持几个月/学习能力自评/地区/目标薪资/转型紧迫度),判定起点档位,创建 .skill-state.json 状态文件,是 skill-scan / skill-plan 的前置。触发词:"能力盘点"/"我想转AI相关工作"/"找AI时代高薪工作"/"skill init"/"职业转型初始化"。**当用户想找/规划 AI 时代工作但 .skill-state.json 不存在时,先路由到此。**
npx skills add https://github.com/XBuilderLAB/cheat-on-skill --skill skill-init
把用户从"我想找个 AI 时代的高薪工作"带到"有了一份清晰能力画像、可以开始找岗位",全程 ≤ 5 分钟。
这套工具的差异点不是"列高薪职业",是 能力匹配 + 可学性闸门 + 真实招聘数据 + 反诈。
所以 init 的目标不是给岗位,而是先建立"值得学 = 对你值得学"的前提:没有能力画像,任何高薪岗位都是别人的画饼。
[用户首次说"我想找AI时代的高薪工作"]
→ Phase 0: 检测 .skill-state.json 是否存在
→ Phase 1: 首屏文案(期望管理 + 反诈承诺)
→ Phase 2: 能力盘点 7 问(一次问完,允许"不确定")
→ Phase 2.5: 起点档位识别(S0–S3)
→ Phase 3: 写入 .skill-state.json
→ Phase 4: 下一步清单
test -f .skill-state.json && echo EXISTS || echo MISSING
> 第 1、2 题重点提炼可迁移能力(transferable),写进 state,scan 时用它缩小差距。
读 ../../shared-references/role-tiers.md,按"可迁移底子 × 可投入资源 × 学习能力"归到 S0/S1/S2/S3:
> 不确定就低不就高。判完明确告诉用户判成哪档、为什么,说"你比我更懂自己,可以改"。把 start_tier + tier_reason 写进 state。
读 ../../templates/skill-state.template.json,填入答案(含 start_tier/tier_reason/transferable)。
写入前先用系统时间取当前时间和本机时区(不要写死任何固定城市/时区,一律跟用户的系统走):
date '+%Y-%m-%d %H:%M %Z %z' # 当前时间 + 时区缩写 + UTC 偏移(如 CST +0800)
readlink /etc/localtime 2>/dev/null | sed 's#.*/zoneinfo/##' # IANA 时区 ID(如 Asia/Shanghai;读不到就留空让用户确认)
created_at 写当天日期(YYYY-MM-DD),created_at_full 写具体时间和时区(用上面读到的,例:2026-06-26 22:06 CST +0800),timezone_id 写读到的 IANA 时区 ID(如 Asia/Shanghai),timezone_label 写对应的本地时区名(如 中国标准时间)。给用户展示时用本机时区,不要写死成某个国家的时间。写到当前工作目录的 .skill-state.json。删掉 candidate_roles 里的示例项。
告诉用户现在可以说:
skill-scan(连 BOSS + 网页信号,按你的画像找「高薪 × 可学 × AI 增强」候选岗位)skill-planTake xbuilderlab/skill-init from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.