bain-riper-cli 0.1.1

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 (29) hide show
  1. package/bin/cli.js +14 -0
  2. package/package.json +34 -0
  3. package/src/commands/add.js +28 -0
  4. package/src/commands/init.js +58 -0
  5. package/src/commands/list.js +44 -0
  6. package/src/index.js +86 -0
  7. package/src/modules.js +136 -0
  8. package/src/utils/checklist.js +49 -0
  9. package/src/utils/copier.js +100 -0
  10. package/src/utils/logger.js +18 -0
  11. package/templates/docs/reference-code/controller/EmployeeTrainingController.java +107 -0
  12. package/templates/docs/reference-code/domain/EmployeeTraining.java +89 -0
  13. package/templates/docs/reference-code/domain/bo/EmployeeTrainingBo.java +96 -0
  14. package/templates/docs/reference-code/domain/vo/EmployeeTrainingVo.java +100 -0
  15. package/templates/docs/reference-code/mapper/EmployeeTrainingMapper.java +17 -0
  16. package/templates/docs/reference-code/resources/mapper/EmployeeTrainingMapper.xml +7 -0
  17. package/templates/docs/reference-code/service/IEmployeeTrainingService.java +69 -0
  18. package/templates/docs/reference-code/service/impl/EmployeeTrainingServiceImpl.java +144 -0
  19. package/templates/openspec/config.yaml +126 -0
  20. package/templates/openspec/project-profile.md +107 -0
  21. package/templates/qoder/mcp.json +9 -0
  22. package/templates/qoder/rules/openspec_codegraph.md +162 -0
  23. package/templates/qoder/rules/openspec_output_specs.md +112 -0
  24. package/templates/qoder/rules/openspec_preflight.md +230 -0
  25. package/templates/qoder/rules/openspec_reverse_sync.md +97 -0
  26. package/templates/qoder/rules/openspec_specifications.md +84 -0
  27. package/templates/qoder/rules/openspec_task_tiers.md +109 -0
  28. package/templates/qoder/rules/project_constitution.md +90 -0
  29. package/templates/qoder/skills/requirement-breakdown/SKILL.md +126 -0
@@ -0,0 +1,97 @@
1
+ ---
2
+ trigger: model_decision
3
+ description: OpenSpec apply 阶段的 Reverse Sync(反向同步)硬规则。在 openspec-apply-change 执行过程中,一旦发现 spec/design/tasks 与代码实现存在偏差,必须立即执行五步法(停止→诊断→回写文档→等确认→继续),禁止反向修改代码适配错误文档。触发 openspec-apply-change skill 时必须加载本文件。
4
+ ---
5
+
6
+ # OpenSpec Reverse Sync(反向同步硬规则)
7
+
8
+ > ⚖️ **上级规则**:本文件受 `.qoder/rules/project_constitution.md`(项目宪法,always_on)约束。
9
+ > 宪法 §1「Spec is Truth」即本文件的理论根基——代码、文档冲突时**先改文档,再改代码**。
10
+
11
+ **本文件是 项目在 apply 阶段处理 spec 偏差的唯一标准流程。**
12
+ 目的:确保 Spec 始终是业务行为的唯一真相源,杜绝「代码写完、文档烂尾」的腐败。
13
+
14
+ ---
15
+
16
+ ## §一、触发条件(以下任一情况出现即必须启动)
17
+
18
+ 在整个 `openspec-apply-change` 执行过程中,一旦发现:
19
+
20
+ 1. 按 `tasks.md` 实现时,发现 `spec.md` / `design.md` 中的描述与实际代码结构无法对齐
21
+ 2. `reference-code` 中同类型实现与 spec 存在冲突
22
+ 3. 实现过程中发现 spec 遗漏了关键字段 / 接口 / 校验规则
23
+ 4. 实现过程中发现 `tasks.md` 的步骤顺序或依赖关系存在错误
24
+
25
+ **必须立即执行下方五步法,禁止以下行为**:
26
+ - ❌ 先改代码以适配错误的 spec
27
+ - ❌ 在代码中埋 TODO 占位绕过 spec 偏差
28
+ - ❌ 口头说"后面再修文档"然后继续写代码
29
+
30
+ ---
31
+
32
+ ## §二、Reverse Sync 五步法
33
+
34
+ ### 第 1 步:停止
35
+ **立即停止**当前任务的代码实现。在回复中显式声明:
36
+ > ⚠️ 检测到 spec/deviation,暂停代码实现,启动 Reverse Sync。
37
+
38
+ ### 第 2 步:诊断
39
+ 在回复中**明示偏差点**,格式:
40
+ ```
41
+ 偏差点:<具体描述>
42
+ 位置:
43
+ - spec.md §X 行 Y:「原文」
44
+ - design.md §Z:「原文」
45
+ - 实际代码/结构:「现状」
46
+ 建议修订方向:<一句话>
47
+ ```
48
+ 每个偏差点必须引用具体文件、章节、行号或原文片段,禁止模糊描述。
49
+
50
+ ### 第 3 步:回写文档(核心)
51
+ **先修改文档,而非代码**。使用 `search_replace` 工具提交 `spec.md` /
52
+ `design.md` / `tasks.md` 的修订。修订范围应限于:
53
+ - 补充遗漏字段 / 接口 / 校验规则
54
+ - 修正错误的步骤顺序或依赖关系
55
+ - 修正与实际代码结构不符的描述
56
+
57
+ **严禁在回写文档的同时修改代码**。第 3 步**只改文档**。
58
+
59
+ ### 第 4 步:等待确认
60
+ 回写完成后,**必须等待用户明确确认**("OK / 同意 / 继续"等)。
61
+ 未确认前禁止进入第 5 步,禁止恢复代码实现。
62
+
63
+ 若用户拒绝修订方向,回到第 2 步重新诊断。
64
+
65
+ ### 第 5 步:继续
66
+ 用户确认后,回到原任务的代码实现,**基于修正后的文档**继续工作。
67
+
68
+ ---
69
+
70
+ ## §三、档位差异
71
+
72
+ | 档位 | Reverse Sync 执行力度 |
73
+ |---|---|
74
+ | **zero** | 不适用(无代码变更) |
75
+ | **fast** | 偏差暴露时仍须执行五步法,但因改动小(单字段/单枚举),诊断应 ≤2 个偏差点 |
76
+ | **standard** | 严格遵守五步法,诊断可含 3-5 个偏差点 |
77
+ | **deep** | **零容忍**——任何偏差必须立即触发五步法;诊断不设上限;回写完成后须**逐条核验**修正是否闭环;禁止以"后续 change 再修"为理由推迟 |
78
+
79
+ ---
80
+
81
+ ## §四、与其他文件的关系
82
+
83
+ | 文件 | 关系 |
84
+ |---|---|
85
+ | `.qoder/rules/project_constitution.md` | 宪法 §1「Spec is Truth」为本文件的理论根基 |
86
+ | `.qoder/rules/openspec_preflight.md` | apply 阶段 Preflight 完成后,本文件在实施中持续生效;§零.4 Core Goal Loop Anchor 检测到目标偏移时触发本文件的五步法 |
87
+ | `.qoder/rules/openspec_output_specs.md` | §五 tasks.md 末尾记录本文件的硬约束摘要 |
88
+ | `.qoder/skills/openspec-apply-change/SKILL.md` | 本文件替代原 SKILL.md 中 Step 0 Reverse Sync 块与 Guardrails 中的硬规则;apply skill 触发时由 Qoder model_decision 加载本文件 |
89
+
90
+ ---
91
+
92
+ ## §五、自检清单(apply 阶段 Preflight 中必须验证)
93
+
94
+ - [ ] 已加载本文件并理解五步法
95
+ - [ ] 若当前任务档位为 `deep`:已确认零容忍策略
96
+ - [ ] 已知偏差触发条件(§一 4 条)
97
+ - [ ] 已约定偏差点诊断格式(文件 + 章节 + 原文引用)
@@ -0,0 +1,84 @@
1
+ ---
2
+ trigger: glob
3
+ glob: openspec/**/*.md
4
+ ---
5
+ # OpenSpec 项目规则索引
6
+
7
+ > ⚖️ **上级规则**:本文件受 `.qoder/rules/project_constitution.md`(项目宪法,always_on)约束。宪法 §7 目录约束即本文件 §三 的源头,冲突以宪法为准。
8
+
9
+ 适用范围:在 `openspec/changes/**` 与 `openspec/specs/**` 下创建或修改
10
+ `proposal.md` / `design.md` / `spec.md` / `tasks.md` 时生效。
11
+
12
+ 本文件作为 OpenSpec 项目规则的**索引层**,按职责将完整规则拆分为三份独立文件。
13
+ 任何 artifact 的写作都必须依次满足这三层约束。
14
+
15
+ ## 零、项目宪法(最高优先级)
16
+
17
+ **单一真相源**:⚖️ `.qoder/rules/project_constitution.md`(trigger: always_on)
18
+
19
+ 定义 10 条跨场景绝不可违反的底线(Spec is Truth / Restate First / 多租户 /
20
+ SHALL-MUST / 禁重复造轮子 / 禁猜 API / 标准分层 / 参考代码对齐 /
21
+ 禁独立编译任务 / Preflight 自检物理可见)。
22
+ 本索引仅列条目,条款正文以宪法文件为准。
23
+
24
+ ## 一、Preflight(写作前)
25
+
26
+ **单一真相源**:📋 `.qoder/rules/openspec_preflight.md`
27
+
28
+ 定义写作前的 Restate First、前置阅读、Preflight 自检清单。
29
+ 未完成 Preflight 前禁止生成任何 artifact。
30
+
31
+ ## 二、Output Specs(写作中 / 落盘前)
32
+
33
+ **单一真相源**:📋 `.qoder/rules/openspec_output_specs.md`
34
+
35
+ 定义 proposal / design / spec / tasks 四类 artifact 的章节硬性要求、
36
+ 通用输出约定、Artifact 输出自检清单。
37
+ 未通过自检禁止落盘。
38
+
39
+ ## 二点五、Task Tiers(任务深度分级)
40
+
41
+ **单一真相源**:📋 `.qoder/rules/openspec_task_tiers.md`
42
+
43
+ 定义 `zero` / `fast` / `standard` / `deep` 四档及其流程裁剪:
44
+ fast 档跳过 design.md 与 Clarify;standard 默认全套;deep 追加
45
+ codemap.md 与 ≥5 个 Clarify 点。Restate 末尾必须声明档位。
46
+
47
+ ## 二点六、Reverse Sync(反向同步硬规则)
48
+
49
+ **单一真相源**:📋 `.qoder/rules/openspec_reverse_sync.md`
50
+
51
+ 定义 apply 阶段发现 spec/design/tasks 偏差时的五步处理流程
52
+ (停止→诊断→回写文档→等确认→继续)。apply 阶段必须加载。
53
+
54
+ ## 二点七、CodeGraph 代码知识图谱(工具增强)
55
+
56
+ **单一真相源**:📋 `.qoder/rules/openspec_codegraph.md`
57
+
58
+ 定义 CodeGraph(v0.9.4)MCP 工具在代码探索中的分层与优先级:
59
+ `codegraph_query / callers / callees / impact / context / files / status / sync`。
60
+ 对宪法 §5(禁重复造轮子)、§6(禁猜测 API)、§1(Spec is Truth)提供
61
+ 工具级增强,减少 Grep/Glob 手工扫描 token 消耗。可选启用,失败降级。
62
+
63
+ ## 三、目录与命名约束
64
+
65
+ > 完整目录树与所有路径约定见 `openspec/project-profile.md` §2 / §3。
66
+ > 以下为速记摘要,冲突以 profile 为准。
67
+
68
+ ```
69
+ <base-package>/
70
+ ├── controller/ # REST API endpoints
71
+ ├── service/ # Business logic layer
72
+ │ └── impl/ # Service implementations
73
+ ├── mapper/ # MyBatis mapper interfaces
74
+ ├── constant/ # Enums and constants
75
+ ├── config/ # Spring config & utility classes
76
+ └── domain/ # JPA/MyBatis entities
77
+ ├── params/ # param objects
78
+ └── vo/ # view objects
79
+ ```
80
+
81
+ - 新增实体、Mapper、Service、Controller 必须落在上述目录
82
+ - 常量/枚举统一 `constant/`
83
+ - 工具类与 Spring 配置统一 `config/`
84
+ - 基础包路径、Mapper XML 路径、建表 SQL 路径等具体值见 profile
@@ -0,0 +1,109 @@
1
+ ---
2
+ trigger: model_decision
3
+ description: OpenSpec 四档任务深度分级(zero / fast / standard / deep)。在 Restate First 完成后,必须据此判定本次任务档位并向用户声明,再按档位裁剪 Clarify / 前置阅读 / 四件套 / Reverse Sync 的执行力度。触发 openspec-propose / openspec-continue-change / openspec-explore / openspec-apply-change 四个 skill 时必须加载本文件。
4
+ ---
5
+
6
+ # OpenSpec 任务深度分级(Task Tiers)
7
+
8
+ > ⚖️ **上级规则**:本文件受 `.qoder/rules/project_constitution.md`(项目宪法,always_on)约束。
9
+ > 宪法 §2 Restate First 在本文件扩展为「复述 + 声明档位」两步。档位无论高低,均不得绕开宪法 10 条底线。
10
+
11
+ **本文件是 项目对任务规模的唯一分级标准。**
12
+ 目的:让小任务轻量、大任务扎实。避免"改一个字段也要跑完四件套"的体验负担。
13
+
14
+ ---
15
+
16
+ ## §一、四档定义(按"范围 + 风险 + 交付物"三维判定)
17
+
18
+ | 档位 | 适用范围 | 风险 | 交付物 | 典型用时 |
19
+ |---|---|---|---|---|
20
+ | **zero** | 纯问答 / 解读 / 代码走读 / 规则答疑 | 无代码变更 | 仅对话回复,不生成任何 artifact,不启动 openspec CLI | 秒级 |
21
+ | **fast** | 单字段新增 / 单枚举补录 / 错别字 / 日志文案 / 常量修订 | 低 | 直接走 `openspec-apply-change` 风格的轻量 change:**仅 spec delta + 1 个 task**,**跳过 design.md**、**跳过 Clarify**(显式声明) | 5-15 分钟 |
22
+ | **standard** | 单领域常规 CRUD / 导入导出 / 权限校验 / 单表字段扩展(≤3 字段) | 中 | 完整四件套(proposal + design + spec + tasks),Clarify 必做 | 30-90 分钟 |
23
+ | **deep** | 跨领域 / 架构级调整 / 多模块影响 / 涉及数据迁移 / 新增领域实体(≥5 字段) | 高 | 四件套 + 追加 `codemap.md`(关键调用链 / 入口清单),Clarify 至少 5 个歧义点,Reverse Sync 零容忍 | 半天~若干轮对话 |
24
+
25
+ ---
26
+
27
+ ## §二、判定决策树(Restate 完成后立即执行)
28
+
29
+ ```
30
+ Restate 通过
31
+
32
+ 是否需要改代码或文档?
33
+ ├── 否 → [zero](直接回复)
34
+ └── 是
35
+
36
+ 改动是否同时满足:① ≤1 个字段/枚举/文案;② 不涉及接口签名;③ 不涉及权限/租户逻辑?
37
+ ├── 是 → [fast]
38
+ └── 否
39
+
40
+ 是否满足任一条:① 跨 ≥2 个业务模块;② 动数据库 ≥2 张表;③ 改架构/中间件/通用基类;④ 新增领域实体 ≥5 字段?
41
+ ├── 是 → [deep]
42
+ └── 否 → [standard](默认档)
43
+ ```
44
+
45
+ **判定结果必须在 Restate 末尾显式声明**,格式:
46
+
47
+ ```
48
+ 档位:<zero|fast|standard|deep>
49
+ 理由:一句话说明为什么是这个档
50
+ ```
51
+
52
+ **用户有权覆盖 AI 的判定**("这个按 standard 跑")。用户未反对 = 采纳 AI 判定。
53
+
54
+ ---
55
+
56
+ ## §三、各档流程裁剪
57
+
58
+ ### zero
59
+ - ❌ 不走 openspec 任何 skill
60
+ - ❌ 不生成 artifact
61
+ - ✅ 允许直接基于已加载上下文回答;涉及代码示例时必须真实引用文件路径
62
+
63
+ ### fast
64
+ - ✅ 必做:Restate + 档位声明 + Preflight 自检物理化展示(§二)
65
+ - ❌ 可跳过:Clarify(显式声明"fast 档无需 Clarify"即可)
66
+ - ❌ 可跳过:design.md(直接 proposal + spec delta + tasks,tasks 通常只有 1-3 条)
67
+ - ✅ repowiki 按需:最多 **0-1 个** 主章节
68
+ - ✅ 归档:走 `openspec-archive-change` 正常流程
69
+
70
+ ### standard(默认档)
71
+ - ✅ 全套流程,严格遵守前几轮已落地的所有硬规则
72
+ - ✅ Clarify 3-5 个歧义点
73
+ - ✅ repowiki 最多 2 个主章节
74
+ - ✅ 四件套齐备
75
+
76
+ ### deep
77
+ - ✅ 在 standard 基础上叠加:
78
+ - Clarify **≥5** 个歧义点,必须覆盖架构 / 数据一致性 / 租户 / 性能 4 个维度
79
+ - 追加 `openspec/changes/<name>/codemap.md`(关键类 / 入口 / 调用链 / 风险点)
80
+ - Reverse Sync 零容忍:任何偏差必须立即触发五步法
81
+ - repowiki 最多 3 个主章节(仍遵守"先 list_dir 再 read_file")
82
+
83
+ ---
84
+
85
+ ## §四、升档与降档
86
+
87
+ - **升档**:实施过程中发现复杂度超出预期 → 立即停止,向用户声明升档理由(如 "fast → standard:发现需要新建 Mapper 接口"),**等用户确认后**按新档位补齐前置流程(如补 Clarify / 补 design.md)。
88
+ - **降档**:禁止 AI 主动降档。只有用户显式要求"按 fast 跑" / "直接做" 时才允许降档,且必须保留 Restate + 档位声明两项底线。
89
+
90
+ ---
91
+
92
+ ## §五、与其他规则文件的关系
93
+
94
+ | 文件 | 关系 |
95
+ |---|---|
96
+ | `.qoder/rules/project_constitution.md` | 宪法 §2 的"声明档位"落地于本文件 §二 |
97
+ | `.qoder/rules/openspec_preflight.md` | §零 Restate 末尾追加档位声明;§零点五 Clarify 对 fast/zero 放行;§二 自检新增"档位项" |
98
+ | `.qoder/rules/openspec_output_specs.md` | fast 档允许省略 design.md;其他 artifact 章节硬性要求在 standard/deep 档仍完整生效 |
99
+ | `openspec/config.yaml` | context 新增 `Task Tiers` 段,rules.proposal 追加"档位声明"硬约束 |
100
+
101
+ ---
102
+
103
+ ## §六、档位判定自检清单(Restate 阶段必须通过)
104
+
105
+ - [ ] 已在 Restate 末尾显式声明档位(`档位:<...>`)
106
+ - [ ] 已给出判定理由(一句话)
107
+ - [ ] 若声明为 fast:已显式写"本任务无需 Clarify"
108
+ - [ ] 若声明为 deep:已规划 codemap.md 并预告至少 5 个 Clarify 点
109
+ - [ ] 若用户覆盖 AI 判定:已采纳用户档位,不再争论
@@ -0,0 +1,90 @@
1
+ ---
2
+ trigger: always_on
3
+ ---
4
+ # 项目宪法(Constitution)
5
+
6
+ **本文件是 AI 在本项目中进行任何对话、生成任何 artifact、修改任何代码时
7
+ 必须遵守的最高优先级底线清单**。无论是否进入 OpenSpec 流程、无论当前
8
+ 处于哪个 skill,以下十条条款始终生效。
9
+
10
+ > 等级说明:
11
+ > - 本宪法 **高于** `.qoder/rules/` 下的所有其他规则文件。
12
+ > - 其他规则文件定义「怎么做」,宪法定义「**绝对不可为**」。
13
+ > - 违反宪法 = 立即停止并向用户报错,不允许以"更好的方案"为由绕开。
14
+
15
+ ---
16
+
17
+ ## §1 Spec is Truth(真相源优先)
18
+ OpenSpec 的 `spec.md` / `design.md` / `tasks.md` 是业务行为的**唯一真相源**。
19
+ 代码、文档、口头约定与 spec 冲突时,**先改 spec,再改其他**。
20
+ Reverse Sync 五步法见 `.qoder/rules/openspec_reverse_sync.md`。
21
+
22
+ ## §2 Restate First
23
+ 在生成任何 artifact(proposal / design / spec / tasks)或开始实施任何任务前,
24
+ 必须先用 ≤8 行复述「目标 / 边界 / Done Contract / 风险」并等待用户明确确认。
25
+ 未确认禁止进入后续步骤。详见 `.qoder/rules/openspec_preflight.md` §零。
26
+
27
+ ## §3 多租户字段完整性
28
+ 所有业务实体、数据表、DTO、Mapper 查询必须包含多租户字段并正确过滤,
29
+ 除非该实体被知识库明确列为全局共享表(如字典、系统配置)。新增业务表
30
+ 缺失多租户字段即视为违宪。
31
+ > 具体字段名、基类及知识库路径见 `openspec/project-profile.md` §4 / §2。
32
+
33
+ ## §4 SHALL / MUST 关键字
34
+ `spec.md` 的每条 Requirement 必须以 `SHALL` 或 `MUST` 开头,否则
35
+ `openspec archive` 会直接失败。禁止使用 should / may / will 等弱动词。
36
+
37
+ ## §5 禁止重复造轮子
38
+ 新增任何功能前必须:
39
+ 1. 检索仓库现有实现(同名 / 同语义的类、工具方法、Service)
40
+ 2. 核对 `pom.xml` 与 `admin/pom.xml` 已有依赖
41
+ 3. 只有现有代码与依赖均不能满足时,才允许新增
42
+
43
+ 禁止引入功能重复的依赖或重复实现已有工具类。
44
+
45
+ ## §6 禁止猜测第三方 API
46
+ 若在 `docs/reference-code/` 与仓库现有实现中未找到同类型用法,
47
+ 必须先阅读该包的源码或官方 README 确认 API 存在且版本兼容,
48
+ 再在 artifact 或代码中引用具体类名 / 方法名。严禁"假设 API 存在"式编码。
49
+
50
+ ## §7 标准分层目录
51
+ 所有 Java 类必须落在标准分层目录内,不得放在其他包。
52
+ > 完整目录树与路径约定见 `openspec/project-profile.md` §3;
53
+ > 附加资源路径(Mapper XML、建表 SQL)见 `openspec/project-profile.md` §2。
54
+
55
+ ## §8 参考代码优先对齐
56
+ 新增同类型功能(CRUD / 导入导出 / 权限 / 分页)必须以参考模板的
57
+ 继承结构、注解写法、分页约定、多租户处理方式为准,不得自创风格。
58
+ > 参考模板完整文件清单见 `openspec/project-profile.md` §5。
59
+
60
+ ## §9 禁止独立编译验证任务
61
+ `tasks.md` 禁止独立列出 `mvn clean compile` / `mvn compile` 等整体
62
+ 编译验证步骤。单任务内「编译无错误」作为证据可保留,但不得单独用作
63
+ 任务条目。
64
+
65
+ ## §10 Preflight 自检物理可见
66
+ 在执行 OpenSpec 任一 skill(propose / continue / explore / apply)的
67
+ Step 1 之前,必须按 `.qoder/rules/openspec_preflight.md` §二 完成自检,
68
+ 并在主回复开头以可见形式展示已勾选项。未展示自检结果即视为未执行。
69
+
70
+ ---
71
+
72
+ ## 附:违宪处置流程
73
+ 1. 立即**停止**当前动作
74
+ 2. 在回复中**明示**违反条款编号
75
+ 3. **回滚**已做改动(如有)
76
+ 4. **等待用户**决定:调整需求 / 修订宪法 / 放弃任务
77
+
78
+ ---
79
+
80
+ ## 与其他规则文件的关系
81
+
82
+ | 文件 | 关系 |
83
+ |---|---|
84
+ | `.qoder/rules/openspec_preflight.md` | 本宪法的**执行手册**,定义写作前流程 |
85
+ | `.qoder/rules/openspec_output_specs.md` | 本宪法 §4 / §9 的**输出格式落地** |
86
+ | `.qoder/rules/openspec_specifications.md` | 本宪法 §7 的**目录约束索引层** |
87
+ | `openspec/config.yaml` | 向 openspec CLI 注入时提供 context / rules 双保险 |
88
+ | `openspec/project-profile.md` | 本宪法 §3 / §5 / §7 / §8 的具体值存放处;**移植项目时唯一需大改的文件** |
89
+
90
+ 修改本宪法条款 = 变更项目底线,需团队讨论后谨慎执行。
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: requirement-breakdown
3
+ description: Parse large requirement documents (.docx/.doc), clarify functionality through multi-round Q&A with user, break down into independent OpenSpec change steps, and create inputs/requirement.md for each step. Use when the user provides a requirement document and wants to split it into incremental OpenSpec changes.
4
+ ---
5
+
6
+ # 需求文档拆分(Requirement Breakdown)
7
+
8
+ 将大需求文档(`.docx` / `.doc`)解析、澄清并拆分为多个独立的 OpenSpec change,每个 change 可单独 `/opsx:propose` 渐进实现。
9
+
10
+ ## 前置条件
11
+
12
+ 开始前确认:
13
+ - 用户已提供需求文档路径(`.docx` 或 `.doc`)
14
+ - `.qoder/repowiki/zh/content/` 知识库可访问
15
+ - `openspec/changes/` 目录存在
16
+
17
+ ## 执行流程
18
+
19
+ ### Step 1:读取知识库建立项目上下文
20
+
21
+ 从 `.qoder/repowiki/zh/content/` 读取项目背景知识(最多 3 个主章节):
22
+
23
+ 1. **系统架构设计/** — 了解技术栈、分层目录、核心依赖
24
+ 2. **核心功能模块/** — 了解现有功能模块,判断新需求归属
25
+ 3. **数据模型设计/** 或 **安全与权限/** — 按需求类型补充(数据密集型→数据模型,涉及权限→安全与权限)
26
+
27
+ > 读取策略:先 `list_dir` 查看章节目录,再 `read_file` 只读 3-4 个最相关的 .md。
28
+ > 同 session 内已读章节不重复读取。
29
+
30
+ ### Step 2:解析需求文档
31
+
32
+ 读取用户提供的 `.docx` 或 `.doc` 文件,提取核心内容:
33
+
34
+ - 功能模块划分
35
+ - 数据实体及字段
36
+ - 业务流程与交互
37
+ - 接口列表
38
+ - 非功能性需求
39
+
40
+ > 如果文档格式为 `.doc`(旧格式),先尝试直接解析;若失败则提示用户转换为 `.docx` 后重试。
41
+
42
+ ### Step 3:多轮对话澄清(必须用 AskUserQuestion)
43
+
44
+ 基于文档内容与业务复杂度,**不设固定轮次上限**,持续对话直到以下条件全部满足:
45
+ - 所有功能模块的边界已明确(包含 / 不包含什么)
46
+ - 所有数据实体字段、关联关系、多租户策略已确认
47
+ - 各模块的实现优先级和依赖关系已排序
48
+ - 文中模糊表述(如「支持多种方式」「后续扩展」)已逐一澄清为具体方案
49
+ - 拆分后的每个 change 均已确认为独立可交付
50
+
51
+ **每轮必须用 `AskUserQuestion` 提交选择题**(二选一或三选一),禁止开放式文本问题。
52
+
53
+ **澄清维度 checklist**(逐项覆盖,未澄清不进入 Step 4):
54
+ - [ ] 功能边界:各模块的包含/不包含范围
55
+ - [ ] 数据模型:实体字段、关联关系、多租户策略
56
+ - [ ] 实现优先级:哪些模块先做、哪些可后置
57
+ - [ ] 技术细节:是否涉及新依赖、新中间件、数据迁移
58
+ - [ ] 拆分粒度:确认拆分后的每个 change 是否独立可交付
59
+ - [ ] 模糊表述消歧:文档中所有不确定描述均已确认
60
+
61
+ **结束条件**:用户显式回复「澄清完毕 / 没有更多问题 / 可以开始拆分」或 checklist 全部通过且用户确认,方可进入 Step 4。
62
+
63
+ ### Step 4:拆分并落盘
64
+
65
+ 澄清完成后,将需求拆分为多个独立实现步骤。每个步骤:
66
+
67
+ 1. **确定 `<name>`**:英文短横线命名(如 `add-employee-training-crud`)
68
+ 2. **创建目录**:`openspec/changes/<name>/`
69
+ 3. **创建 inputs 子目录**:`openspec/changes/<name>/inputs/`
70
+ 4. **写入需求文件**:`openspec/changes/<name>/inputs/requirement.md`
71
+
72
+ `requirement.md` 尽可能包含:
73
+
74
+ ```markdown
75
+ # [步骤中文标题]
76
+
77
+ ## 关联模块
78
+ - 所属功能模块:XXX
79
+ - 依赖的上游 change:<name>(无则填「无」)
80
+
81
+ ## 功能描述
82
+ [该步骤要实现的核心功能,详细描述]
83
+
84
+ ## 数据范围
85
+ - 涉及实体/表:XXX
86
+ - 新增字段:[列出或填「无」]
87
+
88
+ ## 接口清单
89
+ | 方法 | 路径 | 说明 |
90
+ |------|------|------|
91
+ | GET | /xxx | 分页查询 |
92
+ | POST | /xxx | 新增 |
93
+
94
+ ## 不包含
95
+ [不包含的功能]
96
+
97
+ ## 代码结构
98
+
99
+ ## 验收标准
100
+ - [ ] XXX
101
+ - [ ] XXX
102
+ ```
103
+
104
+ ### Step 5:输出拆分总览
105
+
106
+ #### 5.1 输出拆分全貌表格
107
+
108
+ ```
109
+ | 序号 | Change Name | 标题 | 依赖 | 启动命令 |
110
+ |------|-------------|------|------|----------|
111
+ | 1 | xxx | XXX | 无 | `/opsx:propose openspec/changes/xxx/inputs/requirement.md` |
112
+ | 2 | yyy | YYY | xxx | `/opsx:propose openspec/changes/yyy/inputs/requirement.md` |
113
+ ```
114
+
115
+ #### 5.2 输出执行指引
116
+
117
+ 提示用户:
118
+ > 按依赖顺序逐个执行。在**新对话**中直接复制启动命令即可开始实现,Change Name 是唯一标识,不会因序号混淆出错。
119
+
120
+ ## 约束
121
+
122
+ - 每个 change 必须是**独立可交付**的功能增量
123
+ - 拆分后的 change 数量建议 ≤ 5 个(超过时与用户二次确认)
124
+ - 所有实体默认含多租户字段,除非确认为全局共享表
125
+ - 技术判断以 `.qoder/repowiki/` 和 `openspec/project-profile.md` 为准,不猜测
126
+ - 命名遵循 OpenSpec 规范:英文、短横线、小写