Take the user from "I want to find a high-paying job in the AI era" to "having a clear capability profile and being ready to start looking for positions," all in ≤ 5 minutes.
Design philosophy (must be agreed with first)
The differentiator of this toolset is not "listing high-paying careers," it is capability matching + learnability gate + real recruitment data + anti-fraud. So the goal of init is not to give positions, but to first establish the premise that "worth learning = worth learning for you": without a capability profile, any high-paying position is someone else's pie in the sky.
Overview
[用户首次说"我想找AI时代的高薪工作"]
→ Phase 0: 检测 .skill-state.json 是否存在
→ Phase 1: 首屏文案(期望管理 + 反诈承诺)
→ Phase 2: 能力盘点 7 问(一次问完,允许"不确定")
→ Phase 2.5: 起点档位识别(S0–S3)
→ Phase 3: 写入 .skill-state.json
→ Phase 4: 下一步清单
Phase 0 — Detect state
test -f .skill-state.json && echo EXISTS || echo MISSING
- Already exists: tell the user it is already initialized, ask whether to update the profile (go through Edit), otherwise route to skill-scan.
- Does not exist: continue.
Phase 1 — First-screen copy (express these points as-is)
- This tool will not give you a fluff list like "Top 10 High-Paying AI Careers" — those interests are not neutral, and most are course-selling funnels.
- I will do four things others do not: ① Match positions based on your real foundation, not a generic list ② Use BOSS Zhipinreal recruitment datato see which AI positions are hiring and how much they pay ③ Calculate for each position a learnability score of "can you learn it from your starting point" ④ Training loans / guaranteed employment / paid referrals are all eliminated by the anti-fraud red line.
- A career change usually requires several months of real investment, not a "30-day crash course." If you agree, let's continue.
Phase 2 — Capability inventory, 7 questions (ask all at once, allow "not sure" recorded as null)
- What are your current skills/profession?(Writing / operations / design / sales / programming / data / foreign languages / accounting / expertise in an industry…) — this is the capital for transfer.
- Is it related to the direction you want to switch to?(Completely cross-industry / upgrade using old skills / not sure) — determines the size of the leap.
- Education + years of work experience?(Some AI positions have education or experience thresholds; you need to know in advance which ones are out of reach)
- How many hours per week can you consistently invest in learning? How many months can you persist?— The time budget is a hard constraint on learnability.
- Self-assessment of learning ability/self-drive?(Easily persist / needs supervision / have you self-taught something new before) — used to estimate whether the timeline is optimistic or conservative.
- Your region + target salary?(Affects city job density and realistic expectations)
- Urgency of career change?(Employed and switching slowly / urgently need to land as soon as possible) — affects whether to take it steady or first get a stepping-stone position.
Key extraction from questions 1 and 2Transferable abilities(transferable), write into state, and use it during scan to narrow the gap.
Phase 2.5 — Starting tier identification (key)
Read ../../shared-references/role-tiers.md, and classify by "transferable foundation × investable resources × learning ability" into S0/S1/S2/S3:
- Has industry depth (healthcare/law/finance/education, etc.) + willing to learn AI → tends toward S3
- Can program/work with data, or willing to systematically learn programming → S2
- Has content/operations/design/sales/foreign language or other soft foundation, can use AI tools → S1
- Large gap, zero relevant foundation → S0
Not sureWhen in doubt, go low rather than high. After judgingClearly tell the user which tier they are judged into and why, say "You know yourself better than I do, you can change it". Put
start_tier+tier_reasoninto state.
Phase 3 — Write to state file
Read ../../templates/skill-state.template.json, fill in the answers (including start_tier/tier_reason/transferable).
Before writing, first use the system time to get the current time andlocal timezone(do not hardcode any fixed city/timezone, always follow the user's system):
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 write today's date (YYYY-MM-DD),created_at_full write the specific time and timezone (use what was read above, e.g.:2026-06-26 22:06 CST +0800),timezone_id write the read IANA timezone ID (e.g. Asia/Shanghai),timezone_label write the corresponding local timezone name (e.g. 中国标准时间). When showing to the user, use the local timezone, do not hardcode it to some country's time. Write to the current working directory's .skill-state.json. Delete the example items in candidate_roles.
Phase 4 — Next steps checklist
Tell the user they can now say:
- "Help me find positions" → go to
skill-scan(connect BOSS + web signals, find "high salary × learnable × AI-enhanced" candidate positions based on your profile) - "I choose position XX, make a learning plan" → go to
skill-plan