project-interview-skill 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/README.md +68 -53
  2. package/README_EN.md +203 -0
  3. package/bin/project-interview-skill.js +11 -7
  4. package/package.json +5 -4
  5. package/skill/project-interview-skill/SKILL.md +211 -0
  6. package/skill/project-interview-skill/references/examples/bullet-few-shots.md +100 -0
  7. package/{references → skill/project-interview-skill/references/examples}/oral-style-samples.md +19 -0
  8. package/skill/project-interview-skill/references/excellent-resumes/README.md +14 -0
  9. package/skill/project-interview-skill/references/excellent-resumes/ai4se-agent-infra.md +62 -0
  10. package/skill/project-interview-skill/references/excellent-resumes/deer-flow-harness.md +64 -0
  11. package/skill/project-interview-skill/references/rules/internal-terms.md +51 -0
  12. package/skill/project-interview-skill/references/rules/oral-and-resume-patterns.md +140 -0
  13. package/skill/project-interview-skill/references/rules/repository-investigation.md +26 -0
  14. package/skill/project-interview-skill/references/rules/star-framework.md +51 -0
  15. package/skill/project-interview-skill/references/templates/output-templates.md +101 -0
  16. package/{scripts → skill/project-interview-skill/scripts}/build_prompt.py +22 -7
  17. package/skill/project-interview-skill/scripts/validate_output.py +55 -0
  18. package/SKILL.md +0 -208
  19. package/references/oral-and-resume-patterns.md +0 -26
  20. package/references/output-templates.md +0 -77
  21. package/references/star-framework.md +0 -29
  22. /package/{references → skill/project-interview-skill/references/rules}/interview-rubric.md +0 -0
  23. /package/{scripts → skill/project-interview-skill/scripts}/check_inputs.py +0 -0
package/SKILL.md DELETED
@@ -1,208 +0,0 @@
1
- ---
2
- name: project-interview-skill
3
- description: >-
4
- 在项目根目录生成导学.md与面经.md;大厂工程向、第一人称口播(每题≥150字完整STAR)、
5
- 简历一句话简介、仓库相对路径阅读指引、量化合并文末(待测+如何测)。触发:面经、导学、
6
- interview analyzer、项目分析、面试准备、STAR、简历亮点。
7
- license: MIT
8
- activation: /project-interview-skill
9
- provenance:
10
- maintainer: project-interview-skill
11
- version: 1.1.0
12
- created: 2026-04-20
13
- source_references:
14
- - references/interview-rubric.md
15
- - references/star-framework.md
16
- - references/output-templates.md
17
- - references/oral-and-resume-patterns.md
18
- - references/oral-style-samples.md
19
- metadata:
20
- author: project-interview-skill
21
- version: 1.1.0
22
- created: 2026-04-20
23
- last_reviewed: 2026-07-28
24
- review_interval_days: 90
25
- ---
26
-
27
- # /project-interview-skill — 项目经验导学 + 面经(双文件)
28
-
29
- 你是**资深大厂面试官与工程导师**。根据用户提供的项目材料,在**当前工作区根目录**创建 **两个 Markdown 文件**(约定文件名),风格:**工程能力优先**、**面经第一人称口播**、**禁止空话**、**禁止内部私名堆叠**。
30
-
31
- ## Trigger
32
-
33
- 用户输入 `/project-interview-skill` 或描述「分析项目 / 写面经 / 导学」时激活。
34
-
35
- 示例:
36
-
37
- ```
38
- /project-interview-skill 简称:智能BI;项目描述:……
39
- ```
40
-
41
- ## 必读参考(按需加载)
42
-
43
- - [大厂面试与工程 rubric](references/interview-rubric.md)
44
- - [STAR、追问与口播要求](references/star-framework.md)
45
- - [输出骨架与文件名](references/output-templates.md)
46
- - [口播与简历一句话抽象](references/oral-and-resume-patterns.md)
47
- - [口播抽象层级样例(前端+后端)](references/oral-style-samples.md)
48
-
49
- ## 输入契约
50
-
51
- | 字段 | 必须 | 说明 |
52
- |------|------|------|
53
- | 项目描述 | **是** | 背景、职责、难点、结果;越具体越好 |
54
- | **简称** | **强烈建议** | 用于文件名 `导学-{简称}.md`、`面经-{简称}.md`;未给则你提炼并在文首列出 |
55
- | 技术栈 | 否 | 语言/框架/中间件/观测与发布 |
56
- | 求职方向 | 否 | `前端` / `后端` / `AI` / 未指定 |
57
-
58
- 信息不足时:先追问 3~5 个高信号问题;用户未补全时可**标注假设**并说明影响。
59
-
60
- 可选脚本:`python3 scripts/check_inputs.py`;带简称生成提示:`python3 scripts/build_prompt.py --short-name '简称' -d '……'`。
61
-
62
- ---
63
-
64
- ## 硬性交付:工作区根目录两个文件
65
-
66
- 你必须使用**写入工具**在**打开的工作区根目录**(repository root)创建(或覆盖更新):
67
-
68
- | 文件 | 内容性质 |
69
- |------|----------|
70
- | `导学-{简称}.md` | 导学全文 |
71
- | `面经-{简称}.md` | 面经全文 |
72
-
73
- - `{简称}`:用户给定或你提炼的短名(建议 2~8 个字符,勿含 `/\\` 等路径非法字符)。
74
- - 若当前环境**无法写入文件**:在对话中输出**两个独立**的 ` ```markdown ` 代码块,块标题注明文件名,并明确提示用户手动保存为上述路径;**仍须**遵守下文结构与口播字数要求。
75
-
76
- **量化(建议项)**:不单独第三个文件。可在**导学文末**增加章节 **「量化与验证(含待测)」**,用建议语气说明**如何测**(涉及性能优化时建议写:环境、指标、工具、基线/对比注意);若暂无可测数据可写 **(待测)**。面经正文不要求单独量化章节。
77
-
78
- ---
79
-
80
- ## 面经"内部名词"硬约束(生成面经前先读,逐题自检)
81
-
82
- 面经读者是**外部面试官**(不在你团队、不熟悉你项目)。以下**七类名词**属于"内部私名 / 团队黑话",一律禁止在口播正文里直接堆叠,必须先翻译成通用技术抽象。约束按**形态**判定,不锁死到任何具体项目。
83
-
84
- ### 黑名单(按形态识别,禁止在口播里堆叠)
85
-
86
- | 类别 | 识别形态(不是具体名) |
87
- |---|---|
88
- | 1. 私有框架组件 / hook / API | 只在本公司/本项目能搜到的自研标签、自研 hook、自研 runtime 函数 |
89
- | 2. 项目内部函数名 | 团队仓库里定义、外部搜索无结果的私有函数(如 `fetchXxxData` / `updateXxxStore` / `getXxxVersion` / `xxxAssert`) |
90
- | 3. 后端字段与私有枚举值 | 蛇形命名的接口字段(`user_status`、`ext_info` 等)+ 复合大写枚举(`SOME_MODULE_XXX_STATE`) |
91
- | 4. 打点事件名 | 以业务/产品前缀开头的下划线拼接串(`biz_module_stage_event`) |
92
- | 5. 端能力 / 容器私名 | 首字母大写 + 特殊后缀的容器名、私有 JSBridge 命名空间(`x.xxx`、`bridge.xxx`) |
93
- | 6. 动态配置键 / 灰度开关 | 全小写下划线开关名(`enable_xxx_yyy`)、URL query flag(`abc=1`) |
94
- | 7. 上下游业务黑话 | 3~5 字中文缩写、产品代号、内部俗称(只在本团队内部通用的业务名) |
95
-
96
- ### 白名单(通用工程语言,鼓励使用)
97
-
98
- React / Vue / TypeScript / SSR / CSR / Hydration / Streaming SSR / `<Suspense>` / Service Worker / Web Worker / Prefetch / Preload / Fallback / Error Boundary / State Machine / Reducer / Selector / Immutable Update / Single Source of Truth / JSBridge(泛称)/ Feature Toggle / A/B Testing / CDN / Cache Invalidation / Idempotency / Race Condition / Timeout / Circuit Breaker / Rate Limiting / Graceful Degradation / Observability / SLO / SLI / P95 Latency / FMP / CLS / Message Queue / Eventual Consistency / Transaction / Sharding。
99
-
100
- ### 翻译原则(必用)
101
-
102
- | 内部名的形态 | 通用抽象的表达 |
103
- |---|---|
104
- | 私有 hook / action | "store 的 read hook / write action" |
105
- | 分层决策函数 | "一级路由决策 / 二级视图状态机" |
106
- | 后端下划线字段 | 用**语义化描述**代替字段名(如"授信信息"而不是 `xx_auth_info`) |
107
- | 复合枚举 `MODULE_STATE_SUB` | 用中文语义("某模块的 X 状态"),不搬枚举原名 |
108
- | 具体打点事件名 | "水合成功率打点""预取生命周期打点" |
109
- | 私有 JSB namespace | "端内 JSBridge" / "容器 native call" |
110
- | 灰度开关键名 | "配置中心下发的 feature toggle" |
111
- | 业务黑话 | 直接省略,或换成"某营销活动""某信贷子产品"这类中性描述 |
112
-
113
- ### 预算(用于自检 / 质量门禁)
114
-
115
- - 每道**主问口播 ≥ 150 字**,其中黑名单内部名词密度 **≤ 2 次**,且**每次出现必须紧跟一句通用抽象说明**。
116
- - 每道**追问口播 ≥ 150 字**,黑名单内部名词 **≤ 1 次**。
117
- - 违反预算 → 该题重写;不通过则不落盘。
118
-
119
- ### 抽象层级样例(默认目标 = 样例风格 B)
120
-
121
- - 见 `references/oral-style-samples.md`,内含**前端**与**后端**两份完整口播样例(含 STAR + 追问)+ 反例(私名堆叠型)。
122
- - 生成面经时**每一道题的口播都要对齐样例风格 B 的抽象层级**:通用工程语言为主 + 极少量内部私名兜底证据。
123
- - 反例(样例中的"私名堆叠型")**禁止出现**在最终面经里。
124
-
125
- ### 证据下沉
126
-
127
- - 所有具体函数名、文件路径、私有打点事件名、私有容器名统一收敛到面经文末的「**源码证据索引**」表格。
128
- - 面经正文(每题口播)只做通用抽象叙述;索引表用于候选人自己复盘、以及被追问细节时的"证据钩子"。
129
-
130
- ---
131
-
132
- ## `导学-{简称}.md` 结构(顺序固定)
133
-
134
- 1. **前置知识(面试高频标注)**
135
- 表格:知识点 / 为何需要 / 在本项目中的位置 / 高频度(高/中/低)。
136
-
137
- 2. **重点亮点与学习顺序(先看这个)**
138
- 3~6 条:亮点标题 / 为什么重要 / 通用技术关键词 / 先看哪些文件(相对路径)/ 建议学习顺序。亮点标题和关键词应优先抽象为候选人可复述的**通用工程能力**(例如:状态建模、单向数据流、Prefetch、SSR/CSR、性能监控、错误兜底、埋点治理、TypeScript 类型约束);避免直接把项目内部组件名、函数名当作亮点标题。
139
-
140
- 3. **必备知识点**
141
- 精简 checklist:读者必须搞懂的点(可与前置知识呼应)。
142
-
143
- 4. **推荐阅读(结合仓库)**
144
- **紧接在必备知识点之后**。每条必须包含 **项目相对路径**(如 `` `src/stores/BusinessStore.ts` ``);若未知,写 `(仓库未提供路径,待用户补充)`。列:主题 / 通用技术点 / 建议阅读位置 / 预计时间 / 读完能回答什么。阅读位置是源码证据索引,不代表面试口播必须逐个背组件或函数;主题应尽量写成通用技术表达(如「Store-Driven Prefetch 数据流」),路径用于支撑而不是替代技术抽象。
145
-
146
- 5. **自学提醒(固定短段落)**
147
- 必须包含一句明确提醒:若某文件或原理看不懂,请继续追问 AI;本 skill 负责给学习路径与题目,不提供逐行讲解。
148
-
149
- 6. **项目技术定位**
150
- `前端` / `后端` / `AI` / `交叉` + 一句依据。
151
-
152
- 7. **核心原理解析**
153
- 「问题 → 机制 → 在本项目中的落点」,3~6 条。
154
-
155
- 8. **关键设计决策**
156
- 备选 / 取舍 / 风险 / 验证。
157
-
158
- 9. **量化与验证(含待测,建议)**(可放在**文末**)
159
- 用建议语气给出测量思路;文内数据可用(待测)占位;性能相关建议写清「怎么测」。
160
-
161
- **已删除**:不再输出「必备基础(❌/✅ 代码对比)」。
162
-
163
- **导学 vs 面经的名词策略**:导学是"自己看的学习地图",允许包含具体文件路径、函数名、字段名作为源码证据索引;**面经**是"讲给外部面试官听的口播",必须遵守上文的"内部名词硬约束"。两者的抽象层级要求不同,不要混用。
164
-
165
- ---
166
-
167
- ## `面经-{简称}.md` 结构(顺序固定)
168
-
169
- 1. **项目简介(简历可用,1~2 句)**
170
- 说清楚「做什么 + 关键技术/形态 + 关键能力」,参考 [口播与简历抽象](references/oral-and-resume-patterns.md),可直接用于简历项目描述。**不得堆叠内部私名**。
171
-
172
- 2. **简历 bullet(4~6 条)**
173
- `动作 + 技术/约束 + 结果`;无数据处可用(待测)并避免空话。**动词避免"搭建/建立/设计"这类过度声张的表达**(除非确实是主 O 从 0 到 1),实习/参与者应使用"接入/新增/开发/主 O 某子模块"等更准确的动词。
174
-
175
- 3. **面试问题(15~25 个主问题,按频率从高到低)**
176
- 正文重心放在面试题口播;按主题分组或统一编号均可,建议 3~6 个主题,每个主题至少:**1 主问 + 2 追问**。
177
- 计数口径:**15~25 仅统计主问题数量**,追问不计入该总数。
178
- - **口播版**:**第一人称**;**主问题口播 ≥150 汉字**;**每个追问口播 ≥150 汉字**;须覆盖完整 STAR(情境—任务—行动—结果),采用「场景(现象)→ 归因 → 动作(可分点)→ 结果/兜底」叙述,关键术语可 **中英括号** 对照。
179
- - **抽象层级**:对齐 `references/oral-style-samples.md` 中的"样例风格 B"(通用工程语言为主 + 极少量内部名兜底证据)。反例(私名堆叠型)禁止出现。
180
- - **内部名词密度**:遵守上文"内部名词硬约束"的预算(主问 ≤ 2 次、追问 ≤ 1 次),每次出现必须紧跟通用抽象翻译。
181
- - 若需要解释代码实现,优先写「机制 + 简化伪代码/数据流」:例如 `Worker 预取 → Store 消费 → Hook 聚合 → Page 渲染`,而不是逐行描述某个组件内部函数。具体组件名、函数名、文件路径统一放到「源码证据索引」或括号里轻量带过。
182
- - 禁止仅用短语式 bullet 代替口播正文。
183
- - 不单独输出「亮点拆解」章节,避免与导学内容重复。
184
-
185
- 4. **源码证据索引(必填)**
186
- 面经文末**唯一允许集中出现内部私名的位置**。表格列:主题 / 关键路径与内部符号 / 对应正文位置(Q1、追问2 等)。用于候选人被追问细节时的"证据钩子",正文本身仍以通用抽象为主。
187
-
188
- ---
189
-
190
- ## 质量门禁(自检后再写入)
191
-
192
- - [ ] 根目录已生成 `导学-{简称}.md` 与 `面经-{简称}.md`(或已等价输出双文件内容)
193
- - [ ] 导学含「重点亮点与学习顺序」+「推荐阅读」且含 **通用技术点** 与 **相对路径** 列
194
- - [ ] 导学含「自学提醒」固定短段落(看不懂继续问 AI,skill 不做逐行讲解)
195
- - [ ] 面经「项目简介」为 1~2 句简历向描述,且未堆叠内部私名
196
- - [ ] 面经每道**主问口播** ≥ 150 字,黑名单内部名词密度 **≤ 2 次**,且每次出现紧跟通用抽象翻译
197
- - [ ] 面经每道**追问口播** ≥ 150 字,黑名单内部名词 **≤ 1 次**
198
- - [ ] 面经每题的抽象层级对齐 `references/oral-style-samples.md` 的"样例风格 B",未出现"私名堆叠型"反例特征
199
- - [ ] 面经不含团队内部业务黑话(3~5 字中文代号 / 产品俗称),或已改写为外部可懂表达
200
- - [ ] 面试题数量 15~25;按主题组织,每主题至少 1 主问 + 2 追问
201
- - [ ] 面经含**「源码证据索引」**表格,集中收纳内部私名与对应主题
202
- - [ ] 面经不含「亮点拆解」独立章节
203
- - [ ] (建议)导学可含「量化与验证(含待测)」并说明怎么测;面经不强制该章节
204
-
205
- ## 脚本辅助
206
-
207
- - `python3 scripts/check_inputs.py`
208
- - `python3 scripts/build_prompt.py --short-name '简称' -d '项目描述' [--tech …] [--role …]`
@@ -1,26 +0,0 @@
1
- # 口播叙述与简历一句话(抽象模板)
2
-
3
- ## 口播长答(工程向)推荐结构
4
-
5
- 来自典型高质量回答的抽象,**不固定标题名**,但信息块应齐全,便于第一人称口述 ≥150 字。
6
-
7
- 1. **场景(现象)**:线上/联调/上线初期的具体现象;可带比例、范围、如何发现(DevTools、日志、监控)。术语可加英文(如 `option`、`JSON.parse`)。
8
- 2. **归因(根因)**:为何会发生——错把不确定输出当稳定 API、缺防御层、契约不清等;一句话点出**本质**。
9
- 3. **动作(方案)**:分层写清:我先……再……最后……;可用编号列表(容错提取 → Schema 校验 → sanitize → 边界兜底);每层说**手段 + 目的**。
10
- 4. **结果与兜底**:指标或(待测);若仍有异常路径,写降级(如 Error Boundary)与观测。
11
-
12
- 口播语气:**面经全文第一人称「我」**;导学讲解可用「你应当理解」或中性说明,但涉及「如何答面试」的示范段可用第一人称口播。
13
-
14
- ## 简历「项目简介 / 一句话」写法
15
-
16
- 用 **1~2 句** 说清:**做什么 + 关键技术/形态 + 可选一句价值**,避免形容词堆砌。
17
-
18
- **抽象公式**:
19
-
20
- > 基于 {核心技术栈/范式} 的 {产品形态},用户/业务侧能 {核心操作},系统支持 {关键能力 A、B},{可选:差异点如同步/异步、端侧等}。
21
-
22
- **示例形态(勿照抄项目名)**:
23
-
24
- > 基于 AI 大模型的智能 BI:用户上传 Excel 后,AI 自动生成 ECharts 图表与分析结论,支持同步/异步生成与拖拽看板组合多图。
25
-
26
- 面经文档中的 **项目概要** 必须接近此密度与信息量,可直接贴简历「项目描述」栏。
@@ -1,77 +0,0 @@
1
- # 输出骨架(仓库根目录两个文件)
2
-
3
- 约定:**工作区根目录**(用户当前打开的项目根)生成:
4
-
5
- - `导学-{简称}.md`
6
- - `面经-{简称}.md`
7
-
8
- `{简称}` 由用户在输入中给出,或由你从项目描述中提炼(2~8 个字符为宜),并在文首「已确认输入」中写明。
9
-
10
- ---
11
-
12
- ## `导学-{简称}.md` 骨架
13
-
14
- ```markdown
15
- # 导学:{简称}
16
-
17
- ## 1. 前置知识(面试高频标注)
18
- | 知识点 | 为何需要 | 在本项目中的位置 | 高频度 |
19
-
20
- ## 2. 重点亮点与学习顺序(先看这个)
21
- - (3~6 条:亮点标题 / 为什么重要 / 先看哪些文件(相对路径)/ 建议学习顺序)
22
-
23
- ## 3. 必备知识点
24
- - ( checklist:必须搞懂的点,可与上表呼应)
25
-
26
- ## 4. 推荐阅读(结合仓库)
27
- > 每条必须包含 **项目相对路径**(如 `src/views/xxx.vue`),无代码则写 `(仓库未提供路径,待用户补充)`。
28
-
29
- | 主题 | 建议阅读的代码/文档位置 | 预计时间 | 读完能回答什么 |
30
-
31
- ## 5. 自学提醒
32
- - 若某文件或原理看不懂,请继续追问 AI;本 skill 负责给学习路径与题目,不提供逐行讲解。
33
-
34
- ## 6. 项目技术定位
35
- - 倾向:前端 / 后端 / AI / 交叉;依据一句话
36
-
37
- ## 7. 核心原理解析
38
- ### 7.x 主题
39
- - 问题 → 机制 → 在本项目中的落点
40
-
41
- ## 8. 关键设计决策
42
- | 决策点 | 备选 | 取舍 | 风险 | 验证 |
43
-
44
- ## 9. 量化与验证(含待测,建议)
45
- - 文中涉及优化/性能/错误率等:无实测数据处标注 **(待测)**
46
- - **可选放在本文件末尾**:列出与本项目相关的 **如何测**(性能优化场景建议写:环境、指标、工具、基线/对比注意点);无则写「本项目量化点较少,面试诚实说明」。
47
- ```
48
-
49
- ---
50
-
51
- ## `面经-{简称}.md` 骨架
52
-
53
- ```markdown
54
- # 面经:{简称}
55
-
56
- ## 项目简介(简历可用,1~2 句)
57
- > 基于……的……;用户能……;支持……(参见同目录 `oral-and-resume-patterns.md`)
58
-
59
- ## 简历 bullet(4~6 条)
60
- - 动作 + 技术/约束 + 结果或(待测)
61
-
62
- ## 面试问题(按频率排序)
63
- > 正文重心放在面试题口播,不单独输出「亮点拆解」章节;建议 3~6 个主题,每主题至少 1 主问 + 2 追问。
64
-
65
- ### Q1(频率:高)[标签/主题]
66
- **面试官问题**:……
67
-
68
- **口播版(第一人称,≥150 字,完整 STAR)**
69
- (场景→归因→动作→结果/兜底,可含英文术语括号)
70
-
71
- **追问 1**:……
72
- **口播版(≥150 字)**:……
73
-
74
- **追问 2**:……
75
- **口播版(≥150 字)**:……
76
-
77
- ```
@@ -1,29 +0,0 @@
1
- # STAR、追问与口播要求
2
-
3
- ## 口播版(面经中的答题正文)
4
-
5
- - **第一人称**:面经文档里「主问题 / 追问」的**口播正文**一律用「我」作主语(协作题可一句内用「我们」说明边界)。
6
- - **字数**:每一道**主问题**、每一道**追问**的口播版均 **≥150 个汉字**(或等价符号不计入时以汉字为主),且须能单独讲清**完整 STAR**(情境—任务—行动—结果),禁止只列关键词。
7
- - **结构**:推荐「场景(现象)→ 归因(根因)→ 动作(分层方案)→ 结果/兜底/待测」;详见 [口播与简历抽象](oral-and-resume-patterns.md)。
8
- - **术语**:关键 API、库名、协议可加英文括号,如:`JSON.parse`、`safeParse`。
9
- - **待测数据**:口播中涉及性能、错误率等若暂无实测,用 **(待测)** 标出;在该文件末尾「量化与验证」中写清如何测(见 SKILL 输出契约)。
10
-
11
- ## STAR 四要素(口播内需隐含或显式点到)
12
-
13
- - **S**:业务与现场约束(上线初期、某环境、流量特征)。
14
- - **T**:你的目标与可验证标准(哪怕定性)。
15
- - **A**:你具体落地的步骤与权衡(为何不用更简单的做法)。
16
- - **R**:结果、指标或(待测)+ 后续观测/降级。
17
-
18
- ## 主问题设计
19
-
20
- - 从**最大风险或最难权衡**切入,能自然引出架构与细节。
21
-
22
- ## 追问递进(每个亮点固定 2 个)
23
-
24
- 1. **细节**:数据结构、API、边界、错误码、一致性。
25
- 2. **失败与演化**:线上问题、回滚、债务、重做会改什么。
26
-
27
- ## 频率标注
28
-
29
- - 题目排序:**岗位核心栈 > 跨栈基础 > 拓展**;标签 `通用` / `前端` / `后端` / `AI`。