@namewta/speculo 0.3.3 → 0.4.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 (32) hide show
  1. package/README.md +3 -2
  2. package/package.json +1 -1
  3. package/template/skills/typescript-standards-builder/README.md +53 -0
  4. package/template/skills/typescript-standards-builder/SKILL.md +245 -0
  5. package/template/skills/typescript-standards-builder/examples/sample-generated-tree.md +30 -0
  6. package/template/skills/typescript-standards-builder/examples/sample-interview-decisions.md +26 -0
  7. package/template/skills/typescript-standards-builder/manifest.txt +29 -0
  8. package/template/skills/typescript-standards-builder/references/00-governance-and-fixed-defaults.md +77 -0
  9. package/template/skills/typescript-standards-builder/references/01-project-discovery.md +100 -0
  10. package/template/skills/typescript-standards-builder/references/02-interview-workflow.md +129 -0
  11. package/template/skills/typescript-standards-builder/references/03-project-architecture-and-directory-layout.md +84 -0
  12. package/template/skills/typescript-standards-builder/references/04-file-directory-and-symbol-naming.md +92 -0
  13. package/template/skills/typescript-standards-builder/references/05-modules-imports-exports-and-dependencies.md +63 -0
  14. package/template/skills/typescript-standards-builder/references/06-typescript-type-system.md +64 -0
  15. package/template/skills/typescript-standards-builder/references/07-functions-async-errors-and-resources.md +42 -0
  16. package/template/skills/typescript-standards-builder/references/08-comments-jsdoc-and-documentation.md +51 -0
  17. package/template/skills/typescript-standards-builder/references/09-testing-strategy.md +58 -0
  18. package/template/skills/typescript-standards-builder/references/10-react-and-frontend.md +39 -0
  19. package/template/skills/typescript-standards-builder/references/11-node-cli-and-cross-platform.md +31 -0
  20. package/template/skills/typescript-standards-builder/references/12-formatting-lint-and-complexity.md +58 -0
  21. package/template/skills/typescript-standards-builder/references/13-configuration-dependencies-and-ci.md +71 -0
  22. package/template/skills/typescript-standards-builder/references/14-security-performance-and-i18n.md +32 -0
  23. package/template/skills/typescript-standards-builder/references/15-git-review-and-delivery.md +28 -0
  24. package/template/skills/typescript-standards-builder/references/16-adoption-exceptions-and-migration.md +61 -0
  25. package/template/skills/typescript-standards-builder/references/17-generation-contract.md +104 -0
  26. package/template/skills/typescript-standards-builder/references/README.md +37 -0
  27. package/template/skills/typescript-standards-builder/templates/agents-compat-skill/SKILL.md +1 -0
  28. package/template/skills/typescript-standards-builder/templates/claude-skill/SKILL.md +1 -0
  29. package/template/skills/typescript-standards-builder/templates/project-skill/SKILL.md.template +34 -0
  30. package/template/skills/typescript-standards-builder/templates/project-skill/references/00-project-profile.md.template +17 -0
  31. package/template/skills/typescript-standards-builder/templates/project-skill/references/10-review-checklist.md +23 -0
  32. package/template/skills/typescript-standards-builder/templates/project-skill/references/11-decisions-and-exceptions.md.template +19 -0
package/README.md CHANGED
@@ -49,7 +49,7 @@ After initialization, the target project gains the following AI agent-callable a
49
49
  | `retro` | Retrospective analysis with `gh issue` creation |
50
50
  | `status` | Summary of installed workflows, active changes, and anomalies |
51
51
 
52
- ### 6 Skills
52
+ ### 7 Skills
53
53
 
54
54
  | Skill | Purpose |
55
55
  |---|---|
@@ -58,7 +58,8 @@ After initialization, the target project gains the following AI agent-callable a
58
58
  | `docs-sync` | Core documentation audit and synchronization |
59
59
  | `github-npm-ops` | GitHub issue/PR triage and npm operations |
60
60
  | `speculo-retro` | Retrospective analysis |
61
- | `dev-worktree` | Git worktree isolation for development |
61
+ | `typescript-standards-builder` | Interview-driven generator that produces a project-specific TypeScript/JS/React/Node standards skill |
62
+ | `writing-great-skills` | Authoring guidance for agent skills |
62
63
 
63
64
  ### 2 Workflow Packages
64
65
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namewta/speculo",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "description": "Workflow-packaged specification-driven development assets with install, update, and migration tooling.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,53 @@
1
+ # TypeScript Standards Builder Skill
2
+
3
+ 这是一个“规范生成器”Skill,而不是静态编码规范合集。它会先读取项目事实,再通过用户问答确认决策,最后为当前项目生成专属的 TypeScript Standards Skill。
4
+
5
+ ## 生成目标
6
+
7
+ ```text
8
+ .agents/skills/typescript-standards/ # 唯一正式规范源
9
+ .agents/skills/typescript--standards/ # 双连字符兼容跳转
10
+ .claude/skills/typescript-standards/ # 只有一句强制引用
11
+ ```
12
+
13
+ ## 核心特点
14
+
15
+ - 先扫描仓库,再提问,不让用户回答配置中已经明确的事实。
16
+ - 通过自适应问答确认真正有分歧的项目规则。
17
+ - 主 Skill 精简,详细规则拆入项目内 `references/`。
18
+ - 默认采用领域内部局部平铺、具体文件名、文件大小预算、WHY 注释、自动化门禁和测试共置。
19
+ - 不机械复制 Electron、React 或某个工具的专属目录。
20
+ - 对遗留项目采用只降不升的 Ratchet 策略。
21
+ - 同时兼容 `.agents` 与 `.claude` 的 Skill 发现方式。
22
+
23
+ ## 包结构
24
+
25
+ ```text
26
+ typescript-standards-builder/
27
+ ├── SKILL.md
28
+ ├── README.md
29
+ ├── references/
30
+ ├── templates/
31
+ ├── examples/
32
+ └── manifest.txt
33
+ ```
34
+
35
+ ## 使用方式
36
+
37
+ 将整个目录安装到支持 Skill 的位置,以 `SKILL.md` 为入口。运行后,Skill 会在当前项目中生成项目专属规范,而不是修改本生成器包本身。
38
+
39
+ ## 路径说明
40
+
41
+ 正式项目规范使用单连字符:
42
+
43
+ ```text
44
+ .agents/skills/typescript-standards/SKILL.md
45
+ ```
46
+
47
+ 为兼容用户指定的 Claude 引用路径,还会创建:
48
+
49
+ ```text
50
+ .agents/skills/typescript--standards/SKILL.md
51
+ ```
52
+
53
+ 该兼容文件只跳转到正式规范,避免维护两份内容。
@@ -0,0 +1,245 @@
1
+ ---
2
+ name: typescript-standards-builder
3
+ description: 通过仓库事实分析与用户问答,为当前 TypeScript 项目生成项目专属编码规范 Skill。输出正式 Skill 到 .agents/skills/typescript-standards,并创建 Claude 强制引用入口;适用于 TypeScript、React、Node.js、Electron、CLI、库及 Monorepo。
4
+ ---
5
+
6
+ # TypeScript Standards Builder
7
+
8
+ 本 Skill 的职责不是直接把一份通用规范复制进项目,而是:
9
+
10
+ 1. 分析当前仓库的真实结构、工具链和历史约定。
11
+ 2. 使用简短、逐项的用户问答确认仍需决策的规范。
12
+ 3. 将确认结果生成当前项目专属的 TypeScript 编码规范 Skill。
13
+ 4. 把正式规范写入 `.agents/skills/typescript-standards/`。
14
+ 5. 同时创建 `.claude/skills/typescript-standards/SKILL.md`,强制转向 `.agents` 中的唯一规范源。
15
+
16
+ 详细规则采用渐进式读取。不要一次读取全部 `references/`。
17
+
18
+ ## 最终输出目录
19
+
20
+ 完成问答后,必须生成:
21
+
22
+ ```text
23
+ .agents/
24
+ └── skills/
25
+ ├── typescript-standards/
26
+ │ ├── SKILL.md
27
+ │ └── references/
28
+ │ ├── 00-project-profile.md
29
+ │ ├── 01-architecture-and-layout.md
30
+ │ ├── 02-naming-and-files.md
31
+ │ ├── 03-modules-and-dependencies.md
32
+ │ ├── 04-type-system.md
33
+ │ ├── 05-functions-async-errors.md
34
+ │ ├── 06-comments-and-documentation.md
35
+ │ ├── 07-testing.md
36
+ │ ├── 08-framework-specific.md
37
+ │ ├── 09-tooling-and-quality-gates.md
38
+ │ ├── 10-review-checklist.md
39
+ │ └── 11-decisions-and-exceptions.md
40
+ └── typescript--standards/
41
+ └── SKILL.md
42
+
43
+ .claude/
44
+ └── skills/
45
+ └── typescript-standards/
46
+ └── SKILL.md
47
+ ```
48
+
49
+ `.agents/skills/typescript-standards/` 是唯一正式规范源。
50
+
51
+ 由于兼容要求,必须额外生成双连字符入口:
52
+
53
+ ```text
54
+ .agents/skills/typescript--standards/SKILL.md
55
+ ```
56
+
57
+ 该文件只负责跳转到正式的单连字符目录。
58
+
59
+ `.claude/skills/typescript-standards/SKILL.md` 必须只有一句话,并强制引用用户指定的双连字符路径:
60
+
61
+ ```md
62
+ 必须先读取并完整遵循项目根目录下的 `.agents/skills/typescript--standards/SKILL.md`,禁止在未读取该文件时执行任何 TypeScript 相关任务。
63
+ ```
64
+
65
+ 除这一句话外,不得添加 YAML、标题、空白说明、示例或第二句话。
66
+
67
+ ## 已确认的固定默认原则
68
+
69
+ 以下规则来自用户已认可的工程实践,应直接作为生成规范的默认基线;除非仓库存在框架、生成器或公共 API 的硬性冲突,不需要再次询问用户是否采用:
70
+
71
+ - **领域内部局部平铺**:明确领域内优先平铺文件,只有形成稳定子域后再增加目录。
72
+ - **文件名具体**:文件名表达领域和职责,禁止用 `utils`、`helpers`、`common`、`misc` 等模糊名称承载不相关能力。
73
+ - **控制文件体积**:为普通 TypeScript、React、测试和脚本设置不同的审查预算;阈值是拆分触发器,不是机械裁决。
74
+ - **注释关注 WHY**:注释解释兼容性、性能、安全、平台差异和非直观约束,不逐行翻译代码。
75
+ - **工具链形成门禁**:格式化、Lint、类型检查、测试和构建形成自动化质量门禁,不得通过关闭核心规则或删除测试绕过。
76
+ - **测试靠近实现**:单元测试与源码共置;跨模块集成、契约和 E2E 测试集中管理。
77
+ - **不机械复制结构**:复制规则背后的目的,不把 Electron、React 或某个工具的专属结构强加给不相关项目。
78
+
79
+ 这些原则已分别融入架构、命名、注释、测试、复杂度、CI 和迁移参考文档,不再维护独立的 Orca 附录。
80
+
81
+ ## 规则优先级
82
+
83
+ 发生冲突时依次遵循:
84
+
85
+ 1. 用户在本次问答中明确确认的决定。
86
+ 2. 运行平台、框架、协议、生成器和公共 API 的硬性约束。
87
+ 3. 当前仓库已经生效的配置和 CI 门禁。
88
+ 4. 当前模块一致且可解释的局部惯例。
89
+ 5. 本 Skill 的固定默认原则和通用推荐。
90
+
91
+ 安全、数据正确性、资源生命周期和外部输入验证不得因为“历史一直如此”而继续弱化。
92
+
93
+ ## 执行流程
94
+
95
+ ### 阶段 1:确认工作区
96
+
97
+ 确定仓库根目录和规范适用范围:
98
+
99
+ - 单一应用、单一包或整个 Monorepo。
100
+ - 是否只覆盖 TypeScript,还是同时覆盖 JavaScript、React、Node.js、Electron、CLI。
101
+ - 是否存在自动生成目录、第三方镜像或不应修改的区域。
102
+
103
+ 仓库中可直接判断的事实不得反复询问用户。
104
+
105
+ ### 阶段 2:读取仓库事实
106
+
107
+ 按 `references/01-project-discovery.md` 检查:
108
+
109
+ - `package.json`、Workspace 配置和锁文件。
110
+ - `tsconfig*.json` 及项目引用。
111
+ - ESLint、Oxlint、Biome、Prettier、Oxfmt 等配置。
112
+ - 测试框架、测试文件命名和覆盖范围。
113
+ - `src/`、`apps/`、`packages/` 的实际结构。
114
+ - 路径别名、导出入口、包边界和运行环境。
115
+ - `AGENTS.md`、`CLAUDE.md`、`CONTRIBUTING.md`、CI 工作流。
116
+ - 文件行数、模糊名称、循环依赖和测试共置情况的代表性样本。
117
+
118
+ 输出一份内部项目画像,区分:
119
+
120
+ - 已由仓库事实确定的规则。
121
+ - 存在冲突或不一致的规则。
122
+ - 必须由用户决定的规则。
123
+
124
+ ### 阶段 3:进行自适应问答
125
+
126
+ 按 `references/02-interview-workflow.md` 执行。
127
+
128
+ 要求:
129
+
130
+ - 一次只确认一个决策维度;必要时可把高度关联的两项放在同一轮。
131
+ - 每个问题先给出基于仓库事实的推荐默认值。
132
+ - 提供 2~4 个具体选项,并允许用户自定义。
133
+ - 不询问已经能从配置或代码中确定的事实。
134
+ - 不要求用户重新确认上面的七项固定默认原则,除非仓库存在硬冲突。
135
+ - 新项目通常确认 5~8 个高影响决策;成熟项目通常只确认冲突和缺失项。
136
+ - 每轮记录决定,避免重复提问。
137
+
138
+ 至少要解决以下仍然不明确的项目级问题:
139
+
140
+ - 规范覆盖范围与遗留代码执行策略。
141
+ - 目录主轴和运行环境边界。
142
+ - React 组件文件命名(仅 React 项目)。
143
+ - 导出、Barrel 和跨模块导入策略。
144
+ - `type` / `interface` 默认偏好及运行时验证方式。
145
+ - 文件大小预算和超限治理方式。
146
+ - 测试框架、命名、共置及 CI 必跑范围。
147
+ - 格式化、Lint、类型检查、构建和提交前门禁。
148
+ - 例外批准、TODO 与迁移记录方式。
149
+
150
+ ### 阶段 4:生成前确认
151
+
152
+ 问答结束后,向用户展示一份简洁的“规范决策摘要”,必须包含:
153
+
154
+ - 自动识别的仓库事实。
155
+ - 用户确认的选择。
156
+ - 使用默认值的项目。
157
+ - 需要保留的历史例外。
158
+ - 即将创建或更新的文件列表。
159
+
160
+ 只有在用户确认摘要后,才写入项目文件。若用户已经在同一消息中明确要求直接生成,可完成摘要后直接写入,不重复确认。
161
+
162
+ ### 阶段 5:生成项目专属 Skill
163
+
164
+ 按 `references/17-generation-contract.md` 和 `templates/project-skill/` 生成。
165
+
166
+ 生成要求:
167
+
168
+ - 项目 Skill 必须是当前仓库专属内容,不得包含与项目无关的框架章节。
169
+ - `SKILL.md` 保持精简,只包含适用范围、优先级、核心不可违背规则、参考路由和执行要求。
170
+ - 详细规则写入 `references/`,按任务最小化读取。
171
+ - 每条重要规则标记来源:`仓库事实`、`用户确认`、`默认基线` 或 `兼容例外`。
172
+ - 固定默认原则必须进入对应模块,不能只写在总览。
173
+ - 文件大小阈值应结合仓库分布和用户决定,不直接硬编码通用数值。
174
+ - 对遗留项目使用 Ratchet 策略,不强迫一次性重构全部代码。
175
+ - 不覆盖用户已有项目 Skill;若已存在,先读取并合并,保留项目特有条款,并展示变更摘要。
176
+
177
+ ### 阶段 6:创建重定向 Skill
178
+
179
+ 必须创建以下两个入口。
180
+
181
+ 正式兼容入口:
182
+
183
+ ```text
184
+ .agents/skills/typescript--standards/SKILL.md
185
+ ```
186
+
187
+ 内容必须只有一句话:
188
+
189
+ ```md
190
+ 本文件仅用于路径兼容;必须立即读取并完整遵循项目根目录下的 `.agents/skills/typescript-standards/SKILL.md`。
191
+ ```
192
+
193
+ Claude 入口:
194
+
195
+ ```text
196
+ .claude/skills/typescript-standards/SKILL.md
197
+ ```
198
+
199
+ 内容必须只有一句话:
200
+
201
+ ```md
202
+ 必须先读取并完整遵循项目根目录下的 `.agents/skills/typescript--standards/SKILL.md`,禁止在未读取该文件时执行任何 TypeScript 相关任务。
203
+ ```
204
+
205
+ ### 阶段 7:验证
206
+
207
+ 生成后必须验证:
208
+
209
+ - 正式 Skill 路径存在。
210
+ - `SKILL.md` YAML Frontmatter 合法,`name` 为 `typescript-standards`。
211
+ - 主 Skill 引用的所有 `references/` 文件都存在。
212
+ - 没有保留孤立的 `15-orca-derived-observations.md`。
213
+ - 七项固定默认原则已分散进入对应模块。
214
+ - `.claude` 的 `SKILL.md` 恰好只有一句话。
215
+ - 双连字符兼容入口存在且只包含一句话。
216
+ - 项目专属规范没有复制不适用的框架或运行环境规则。
217
+ - 用户确认的决定与生成内容一致。
218
+ - 不存在 `typescript--standards` 与 `typescript-standards` 相互循环引用。
219
+
220
+ 最后报告:创建、更新、保留和未能验证的文件。
221
+
222
+ ## 参考路由
223
+
224
+ | 任务 | 读取文档 |
225
+ |---|---|
226
+ | 规则优先级和固定默认原则 | `references/00-governance-and-fixed-defaults.md` |
227
+ | 仓库扫描与项目画像 | `references/01-project-discovery.md` |
228
+ | 用户问答和决策收敛 | `references/02-interview-workflow.md` |
229
+ | 目录、边界、局部平铺 | `references/03-project-architecture-and-directory-layout.md` |
230
+ | 文件、目录和标识符命名 | `references/04-file-directory-and-symbol-naming.md` |
231
+ | 模块、导入、导出和依赖 | `references/05-modules-imports-exports-and-dependencies.md` |
232
+ | TypeScript 类型系统 | `references/06-typescript-type-system.md` |
233
+ | 函数、异步、错误和资源 | `references/07-functions-async-errors-and-resources.md` |
234
+ | 注释、JSDoc 和文档 | `references/08-comments-jsdoc-and-documentation.md` |
235
+ | 测试策略和共置 | `references/09-testing-strategy.md` |
236
+ | React 和前端 | `references/10-react-and-frontend.md` |
237
+ | Node、CLI 和跨平台 | `references/11-node-cli-and-cross-platform.md` |
238
+ | 格式、Lint、文件大小 | `references/12-formatting-lint-and-complexity.md` |
239
+ | 配置、依赖和质量门禁 | `references/13-configuration-dependencies-and-ci.md` |
240
+ | 安全、性能和国际化 | `references/14-security-performance-and-i18n.md` |
241
+ | Git、PR 和交付 | `references/15-git-review-and-delivery.md` |
242
+ | 遗留迁移和例外 | `references/16-adoption-exceptions-and-migration.md` |
243
+ | 输出目录和文件合同 | `references/17-generation-contract.md` |
244
+
245
+ 完整索引见 `references/README.md`。
@@ -0,0 +1,30 @@
1
+ # 生成后的项目结构示例
2
+
3
+ ```text
4
+ .agents/
5
+ └── skills/
6
+ ├── typescript-standards/
7
+ │ ├── SKILL.md
8
+ │ └── references/
9
+ │ ├── 00-project-profile.md
10
+ │ ├── 01-architecture-and-layout.md
11
+ │ ├── 02-naming-and-files.md
12
+ │ ├── 03-modules-and-dependencies.md
13
+ │ ├── 04-type-system.md
14
+ │ ├── 05-functions-async-errors.md
15
+ │ ├── 06-comments-and-documentation.md
16
+ │ ├── 07-testing.md
17
+ │ ├── 08-framework-specific.md
18
+ │ ├── 09-tooling-and-quality-gates.md
19
+ │ ├── 10-review-checklist.md
20
+ │ └── 11-decisions-and-exceptions.md
21
+ └── typescript--standards/
22
+ └── SKILL.md
23
+
24
+ .claude/
25
+ └── skills/
26
+ └── typescript-standards/
27
+ └── SKILL.md
28
+ ```
29
+
30
+ 实际项目可裁剪不适用的主题文件,但不得删除项目画像、检查清单和决策例外记录。
@@ -0,0 +1,26 @@
1
+ # 问答决策示例
2
+
3
+ ## 自动识别
4
+
5
+ - pnpm Workspace。
6
+ - ESM。
7
+ - React + Node.js。
8
+ - Vitest 单元测试已与源码共置。
9
+ - ESLint 和 Prettier 已在 CI 中运行。
10
+
11
+ ## 用户确认
12
+
13
+ - 运行环境第一层隔离,环境内部按领域组织。
14
+ - React 业务组件使用 `PascalCase.tsx`。
15
+ - 默认命名导出,Barrel 仅用于包公共入口。
16
+ - 默认使用 `type`,扩展契约使用 `interface`。
17
+ - 普通 TS/TSX 文件软上限分别为 320/420 行。
18
+ - 历史超限文件使用 Ratchet,不立即全量整改。
19
+
20
+ ## 默认基线
21
+
22
+ - 领域内部局部平铺。
23
+ - 文件名具体。
24
+ - 注释解释 WHY。
25
+ - 单元测试共置。
26
+ - CI 必跑格式、Lint、类型、测试和构建。
@@ -0,0 +1,29 @@
1
+ README.md
2
+ SKILL.md
3
+ examples/sample-generated-tree.md
4
+ examples/sample-interview-decisions.md
5
+ references/00-governance-and-fixed-defaults.md
6
+ references/01-project-discovery.md
7
+ references/02-interview-workflow.md
8
+ references/03-project-architecture-and-directory-layout.md
9
+ references/04-file-directory-and-symbol-naming.md
10
+ references/05-modules-imports-exports-and-dependencies.md
11
+ references/06-typescript-type-system.md
12
+ references/07-functions-async-errors-and-resources.md
13
+ references/08-comments-jsdoc-and-documentation.md
14
+ references/09-testing-strategy.md
15
+ references/10-react-and-frontend.md
16
+ references/11-node-cli-and-cross-platform.md
17
+ references/12-formatting-lint-and-complexity.md
18
+ references/13-configuration-dependencies-and-ci.md
19
+ references/14-security-performance-and-i18n.md
20
+ references/15-git-review-and-delivery.md
21
+ references/16-adoption-exceptions-and-migration.md
22
+ references/17-generation-contract.md
23
+ references/README.md
24
+ templates/agents-compat-skill/SKILL.md
25
+ templates/claude-skill/SKILL.md
26
+ templates/project-skill/SKILL.md.template
27
+ templates/project-skill/references/00-project-profile.md.template
28
+ templates/project-skill/references/10-review-checklist.md
29
+ templates/project-skill/references/11-decisions-and-exceptions.md.template
@@ -0,0 +1,77 @@
1
+ # 治理、优先级与固定默认原则
2
+
3
+ ## 规范词义
4
+
5
+ - **必须**:影响正确性、安全、类型边界、资源生命周期或团队一致性的硬要求。
6
+ - **应当**:绝大多数情况下适用;偏离时必须有明确理由。
7
+ - **建议**:默认推荐,可根据规模、框架和团队能力调整。
8
+ - **禁止**:高概率制造缺陷、隐藏风险或降低维护性的做法。
9
+
10
+ ## 冲突优先级
11
+
12
+ 1. 用户在本次规范问答中确认的决定。
13
+ 2. 平台、框架、协议、代码生成器和公共 API 的硬约束。
14
+ 3. 仓库已生效配置、CI 与自动检查。
15
+ 4. 当前模块一致且可解释的局部惯例。
16
+ 5. 本 Skill 的固定默认原则。
17
+ 6. 其他通用建议。
18
+
19
+ ## 固定默认原则
20
+
21
+ 以下原则已得到用户认可,应直接纳入项目规范;只有发现硬冲突时才提问:
22
+
23
+ ### 1. 领域内部局部平铺
24
+
25
+ - 小型、职责明确的领域目录优先直接放置实现文件。
26
+ - 不为每个文件创建同名目录。
27
+ - 只有形成稳定子领域、独立生命周期或明显浏览负担时才增加子目录。
28
+ - 平铺不是全仓库无结构,而是在清晰边界内部减少无意义层级。
29
+
30
+ ### 2. 文件名具体
31
+
32
+ - 文件名必须表达领域和职责。
33
+ - `utils.ts`、`helpers.ts`、`common.ts`、`misc.ts` 不得作为不相关能力的收容区。
34
+ - 无法给文件起具体名称,通常意味着职责尚未拆清。
35
+
36
+ ### 3. 控制文件体积
37
+
38
+ - 普通 TypeScript、React、测试和脚本采用不同的大小预算。
39
+ - 阈值是代码审查与拆分触发器,不是为了满足数字而机械拆文件。
40
+ - 历史超限文件使用 Ratchet:新改动不得继续无边界增长。
41
+
42
+ ### 4. 注释关注 WHY
43
+
44
+ - 注释解释兼容性、性能、安全、平台差异、协议约束和非直观业务原因。
45
+ - 不逐行翻译代码,不用注释掩盖模糊命名和职责混合。
46
+
47
+ ### 5. 工具链形成门禁
48
+
49
+ - 格式化、Lint、类型检查、测试和构建必须形成稳定命令与 CI 门禁。
50
+ - 底层工具可以替换,但职责名称和检查结果保持稳定。
51
+ - 不得通过关闭核心规则、扩大 `any`、删除或跳过测试来获得表面通过。
52
+
53
+ ### 6. 测试靠近实现
54
+
55
+ - 单元测试与源码共置,随实现一起移动和重命名。
56
+ - 跨模块集成、契约和 E2E 测试集中管理。
57
+ - 缺陷修复优先先写可复现的回归测试。
58
+
59
+ ### 7. 不机械复制
60
+
61
+ - 不把 Electron 目录强加给普通 Web 或 Node 项目。
62
+ - 不把某个格式化工具的选项当作永恒标准。
63
+ - 不把通用阈值直接作为项目绝对数字。
64
+ - 应保留背后的目标:边界清晰、职责具体、类型严格、质量自动化、修改可验证。
65
+
66
+ ## 事实优先但不纵容风险
67
+
68
+ 历史一致性不能为以下问题背书:
69
+
70
+ - 不可信输入未经验证。
71
+ - 敏感信息泄漏。
72
+ - 监听器、Timer、连接或进程无法清理。
73
+ - `any` 向公共 API 传播。
74
+ - 循环依赖或跨运行环境非法导入。
75
+ - 删除测试、关闭规则或放宽配置来隐藏失败。
76
+
77
+ 对遗留问题采用渐进治理,不要求无关的大规模重写。
@@ -0,0 +1,100 @@
1
+ # 项目发现与仓库事实分析
2
+
3
+ 生成规范前必须先建立项目画像。不要凭技术栈名称猜测实际规则。
4
+
5
+ ## 根目录与范围
6
+
7
+ 确认:
8
+
9
+ - Git 或 Workspace 根目录。
10
+ - 规范覆盖整个仓库、某个应用还是某些包。
11
+ - 自动生成、Vendored、迁移冻结或第三方目录。
12
+ - 是否存在多个互相独立的 TypeScript 工程。
13
+
14
+ ## 优先读取文件
15
+
16
+ 按存在情况检查:
17
+
18
+ ```text
19
+ package.json
20
+ pnpm-workspace.yaml
21
+ yarn.lock / pnpm-lock.yaml / package-lock.json
22
+ nx.json / turbo.json
23
+ tsconfig*.json
24
+ eslint.config.* / .eslintrc*
25
+ .oxlintrc* / biome.json* / .prettierrc* / oxfmt*
26
+ vitest.config.* / jest.config.* / playwright.config.*
27
+ AGENTS.md / CLAUDE.md / CONTRIBUTING.md
28
+ .github/workflows/* / .gitlab-ci.yml
29
+ ```
30
+
31
+ ## 结构采样
32
+
33
+ 至少查看:
34
+
35
+ - `src/`、`apps/`、`packages/` 的两到三个代表性领域。
36
+ - 普通 `.ts`、React `.tsx`、测试、声明文件和脚本。
37
+ - 公共入口、`index.ts`、路径别名和跨包导入。
38
+ - 运行环境边界,如 Web、Node、Electron、Worker、CLI。
39
+ - 最大或高频修改文件,判断职责和大小分布。
40
+
41
+ ## 工具链事实
42
+
43
+ 记录:
44
+
45
+ - 包管理器及版本。
46
+ - ESM、CommonJS 或 Bundler 模块模式。
47
+ - TypeScript 版本和严格选项。
48
+ - 格式化与 Lint 工具。
49
+ - 测试框架、浏览器测试和覆盖率工具。
50
+ - 构建、代码生成、发布和 CI 命令。
51
+ - Git Hooks 与暂存文件检查。
52
+
53
+ ## 规范冲突识别
54
+
55
+ 把发现分为:
56
+
57
+ ### 已确定
58
+
59
+ 例如:
60
+
61
+ - 所有普通文件已经统一使用 `kebab-case.ts`。
62
+ - React 文件统一使用 `PascalCase.tsx`。
63
+ - 单元测试全部为 `*.test.ts` 并与源码共置。
64
+ - `strict` 已启用。
65
+
66
+ 这些事实不需要再问用户。
67
+
68
+ ### 不一致
69
+
70
+ 例如:
71
+
72
+ - 同一领域混用技术目录和领域目录。
73
+ - `type` 与 `interface` 无规律混用。
74
+ - 测试一部分共置、一部分集中。
75
+ - ESLint 与 Oxlint 同时存在但职责不清。
76
+
77
+ 这些问题进入用户问答。
78
+
79
+ ### 缺失
80
+
81
+ 例如:
82
+
83
+ - 没有 CI 类型检查。
84
+ - 没有文件大小预算。
85
+ - 没有例外流程。
86
+ - 没有跨运行环境依赖限制。
87
+
88
+ 缺失项应给出推荐默认值,再由用户确认高影响选择。
89
+
90
+ ## 代表性统计
91
+
92
+ 条件允许时,统计而不是凭印象判断:
93
+
94
+ - `.ts`、`.tsx`、测试文件行数分位数。
95
+ - 模糊文件名数量。
96
+ - `any`、`@ts-ignore`、规则禁用数量。
97
+ - 单元测试共置比例。
98
+ - Barrel 文件和循环依赖情况。
99
+
100
+ 统计只用于形成推荐,不自动做大规模整改。