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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <p><a href="https://github.com/Jaxon1216/interview-analyzer-skill/blob/main/README_EN.md">English</a></p>
4
4
  <p><em>把你的项目经历,变成可复述、可追问、可上场的面试战斗手册。</em></p>
5
5
  <p>
6
- <a href="SKILL.md"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
6
+ <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
7
7
  <img alt="Type: Agent Skill" src="https://img.shields.io/badge/Type-Agent%20Skill-7c3aed">
8
8
  <img alt="Trae Compatible" src="https://img.shields.io/badge/Trae-Compatible-111827">
9
9
  <img alt="Cursor Compatible" src="https://img.shields.io/badge/Cursor-Compatible-00B8D9">
@@ -13,25 +13,50 @@
13
13
  </p>
14
14
  </div>
15
15
 
16
- 把真实项目快速整理成两份可直接用于面试准备的文档(输出到目标项目根目录):
16
+ 把真实项目变成能讲、能追问、能复习的面试材料,输出到目标项目的 `interview-prep/{简称}/` 目录。
17
17
 
18
- - `导学-{简称}.md`:重点亮点、代码阅读路径、学习顺序与必备知识点
19
- - `面经-{简称}.md`:简历可用摘要 + 面试题口播(第一人称 STAR)
18
+ ## 核心能力
20
19
 
21
- ## 效果演示
20
+ - 核心链路探索:追踪入口、关键机制、失败边界与源码证据,再提炼技术支柱
21
+ - 简历 bullet:把代码事实整理成可复用的简历表达
22
+ - STAR 口播:围绕每条 bullet 生成主问、追问和第一人称回答
23
+ - 表达护栏:约束内部名词和实现细节,转换成外部面试官听得懂的说法
24
+ - 学习路径:按优先级安排必备知识、源码阅读和验证任务
25
+ - 前后端样例:内置参考模板,帮助校准表达深度和面试口径
22
26
 
23
- 下面这张合并图展示了触发输入与面经输出示例:
24
-
25
- ![Demo](https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/demo.jpg)
26
-
27
- ## 安装方式
28
-
29
- 推荐使用 `npx`,不需要 clone 仓库:
27
+ ## 快速开始
30
28
 
31
29
  ```bash
32
30
  npx project-interview-skill install
33
31
  ```
34
32
 
33
+ 安装完成后,在目标项目根目录开启新对话,直接输入:
34
+
35
+ ```text
36
+ /project-interview-skill 简称:电商;项目描述:......;技术栈:Vue3、Pinia、Vite;求职方向:前端
37
+ ```
38
+
39
+ ## 生成结果
40
+
41
+ 从一次自然语言输入开始,Skill 会把项目拆成三条可执行的准备路径:
42
+
43
+ <p align="center">
44
+ <img src="https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/docs/images/bullet-output.png" alt="简历 bullet 与提示词侧栏" width="100%">
45
+ </p>
46
+
47
+ <table>
48
+ <tr>
49
+ <td width="50%" align="center"><strong>面经:按简历支柱展开</strong></td>
50
+ <td width="50%" align="center"><strong>导学:安排学习顺序</strong></td>
51
+ </tr>
52
+ <tr>
53
+ <td><img src="https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/docs/images/interview-questions.png" alt="面试问题与口播答案" width="100%"></td>
54
+ <td><img src="https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/docs/images/learning-path.png" alt="学习顺序与推荐阅读" width="100%"></td>
55
+ </tr>
56
+ </table>
57
+
58
+ ## 安装方式
59
+
35
60
  默认安装到用户级通用 Agent 目录:
36
61
 
37
62
  ```text
@@ -86,18 +111,14 @@ npx project-interview-skill install --project --trae
86
111
 
87
112
  ## 使用方式
88
113
 
89
- 在被分析项目的工作区开启新对话,例如:
90
-
91
- ```text
92
- /project-interview-skill 简称:电商;项目描述:......(背景/职责/难点/结果);技术栈:Vue3、Pinia、Vite;求职方向:前端
93
- ```
94
-
95
- 随后在该业务项目根目录生成:
114
+ 随后在该业务项目根目录的 `interview-prep/{简称}/` 下生成:
96
115
 
97
116
  | 文件 | 用途 |
98
117
  |------|------|
99
- | `导学-{简称}.md` | 前置知识、必备知识点、推荐阅读(含仓库相对路径)、原理与设计决策;文末可含「量化与验证(含待测)」 |
100
- | `面经-{简称}.md` | 1~2 句简历摘要、项目 bullets、15~25 道面试题(主问/追问口播) |
118
+ | `导学.md` | 前置知识、源码阅读路线、核心链路与证据、原理和设计决策;文末可含「量化与验证(含待测)」 |
119
+ | `面经.md` | 1~2 句简历摘要、以 `- **支柱名:**` 开头的 bullet、按简历支柱展开的面试题(主问/追问口播) |
120
+
121
+ 复杂知识点可在 `导学/01-主题.md` 等子文件中展开,由 `导学.md` 链接;默认只生成两份主文件。
101
122
 
102
123
  也可以不写 slash 命令,直接描述“请基于这个项目生成导学和面经”。
103
124
 
@@ -114,54 +135,48 @@ cd interview-analyzer-skill
114
135
 
115
136
  npm 包不会打包 `install.sh`;对普通用户优先推荐 `npx project-interview-skill ...`。
116
137
 
138
+ ## 可直接复制的 Skill Bundle
139
+
140
+ 仓库外层是 npm CLI 和开发工程;真正可独立迁移的 Skill 位于:
141
+
142
+ ```text
143
+ skill/project-interview-skill/
144
+ ├── SKILL.md
145
+ ├── references/
146
+ └── scripts/
147
+ ```
148
+
149
+ 复制这个目录即可迁移 Skill,不需要复制 `bin/`、`tests/` 或 `package.json`。npm CLI 安装时也只从这个目录生成目标 Skill。
150
+
117
151
  ## 仓库结构
118
152
 
119
153
  ```text
120
154
  interview-analyzer-skill/
155
+ |-- skill/
156
+ | `-- project-interview-skill/
157
+ | |-- SKILL.md
158
+ | |-- references/
159
+ | | |-- rules/
160
+ | | |-- templates/
161
+ | | |-- examples/
162
+ | | `-- excellent-resumes/
163
+ | `-- scripts/
121
164
  |-- bin/
122
165
  | `-- project-interview-skill.js
123
- |-- SKILL.md
124
166
  |-- install.sh
125
167
  |-- package.json
168
+ |-- .npmrc
126
169
  |-- README.md
127
170
  |-- README_EN.md
128
- |-- demo.jpg
171
+ |-- docs/
172
+ | |-- images/
173
+ | `-- promo.md
129
174
  |-- LICENSE
130
- |-- references/
131
- | |-- interview-rubric.md
132
- | |-- star-framework.md
133
- | |-- output-templates.md
134
- | |-- oral-and-resume-patterns.md
135
- | `-- oral-style-samples.md
136
- |-- scripts/
137
- | |-- check_inputs.py
138
- | `-- build_prompt.py
139
175
  `-- tests/
140
176
  ```
141
177
 
142
- ## 维护与发布
143
-
144
- 本项目作为 npm CLI 包发布,不需要编译。npm 包会按 `package.json` 的 `files` 白名单打包:
145
-
146
- ```bash
147
- npm pack --dry-run
148
- npm publish --access public
149
- ```
150
-
151
- 本地验证:
152
-
153
- ```bash
154
- npm test
155
- npm run pack:check
156
- node bin/project-interview-skill.js install --trae --dry-run
157
- ```
158
-
159
178
  ## 常见问题
160
179
 
161
- ### `.npmrc` 是必要的吗?
162
-
163
- 不是 npm 包必须文件。它只用于本仓库开发时指定 registry。真正发布到公网 npm 的关键配置是 `package.json` 里的 `publishConfig.registry`。
164
-
165
180
  ### 为什么默认安装到 `.agents/skills`?
166
181
 
167
182
  这是最稳的用户级默认值,不依赖猜测用户正在使用哪个产品。如果你明确使用 Trae、Cursor、VS Code 或 Claude Code,使用对应参数即可。
package/README_EN.md ADDED
@@ -0,0 +1,203 @@
1
+ <div align="center">
2
+ <h1>project-interview-skill</h1>
3
+ <p><a href="https://github.com/Jaxon1216/interview-analyzer-skill/blob/main/README.md">简体中文</a></p>
4
+ <p><em>Turn your project experience into interview-ready docs you can actually explain and defend.</em></p>
5
+ <p>
6
+ <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
7
+ <img alt="Type: Agent Skill" src="https://img.shields.io/badge/Type-Agent%20Skill-7c3aed">
8
+ <img alt="Trae Compatible" src="https://img.shields.io/badge/Trae-Compatible-111827">
9
+ <img alt="Cursor Compatible" src="https://img.shields.io/badge/Cursor-Compatible-00B8D9">
10
+ <img alt="VS Code Compatible" src="https://img.shields.io/badge/VS%20Code-Compatible-007ACC?logo=visual-studio-code&logoColor=white">
11
+ <img alt="Claude Code Compatible" src="https://img.shields.io/badge/Claude%20Code-Compatible-7c3aed">
12
+ <img alt="Codex Compatible" src="https://img.shields.io/badge/Codex-Compatible-0A66C2">
13
+ </p>
14
+ </div>
15
+
16
+ Turn a real codebase into interview material you can explain, defend, and study, written under `interview-prep/{short-name}/` in the target project.
17
+
18
+ ## Core Capabilities
19
+
20
+ - Core-flow investigation: trace entry points, mechanisms, failure boundaries, and source evidence into technical pillars
21
+ - Resume bullets: turn code facts into reusable resume language
22
+ - STAR speaking answers: generate primary questions, follow-ups, and first-person responses
23
+ - Explanation guardrails: translate internal implementation terms into interviewer-friendly language
24
+ - Study path: prioritize concepts, source reading, and verification tasks
25
+ - Frontend and backend examples: provide reference templates for depth and phrasing
26
+
27
+ ## Quick Start
28
+
29
+ ```bash
30
+ npx project-interview-skill install
31
+ ```
32
+
33
+ After installation, open the target project root in a new chat and enter:
34
+
35
+ ```text
36
+ /project-interview-skill Short name: ecommerce; project description: ...; stack: Vue3, Pinia, Vite; target role: frontend
37
+ ```
38
+
39
+ ## Generated Output
40
+
41
+ Starting from one natural-language request, the Skill turns a codebase into three practical preparation views:
42
+
43
+ <p align="center">
44
+ <img src="https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/docs/images/bullet-output.png" alt="Resume bullets and prompt sidebar" width="100%">
45
+ </p>
46
+
47
+ <table>
48
+ <tr>
49
+ <td width="50%" align="center"><strong>Interview guide: resume-driven questions</strong></td>
50
+ <td width="50%" align="center"><strong>Study guide: an ordered learning path</strong></td>
51
+ </tr>
52
+ <tr>
53
+ <td><img src="https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/docs/images/interview-questions.png" alt="Interview questions and spoken answers" width="100%"></td>
54
+ <td><img src="https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/docs/images/learning-path.png" alt="Learning order and recommended reading" width="100%"></td>
55
+ </tr>
56
+ </table>
57
+
58
+ ## Install
59
+
60
+ The default target is the user-level generic Agent directory:
61
+
62
+ ```text
63
+ ~/.agents/skills/project-interview-skill/
64
+ ```
65
+
66
+ If you know which editor or Agent you use, specify it explicitly:
67
+
68
+ | Target | User-level command | Install location |
69
+ |--------|--------------------|------------------|
70
+ | Generic Agent / Codex | `npx project-interview-skill install --agents` | `~/.agents/skills/project-interview-skill/` |
71
+ | Trae | `npx project-interview-skill install --trae` | `~/.trae/skills/project-interview-skill/` |
72
+ | Cursor | `npx project-interview-skill install --cursor` | `~/.cursor/rules/project-interview-skill/` |
73
+ | VS Code | `npx project-interview-skill install --vscode` | `~/.copilot/instructions/project-interview-skill.instructions.md` |
74
+ | Claude Code | `npx project-interview-skill install --claude-code` | `~/.claude/skills/project-interview-skill/` |
75
+ | Codex | `npx project-interview-skill install --codex` | `~/.agents/skills/project-interview-skill/` |
76
+
77
+ Install every supported target:
78
+
79
+ ```bash
80
+ npx project-interview-skill install --all
81
+ ```
82
+
83
+ Preview paths without writing files:
84
+
85
+ ```bash
86
+ npx project-interview-skill install --trae --dry-run
87
+ npx project-interview-skill doctor
88
+ ```
89
+
90
+ ## Project-Level Install
91
+
92
+ To install the skill only for one application repository, run the command from that repository root:
93
+
94
+ ```bash
95
+ cd /path/to/your-project
96
+ npx project-interview-skill install --project --trae
97
+ ```
98
+
99
+ Supported project-level targets:
100
+
101
+ | Target | Project-level command | Install location |
102
+ |--------|-----------------------|------------------|
103
+ | Generic Agent / Codex | `npx project-interview-skill install --project --agents` | `.agents/skills/project-interview-skill/` |
104
+ | Trae | `npx project-interview-skill install --project --trae` | `.trae/rules/project-interview-skill/` |
105
+ | Cursor | `npx project-interview-skill install --project --cursor` | `.cursor/rules/project-interview-skill/` |
106
+ | VS Code | `npx project-interview-skill install --project --vscode` | `.github/instructions/project-interview-skill.instructions.md` |
107
+ | Claude Code | `npx project-interview-skill install --project --claude-code` | `.claude/skills/project-interview-skill/` |
108
+ | Codex | `npx project-interview-skill install --project --codex` | `.agents/skills/project-interview-skill/` |
109
+
110
+ Restart the target IDE or Agent after installation.
111
+
112
+ ## Usage
113
+
114
+ The skill creates these files under the target project root:
115
+
116
+ | File | Purpose |
117
+ |------|---------|
118
+ | `interview-prep/{short-name}/导学.md` | Prerequisites, repo-relative reading guide, traced system flows and evidence, design decisions, and optional measurement notes |
119
+ | `interview-prep/{short-name}/面经.md` | 1-2 sentence resume summary, titled architecture bullets, and interview Q&A mapped to those bullets |
120
+
121
+ Complex topics can be expanded in `interview-prep/{short-name}/导学/01-topic.md` and linked from the main study guide. The default output remains two files.
122
+
123
+ You can also invoke it naturally by asking for project interview preparation docs.
124
+
125
+ ## Source Checkout Compatibility
126
+
127
+ `install.sh` is kept for users who clone the repository. It is only a wrapper around the Node CLI:
128
+
129
+ ```bash
130
+ git clone https://github.com/Jaxon1216/interview-analyzer-skill.git
131
+ cd interview-analyzer-skill
132
+ ./install.sh --trae
133
+ ./install.sh --project --cursor
134
+ ```
135
+
136
+ The npm package does not include `install.sh`; regular users should prefer `npx project-interview-skill ...`.
137
+
138
+ ## Standalone Skill Bundle
139
+
140
+ The repository root contains the npm CLI and development files. The independently portable Skill bundle is:
141
+
142
+ ```text
143
+ skill/project-interview-skill/
144
+ ├── SKILL.md
145
+ ├── references/
146
+ └── scripts/
147
+ ```
148
+
149
+ Copy this directory to migrate the Skill; `bin/`, `tests/`, and `package.json` are not required. The npm CLI also builds installed targets from this directory only.
150
+
151
+ ## Repository Structure
152
+
153
+ ```text
154
+ interview-analyzer-skill/
155
+ |-- skill/
156
+ | `-- project-interview-skill/
157
+ | |-- SKILL.md
158
+ | |-- references/
159
+ | | |-- rules/
160
+ | | |-- templates/
161
+ | | |-- examples/
162
+ | | `-- excellent-resumes/
163
+ | `-- scripts/
164
+ |-- bin/
165
+ | `-- project-interview-skill.js
166
+ |-- install.sh
167
+ |-- package.json
168
+ |-- .npmrc
169
+ |-- README.md
170
+ |-- README_EN.md
171
+ |-- docs/
172
+ | |-- images/
173
+ | `-- promo.md
174
+ |-- LICENSE
175
+ `-- tests/
176
+ ```
177
+
178
+ ## FAQ
179
+
180
+ ### Why does the default install target `.agents/skills`?
181
+
182
+ It is the least surprising user-level default and avoids guessing which product the user wants. Use an explicit flag for Trae, Cursor, VS Code, Claude Code, or Codex.
183
+
184
+ ### Does `install` auto-detect products?
185
+
186
+ No. The behavior is intentionally narrow: the default installs only to `.agents/skills`, product-specific installs require `--trae`, `--cursor`, `--vscode`, `--claude-code`, or `--codex`. `doctor` only prints paths.
187
+
188
+ ### Do updates apply automatically?
189
+
190
+ No. Installed skill folders are copied artifacts. Re-run the install command:
191
+
192
+ ```bash
193
+ npx project-interview-skill install --trae
194
+ ```
195
+
196
+ ## Support
197
+
198
+ - **Contact** (feedback, commercial use, derivatives): **jiangxu05@outlook.com**
199
+ - **Star**, **Fork**, **Issues / PRs** are welcome.
200
+
201
+ ## License
202
+
203
+ Licensed under the **[MIT License](LICENSE)**. The file includes the English legal text plus an unofficial Chinese translation for convenience; if they disagree, the English section controls.
@@ -8,6 +8,7 @@ const path = require('path');
8
8
  const PACKAGE_NAME = 'project-interview-skill';
9
9
  const SKILL_DIR_NAME = 'project-interview-skill';
10
10
  const SUPPORTED_PRODUCTS = ['agents', 'trae', 'cursor', 'vscode', 'claude-code', 'codex'];
11
+ const SKILL_BUNDLE_PATH = path.join('skill', 'project-interview-skill');
11
12
  const COLORS = {
12
13
  reset: '\x1b[0m',
13
14
  bold: '\x1b[1m',
@@ -20,8 +21,6 @@ const BUNDLE_ENTRIES = [
20
21
  'SKILL.md',
21
22
  'references',
22
23
  'scripts',
23
- 'README.md',
24
- 'LICENSE',
25
24
  ];
26
25
 
27
26
  function main() {
@@ -146,6 +145,7 @@ function doctor(options) {
146
145
  const home = os.homedir();
147
146
 
148
147
  info(`Package root: ${packageRoot()}`);
148
+ info(`Skill bundle: ${skillBundleRoot()}`);
149
149
  info(`Current project: ${cwd}`);
150
150
  info(`Home: ${home}`);
151
151
  console.log('');
@@ -240,9 +240,9 @@ function installProduct(product, target, options) {
240
240
  }
241
241
 
242
242
  function validatePackage() {
243
- const skillPath = path.join(packageRoot(), 'SKILL.md');
243
+ const skillPath = path.join(skillBundleRoot(), 'SKILL.md');
244
244
  if (!fs.existsSync(skillPath)) {
245
- throw new Error(`Missing SKILL.md at ${skillPath}`);
245
+ throw new Error(`Missing Skill bundle entry: ${skillPath}`);
246
246
  }
247
247
 
248
248
  const firstLine = fs.readFileSync(skillPath, 'utf8').split(/\r?\n/, 1)[0];
@@ -255,7 +255,7 @@ function copyBundle(destination) {
255
255
  fs.mkdirSync(destination, { recursive: true });
256
256
 
257
257
  for (const entry of BUNDLE_ENTRIES) {
258
- const source = path.join(packageRoot(), entry);
258
+ const source = path.join(skillBundleRoot(), entry);
259
259
  if (!fs.existsSync(source)) {
260
260
  continue;
261
261
  }
@@ -322,7 +322,7 @@ function writeFile(filePath, content) {
322
322
  }
323
323
 
324
324
  function skillBody() {
325
- const content = fs.readFileSync(path.join(packageRoot(), 'SKILL.md'), 'utf8');
325
+ const content = fs.readFileSync(path.join(skillBundleRoot(), 'SKILL.md'), 'utf8');
326
326
  const lines = content.split(/\r?\n/);
327
327
  let delimiterCount = 0;
328
328
  const body = [];
@@ -341,7 +341,7 @@ function skillBody() {
341
341
  }
342
342
 
343
343
  function extractDescription() {
344
- const content = fs.readFileSync(path.join(packageRoot(), 'SKILL.md'), 'utf8');
344
+ const content = fs.readFileSync(path.join(skillBundleRoot(), 'SKILL.md'), 'utf8');
345
345
  const lines = content.split(/\r?\n/);
346
346
  let inFrontmatter = false;
347
347
  let inDescriptionBlock = false;
@@ -383,6 +383,10 @@ function packageRoot() {
383
383
  return path.resolve(__dirname, '..');
384
384
  }
385
385
 
386
+ function skillBundleRoot() {
387
+ return path.join(packageRoot(), SKILL_BUNDLE_PATH);
388
+ }
389
+
386
390
  function printHelp() {
387
391
  console.log(`${bold(PACKAGE_NAME)}
388
392
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-interview-skill",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Install a project interview preparation skill for AI coding agents.",
5
5
  "license": "MIT",
6
6
  "author": "EastonJiang <jiangxu05@outlook.com>",
@@ -14,10 +14,11 @@
14
14
  },
15
15
  "files": [
16
16
  "bin/",
17
- "SKILL.md",
18
- "references/",
19
- "scripts/",
17
+ "skill/project-interview-skill/SKILL.md",
18
+ "skill/project-interview-skill/references/",
19
+ "skill/project-interview-skill/scripts/*.py",
20
20
  "README.md",
21
+ "README_EN.md",
21
22
  "LICENSE"
22
23
  ],
23
24
  "scripts": {