@miniidealab/openlogos 0.7.2 → 0.8.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 (52) hide show
  1. package/codex-plugin-template/plugin.json +10 -0
  2. package/codex-plugin-template/session-start.sh +125 -0
  3. package/dist/commands/change.d.ts.map +1 -1
  4. package/dist/commands/change.js +21 -3
  5. package/dist/commands/change.js.map +1 -1
  6. package/dist/commands/init.d.ts +9 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +173 -34
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/module.d.ts +5 -0
  11. package/dist/commands/module.d.ts.map +1 -0
  12. package/dist/commands/module.js +233 -0
  13. package/dist/commands/module.js.map +1 -0
  14. package/dist/commands/next.d.ts +10 -0
  15. package/dist/commands/next.d.ts.map +1 -0
  16. package/dist/commands/next.js +125 -0
  17. package/dist/commands/next.js.map +1 -0
  18. package/dist/commands/status.d.ts +12 -0
  19. package/dist/commands/status.d.ts.map +1 -1
  20. package/dist/commands/status.js +116 -1
  21. package/dist/commands/status.js.map +1 -1
  22. package/dist/commands/sync.d.ts.map +1 -1
  23. package/dist/commands/sync.js +13 -1
  24. package/dist/commands/sync.js.map +1 -1
  25. package/dist/commands/verify.js +2 -2
  26. package/dist/commands/verify.js.map +1 -1
  27. package/dist/i18n.d.ts.map +1 -1
  28. package/dist/i18n.js +68 -8
  29. package/dist/i18n.js.map +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +30 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/lib/sync-resource-index.js +5 -5
  34. package/dist/lib/sync-resource-index.js.map +1 -1
  35. package/package.json +8 -4
  36. package/skills/architecture-designer/SKILL.en.md +1 -1
  37. package/skills/architecture-designer/SKILL.md +1 -1
  38. package/skills/prd-writer/SKILL.en.md +1 -1
  39. package/skills/prd-writer/SKILL.md +1 -1
  40. package/skills/product-designer/SKILL.en.md +1 -1
  41. package/skills/product-designer/SKILL.md +1 -1
  42. package/skills/scenario-architect/SKILL.en.md +2 -2
  43. package/skills/scenario-architect/SKILL.md +11 -5
  44. package/skills/test-writer/SKILL.en.md +1 -1
  45. package/skills/test-writer/SKILL.md +2 -2
  46. package/spec/change-management.md +5 -0
  47. package/spec/cli-json-output.md +20 -1
  48. package/spec/codex-plugin.md +138 -0
  49. package/spec/directory-convention.md +4 -2
  50. package/spec/logos-project.md +41 -5
  51. package/spec/module-naming-convention.md +74 -0
  52. package/spec/workflow.md +1 -1
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { init } from './commands/init.js';
3
3
  import { sync } from './commands/sync.js';
4
4
  import { status } from './commands/status.js';
5
+ import { next } from './commands/next.js';
5
6
  import { change } from './commands/change.js';
6
7
  import { merge } from './commands/merge.js';
7
8
  import { archive } from './commands/archive.js';
@@ -9,6 +10,7 @@ import { verify } from './commands/verify.js';
9
10
  import { launch } from './commands/launch.js';
10
11
  import { detect } from './commands/detect.js';
11
12
  import { indexCommand } from './commands/index-cmd.js';
13
+ import { moduleList, moduleAdd, moduleRename, moduleRemove } from './commands/module.js';
12
14
  import { VERSION, parseFormat } from './lib/json-output.js';
13
15
  export { VERSION } from './lib/json-output.js';
14
16
  const HELP = `
@@ -20,9 +22,10 @@ Usage:
20
22
  Commands:
21
23
  init [name] Initialize a new OpenLogos project structure
22
24
  --locale <en|zh> Set language (skip prompt)
23
- --ai-tool <claude-code|opencode|cursor|other|all> Set AI tool (skip prompt)
25
+ --ai-tool <claude-code|opencode|codex|cursor|other|all> Set AI tool (skip prompt)
24
26
  sync Regenerate AI instruction files (AGENTS.md, CLAUDE.md)
25
27
  status Show current project phase and suggest next steps
28
+ next Show the single most actionable next step
26
29
  verify Verify test results against test case specs
27
30
  launch Activate change management after first development cycle
28
31
  change <slug> Create a change proposal for iterative updates
@@ -30,6 +33,7 @@ Commands:
30
33
  archive <slug> Archive a completed change proposal
31
34
  detect Show CLI version and project detection info
32
35
  index Generate an AI-ready prompt to rebuild resource_index with file-content-based desc
36
+ module <sub> Manage project modules (list / add <name> / rename <old> <new> / remove <name>)
33
37
 
34
38
  Options:
35
39
  --help, -h Show this help message
@@ -87,6 +91,9 @@ async function main() {
87
91
  case 'status':
88
92
  status(format);
89
93
  break;
94
+ case 'next':
95
+ next(format);
96
+ break;
90
97
  case 'verify':
91
98
  verify(format);
92
99
  break;
@@ -108,6 +115,28 @@ async function main() {
108
115
  case 'index':
109
116
  indexCommand();
110
117
  break;
118
+ case 'module': {
119
+ const sub = args[1];
120
+ switch (sub) {
121
+ case 'list':
122
+ moduleList();
123
+ break;
124
+ case 'add':
125
+ moduleAdd(args[2]);
126
+ break;
127
+ case 'rename':
128
+ moduleRename(args[2], args[3]);
129
+ break;
130
+ case 'remove':
131
+ moduleRemove(args[2]);
132
+ break;
133
+ default:
134
+ console.error(`Unknown module subcommand: ${sub ?? '(none)'}`);
135
+ console.error('Usage: openlogos module <list|add|rename|remove>');
136
+ process.exit(1);
137
+ }
138
+ break;
139
+ }
111
140
  default:
112
141
  console.error(`Unknown command: ${command}`);
113
142
  console.log(HELP);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -50,19 +50,19 @@ function scanCandidateFiles(root) {
50
50
  const RULES = [
51
51
  // 1. 场景总览(放在场景文件之前,更具体)
52
52
  {
53
- pattern: /logos\/resources\/prd\/3-technical-plan\/2-scenario-implementation\/00-scenario-overview\.md$/,
53
+ pattern: /logos\/resources\/prd\/3-technical-plan\/2-scenario-implementation\/(?:[a-z][a-z0-9-]*-)?00-scenario-overview\.md$/,
54
54
  zh: () => '场景实现概览索引。涉及全量场景分类、参与方、实现文档映射关系时必读。',
55
55
  en: () => 'Scenario overview index. Required when referencing scenario classification, participants, or document mapping.',
56
56
  },
57
- // 2. 场景时序图:S01-cli-init.md → S01 场景时序图
57
+ // 2. 场景时序图:core-S01-cli-init.md → S01 场景时序图
58
58
  {
59
- pattern: /logos\/resources\/prd\/3-technical-plan\/2-scenario-implementation\/(S\d+)-(.+)\.md$/,
59
+ pattern: /logos\/resources\/prd\/3-technical-plan\/2-scenario-implementation\/(?:[a-z][a-z0-9-]*-)?(S\d+)-(.+)\.md$/,
60
60
  zh: (m) => `${m[1]} 场景时序图。涉及 ${m[1]} 实现细节、API 设计、异常分支时必读。`,
61
61
  en: (m) => `${m[1]} sequence diagram. Required when working on ${m[1]} implementation, API design, or exception branches.`,
62
62
  },
63
- // 3. 测试用例:S01-test-cases.md → S01 测试用例
63
+ // 3. 测试用例:core-S01-test-cases.md → S01 测试用例
64
64
  {
65
- pattern: /logos\/resources\/test\/(S\d+)-test-cases\.md$/,
65
+ pattern: /logos\/resources\/test\/(?:[a-z][a-z0-9-]*-)?(S\d+)-test-cases\.md$/,
66
66
  zh: (m) => `${m[1]} 测试用例。涉及 ${m[1]} 单元测试与场景测试的实现与验收时必读。`,
67
67
  en: (m) => `${m[1]} test cases. Required when implementing or verifying ${m[1]} unit and scenario tests.`,
68
68
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sync-resource-index.js","sourceRoot":"","sources":["../../src/lib/sync-resource-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-resource-index.js","sourceRoot":"","sources":["../../src/lib/sync-resource-index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miniidealab/openlogos",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "CLI tool for the OpenLogos software engineering methodology",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,8 +8,8 @@
8
8
  },
9
9
  "scripts": {
10
10
  "build": "npx tsc",
11
- "prepack": "npm run build && node -e \"require('fs').cpSync('../skills','./skills',{recursive:true});require('fs').cpSync('../spec','./spec',{recursive:true});require('fs').cpSync('../plugin-opencode/template','./opencode-plugin-template',{recursive:true})\"",
12
- "postpack": "node -e \"require('fs').rmSync('./skills',{recursive:true,force:true});require('fs').rmSync('./spec',{recursive:true,force:true});require('fs').rmSync('./opencode-plugin-template',{recursive:true,force:true})\"",
11
+ "prepack": "npm run build && node -e \"require('fs').cpSync('../skills','./skills',{recursive:true});require('fs').cpSync('../spec','./spec',{recursive:true});require('fs').cpSync('../plugin-opencode/template','./opencode-plugin-template',{recursive:true});require('fs').cpSync('../plugin-codex','./codex-plugin-template',{recursive:true})\"",
12
+ "postpack": "node -e \"require('fs').rmSync('./skills',{recursive:true,force:true});require('fs').rmSync('./spec',{recursive:true,force:true});require('fs').rmSync('./opencode-plugin-template',{recursive:true,force:true});require('fs').rmSync('./codex-plugin-template',{recursive:true,force:true})\"",
13
13
  "dev": "tsc --watch",
14
14
  "start": "node dist/index.js",
15
15
  "lint": "eslint src/",
@@ -45,7 +45,8 @@
45
45
  "dist",
46
46
  "skills",
47
47
  "spec",
48
- "opencode-plugin-template"
48
+ "opencode-plugin-template",
49
+ "codex-plugin-template"
49
50
  ],
50
51
  "devDependencies": {
51
52
  "@eslint/js": "^9.39.4",
@@ -54,5 +55,8 @@
54
55
  "typescript": "^6.0.2",
55
56
  "typescript-eslint": "^8.58.0",
56
57
  "vitest": "^3.2.4"
58
+ },
59
+ "dependencies": {
60
+ "yaml": "^2.8.3"
57
61
  }
58
62
  }
@@ -156,7 +156,7 @@ external_dependencies:
156
156
 
157
157
  ## Output Specification
158
158
 
159
- - Architecture overview document: `logos/resources/prd/3-technical-plan/1-architecture/01-architecture-overview.md`
159
+ - Architecture overview document: `logos/resources/prd/3-technical-plan/1-architecture/core-01-architecture-overview.md` (globally unique; always update this file in place, never create a new one)
160
160
  - Architecture diagrams use Mermaid format
161
161
  - Technology selections use table format, each item must include rationale
162
162
  - Update the `tech_stack` and `external_dependencies` fields in `logos-project.yaml`
@@ -156,7 +156,7 @@ external_dependencies:
156
156
 
157
157
  ## 输出规范
158
158
 
159
- - 架构概要文档:`logos/resources/prd/3-technical-plan/1-architecture/01-architecture-overview.md`
159
+ - 架构概要文档:`logos/resources/prd/3-technical-plan/1-architecture/core-01-architecture-overview.md`(架构文件全局唯一,后续修改始终在此文件上更新,不新建文件)
160
160
  - 架构图使用 Mermaid 格式
161
161
  - 技术选型使用表格格式,每项必须有理由
162
162
  - 更新 `logos-project.yaml` 的 `tech_stack` 和 `external_dependencies` 字段
@@ -172,7 +172,7 @@ Because [reason] → leads to [pain point] → results in [consequence]
172
172
 
173
173
  - File format: Markdown
174
174
  - Storage location: `logos/resources/prd/1-product-requirements/`
175
- - File naming: `{sequence}-{english-name}.md`, e.g., `01-requirements.md`
175
+ - File naming: `<module>-{sequence}-{english-name}.md`, e.g., `core-01-requirements.md` (read current module from `modules[]` in `logos-project.yaml`, default is `core`)
176
176
  - Every scenario must be traceable to at least one user pain point
177
177
  - P0/P1 scenarios must have GIVEN/WHEN/THEN (≥1 normal + ≥1 exception)
178
178
  - Scenario numbers are globally unique and will carry through Phase 2 and Phase 3
@@ -172,7 +172,7 @@
172
172
 
173
173
  - 文件格式:Markdown
174
174
  - 存放位置:`logos/resources/prd/1-product-requirements/`
175
- - 文件命名:`{序号}-{英文名}.md`,如 `01-requirements.md`
175
+ - 文件命名:`<module>-{序号}-{英文名}.md`,如 `core-01-requirements.md`(从 `logos-project.yaml` 的 `modules[]` 读取当前模块,默认为 `core`)
176
176
  - 每个场景必须可追溯到至少一个用户痛点
177
177
  - P0/P1 场景必须有 GIVEN/WHEN/THEN(≥1 正常 + ≥1 异常)
178
178
  - 场景编号全局唯一,将贯穿 Phase 2 和 Phase 3
@@ -202,7 +202,7 @@ This directory has already been initialized as an OpenLogos project.
202
202
 
203
203
  - Feature specs: `logos/resources/prd/2-product-design/1-feature-specs/`
204
204
  - Prototypes: `logos/resources/prd/2-product-design/2-page-design/`
205
- - Design documents and prototypes appear in pairs: `{number}-{name}-design.md` + `{number}-{name}-prototype.{ext}`
205
+ - Design documents and prototypes appear in pairs: `<module>-{number}-{name}-design.md` + `<module>-{number}-{name}-prototype.{ext}` (read current module from `modules[]` in `logos-project.yaml`, default is `core`)
206
206
  - Web Application: `.html`
207
207
  - CLI Tool: `-terminal.md` (terminal interaction simulation)
208
208
  - AI Skills: `-dialogue.md` (dialogue flow script)
@@ -202,7 +202,7 @@ This directory has already been initialized as an OpenLogos project.
202
202
 
203
203
  - 功能规格:`logos/resources/prd/2-product-design/1-feature-specs/`
204
204
  - 原型:`logos/resources/prd/2-product-design/2-page-design/`
205
- - 设计文档与原型成对出现:`{序号}-{名称}-design.md` + `{序号}-{名称}-prototype.{ext}`
205
+ - 设计文档与原型成对出现:`<module>-{序号}-{名称}-design.md` + `<module>-{序号}-{名称}-prototype.{ext}`(从 `logos-project.yaml` 的 `modules[]` 读取当前模块,默认为 `core`)
206
206
  - Web 应用:`.html`
207
207
  - CLI 工具:`-terminal.md`(终端交互模拟)
208
208
  - AI Skills:`-dialogue.md`(对话流程脚本)
@@ -197,8 +197,8 @@ Summarize the technical implementation status of all scenarios:
197
197
 
198
198
  ## Output Specification
199
199
 
200
- - **Scenario overview**: `logos/resources/prd/3-technical-plan/2-scenario-implementation/00-scenario-overview.md`
201
- - **Scenario documents**: `logos/resources/prd/3-technical-plan/2-scenario-implementation/{scenario-number}-{scenario-name}.md`
200
+ - **Scenario overview**: `logos/resources/prd/3-technical-plan/2-scenario-implementation/core-00-scenario-overview.md`
201
+ - **Scenario documents**: `logos/resources/prd/3-technical-plan/2-scenario-implementation/<module>-{scenario-number}-{scenario-name}.md` (read current module from `modules[]` in `logos-project.yaml`, default is `core`; read `scenario_counter.next_id` before generating, increment and write back immediately after)
202
202
  - Sequence diagrams use Mermaid format (renderable directly in Markdown)
203
203
  - Exception cases use `EX-N.M` numbering, globally unique
204
204
  - Each scenario document contains: sequence diagram + step descriptions + exception cases
@@ -66,7 +66,7 @@
66
66
 
67
67
  只有用户明确确认清单无误后,才进入 Step 1 开始建模。
68
68
 
69
- 2. 确认清单后,告知用户当前已完成哪些场景(`SXX-*.md` 文件存在),还剩哪些场景待建模,然后按用户指示开始目标场景的建模。
69
+ 2. 确认清单后,告知用户当前已完成哪些场景(`<module>-SXX-*.md` 文件存在),还剩哪些场景待建模,然后按用户指示开始目标场景的建模。
70
70
 
71
71
  ---
72
72
 
@@ -99,6 +99,12 @@
99
99
  - 编号从 1 开始连续递增
100
100
  - 每个箭头附一行行为描述:`HTTP方法 /api/路径 — 一句话说明`
101
101
 
102
+ **⚠️ 单行约束(强制)**:
103
+ - 每条箭头(`->>` 或 `-->>`)的全部内容**必须写在同一行**,禁止在描述文字中插入换行
104
+ - 若描述文字过长,优先**精简措辞**,而不是拆行
105
+ - 需要补充的细节(如 UI 按钮、副作用说明等)应写在时序图**下方的"步骤说明"列表**中,不得折入箭头行内
106
+ - 违反此规则会导致 mermaid 引擎解析失败、markdown 渲染出错
107
+
102
108
  **参与方规范**:
103
109
  - 使用短别名:`U`(User/Browser)、`W`(Web/Frontend)、`SB`(Supabase)、`DB`(Database)
104
110
  - 每个参与方的全名在 `participant` 声明中注明
@@ -235,8 +241,8 @@ sequenceDiagram
235
241
 
236
242
  ## 输出规范
237
243
 
238
- - **场景概览**:`logos/resources/prd/3-technical-plan/2-scenario-implementation/00-scenario-overview.md`
239
- - **场景文档**:`logos/resources/prd/3-technical-plan/2-scenario-implementation/{场景编号}-{场景名}.md`
244
+ - **场景概览**:`logos/resources/prd/3-technical-plan/2-scenario-implementation/core-00-scenario-overview.md`
245
+ - **场景文档**:`logos/resources/prd/3-technical-plan/2-scenario-implementation/<module>-{场景编号}-{场景名}.md`(从 `logos-project.yaml` 的 `modules[]` 读取当前模块,默认为 `core`;生成前必须读取 `scenario_counter.next_id` 取号,生成后立即将 `next_id` 加 1 写回)
240
246
  - 时序图使用 Mermaid 格式(可在 Markdown 中直接渲染)
241
247
  - 异常用例使用 `EX-N.M` 编号,全局唯一
242
248
  - 每个场景文档包含:时序图 + 步骤说明 + 异常用例
@@ -268,9 +274,9 @@ sequenceDiagram
268
274
  ```yaml
269
275
  resource_index:
270
276
  # ...已有条目...
271
- - path: logos/resources/prd/3-technical-plan/2-scenario-implementation/00-scenario-overview.md
277
+ - path: logos/resources/prd/3-technical-plan/2-scenario-implementation/core-00-scenario-overview.md
272
278
  desc: 场景实现概览索引。涉及全量场景分类、参与方、实现文档映射关系时必读。
273
- - path: logos/resources/prd/3-technical-plan/2-scenario-implementation/S01-<slug>.md
279
+ - path: logos/resources/prd/3-technical-plan/2-scenario-implementation/core-S01-<slug>.md
274
280
  desc: S01 <场景名称>场景时序图。涉及 S01 实现细节、API 设计、异常分支时必读。
275
281
  # 每个场景文件均需单独一条
276
282
  ```
@@ -167,7 +167,7 @@ Guide the user to the next step based on project type:
167
167
 
168
168
  - **File format**: Markdown
169
169
  - **Location**: `logos/resources/test/`
170
- - **Naming convention**: `{scenario-number}-test-cases.md` (e.g., `S01-test-cases.md`)
170
+ - **Naming convention**: `<module>-{scenario-number}-test-cases.md` (e.g., `core-S01-test-cases.md`; read current module from `modules[]` in `logos-project.yaml`, default is `core`)
171
171
  - Each file contains: Unit test cases (grouped by source) + Scenario test cases (happy path + exception paths)
172
172
  - Case IDs are globally unique: `UT-{scenario-number}-{sequence}` / `ST-{scenario-number}-{sequence}`
173
173
 
@@ -167,7 +167,7 @@
167
167
 
168
168
  - **文件格式**:Markdown
169
169
  - **存放位置**:`logos/resources/test/`
170
- - **命名规则**:`{场景编号}-test-cases.md`(如 `S01-test-cases.md`)
170
+ - **命名规则**:`<module>-{场景编号}-test-cases.md`(如 `core-S01-test-cases.md`;从 `logos-project.yaml` 的 `modules[]` 读取当前模块,默认为 `core`)
171
171
  - 每个文件包含:单元测试用例(按来源分组)+ 场景测试用例(主路径 + 异常路径)
172
172
  - 用例 ID 全局唯一:`UT-{场景编号}-{序号}` / `ST-{场景编号}-{序号}`
173
173
 
@@ -253,7 +253,7 @@
253
253
  ```yaml
254
254
  resource_index:
255
255
  # ...已有条目...
256
- - path: logos/resources/test/S01-test-cases.md
256
+ - path: logos/resources/test/core-S01-test-cases.md
257
257
  desc: S01 <场景名称>测试用例。涉及 UT-S01(单元测试)与 ST-S01(场景测试)的实现与验收时必读。
258
258
  # 每个场景的测试用例文件均需单独一条
259
259
  ```
@@ -10,6 +10,7 @@
10
10
  2. **影响分析先行**:在 `proposal.md` 中明确变更范围
11
11
  3. **按需传播**:不是每次都全链路更新,只更新受影响的环节
12
12
  4. **归档留痕**:变更完成后归档,保留完整历史
13
+ 5. **guard 互斥**:同一时间只允许一个活动提案;存在活动 guard 时,必须阻止新的 `openlogos change`
13
14
 
14
15
  ## 目录结构
15
16
 
@@ -32,6 +33,8 @@ project-root/
32
33
  └── add-remember-me/
33
34
  ```
34
35
 
36
+ > `logos/.openlogos-guard` 是活动提案锁文件。只要它指向 `logos/changes/` 下一个未归档提案,`openlogos change` 就必须拒绝创建新的提案,直到当前提案被 `openlogos archive` 归档后释放锁。
37
+
35
38
  ## 文件规范
36
39
 
37
40
  ### proposal.md
@@ -106,6 +109,7 @@ Delta 文件的目录结构映射主文档目录:
106
109
  1. 创建变更提案(CLI)
107
110
  └── openlogos change {slug}
108
111
  └── 生成 logos/changes/{slug}/proposal.md + tasks.md + deltas/
112
+ └── 写入 logos/.openlogos-guard,锁定当前活动提案
109
113
 
110
114
  2. AI 辅助填写提案(change-writer Skill)
111
115
  └── AI 分析影响范围,填写 proposal.md 和 tasks.md
@@ -126,6 +130,7 @@ Delta 文件的目录结构映射主文档目录:
126
130
  7. 归档变更(CLI)
127
131
  └── openlogos archive {slug}
128
132
  └── 将 logos/changes/{slug}/ 移入 logos/changes/archive/
133
+ └── 若当前 guard 指向该提案,则删除 logos/.openlogos-guard
129
134
  ```
130
135
 
131
136
  ## 变更传播规则
@@ -98,7 +98,7 @@ openlogos status --format json # JSON 格式
98
98
  "label": "Phase 1 · 需求文档 (WHY)",
99
99
  "done": true,
100
100
  "skipped": false,
101
- "files": ["01-requirements.md"]
101
+ "files": ["core-01-requirements.md"]
102
102
  },
103
103
  {
104
104
  "key": "phase.2",
@@ -109,6 +109,20 @@ openlogos status --format json # JSON 格式
109
109
  }
110
110
  // ... 所有 10 个 phase
111
111
  ],
112
+ "modules": [ // 模块注册表(来自 logos-project.yaml)
113
+ {
114
+ "id": "core",
115
+ "name": "核心功能",
116
+ "status": "stable",
117
+ "loop_phase": null
118
+ },
119
+ {
120
+ "id": "payment",
121
+ "name": "支付模块",
122
+ "status": "in-progress",
123
+ "loop_phase": "api-design"
124
+ }
125
+ ],
112
126
  "active_proposals": [
113
127
  {
114
128
  "name": "add-feature",
@@ -138,6 +152,11 @@ openlogos status --format json # JSON 格式
138
152
  | `phases[].done` | boolean | 是 | 该阶段是否已完成(有文件 = true) |
139
153
  | `phases[].skipped` | boolean | 是 | 该阶段是否被跳过(空但后续阶段已完成) |
140
154
  | `phases[].files` | string[] | 是 | 该阶段目录下的文件列表 |
155
+ | `modules` | array | 否 | 模块注册表;`logos-project.yaml` 无 `modules[]` 时省略此字段(向下兼容) |
156
+ | `modules[].id` | string | 是 | 模块标识符 |
157
+ | `modules[].name` | string | 是 | 模块名称 |
158
+ | `modules[].status` | string | 是 | 模块状态:`in-progress` 或 `stable` |
159
+ | `modules[].loop_phase` | string \| null | 是 | 当前所处阶段;`stable` 模块为 null |
141
160
  | `active_proposals` | array | 是 | 活跃变更提案列表 |
142
161
  | `active_proposals[].name` | string | 是 | 提案目录名 |
143
162
  | `active_proposals[].has_proposal` | boolean | 是 | 是否存在 proposal.md |
@@ -0,0 +1,138 @@
1
+ # Codex 原生插件规范(OpenLogos)
2
+
3
+ > 版本:0.1.0(草案)
4
+ >
5
+ > 本文档定义 OpenLogos 在 OpenAI Codex CLI 平台上的原生插件方案,目标是把当前"AGENTS 兼容模式"升级为"插件优先 + 文档兜底"的双轨机制。
6
+
7
+ ## 目标
8
+
9
+ 1. 提供与 Claude Code 插件接近的交互体验(SessionStart hook + Phase 上下文注入)
10
+ 2. 最大化复用现有 CLI(`openlogos *`)与 Skills(`logos/skills/*`)
11
+ 3. 保留 `AGENTS.md` 兜底,确保插件不可用时流程不中断
12
+
13
+ ## 运行模式
14
+
15
+ ### 模式 A:兼容模式(当前可用)
16
+
17
+ - 输入:`AGENTS.md` + `logos/skills/*/SKILL.md`
18
+ - 适用:未安装插件或插件异常时
19
+ - 特点:零额外安装,体验相对基础
20
+
21
+ ### 模式 B:原生插件模式(推荐)
22
+
23
+ - 输入:`openlogos init/sync` 自动生成的 `.codex-plugin/plugin.json`、`.codex-plugin/hooks/session-start.sh`、`.codex/config.toml`
24
+ - 适用:希望获得 SessionStart Phase 注入、技能自动加载、统一工作流控制
25
+ - 特点:体验增强,便于分发与版本管理
26
+
27
+ ## 与其他工具的对比
28
+
29
+ | 维度 | Claude Code | OpenCode | Codex |
30
+ |---|---|---|---|
31
+ | 指令文件 | `CLAUDE.md` | `AGENTS.md` | `AGENTS.md` |
32
+ | 技能路径 | `logos/skills/` | `logos/skills/` | `.agents/skills/<name>/SKILL.md` |
33
+ | 插件清单 | `plugin/` 目录 | `.opencode/plugins/openlogos.js` | `.codex-plugin/plugin.json` |
34
+ | 配置文件 | `.claude/settings.json` | `opencode.json` | `.codex/config.toml` |
35
+ | Hook 协议 | stdin/stdout JSON | 事件驱动 JS | stdin/stdout JSON(同 Claude Code) |
36
+ | 技能调用语法 | `/skill-name` | `/openlogos:*` | `$skill-name` |
37
+ | SessionStart | `hooks.json` | `session.created` | `[[hooks.SessionStart]]` |
38
+
39
+ ## 目录结构
40
+
41
+ ```text
42
+ openlogos/
43
+ ├── plugin-codex/
44
+ │ ├── plugin.json # 插件清单模板
45
+ │ └── session-start.sh # SessionStart hook 脚本模板
46
+ └── spec/codex-plugin.md # 本规范文档
47
+ ```
48
+
49
+ 用户项目部署后:
50
+
51
+ ```text
52
+ <user-project>/
53
+ ├── .agents/
54
+ │ └── skills/
55
+ │ ├── prd-writer/SKILL.md
56
+ │ ├── scenario-architect/SKILL.md
57
+ │ └── ... (全部 13 个 skill)
58
+ ├── .codex-plugin/
59
+ │ ├── plugin.json
60
+ │ └── hooks/
61
+ │ └── session-start.sh
62
+ ├── .codex/
63
+ │ └── config.toml
64
+ └── AGENTS.md # 兜底指令(始终保留)
65
+ ```
66
+
67
+ ## 构建与发布边界
68
+
69
+ 1. 插件模板随 `@miniidealab/openlogos`(CLI 单包)一起发布,不单独发布 Codex 插件包。
70
+ 2. 插件只负责"Hook 注入 + 上下文注入",不复制 CLI 业务逻辑。
71
+ 3. 版本策略:
72
+ - 插件模板版本与 CLI 版本保持同步
73
+ - 当依赖 CLI 新参数/新输出时,在同一 CLI 版本内联动升级
74
+ 4. 发布产物包含 `codex-plugin-template/`(由构建脚本从 `plugin-codex/` 生成),由 `init/sync` 自动部署到用户项目。
75
+
76
+ ## Hook 事件模型(MVP)
77
+
78
+ ### `SessionStart`
79
+
80
+ Codex 支持的 SessionStart 输出字段:`systemMessage`、`stopReason`。
81
+
82
+ 执行顺序:
83
+
84
+ 1. 检查项目是否已初始化(`logos/logos.config.json`)
85
+ 2. 调用 `openlogos status --format json` 获取当前 Phase 和建议
86
+ 3. 读取 guard 文件检测活跃变更提案
87
+ 4. 构建 `systemMessage`:包含当前 Phase、变更管理状态、语言策略
88
+ 5. 注入失败时静默返回 `{}`,不阻断会话
89
+
90
+ ### Hook 脚本降级策略
91
+
92
+ | 场景 | 行为 |
93
+ |---|---|
94
+ | `openlogos` CLI 不在 PATH | 静默返回 `{}`,不阻断会话 |
95
+ | 项目未初始化(无 logos.config.json) | 静默返回 `{}` |
96
+ | `openlogos status` 非 0 退出 | 静默返回 `{}` |
97
+ | Python3 和 Node 均不可用 | 输出简化 `systemMessage`(无 JSON 解析) |
98
+
99
+ ## 命令调用
100
+
101
+ Codex 使用 `$skill-name` 语法调用技能(不同于 Claude Code 的 `/skill-name`)。`AGENTS.md` 中的 Active Skills 章节应使用 `$` 前缀说明。
102
+
103
+ ## 配置格式(`.codex/config.toml`)
104
+
105
+ ```toml
106
+ [plugins.openlogos]
107
+ enabled = true
108
+
109
+ [[hooks.SessionStart]]
110
+ [[hooks.SessionStart.hooks]]
111
+ type = "command"
112
+ command = ".codex-plugin/hooks/session-start.sh"
113
+ timeout = 5
114
+ async = false
115
+ statusMessage = "Loading OpenLogos phase context..."
116
+ ```
117
+
118
+ ## 安全边界
119
+
120
+ 1. **最小权限原则**:hook 脚本只读取项目状态,不修改任何文件
121
+ 2. **路径约束**:仅在工作区内执行,不允许跨目录写入
122
+ 3. **错误可观测性**:所有 CLI 失败静默降级,不阻断会话
123
+ 4. **降级策略**:插件不可用时,回退到 `AGENTS.md` 兼容模式
124
+
125
+ ## 双轨策略
126
+
127
+ | 模式 | 配置 | 技能来源 | CLI 桥接 |
128
+ |---|---|---|---|
129
+ | **兼容**(兜底) | `AGENTS.md` only | `logos/skills/` | 无 |
130
+ | **原生插件**(推荐) | `.codex-plugin/` + `.codex/config.toml` | `.agents/skills/` | `session-start.sh` → `openlogos status` |
131
+
132
+ 原生插件模式为推荐路径。`AGENTS.md` 始终保留作为降级兜底。
133
+
134
+ ## 验收标准(文档阶段)
135
+
136
+ - `README.md` 已包含 Codex 原生插件安装说明
137
+ - `spec/agents-md.md` 已明确双轨模式包含 Codex
138
+ - 本文档定义了插件边界、事件、安全策略与双轨策略
@@ -81,7 +81,8 @@ OpenLogos 方法论的统一入口。包含配置文件、研发资源文档和
81
81
 
82
82
  ### 文档文件
83
83
 
84
- - 使用 `{序号}-{英文名}.md` 格式:`01-requirements.md`
84
+ - 使用 `<module>-{序号}-{英文名}.md` 格式:`core-01-requirements.md`
85
+ - `<module>` 为模块标识符(小写字母 + 连字符),初始项目默认使用 `core-` 前缀
85
86
  - 序号用于控制显示顺序
86
87
  - HTML 原型使用 `{序号}-{英文名}-prototype.html` 格式
87
88
  - 设计文档与原型成对出现:`03-homepage-design.md` + `03-homepage-prototype.html`
@@ -98,7 +99,8 @@ OpenLogos 方法论的统一入口。包含配置文件、研发资源文档和
98
99
 
99
100
  ### 测试用例规格文件
100
101
 
101
- - 按场景分文件:`S01-test-cases.md`、`S02-test-cases.md`
102
+ - 按场景分文件:`core-S01-test-cases.md`、`core-S02-test-cases.md`
103
+ - 命名格式:`<module>-{场景编号}-test-cases.md`
102
104
  - 使用 Markdown 格式,包含单元测试和场景测试的用例设计
103
105
  - 每个文件对应一个场景编号,覆盖该场景的所有测试层级
104
106