@namewta/speculo 0.8.10 → 0.8.13

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 (56) hide show
  1. package/README.md +2 -1
  2. package/package.json +1 -1
  3. package/template/canonical/canonical-specdev-goal-plan.md +27 -11
  4. package/template/canonical/canonical-specdev-grill-with-docs.md +1 -1
  5. package/template/canonical/canonical-specdev-orchestrate-implementation.md +56 -18
  6. package/template/canonical/canonical-specdev-spec.md +1 -1
  7. package/template/canonical/canonical-specdev-tickets.md +43 -6
  8. package/template/skills/engineering-standards-builder/README.md +6 -28
  9. package/template/skills/engineering-standards-builder/SKILL.md +88 -163
  10. package/template/skills/engineering-standards-builder/examples/README.md +2 -0
  11. package/template/skills/engineering-standards-builder/manifest.txt +4 -0
  12. package/template/skills/engineering-standards-builder/references/rules/00-governance-and-precedence.md +22 -29
  13. package/template/skills/engineering-standards-builder/references/rules/01-project-discovery.md +26 -59
  14. package/template/skills/engineering-standards-builder/references/rules/02-evidence-topology-and-scope.md +28 -55
  15. package/template/skills/engineering-standards-builder/references/rules/03-interview-and-decisions.md +4 -3
  16. package/template/skills/engineering-standards-builder/references/rules/14-generation-contract.md +64 -80
  17. package/template/skills/engineering-standards-builder/references/rules/15-validation-contract.md +24 -47
  18. package/template/skills/engineering-standards-builder/references/rules/16-language-adapter-contract.md +11 -48
  19. package/template/skills/engineering-standards-builder/references/rules/README.md +3 -3
  20. package/template/skills/engineering-standards-builder/scripts/self-test.mjs +51 -5
  21. package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +16 -4
  22. package/template/skills/engineering-standards-builder/scripts/validate-generated-skill.mjs +166 -64
  23. package/template/skills/engineering-standards-builder/templates/README.md +12 -3
  24. package/template/skills/engineering-standards-builder/templates/domain-skill/SKILL.md.template +32 -0
  25. package/template/skills/engineering-standards-builder/templates/project-skill/SKILL.md.template +16 -11
  26. package/template/skills/engineering-standards-builder/templates/project-skill/generated-skill-set.json.template +7 -0
  27. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/00-project-profile.md.template +3 -1
  28. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/01-module-map.md.template +4 -0
  29. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/02-decisions-and-exceptions.md.template +1 -1
  30. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/03-skill-map.md.template +19 -0
  31. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/04-source-and-template-map.md.template +22 -0
  32. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/review-checklist.md.template +2 -0
  33. package/template/skills/git-history-squash/SKILL.md +100 -0
  34. package/template/skills/git-history-squash/assets/request-template.json +18 -0
  35. package/template/skills/git-history-squash/references/recovery-contract.md +50 -0
  36. package/template/skills/git-history-squash/references/rewrite-contract.md +123 -0
  37. package/template/skills/git-history-squash/references/submodule-contract.md +54 -0
  38. package/template/skills/git-history-squash/scripts/git-history-squash.mjs +1171 -0
  39. package/template/workflows/specdev/I-implement/I-implement.md +18 -7
  40. package/template/workflows/specdev/I-implement/evidence-template.md +13 -0
  41. package/template/workflows/specdev/I-implement/execution-preflight.md +4 -0
  42. package/template/workflows/specdev/O-orchestrate-implementation/execution-loop.md +3 -2
  43. package/template/workflows/specdev/P-goal-plan/completion-control.md +3 -0
  44. package/template/workflows/specdev/P-goal-plan/lead-orchestration.md +6 -2
  45. package/template/workflows/specdev/README.md +1 -1
  46. package/template/workflows/specdev/T-tickets/T-tickets.md +16 -3
  47. package/template/workflows/specdev/T-tickets/ticket-readiness.md +3 -0
  48. package/template/workflows/specdev/T-tickets/ticket-template.md +3 -0
  49. package/template/workflows/specdev/T-tickets/tickets-map-template.md +15 -0
  50. package/template/workflows/specdev/common/rules/artifact-contract.md +1 -1
  51. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +5 -2
  52. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +4 -2
  53. package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +2 -1
  54. package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +2 -1
  55. package/template/workflows/specdev/common/skills/subagent-delivery/references/source-package.md +4 -2
  56. package/template/workflows/specdev/common/tools/validate-specdev.mjs +143 -3
@@ -1,79 +1,46 @@
1
1
  # 项目发现合同
2
2
 
3
- ## 原则
3
+ ## 确定性基线
4
4
 
5
- 规范生成必须先建立 Project Inventory。扫描以只读、确定性、可追溯为目标:
6
-
7
- - 不执行安装、构建、测试、代码生成或项目脚本;
8
- - 不依赖目录名字猜测技术栈;
9
- - manifest、配置、CI、源码与文档相互交叉验证;
10
- - 每个判断保留证据路径和置信度;
11
- - 扫描器结果是基线,必须再抽样源码和边界。
12
-
13
- ## 确定性扫描
14
-
15
- 运行:
5
+ 先运行只读扫描:
16
6
 
17
7
  ```bash
18
- node <skill-root>/scripts/discover-project.mjs \
19
- --root <project-root> \
20
- --pretty \
21
- --output <approved-path>/project-inventory.json
8
+ node <skill-root>/scripts/discover-project.mjs --root <project-root> --pretty
22
9
  ```
23
10
 
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、构建和缓存目录。
11
+ 默认捕获 stdout,不把 inventory 写进项目。只有用户明确需要保留诊断证据时才使用 `--output`,且输出路径必须在项目根内。
36
12
 
37
- ## 人工语义抽样
13
+ 扫描器识别 Workspace/Monorepo、多模块、语言、框架、build/test 系统、CI、现有规范以及生成/Vendor/构建目录。它不执行安装、构建、测试、生成器、项目脚本或网络请求。
38
14
 
39
- 至少检查每个可编辑模块的:
15
+ ## 项目语义审计
40
16
 
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 中的有效合同。
17
+ 扫描之后仍要检查每个可编辑模块的:
50
18
 
51
- 只统计扩展名不等于理解架构。框架依赖存在但没有源码使用时,要记录为“依赖信号”,不能直接判定为全模块规则。
19
+ 1. manifest、build、formatter、lint、编译和测试配置;
20
+ 2. CI 真正执行的命令及 working directory;
21
+ 3. 公共入口、依赖方向和跨模块消费者;
22
+ 4. 成熟实现、相应测试、失败路径与资源清理;
23
+ 5. 用户指定需要学习的代码和目录;
24
+ 6. FM、scaffold、generator asset、catalog、context contract 与其 validator;
25
+ 7. README、ADR、AGENTS、CLAUDE、CONTRIBUTING 和现有 Skills;
26
+ 8. legacy、generated、vendor、fixture、冻结和不可编辑区域。
52
27
 
53
- ## 置信度
28
+ 代表性样本按架构角色和调用链选择,不按文件名排序取前几个。只出现依赖或扩展名是“信号”,不能单独升级为全模块规则。
54
29
 
55
- - **high**:manifest、编译配置、框架入口、CI 命令或源码导入明确声明;
56
- - **medium**:大量稳定源码模式与目录结构相互支持;
57
- - **low**:仅由目录名、少量文件或间接依赖推断。
30
+ ## Agent Team 证据合同
58
31
 
59
- 低置信度、高影响判断必须人工确认或进入访谈。
32
+ 有独立证据域且运行环境支持时,由 leader 派只读 scouts 并行审计。每个 scout 返回:Scope、Observed capability、Canonical source paths、Mature implementations、Template paths、Consumers and tests、Applicable conditions、Legacy/counterexamples、Conflicts/unknowns、Recommended skill boundary。
60
33
 
61
- ## 排除目录
34
+ scout 不修改项目,不直接生成最终 Skill。leader 复读高影响文件、解决跨域冲突并负责唯一写入。团队不可用时按同一合同顺序执行。
62
35
 
63
- 默认排除依赖、构建、缓存、Vendor 与生成输出,例如:
36
+ ## 置信度
64
37
 
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
- ```
38
+ - **high**:配置、入口、CI、测试或真实消费者直接支持;
39
+ - **medium**:多个稳定源码模式与目录结构相互支持;
40
+ - **low**:仅由目录名、少量文件或间接依赖推断。
70
41
 
71
- 项目明确把某个同名目录作为源码时,必须由证据覆盖默认排除,并缩小扫描范围。
42
+ 低置信度且高影响的判断必须询问或登记为 `pending-decision`。
72
43
 
73
- ## 发现完成条件
44
+ ## 完成条件
74
45
 
75
- - 每个模块都有路径、语言、框架、运行时、构建和测试事实;
76
- - 每个判断可追溯;
77
- - 作用域互不混淆;
78
- - 冲突、未知项和扫描限制已记录;
79
- - 尚未向用户询问可以直接从仓库回答的问题。
46
+ 每个模块和模板职责均可追溯;项目规范来源、反例、冲突、未知项和扫描限制明确;没有向用户询问仓库可直接回答的问题。
@@ -1,47 +1,28 @@
1
- # 证据、项目拓扑与规则作用域
1
+ # 证据、项目拓扑与作用域
2
2
 
3
- ## 模块模型
4
-
5
- 每个模块至少记录:
3
+ ## 最小模块记录
6
4
 
7
5
  ```text
8
6
  id
9
7
  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
8
+ languages/frameworks/runtimes
9
+ build and test systems
10
+ source/test roots
11
+ public entrypoints
12
+ generated/frozen paths
13
+ quality gates
14
+ evidence/confidence
22
15
  ```
23
16
 
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`
17
+ 模块可以是 Workspace package、Maven/Gradle 子项目、Go module、Cargo crate,也可以是由源码、配置和依赖边界共同证明的独立应用。多个 manifest 不自动等于 Monorepo。
34
18
 
35
- 不要因为有多个 manifest 就自动称为 Monorepo;必须判断它们是否由共同根、Workspace、CI、发布或依赖关系管理。
19
+ ## Scope
36
20
 
37
- ## Scope 语法
38
-
39
- 生成规则时使用最窄充分 scope:
21
+ 使用最窄充分范围:
40
22
 
41
23
  ```text
42
24
  repository
43
25
  module:apps/web
44
- module:services/orders
45
26
  language:typescript
46
27
  framework:vue
47
28
  runtime:node
@@ -49,39 +30,31 @@ path:packages/sdk/**
49
30
  public-api:packages/sdk
50
31
  ```
51
32
 
52
- 同一条规则需要多个 scope 时显式列出,不使用“前端”“后端”这类无法映射路径的模糊标签,除非项目已经定义这些边界。
33
+ “前端”“后端”只有在项目已有对应路径定义时才可使用。
53
34
 
54
- ## 证据记录
35
+ ## 项目来源记录
55
36
 
56
- 推荐格式:
37
+ 项目源码或模板证据至少记录:
57
38
 
58
39
  ```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
40
+ Path: docs/fm/controller.java.ftl
41
+ Role: canonical scaffold template
42
+ Applies when: generating a controller
43
+ Produces: <target path/pattern>
44
+ Integration: <manual registration/import/configuration>
45
+ Verification: <existing validator/test/build command>
46
+ Consumers/tests: <paths>
47
+ Confidence: high
66
48
  ```
67
49
 
68
- 命令证据记录命令与来源,例如“`.github/workflows/ci.yml` 中执行 `pnpm test`”,不能只写“项目有测试”。
50
+ 生成 Skill 只引用真实项目路径,不复制源码或模板正文。若没有正式模板,引用同一 owner/scope 下的成熟实现和测试;没有足够证据则省略规则或标记待确认。
69
51
 
70
52
  ## 冲突类型
71
53
 
72
- 至少识别:
73
-
74
- - manifest 与源码不一致;
75
- - 同一 scope 内多种无规律命名或目录策略;
76
- - 本地脚本与 CI 门禁不一致;
77
- - 声明的 Java/Node/Go/Rust 版本不一致;
78
- - React 与 Vue、Maven 与 Gradle等多框架/多构建系统共存但边界不清;
79
- - 公开 API 实际被跨模块深导入绕过;
80
- - 生成代码与手写代码混合;
81
- - 新目标规则无法通过当前门禁。
54
+ 重点识别 manifest 与源码不一致、CI 与本地脚本不一致、模板与成熟代码不一致、公开 API 被深导入绕过、generated 与手写代码混合、多框架边界不清,以及目标规则无法通过当前门禁。
82
55
 
83
- 冲突不得通过“选择多数”静默消失。高影响冲突进入决策,低影响冲突进入 Ratchet 或局部例外。
56
+ 冲突不得靠“选择多数”消失。高影响冲突进入决策;存量问题进入 Ratchet、迁移或局部例外。
84
57
 
85
- ## 作用域完成条件
58
+ ## 完成条件
86
59
 
87
- 每个被选规则包和每条项目规则都能映射到明确路径或模块;没有框架规则泄漏到无关模块;不存在用仓库根 manifest 覆盖所有子项目的推断。
60
+ 每条规范和每个 Skill 边界均可映射到明确 scope 与路径;框架规则不泄漏到其他模块;模板的责任范围与后续手工集成已说明。
@@ -66,10 +66,11 @@ Verification:
66
66
 
67
67
  用户已经明确授权实施时:
68
68
 
69
- - 使用仓库主导实践;
70
- - 对新项目采用官方适用默认;
69
+ - 使用治理合同中优先级最高且已复核的项目证据;
70
+ - 用户指定模板、当前门禁与成熟受测实现发生冲突时,记录 current/target/migration,不按数量选择;
71
71
  - 对存量项目采用 Ratchet;
72
- - 不确定且高风险的事项标记为 `pending-decision`,不伪造用户选择;
72
+ - 缺少项目证据的细节省略或标记为 `pending-decision`,只有安全与正确性底线可采用 Builder baseline;
73
+ - 不伪造用户选择或把通用默认写成项目既有规范;
73
74
  - 继续生成可用规范,不用形式化问答阻塞。
74
75
 
75
76
  ## 完成条件
@@ -1,105 +1,89 @@
1
- # 项目规范生成合同
1
+ # 项目 Skill Set 生成合同
2
2
 
3
- ## Canonical 路径
3
+ ## 最小结构
4
4
 
5
- 唯一正式规范:
5
+ 必须生成 `.agents/skills/engineering-standards/`,它是项目工程规范的权威入口和路由器。只有存在独立触发价值时才生成同级领域 Skill。
6
6
 
7
7
  ```text
8
- .agents/skills/engineering-standards/
8
+ .agents/skills/
9
+ engineering-standards/
10
+ SKILL.md
11
+ generated-skill-set.json
12
+ references/project/
13
+ 00-project-profile.md
14
+ 01-module-map.md
15
+ 02-decisions-and-exceptions.md
16
+ 03-skill-map.md
17
+ 04-source-and-template-map.md
18
+ review-checklist.md
19
+ <optional-domain-skill>/
20
+ SKILL.md
21
+ references/...
9
22
  ```
10
23
 
11
- 推荐树:
24
+ 根入口使用 `templates/project-skill/SKILL.md.template`;领域入口使用 `templates/domain-skill/SKILL.md.template`。详细内容只创建有证据且被入口路由的文件。
12
25
 
13
- ```text
14
- SKILL.md
15
- references/
16
- project/
17
- 00-project-profile.md
18
- 01-module-map.md
19
- 02-decisions-and-exceptions.md
20
- rules/
21
- architecture-and-boundaries.md
22
- files-and-naming.md
23
- api-errors-resources.md
24
- testing.md
25
- security-and-data.md
26
- quality-gates.md
27
- review-and-delivery.md
28
- typescript/...
29
- java/...
30
- go/...
31
- rust/...
32
- ```
26
+ ## Skill 拆分门
33
27
 
34
- 只创建有内容并被入口路由的目录。未使用语言目录不得存在。
28
+ 领域 Skill 必须同时具备:独立触发场景、重复使用价值、项目证据、清晰责任边界和上下文缩减收益。语言、目录、Agent 数量或“看起来完整”都不是拆分理由。
35
29
 
36
- ## 主入口
30
+ Skill 维护跨域规范、项目画像、模块地图、决策/例外、Skill Map 和来源地图。领域 Skill 维护特定开发工作流、关键源码/模板导航、集成点和验证方式;不得重新定义根 Skill 的冲突规则。
37
31
 
38
- 使用 `templates/project-skill/SKILL.md.template`。主入口必须:
32
+ ## 项目源码与模板引用
39
33
 
40
- - frontmatter `name: engineering-standards`;
41
- - 描述适用项目与触发分支;
42
- - 先读取 project profile 和 module map;
43
- - 根据当前变更 scope 路由到最小 references;
44
- - 要求实现前检查边界、实现后运行真实门禁;
45
- - 不复制详细语言规范。
34
+ 每个重要来源使用项目根相对路径,并说明:
46
35
 
47
- ## 项目 References
36
+ - 何时读取;
37
+ - 它负责的能力或生成范围;
38
+ - 输出目标;
39
+ - 生成后需要的注册、import、配置或补充实现;
40
+ - 对应消费者、测试或 validator;
41
+ - 发现 legacy 或不适用场景时如何处理。
48
42
 
49
- 使用模板:
43
+ 项目 FM、scaffold 和源码保持唯一事实源。Skill 不复制 `.ftl`、源码文件或大段代码;只做精准导航和行为约束。
50
44
 
51
- - `00-project-profile.md.template`
52
- - `01-module-map.md.template`
53
- - `02-decisions-and-exceptions.md.template`
54
- - `review-checklist.md.template`
45
+ ## 所有权清单
55
46
 
56
- 生成规则统一格式:
47
+ 根目录中的 `generated-skill-set.json` 使用 `templates/project-skill/generated-skill-set.json.template`,最小 schema:
57
48
 
58
- ```text
59
- ### <Rule ID> <Title>
60
- Scope:
61
- Level: MUST | SHOULD | MAY
62
- Source:
63
- Applies when:
64
- Rule:
65
- Rationale:
66
- Verification:
67
- Exception:
49
+ ```json
50
+ {
51
+ "schema_version": 1,
52
+ "generator": "engineering-standards-builder",
53
+ "skills": [
54
+ {
55
+ "name": "engineering-standards",
56
+ "path": ".agents/skills/engineering-standards",
57
+ "role": "router"
58
+ }
59
+ ]
60
+ }
68
61
  ```
69
62
 
70
- 不是每个轻量建议都要展开九个字段,但所有 MUST/SHOULD 必须至少有 Scope、Level、Source、Rule、Verification。
71
-
72
- ## 选择性生成
73
-
74
- - 通用规则按项目风险裁剪,但安全、错误、资源、测试和门禁不能被无理由删除;
75
- - TypeScript 项目才生成 `typescript/`;
76
- - React/Vue 分别按模块生成,混合仓库分别限定 scope;
77
- - Java/Spring Boot、Go、Rust 同理;
78
- - 未支持语言生成通用规则与明确 fallback,不伪造专属语法规范。
63
+ 允许的 role 只有 `router` 和 `domain`。必须恰有一个 router;path 必须等于 `.agents/skills/<name>`。不要加入时间戳、hash、模型、扫描计数或可从文件树重新推导的字段。
79
64
 
80
- ## 命令
65
+ ## 安全刷新
81
66
 
82
- 生成规范只记录:
67
+ - create:目标名称与已有未登记 Skill 冲突时不得覆盖;
68
+ - refresh:只管理旧清单列出的 Skill,保留其他 `.agents/skills/*`;
69
+ - legacy 根 Skill 无清单时,只可在计划中声明接管 `engineering-standards` 本身,不能顺带接管同级 Skills;
70
+ - 删除和重命名必须在计划中列出;
71
+ - 先形成完整候选并验证,再替换已登记内容;失败时保持或恢复旧 Skill Set;
72
+ - 保留仍有效的用户决策、例外、公共 API 和项目特有知识;
73
+ - 相同输入重复刷新不得产生无意义 diff。
83
74
 
84
- - manifest/build/CI 中已存在的命令;
85
- - 用户明确确认要新增的命令;
86
- - 对尚未实现的目标命令标记 `planned`,不能当作当前可执行门禁。
75
+ 兼容入口只在用户要求或旧路径已存在时使用 `templates/compatibility/`,并保持一句单向路由;它们不进入项目规范正文。
87
76
 
88
- ## 兼容入口
77
+ ## 规则格式
89
78
 
90
- 兼容文件只有一句单向路由,使用 `templates/compatibility/`。创建条件:
79
+ 所有 MUST/SHOULD 至少包含:
91
80
 
92
- - 仓库已有旧路径;
93
- - 用户要求;
94
- - `.claude` 或其他 Agent 目录实际存在并需要入口。
95
-
96
- 不得让 `.agents/skills/engineering-standards` 指回兼容路径。
97
-
98
- ## 写入安全
81
+ ```text
82
+ Scope:
83
+ Level: MUST | SHOULD
84
+ Source:
85
+ Rule:
86
+ Verification:
87
+ ```
99
88
 
100
- - create:目标已存在时停止或转 merge;
101
- - merge/refresh:先读取、备份或通过版本控制保护,再原子替换;
102
- - dry-run:只输出计划和内容摘要,不写文件;
103
- - 不覆盖目标根外路径;
104
- - 不修改生成代码或 Vendor;
105
- - 不删除未在计划中声明的用户文件。
89
+ 项目命令只能来自现有配置/CI 或用户明确决定。尚未实现的命令标记 `planned`,不能报告为当前门禁。
@@ -1,65 +1,42 @@
1
- # 验证合同
1
+ # Skill Set 验证合同
2
2
 
3
3
  ## 静态验证
4
4
 
5
5
  运行:
6
6
 
7
7
  ```bash
8
- node <skill-root>/scripts/validate-generated-skill.mjs \
9
- --root <project-root> \
10
- --strict
8
+ node <skill-root>/scripts/validate-generated-skill.mjs --root <project-root> --strict
11
9
  ```
12
10
 
13
- 必须确认:
11
+ 验证器必须确认:
14
12
 
15
- - canonical 路径和 `SKILL.md` 存在;
16
- - frontmatter 合法且 `name: engineering-standards`;
17
- - 所有相对 Markdown 引用可解析;
13
+ - `engineering-standards` 根路由和六个项目 references 存在;
14
+ - `generated-skill-set.json` schema、唯一 router、name/path/role 与实际目录一致;
15
+ - 清单中每个 Skill 的 frontmatter 合法,根入口能路由到所有领域 Skill;
16
+ - Markdown 链接只能落在项目根内,目标存在且不经 symlink 越界;
17
+ - 来源地图至少引用一个 Skill 外的真实项目文件;
18
18
  - 没有未替换模板变量;
19
- - project profile、module mapdecisions/exceptions 存在;
20
- - 每条 MUST/SHOULD 规则有 scope、source 和 verification;
21
- - 未使用语言/框架目录没有生成;
22
- - compatibility wrapper 仅一句且单向;
23
- - 没有 wrapper 循环;
24
- - canonical 内容只有一份。
19
+ - MUST/SHOULD 规则包含 scopesource、rule 和 verification;
20
+ - 生成的语言/框架规则有 Project Inventory 信号;
21
+ - compatibility wrapper 只有一句且不形成循环;
22
+ - 同名 canonical 正文没有重复副本。
25
23
 
26
- ## 语义验证
27
-
28
- 人工检查:
29
-
30
- - 模块地图与仓库事实一致;
31
- - 每个命令来自 manifest/CI/用户决策;
32
- - React/Vue、Java/Spring、Go、Rust 规则只应用于正确 scope;
33
- - current/target/migration 没有混写;
34
- - 用户决定和仍有效例外被保留;
35
- - 没有将 Builder 默认伪装为仓库事实;
36
- - 不存在通用规则中的语言专属目录硬编码。
37
-
38
- ## 项目门禁
24
+ 验证器只检查清单声明的 Builder 产物,不把清单外 Skill 当作待删除对象。
39
25
 
40
- 只运行已授权且项目真实存在的命令。记录:
41
-
42
- ```text
43
- command
44
- working directory
45
- exit code
46
- result
47
- unverified impact
48
- ```
49
-
50
- 失败时保留原始失败,不通过改配置、删测试或扩大排除获取通过。
26
+ ## 语义验证
51
27
 
52
- ## 幂等性
28
+ 人工复核模块地图、Skill 拆分、命令来源、模板责任范围、消费者/测试、current/target/migration、用户决策和例外。尤其确认:
53
29
 
54
- generated Skill 重新执行同一输入时应产生零无意义 diff。若时间戳会变化,应从生成内容中删除时间戳或使用稳定的源版本字段。
30
+ - 没有把 Builder 默认写成项目事实;
31
+ - 没有用 legacy 多数模式覆盖用户指定模板或成熟实现;
32
+ - 没有复制项目模板/源码造成第二事实源;
33
+ - 每个领域 Skill 都能独立触发并减少上下文;
34
+ - 未覆盖范围被明确省略或标为待确认,而非伪造规则。
55
35
 
56
- ## 报告
36
+ ## 项目门禁与幂等性
57
37
 
58
- 结果分为:
38
+ 只运行项目真实存在且已授权的命令,记录 working directory、退出码、结果和未验证影响。失败时保留原始失败,不改配置或删测试掩盖问题。
59
39
 
60
- - passed;
61
- - failed;
62
- - not-run;
63
- - not-applicable。
40
+ 使用相同项目事实与决策再次生成,应无无意义 diff。时间戳和扫描计数不得进入生成内容。
64
41
 
65
- “未运行”不能报告为通过。
42
+ 结果使用 `passed`、`failed`、`not-run`、`not-applicable`;未运行不能报告为通过。
@@ -1,55 +1,18 @@
1
- # 语言适配器与未内置语言 Fallback
1
+ # 语言适配器与 Fallback
2
2
 
3
- ## 适配器组成
3
+ Builder 内置语言/框架 references 是发现和审计检查清单。它们帮助识别公共 API、类型/错误/资源、并发、测试、工具链和版本风险,但不能覆盖项目代码、模板、配置与用户决定。
4
4
 
5
- 新增语言或框架支持必须同时提供:
6
-
7
- ```text
8
- references/<language>/00-detection-and-scope.md
9
- references/<language>/... language rules
10
- examples/<language>/<fixture>/
11
- discover-project.mjs detection signals
12
- self-test.mjs assertions
13
- SKILL.md routing pointer
14
- manifest entry
15
- ```
16
-
17
- 框架、运行时和应用类型放在语言目录下的 `frameworks/`、`runtimes/`、`app-types/`,不要污染通用规则。
18
-
19
- ## Detection
20
-
21
- 检测至少交叉使用两类信号:
22
-
23
- - manifest/build/toolchain;
24
- - 源文件与入口;
25
- - CI/build 命令;
26
- - 框架依赖或注解;
27
- - 官方目录/模块配置。
28
-
29
- 仅文件扩展名通常为 medium confidence;manifest + 源码入口可为 high confidence。
30
-
31
- ## 语言规则最小覆盖
32
-
33
- - 模块/package/crate 与 public API;
34
- - 命名和目录;
35
- - 类型/错误/资源/并发;
36
- - 测试布局和工具;
37
- - formatter、lint/static analysis、build;
38
- - 版本与兼容策略;
39
- - 官方依据;
40
- - 语言专属访谈触发条件。
5
+ 只读取 Project Inventory 和源码证据命中的适配器。一个依赖、一种扩展名或根目录 manifest 不能让规则扩散到所有模块。
41
6
 
42
7
  ## 未内置语言
43
8
 
44
- 发现 Python、Kotlin、C#、C/C++ 或其他语言而没有内置适配器时:
45
-
46
- 1. 仍生成通用规则;
47
- 2. 从仓库事实提取真实 formatter/linter/test/build 命令;
48
- 3. 保留现有目录和语言惯例;
49
- 4. 将语言专属规则标记为 `pending-adapter`;
50
- 5. 不把 TypeScript、Java、Go 或 Rust 模式套用;
51
- 6. 必要时按本合同构建新适配器。
9
+ 遇到 Python、Kotlin、C#、C/C++ 或其他未内置语言时:
52
10
 
53
- ## 完成条件
11
+ 1. 从项目代码、配置、测试和 CI 提取真实规范;
12
+ 2. 保留现有目录、公开边界和成熟惯例;
13
+ 3. 引用真实 formatter、lint、test 和 build 命令;
14
+ 4. 对缺乏证据的语言细节省略或标记 `pending-decision`;
15
+ 5. 不套用 TypeScript、Java、Go 或 Rust 模式;
16
+ 6. 只有需要让 Builder 本身长期识别该生态时,才扩展语言适配器与 fixture。
54
17
 
55
- 适配器能被发现、选择、生成和测试;无触发项目不会加载它;其 examples self-test 实际使用。
18
+ 无内置适配器不阻止生成项目专属 Skill。项目证据优先于 Builder 覆盖范围。
@@ -1,6 +1,6 @@
1
1
  # 通用规则索引
2
2
 
3
- `references/rules/` 只描述跨语言成立的目标、证据和治理合同。语言、框架、运行时的具体实现必须进入对应适配器。
3
+ `references/rules/` 描述跨语言的审计维度、证据和治理合同。它们是 Builder 的工作方法,不是可直接复制到项目的规范正文;语言、框架、运行时的具体结论必须由项目证据支持。
4
4
 
5
5
  按运行阶段读取:
6
6
 
@@ -18,6 +18,6 @@
18
18
  - [工具链、质量门禁与 CI](11-tooling-quality-gates-and-ci.md)
19
19
  - [Git、评审与交付](12-git-review-and-delivery.md)
20
20
  - [采用、例外与 Ratchet](13-adoption-exceptions-and-ratchets.md)
21
- - [项目规范生成合同](14-generation-contract.md)
22
- - [验证合同](15-validation-contract.md)
21
+ - [项目 Skill Set 生成合同](14-generation-contract.md)
22
+ - [Skill Set 验证合同](15-validation-contract.md)
23
23
  - [语言适配器与 Fallback](16-language-adapter-contract.md)