@namewta/speculo 0.7.4 → 0.7.5
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.
- package/README.md +2 -2
- package/package.json +1 -1
- package/template/canonical/README.md +208 -63
- package/template/canonical/canonical-person-steelman-deliberation.md +518 -0
- package/template/skills/engineering-standards-builder/README.md +43 -0
- package/template/skills/engineering-standards-builder/SKILL.md +233 -0
- package/template/skills/engineering-standards-builder/examples/README.md +15 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/build.gradle.kts +5 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/expected.json +12 -0
- package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/src/main/kotlin/example/App.kt +2 -0
- package/template/skills/engineering-standards-builder/examples/go/service/.golangci.yml +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/cmd/api/main.go +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/expected.json +23 -0
- package/template/skills/engineering-standards-builder/examples/go/service/go.mod +3 -0
- package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service.go +2 -0
- package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service_test.go +3 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/pom.xml +12 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
- package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/test/java/dev/speculo/orders/OrdersApplicationTest.java +3 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/.github/workflows/ci.yml +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/package.json +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/src/App.vue +2 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/tsconfig.json +8 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/package.json +11 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/pnpm-workspace.yaml +2 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/pom.xml +12 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/go.mod +3 -0
- package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/main.go +2 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/Cargo.toml +7 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/Cargo.toml +8 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/src/main.rs +1 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/Cargo.toml +5 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/src/lib.rs +3 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/expected.json +14 -0
- package/template/skills/engineering-standards-builder/examples/rust/workspace/rust-toolchain.toml +3 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/expected.json +21 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/package.json +20 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.test.tsx +2 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.tsx +1 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/main.tsx +3 -0
- package/template/skills/engineering-standards-builder/examples/typescript/react-vite/tsconfig.json +10 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/expected.json +22 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/package.json +21 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.test.ts +2 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.vue +7 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/main.ts +4 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/tsconfig.json +11 -0
- package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/vite.config.ts +2 -0
- package/template/skills/engineering-standards-builder/manifest.txt +112 -0
- package/template/skills/engineering-standards-builder/references/go/00-detection-and-scope.md +37 -0
- package/template/skills/engineering-standards-builder/references/go/01-language-and-idioms.md +34 -0
- package/template/skills/engineering-standards-builder/references/go/02-modules-packages-and-layout.md +34 -0
- package/template/skills/engineering-standards-builder/references/go/03-errors-context-and-concurrency.md +38 -0
- package/template/skills/engineering-standards-builder/references/go/04-testing-tooling-quality-gates.md +46 -0
- package/template/skills/engineering-standards-builder/references/go/README.md +9 -0
- package/template/skills/engineering-standards-builder/references/java/00-detection-and-scope.md +40 -0
- package/template/skills/engineering-standards-builder/references/java/01-language-packages-and-api.md +35 -0
- package/template/skills/engineering-standards-builder/references/java/02-build-modules-and-dependencies.md +39 -0
- package/template/skills/engineering-standards-builder/references/java/03-errors-nullability-resources-concurrency.md +36 -0
- package/template/skills/engineering-standards-builder/references/java/04-testing-tooling-quality-gates.md +36 -0
- package/template/skills/engineering-standards-builder/references/java/README.md +10 -0
- package/template/skills/engineering-standards-builder/references/java/frameworks/spring-boot.md +74 -0
- package/template/skills/engineering-standards-builder/references/rules/00-governance-and-precedence.md +52 -0
- package/template/skills/engineering-standards-builder/references/rules/01-project-discovery.md +79 -0
- package/template/skills/engineering-standards-builder/references/rules/02-evidence-topology-and-scope.md +87 -0
- package/template/skills/engineering-standards-builder/references/rules/03-interview-and-decisions.md +77 -0
- package/template/skills/engineering-standards-builder/references/rules/04-architecture-and-dependency-boundaries.md +58 -0
- package/template/skills/engineering-standards-builder/references/rules/05-files-directories-and-naming.md +53 -0
- package/template/skills/engineering-standards-builder/references/rules/06-apis-errors-resources-and-concurrency.md +53 -0
- package/template/skills/engineering-standards-builder/references/rules/07-documentation-and-comments.md +46 -0
- package/template/skills/engineering-standards-builder/references/rules/08-testing-strategy.md +45 -0
- package/template/skills/engineering-standards-builder/references/rules/09-security-configuration-and-data.md +44 -0
- package/template/skills/engineering-standards-builder/references/rules/10-performance-observability-and-i18n.md +36 -0
- package/template/skills/engineering-standards-builder/references/rules/11-tooling-quality-gates-and-ci.md +69 -0
- package/template/skills/engineering-standards-builder/references/rules/12-git-review-and-delivery.md +46 -0
- package/template/skills/engineering-standards-builder/references/rules/13-adoption-exceptions-and-ratchets.md +60 -0
- package/template/skills/engineering-standards-builder/references/rules/14-generation-contract.md +105 -0
- package/template/skills/engineering-standards-builder/references/rules/15-validation-contract.md +65 -0
- package/template/skills/engineering-standards-builder/references/rules/16-language-adapter-contract.md +55 -0
- package/template/skills/engineering-standards-builder/references/rules/README.md +23 -0
- package/template/skills/engineering-standards-builder/references/rust/00-detection-and-scope.md +38 -0
- package/template/skills/engineering-standards-builder/references/rust/01-language-api-and-safety.md +35 -0
- package/template/skills/engineering-standards-builder/references/rust/02-crates-workspaces-and-layout.md +36 -0
- package/template/skills/engineering-standards-builder/references/rust/03-errors-ownership-and-concurrency.md +37 -0
- package/template/skills/engineering-standards-builder/references/rust/04-testing-tooling-quality-gates.md +44 -0
- package/template/skills/engineering-standards-builder/references/rust/README.md +9 -0
- package/template/skills/engineering-standards-builder/references/typescript/00-detection-and-scope.md +58 -0
- package/template/skills/engineering-standards-builder/references/typescript/01-language-and-type-system.md +49 -0
- package/template/skills/engineering-standards-builder/references/typescript/02-modules-packages-and-runtime-boundaries.md +49 -0
- package/template/skills/engineering-standards-builder/references/typescript/03-functions-async-errors-resources.md +42 -0
- package/template/skills/engineering-standards-builder/references/typescript/04-testing-tooling-quality-gates.md +51 -0
- package/template/skills/engineering-standards-builder/references/typescript/README.md +27 -0
- package/template/skills/engineering-standards-builder/references/typescript/app-types/cli.md +11 -0
- package/template/skills/engineering-standards-builder/references/typescript/app-types/library.md +11 -0
- package/template/skills/engineering-standards-builder/references/typescript/frameworks/react.md +71 -0
- package/template/skills/engineering-standards-builder/references/typescript/frameworks/vue.md +131 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/browser.md +15 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/electron.md +25 -0
- package/template/skills/engineering-standards-builder/references/typescript/runtimes/node.md +13 -0
- package/template/skills/engineering-standards-builder/scripts/discover-project.mjs +957 -0
- package/template/skills/engineering-standards-builder/scripts/self-test.mjs +203 -0
- package/template/skills/engineering-standards-builder/scripts/sync-manifest.mjs +105 -0
- package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +255 -0
- package/template/skills/engineering-standards-builder/scripts/validate-generated-skill.mjs +286 -0
- package/template/skills/engineering-standards-builder/templates/README.md +18 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript--standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/claude-engineering-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/compatibility/claude-typescript-standards.md +6 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/SKILL.md.template +26 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/00-project-profile.md.template +26 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/01-module-map.md.template +27 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/02-decisions-and-exceptions.md.template +31 -0
- package/template/skills/engineering-standards-builder/templates/project-skill/references/project/review-checklist.md.template +14 -0
- package/template/skills/source-code-zip-skill/SKILL.md +343 -0
- package/template/skills/source-code-zip-skill/scripts/zip_source_code.py +638 -0
- package/template/workflows/person/INDEX.md +1 -0
- package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +218 -0
- package/template/workflows/person/S-steelman-deliberation/_templates/decision-template.md +51 -0
- package/template/workflows/person/S-steelman-deliberation/_templates/steelman-dossier-template.md +96 -0
- package/template/workflows/person/S-steelman-deliberation/deliberate.md +127 -0
- package/template/workflows/person/S-steelman-deliberation/evidence-gate.md +37 -0
- package/template/workflows/person/S-steelman-deliberation/judge.md +69 -0
- package/template/workflows/person/S-steelman-deliberation/tools/validate-steelman-change.mjs +697 -0
- package/template/skills/typescript-standards-builder/README.md +0 -53
- package/template/skills/typescript-standards-builder/SKILL.md +0 -245
- package/template/skills/typescript-standards-builder/examples/sample-generated-tree.md +0 -30
- package/template/skills/typescript-standards-builder/examples/sample-interview-decisions.md +0 -26
- package/template/skills/typescript-standards-builder/manifest.txt +0 -29
- package/template/skills/typescript-standards-builder/references/00-governance-and-fixed-defaults.md +0 -77
- package/template/skills/typescript-standards-builder/references/01-project-discovery.md +0 -100
- package/template/skills/typescript-standards-builder/references/02-interview-workflow.md +0 -129
- package/template/skills/typescript-standards-builder/references/03-project-architecture-and-directory-layout.md +0 -84
- package/template/skills/typescript-standards-builder/references/04-file-directory-and-symbol-naming.md +0 -92
- package/template/skills/typescript-standards-builder/references/05-modules-imports-exports-and-dependencies.md +0 -63
- package/template/skills/typescript-standards-builder/references/06-typescript-type-system.md +0 -64
- package/template/skills/typescript-standards-builder/references/07-functions-async-errors-and-resources.md +0 -42
- package/template/skills/typescript-standards-builder/references/08-comments-jsdoc-and-documentation.md +0 -51
- package/template/skills/typescript-standards-builder/references/09-testing-strategy.md +0 -58
- package/template/skills/typescript-standards-builder/references/10-react-and-frontend.md +0 -39
- package/template/skills/typescript-standards-builder/references/11-node-cli-and-cross-platform.md +0 -31
- package/template/skills/typescript-standards-builder/references/12-formatting-lint-and-complexity.md +0 -58
- package/template/skills/typescript-standards-builder/references/13-configuration-dependencies-and-ci.md +0 -71
- package/template/skills/typescript-standards-builder/references/14-security-performance-and-i18n.md +0 -32
- package/template/skills/typescript-standards-builder/references/15-git-review-and-delivery.md +0 -28
- package/template/skills/typescript-standards-builder/references/16-adoption-exceptions-and-migration.md +0 -61
- package/template/skills/typescript-standards-builder/references/17-generation-contract.md +0 -104
- package/template/skills/typescript-standards-builder/references/README.md +0 -37
- package/template/skills/typescript-standards-builder/templates/agents-compat-skill/SKILL.md +0 -1
- package/template/skills/typescript-standards-builder/templates/claude-skill/SKILL.md +0 -1
- package/template/skills/typescript-standards-builder/templates/project-skill/SKILL.md.template +0 -34
- package/template/skills/typescript-standards-builder/templates/project-skill/references/00-project-profile.md.template +0 -17
- package/template/skills/typescript-standards-builder/templates/project-skill/references/10-review-checklist.md +0 -23
- package/template/skills/typescript-standards-builder/templates/project-skill/references/11-decisions-and-exceptions.md.template +0 -19
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 治理、规则级别与冲突优先级
|
|
2
|
+
|
|
3
|
+
## 规则级别
|
|
4
|
+
|
|
5
|
+
生成项目规范时统一使用:
|
|
6
|
+
|
|
7
|
+
- **MUST**:正确性、安全、协议、公共 API、数据、资源生命周期或已生效门禁要求;必须有可执行检查或明确 review 条目。
|
|
8
|
+
- **SHOULD**:大多数场景适用;偏离时需要记录理由、scope 和恢复条件。
|
|
9
|
+
- **MAY**:允许的模式,不作为伪门禁。
|
|
10
|
+
- **EXCEPTION**:临时或永久例外;必须写明所有者、原因、范围、风险、到期或删除条件。
|
|
11
|
+
|
|
12
|
+
不要把偏好包装成 MUST。无法验证的规则最多为 SHOULD,并给出具体 review 证据。
|
|
13
|
+
|
|
14
|
+
## 冲突优先级
|
|
15
|
+
|
|
16
|
+
按以下顺序解决冲突:
|
|
17
|
+
|
|
18
|
+
1. 安全、协议、编译器、运行时、监管与数据正确性的硬约束;
|
|
19
|
+
2. 用户针对本项目明确确认的目标状态;
|
|
20
|
+
3. 当前生效的构建配置、CI 合同、发布合同与公共 API;
|
|
21
|
+
4. 当前模块稳定且占主导、能被证据证明的实践;
|
|
22
|
+
5. 对应语言、框架和工具的当前官方文档;
|
|
23
|
+
6. 团队选定的风格 profile;
|
|
24
|
+
7. Builder 默认建议。
|
|
25
|
+
|
|
26
|
+
较高优先级不等于静默覆盖。若目标状态与当前硬约束冲突,生成“当前状态 → 迁移阶段 → 目标状态”,而不是直接写一条无法落地的规则。
|
|
27
|
+
|
|
28
|
+
## 证据来源
|
|
29
|
+
|
|
30
|
+
每条重要规则标记一个或多个来源:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
repository-fact
|
|
34
|
+
user-decision
|
|
35
|
+
official-guidance
|
|
36
|
+
builder-baseline
|
|
37
|
+
compatibility-exception
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`repository-fact` 必须附路径或命令证据。`official-guidance` 只作为适用默认,不能覆盖项目版本和真实配置。`builder-baseline` 不得伪装成项目既有事实。
|
|
41
|
+
|
|
42
|
+
## 不可被历史惯例弱化的底线
|
|
43
|
+
|
|
44
|
+
以下问题即使在仓库中普遍存在,也必须采用 Ratchet 或迁移方案,而不是继续扩散:
|
|
45
|
+
|
|
46
|
+
- 外部输入未经验证;
|
|
47
|
+
- 密钥、Token、密码或个人敏感数据泄露;
|
|
48
|
+
- 资源、线程、goroutine、任务、监听器、连接或子进程没有所有者和关闭路径;
|
|
49
|
+
- 错误被静默吞掉或只记录后继续假装成功;
|
|
50
|
+
- 公共边界使用无约束动态类型;
|
|
51
|
+
- 依赖方向绕过模块边界;
|
|
52
|
+
- 删除测试、关闭核心规则或放宽编译配置以隐藏失败。
|
package/template/skills/engineering-standards-builder/references/rules/01-project-discovery.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 项目发现合同
|
|
2
|
+
|
|
3
|
+
## 原则
|
|
4
|
+
|
|
5
|
+
规范生成必须先建立 Project Inventory。扫描以只读、确定性、可追溯为目标:
|
|
6
|
+
|
|
7
|
+
- 不执行安装、构建、测试、代码生成或项目脚本;
|
|
8
|
+
- 不依赖目录名字猜测技术栈;
|
|
9
|
+
- manifest、配置、CI、源码与文档相互交叉验证;
|
|
10
|
+
- 每个判断保留证据路径和置信度;
|
|
11
|
+
- 扫描器结果是基线,必须再抽样源码和边界。
|
|
12
|
+
|
|
13
|
+
## 确定性扫描
|
|
14
|
+
|
|
15
|
+
运行:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
node <skill-root>/scripts/discover-project.mjs \
|
|
19
|
+
--root <project-root> \
|
|
20
|
+
--pretty \
|
|
21
|
+
--output <approved-path>/project-inventory.json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`--output` 只接受扫描根目录内路径;省略时只向 stdout 输出 JSON。
|
|
25
|
+
|
|
26
|
+
扫描器识别:
|
|
27
|
+
|
|
28
|
+
- Git/Workspace/Monorepo 拓扑;
|
|
29
|
+
- JavaScript/TypeScript manifests、Workspace、锁文件、tsconfig、框架与工具;
|
|
30
|
+
- Maven/Gradle、Java 源集与 Spring Boot;
|
|
31
|
+
- `go.mod`、`go.work`、Go package/command;
|
|
32
|
+
- Cargo package/workspace、toolchain、Rust crate;
|
|
33
|
+
- CI、Agent 手册、贡献文档、架构文档和已有规范;
|
|
34
|
+
- 源码/测试扩展名统计及代表性根目录;
|
|
35
|
+
- 生成、Vendor、构建和缓存目录。
|
|
36
|
+
|
|
37
|
+
## 人工语义抽样
|
|
38
|
+
|
|
39
|
+
至少检查每个可编辑模块的:
|
|
40
|
+
|
|
41
|
+
1. manifest/build 文件;
|
|
42
|
+
2. 编译、Lint、格式化和测试配置;
|
|
43
|
+
3. CI 中真正执行的命令;
|
|
44
|
+
4. 公开入口和模块边界;
|
|
45
|
+
5. 两到三个代表性业务目录;
|
|
46
|
+
6. 普通实现、测试、配置和入口文件;
|
|
47
|
+
7. 大型或高频修改文件;
|
|
48
|
+
8. 生成代码标记和不可编辑目录;
|
|
49
|
+
9. README、ADR、AGENTS、CLAUDE、CONTRIBUTING 中的有效合同。
|
|
50
|
+
|
|
51
|
+
只统计扩展名不等于理解架构。框架依赖存在但没有源码使用时,要记录为“依赖信号”,不能直接判定为全模块规则。
|
|
52
|
+
|
|
53
|
+
## 置信度
|
|
54
|
+
|
|
55
|
+
- **high**:manifest、编译配置、框架入口、CI 命令或源码导入明确声明;
|
|
56
|
+
- **medium**:大量稳定源码模式与目录结构相互支持;
|
|
57
|
+
- **low**:仅由目录名、少量文件或间接依赖推断。
|
|
58
|
+
|
|
59
|
+
低置信度、高影响判断必须人工确认或进入访谈。
|
|
60
|
+
|
|
61
|
+
## 排除目录
|
|
62
|
+
|
|
63
|
+
默认排除依赖、构建、缓存、Vendor 与生成输出,例如:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
.git node_modules dist build target out coverage
|
|
67
|
+
.next .nuxt .output .turbo .gradle vendor
|
|
68
|
+
bin obj .cache .venv __pycache__
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
项目明确把某个同名目录作为源码时,必须由证据覆盖默认排除,并缩小扫描范围。
|
|
72
|
+
|
|
73
|
+
## 发现完成条件
|
|
74
|
+
|
|
75
|
+
- 每个模块都有路径、语言、框架、运行时、构建和测试事实;
|
|
76
|
+
- 每个判断可追溯;
|
|
77
|
+
- 作用域互不混淆;
|
|
78
|
+
- 冲突、未知项和扫描限制已记录;
|
|
79
|
+
- 尚未向用户询问可以直接从仓库回答的问题。
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# 证据、项目拓扑与规则作用域
|
|
2
|
+
|
|
3
|
+
## 模块模型
|
|
4
|
+
|
|
5
|
+
每个模块至少记录:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
id
|
|
9
|
+
path
|
|
10
|
+
languages
|
|
11
|
+
frameworks
|
|
12
|
+
runtimes
|
|
13
|
+
buildSystems
|
|
14
|
+
packageManagers
|
|
15
|
+
sourceRoots
|
|
16
|
+
testRoots
|
|
17
|
+
publicEntrypoints
|
|
18
|
+
generatedPaths
|
|
19
|
+
qualityGates
|
|
20
|
+
evidence
|
|
21
|
+
confidence
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
模块可以是 Workspace package、Maven/Gradle 子项目、Go module、Cargo crate,也可以是经源码和构建边界证明的独立应用。
|
|
25
|
+
|
|
26
|
+
## 拓扑分类
|
|
27
|
+
|
|
28
|
+
- `single-project`
|
|
29
|
+
- `workspace`
|
|
30
|
+
- `monorepo`
|
|
31
|
+
- `multi-module`
|
|
32
|
+
- `polyglot-monorepo`
|
|
33
|
+
- `multi-root`
|
|
34
|
+
|
|
35
|
+
不要因为有多个 manifest 就自动称为 Monorepo;必须判断它们是否由共同根、Workspace、CI、发布或依赖关系管理。
|
|
36
|
+
|
|
37
|
+
## Scope 语法
|
|
38
|
+
|
|
39
|
+
生成规则时使用最窄充分 scope:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
repository
|
|
43
|
+
module:apps/web
|
|
44
|
+
module:services/orders
|
|
45
|
+
language:typescript
|
|
46
|
+
framework:vue
|
|
47
|
+
runtime:node
|
|
48
|
+
path:packages/sdk/**
|
|
49
|
+
public-api:packages/sdk
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
同一条规则需要多个 scope 时显式列出,不使用“前端”“后端”这类无法映射路径的模糊标签,除非项目已经定义这些边界。
|
|
53
|
+
|
|
54
|
+
## 证据记录
|
|
55
|
+
|
|
56
|
+
推荐格式:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
Evidence:
|
|
60
|
+
- path: apps/web/package.json
|
|
61
|
+
signal: dependencies.vue
|
|
62
|
+
confidence: high
|
|
63
|
+
- path: apps/web/src/App.vue
|
|
64
|
+
signal: Vue SFC
|
|
65
|
+
confidence: high
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
命令证据记录命令与来源,例如“`.github/workflows/ci.yml` 中执行 `pnpm test`”,不能只写“项目有测试”。
|
|
69
|
+
|
|
70
|
+
## 冲突类型
|
|
71
|
+
|
|
72
|
+
至少识别:
|
|
73
|
+
|
|
74
|
+
- manifest 与源码不一致;
|
|
75
|
+
- 同一 scope 内多种无规律命名或目录策略;
|
|
76
|
+
- 本地脚本与 CI 门禁不一致;
|
|
77
|
+
- 声明的 Java/Node/Go/Rust 版本不一致;
|
|
78
|
+
- React 与 Vue、Maven 与 Gradle等多框架/多构建系统共存但边界不清;
|
|
79
|
+
- 公开 API 实际被跨模块深导入绕过;
|
|
80
|
+
- 生成代码与手写代码混合;
|
|
81
|
+
- 新目标规则无法通过当前门禁。
|
|
82
|
+
|
|
83
|
+
冲突不得通过“选择多数”静默消失。高影响冲突进入决策,低影响冲突进入 Ratchet 或局部例外。
|
|
84
|
+
|
|
85
|
+
## 作用域完成条件
|
|
86
|
+
|
|
87
|
+
每个被选规则包和每条项目规则都能映射到明确路径或模块;没有框架规则泄漏到无关模块;不存在用仓库根 manifest 覆盖所有子项目的推断。
|
package/template/skills/engineering-standards-builder/references/rules/03-interview-and-decisions.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 自适应访谈与决策收敛
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
|
|
5
|
+
访谈只解决仓库事实无法确定、且会改变生成结果的高影响选择。没有固定问题数量。
|
|
6
|
+
|
|
7
|
+
## 问题触发条件
|
|
8
|
+
|
|
9
|
+
仅当至少满足一项时提问:
|
|
10
|
+
|
|
11
|
+
- 两个或更多现有实践发生真实冲突;
|
|
12
|
+
- 目标状态会改变公共 API、模块边界或目录主轴;
|
|
13
|
+
- 需要决定 MUST/SHOULD、立即强制或 Ratchet;
|
|
14
|
+
- 框架/语言版本迁移影响可用 API;
|
|
15
|
+
- CI 门禁或测试层级缺失且默认选择代价明显不同;
|
|
16
|
+
- 例外需要所有者、期限或风险接受。
|
|
17
|
+
|
|
18
|
+
## 问题格式
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
事实:<证据路径与当前状态>
|
|
22
|
+
影响:<不同选择会改变什么>
|
|
23
|
+
推荐:<默认值及理由>
|
|
24
|
+
选项:
|
|
25
|
+
A. <可执行结果>
|
|
26
|
+
B. <可执行结果>
|
|
27
|
+
C. <可执行结果>
|
|
28
|
+
可自定义:是
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
一次只处理一个决策维度;高度耦合的两个选项可同轮处理。用户回答后立即记录:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
Decision ID:
|
|
35
|
+
Scope:
|
|
36
|
+
Decision:
|
|
37
|
+
Source: user-decision
|
|
38
|
+
Rationale:
|
|
39
|
+
Migration:
|
|
40
|
+
Verification:
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 常见通用决策
|
|
44
|
+
|
|
45
|
+
- whole repository 或指定模块;
|
|
46
|
+
- 新代码立即强制、存量 Ratchet 或阶段性全量迁移;
|
|
47
|
+
- public API、允许的依赖方向和跨模块访问;
|
|
48
|
+
- 架构/领域/包哪个是目录主轴;
|
|
49
|
+
- 测试层级、真实依赖和 CI 必跑范围;
|
|
50
|
+
- 格式、Lint、类型/编译、测试和构建门禁职责;
|
|
51
|
+
- 文件复杂度预算如何由仓库分布推导;
|
|
52
|
+
- 例外审批、所有者、到期与删除条件。
|
|
53
|
+
|
|
54
|
+
## 语言/框架问题
|
|
55
|
+
|
|
56
|
+
仅加载对应适配器中的问题。例如:
|
|
57
|
+
|
|
58
|
+
- TypeScript:`type/interface`、barrel、typed linting、不同运行环境 tsconfig;
|
|
59
|
+
- React:函数组件迁移、Server/Client 边界、状态工具;
|
|
60
|
+
- Vue:Vue 2/3、Options/Composition、`<script setup>`、Pinia/Vuex;
|
|
61
|
+
- Java/Spring Boot:Maven/Gradle、多模块、package-by-feature、事务和测试 slice;
|
|
62
|
+
- Go:公开 package、`internal`、命令布局、context 与 goroutine 生命周期;
|
|
63
|
+
- Rust:MSRV、unsafe、Clippy level、features、crate/public API。
|
|
64
|
+
|
|
65
|
+
## 直接生成模式
|
|
66
|
+
|
|
67
|
+
用户已经明确授权实施时:
|
|
68
|
+
|
|
69
|
+
- 使用仓库主导实践;
|
|
70
|
+
- 对新项目采用官方适用默认;
|
|
71
|
+
- 对存量项目采用 Ratchet;
|
|
72
|
+
- 不确定且高风险的事项标记为 `pending-decision`,不伪造用户选择;
|
|
73
|
+
- 继续生成可用规范,不用形式化问答阻塞。
|
|
74
|
+
|
|
75
|
+
## 完成条件
|
|
76
|
+
|
|
77
|
+
所有会改变目录、API、作用域、强制级别、迁移或 CI 的未知项均已决策或登记;任何默认值都有来源;没有询问可由仓库直接回答的事实。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 通用架构与依赖边界
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
|
|
5
|
+
规范描述“边界为何存在、如何验证”,语言适配器再描述 package/module/crate 的具体实现。
|
|
6
|
+
|
|
7
|
+
## 模块职责
|
|
8
|
+
|
|
9
|
+
- 每个模块拥有可命名的业务或平台职责;
|
|
10
|
+
- 公开入口与内部实现分离;
|
|
11
|
+
- 依赖方向单向、可解释、可自动检查时应自动检查;
|
|
12
|
+
- 边界间通过显式数据/接口合同通信;
|
|
13
|
+
- 避免跨层深导入、共享可变全局状态和隐式副作用;
|
|
14
|
+
- 生成代码、基础设施代码和业务代码有明确所有权。
|
|
15
|
+
|
|
16
|
+
## 目录主轴
|
|
17
|
+
|
|
18
|
+
优先保留仓库已经稳定的主轴。新设计默认:
|
|
19
|
+
|
|
20
|
+
1. 先按独立部署、运行时或包边界分离;
|
|
21
|
+
2. 在边界内按业务领域或能力组织;
|
|
22
|
+
3. 领域内部局部平铺;
|
|
23
|
+
4. 只有出现稳定子域、独立生命周期或明显浏览负担时增加层级。
|
|
24
|
+
|
|
25
|
+
这不是强制所有语言采用相同目录。Java package、Go package、Rust crate 与 Vue/React feature 的语义不同。
|
|
26
|
+
|
|
27
|
+
## 公共 API
|
|
28
|
+
|
|
29
|
+
- public API 必须有稳定入口、兼容策略和测试;
|
|
30
|
+
- 内部实现不因便利而被公开;
|
|
31
|
+
- 跨模块只依赖对方公开合同;
|
|
32
|
+
- 破坏性变更需要迁移说明、版本策略或同步消费者;
|
|
33
|
+
- 序列化格式、数据库 schema、事件和 CLI 输出都属于 API。
|
|
34
|
+
|
|
35
|
+
## 循环依赖
|
|
36
|
+
|
|
37
|
+
识别源码、构建模块、运行时服务和数据层面的循环。修复优先:
|
|
38
|
+
|
|
39
|
+
1. 移动错误归属的能力;
|
|
40
|
+
2. 提取稳定合同;
|
|
41
|
+
3. 反转依赖;
|
|
42
|
+
4. 使用事件或适配器;
|
|
43
|
+
5. 最后才考虑共享模块。
|
|
44
|
+
|
|
45
|
+
`common`/`shared` 不应成为绕过边界的垃圾场。
|
|
46
|
+
|
|
47
|
+
## 验证
|
|
48
|
+
|
|
49
|
+
生成项目规范时给出仓库真实验证方式,例如:
|
|
50
|
+
|
|
51
|
+
- lint/import boundary rule;
|
|
52
|
+
- build module dependency;
|
|
53
|
+
- package visibility;
|
|
54
|
+
- architecture test;
|
|
55
|
+
- workspace/crate graph;
|
|
56
|
+
- code review checklist。
|
|
57
|
+
|
|
58
|
+
没有自动工具时,MUST 规则必须列出精确 review 路径。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# 通用文件、目录与命名
|
|
2
|
+
|
|
3
|
+
## 具体而非泛化
|
|
4
|
+
|
|
5
|
+
名称表达领域和职责。避免把不相关能力收纳进:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
utils helpers common misc shared manager processor handler
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
这些词并非绝对禁止;只有当 scope 真实单一且项目赋予明确语义时才可使用。无法给文件或类型起具体名称通常意味着职责尚未拆清。
|
|
12
|
+
|
|
13
|
+
## 局部一致性
|
|
14
|
+
|
|
15
|
+
- 目录、文件、类型、函数和测试命名遵循对应语言与框架;
|
|
16
|
+
- 同一 scope 内一致性优先于跨语言表面统一;
|
|
17
|
+
- 生成器和框架要求的特殊文件名保留;
|
|
18
|
+
- 重命名 public API、序列化字段或数据库对象前检查兼容影响;
|
|
19
|
+
- 大小写敏感性、Windows/macOS 文件系统差异纳入验证。
|
|
20
|
+
|
|
21
|
+
## 文件职责与大小预算
|
|
22
|
+
|
|
23
|
+
文件大小是 review 触发器,不是机械裁决。为不同语言和文件类型分别推导预算:
|
|
24
|
+
|
|
25
|
+
1. 统计当前可编辑文件分布;
|
|
26
|
+
2. 排除生成文件和 Vendor;
|
|
27
|
+
3. 区分生产代码、测试、配置、脚本和声明;
|
|
28
|
+
4. 结合复杂度、依赖数和修改频率;
|
|
29
|
+
5. 对存量超限文件使用 Ratchet。
|
|
30
|
+
|
|
31
|
+
超限时检查是否可以分离解析、验证、I/O、领域规则、状态编排、视图或平台适配。不得为了行数创建更模糊的文件。
|
|
32
|
+
|
|
33
|
+
## 目录层级
|
|
34
|
+
|
|
35
|
+
增加目录必须至少带来一项价值:
|
|
36
|
+
|
|
37
|
+
- 稳定边界;
|
|
38
|
+
- 独立所有权或发布;
|
|
39
|
+
- 明显降低导航成本;
|
|
40
|
+
- 框架/构建工具要求;
|
|
41
|
+
- 权限或依赖方向可验证。
|
|
42
|
+
|
|
43
|
+
“一文件一同名目录”不是通用默认。组件、package、module、crate 等具体布局完全由适配器和项目事实决定。
|
|
44
|
+
|
|
45
|
+
## 验证
|
|
46
|
+
|
|
47
|
+
项目规范应记录:
|
|
48
|
+
|
|
49
|
+
- 命名工具或 lint;
|
|
50
|
+
- 大小/复杂度的软预算与 Ratchet;
|
|
51
|
+
- 例外文件及理由;
|
|
52
|
+
- 跨平台大小写检查;
|
|
53
|
+
- review 时如何判断职责混合。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# 通用 API、错误、资源与并发
|
|
2
|
+
|
|
3
|
+
## API 合同
|
|
4
|
+
|
|
5
|
+
- 输入、输出、失败、取消、超时和副作用必须可理解;
|
|
6
|
+
- 外部输入在边界转换为内部可信模型;
|
|
7
|
+
- 使用类型、schema 或显式验证表达非法状态;
|
|
8
|
+
- 布尔参数超过一个或存在互斥组合时,优先使用具名配置/枚举/领域类型;
|
|
9
|
+
- 不用日志替代返回错误或失败状态;
|
|
10
|
+
- public API 的错误语义与兼容性必须稳定。
|
|
11
|
+
|
|
12
|
+
## 错误处理
|
|
13
|
+
|
|
14
|
+
- 错误增加有用上下文但保留原始 cause;
|
|
15
|
+
- 只在能够恢复、映射、补偿或增加边界上下文时捕获;
|
|
16
|
+
- 用户信息、运维日志和机器错误码分离;
|
|
17
|
+
- 不泄露秘密、内部路径、SQL、Token 或敏感数据;
|
|
18
|
+
- retry 必须限定可重试错误、次数、退避、抖动和幂等性;
|
|
19
|
+
- panic/exception/process exit 只允许在对应语言和应用边界定义的位置。
|
|
20
|
+
|
|
21
|
+
## 资源生命周期
|
|
22
|
+
|
|
23
|
+
任何资源都要回答:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
谁创建?
|
|
27
|
+
谁拥有?
|
|
28
|
+
何时可用?
|
|
29
|
+
如何取消/关闭?
|
|
30
|
+
失败时如何清理?
|
|
31
|
+
重复关闭是否安全?
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
资源包括文件、连接、事务、锁、线程、goroutine、异步任务、timer、监听器、订阅、子进程、缓存和临时目录。
|
|
35
|
+
|
|
36
|
+
## 并发
|
|
37
|
+
|
|
38
|
+
- 并发任务必须有所有者和终止条件;
|
|
39
|
+
- 传播取消、截止时间和 backpressure;
|
|
40
|
+
- 共享可变状态需要同步策略;
|
|
41
|
+
- 不启动无法观察、无法等待或无法清理的后台任务;
|
|
42
|
+
- 处理重复、乱序、过期响应和部分失败;
|
|
43
|
+
- 语言适配器决定具体 primitive,不跨语言复制模式。
|
|
44
|
+
|
|
45
|
+
## 验证
|
|
46
|
+
|
|
47
|
+
至少使用一种:
|
|
48
|
+
|
|
49
|
+
- 类型/编译检查;
|
|
50
|
+
- 资源泄漏或并发测试;
|
|
51
|
+
- race detector、sanitizer、静态分析;
|
|
52
|
+
- 超时/取消/失败路径测试;
|
|
53
|
+
- 精确 review checklist。
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 通用文档与注释
|
|
2
|
+
|
|
3
|
+
## 注释解释 WHY
|
|
4
|
+
|
|
5
|
+
注释用于解释代码无法自证的内容:
|
|
6
|
+
|
|
7
|
+
- 兼容性、协议与平台限制;
|
|
8
|
+
- 非直观的性能或安全权衡;
|
|
9
|
+
- 数据迁移和历史原因;
|
|
10
|
+
- 资源生命周期或并发不变量;
|
|
11
|
+
- 临时例外及删除条件。
|
|
12
|
+
|
|
13
|
+
不逐行翻译实现,不用注释掩盖模糊命名和职责混合。
|
|
14
|
+
|
|
15
|
+
## 公共合同文档
|
|
16
|
+
|
|
17
|
+
公共 API、包、模块、crate、命令、配置和扩展点按语言生态使用 JSDoc/TSDoc、Javadoc、Go doc 或 rustdoc。至少说明:
|
|
18
|
+
|
|
19
|
+
- 用途和适用边界;
|
|
20
|
+
- 输入、输出、失败与副作用;
|
|
21
|
+
- 生命周期、线程/并发或取消要求;
|
|
22
|
+
- 兼容性和示例;
|
|
23
|
+
- 安全敏感约束。
|
|
24
|
+
|
|
25
|
+
内部显而易见的 getter/setter 不需要重复性文档。
|
|
26
|
+
|
|
27
|
+
## 架构文档
|
|
28
|
+
|
|
29
|
+
以下变化应同步文档或 ADR:
|
|
30
|
+
|
|
31
|
+
- 模块边界和依赖方向;
|
|
32
|
+
- public API 或协议;
|
|
33
|
+
- 数据模型、迁移和事件;
|
|
34
|
+
- 部署拓扑和运行环境;
|
|
35
|
+
- 质量门禁与支持版本;
|
|
36
|
+
- 重大例外和阶段性目标。
|
|
37
|
+
|
|
38
|
+
## TODO
|
|
39
|
+
|
|
40
|
+
TODO 必须包含可行动信息:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
TODO(owner-or-issue): 原因;删除/完成条件
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
禁止把无期限风险转为无上下文 TODO。
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 通用测试策略
|
|
2
|
+
|
|
3
|
+
## 按风险选择层级
|
|
4
|
+
|
|
5
|
+
- **单元测试**:纯领域逻辑、边界值、错误分支;
|
|
6
|
+
- **组件/切片测试**:框架组件或单层集成;
|
|
7
|
+
- **集成测试**:数据库、消息、文件系统、网络、容器或模块协作;
|
|
8
|
+
- **契约测试**:公共 API、事件、schema、SDK/服务消费者;
|
|
9
|
+
- **端到端测试**:关键用户和交付路径;
|
|
10
|
+
- **属性/Fuzz/并发测试**:解析器、协议、算法和竞争风险;
|
|
11
|
+
- **基准/性能回归**:已识别性能合同。
|
|
12
|
+
|
|
13
|
+
测试布局由语言生态、构建系统和仓库事实决定;通用层只规定测试责任,不规定文件后缀、共置方式或 source set。具体位置全部由对应语言适配器给出。
|
|
14
|
+
|
|
15
|
+
## 行为优先
|
|
16
|
+
|
|
17
|
+
- 测试公开行为和可观察结果;
|
|
18
|
+
- 避免绑定私有实现、内部调用顺序和脆弱 snapshot;
|
|
19
|
+
- 缺陷修复优先提供可复现回归测试;
|
|
20
|
+
- 测试失败信息能定位输入、期望和实际结果;
|
|
21
|
+
- mock 只隔离真正外部或不稳定边界;
|
|
22
|
+
- 核心集成风险使用真实实现、容器或轻量替代;
|
|
23
|
+
- 时间、随机、网络和并发测试需可控且可重复。
|
|
24
|
+
|
|
25
|
+
## 测试数据
|
|
26
|
+
|
|
27
|
+
- 使用 builder/factory/fixture 表达意图;
|
|
28
|
+
- 不复制大段无关数据;
|
|
29
|
+
- 敏感生产数据不得进入测试仓库;
|
|
30
|
+
- 测试拥有并清理创建的文件、连接、容器和进程;
|
|
31
|
+
- 并行测试不得共享无保护状态。
|
|
32
|
+
|
|
33
|
+
## 覆盖率
|
|
34
|
+
|
|
35
|
+
覆盖率是发现盲区的信号,不是质量代理。门槛应按模块风险、存量基线与新增代码 Ratchet 设定,不通过排除关键文件来获取数字。
|
|
36
|
+
|
|
37
|
+
## CI
|
|
38
|
+
|
|
39
|
+
项目规范写明:
|
|
40
|
+
|
|
41
|
+
- 本地快速集合;
|
|
42
|
+
- PR 必跑集合;
|
|
43
|
+
- 主分支/夜间慢测试;
|
|
44
|
+
- flaky test 处理与隔离期限;
|
|
45
|
+
- 各语言真实命令和所需服务。
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# 安全、配置与数据
|
|
2
|
+
|
|
3
|
+
## 外部输入
|
|
4
|
+
|
|
5
|
+
在信任边界验证并标准化:
|
|
6
|
+
|
|
7
|
+
- HTTP/RPC/消息/CLI 输入;
|
|
8
|
+
- 文件路径、文件类型和上传内容;
|
|
9
|
+
- URL、重定向和来源;
|
|
10
|
+
- 环境变量和配置文件;
|
|
11
|
+
- 数据库、缓存和第三方响应;
|
|
12
|
+
- 反序列化、模板和富文本。
|
|
13
|
+
|
|
14
|
+
验证结果转换为内部可信模型,避免在业务代码中反复使用原始动态数据。
|
|
15
|
+
|
|
16
|
+
## 注入与输出
|
|
17
|
+
|
|
18
|
+
- SQL、命令和查询使用参数化接口;
|
|
19
|
+
- HTML/模板输出按上下文转义;
|
|
20
|
+
- 原始 HTML、动态代码、反射和 shell 仅在受控边界使用;
|
|
21
|
+
- 路径在受控根内解析并防止遍历、symlink 越界;
|
|
22
|
+
- 前端可见性不能替代服务端授权;
|
|
23
|
+
- 日志和错误响应不包含秘密或过量个人信息。
|
|
24
|
+
|
|
25
|
+
## 配置
|
|
26
|
+
|
|
27
|
+
- 在应用启动/模块边界读取、验证、标准化配置;
|
|
28
|
+
- 业务代码依赖只读配置对象而不是随处读取环境变量;
|
|
29
|
+
- 环境差异由外部配置表达,不复制业务逻辑;
|
|
30
|
+
- 默认值必须安全且可观察;
|
|
31
|
+
- 配置来源、优先级和必填项写入项目规范;
|
|
32
|
+
- secret 只通过批准的 secret provider/环境注入,不提交仓库。
|
|
33
|
+
|
|
34
|
+
## 数据与迁移
|
|
35
|
+
|
|
36
|
+
- schema、序列化格式和事件版本属于兼容合同;
|
|
37
|
+
- 迁移可重入、可观察、必要时可回滚;
|
|
38
|
+
- 破坏性变化采用 expand/migrate/contract 或项目确认策略;
|
|
39
|
+
- 数据保留、删除、审计和隐私规则明确;
|
|
40
|
+
- 幂等性键、事务边界和一致性模型按业务风险定义。
|
|
41
|
+
|
|
42
|
+
## 依赖安全
|
|
43
|
+
|
|
44
|
+
新依赖评估维护状态、许可证、供应链、体积、平台和替代方案。使用仓库已有审计工具;不得凭 Builder 擅自引入安全产品。
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 性能、可观测性与国际化
|
|
2
|
+
|
|
3
|
+
## 性能
|
|
4
|
+
|
|
5
|
+
- 优化前先确认用户/系统指标和测量方法;
|
|
6
|
+
- 优先减少算法复杂度、I/O 次数、网络往返和大型复制;
|
|
7
|
+
- 大集合采用分页、流式、窗口化或虚拟化;
|
|
8
|
+
- 缓存定义键、容量、淘汰、失效、一致性和隔离;
|
|
9
|
+
- 并发度、队列、重试和批量大小有上限;
|
|
10
|
+
- 非直观优化附 WHY、基准或回归测试;
|
|
11
|
+
- 不因微优化破坏清晰 API 和正确性。
|
|
12
|
+
|
|
13
|
+
## 可观测性
|
|
14
|
+
|
|
15
|
+
- 日志、指标和 trace 使用稳定字段和关联 ID;
|
|
16
|
+
- 日志级别表达可操作性,不重复记录同一错误;
|
|
17
|
+
- 不记录秘密和不必要个人数据;
|
|
18
|
+
- 异步任务、队列、重试、缓存和外部调用有成功/失败/延迟信号;
|
|
19
|
+
- health/readiness 反映真实依赖与启动状态;
|
|
20
|
+
- 采样、基数和保留策略避免成本失控。
|
|
21
|
+
|
|
22
|
+
## 国际化
|
|
23
|
+
|
|
24
|
+
仅在项目有用户多语言或区域化需求时生成:
|
|
25
|
+
|
|
26
|
+
- 用户可见文本进入项目既有 i18n 系统;
|
|
27
|
+
- 文案键按领域命名;
|
|
28
|
+
- 插值使用具名参数;
|
|
29
|
+
- 不用字符串拼接构造自然语言;
|
|
30
|
+
- 日期、数字、货币、时区、排序和复数使用区域 API;
|
|
31
|
+
- 日志/错误码与用户文案分离;
|
|
32
|
+
- UI 考虑文本扩展、RTL 和可访问性。
|
|
33
|
+
|
|
34
|
+
## 验证
|
|
35
|
+
|
|
36
|
+
根据项目事实选择 profiler、benchmark、bundle check、load test、指标查询或 review 证据,不生成不存在的门禁命令。
|