@miniidealab/openlogos 0.5.0 → 0.5.3
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/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +14 -1
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/change.d.ts.map +1 -1
- package/dist/commands/change.js +7 -0
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +106 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +25 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +5 -4
- package/skills/db-designer/SKILL.en.md +2 -2
- package/skills/db-designer/SKILL.md +2 -2
- package/skills/project-init/SKILL.en.md +1 -1
- package/skills/project-init/SKILL.md +1 -1
- package/skills/test-orchestrator/SKILL.en.md +1 -1
- package/skills/test-orchestrator/SKILL.md +1 -1
- package/skills/test-writer/SKILL.en.md +1 -1
- package/skills/test-writer/SKILL.md +1 -1
- package/spec/agents-md.md +117 -0
- package/spec/change-management.md +197 -0
- package/spec/directory-convention.md +123 -0
- package/spec/logos-project.md +135 -0
- package/spec/logos.config.schema.json +147 -0
- package/spec/sql-comment-convention.md +225 -0
- package/spec/test-results.md +255 -0
- package/spec/workflow.md +277 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# AGENTS.md 生成规范
|
|
2
|
+
|
|
3
|
+
> 版本:0.3.0
|
|
4
|
+
>
|
|
5
|
+
> 本文档定义 AGENTS.md 的内容结构、生成规则和多平台适配机制。AGENTS.md 是面向 AI 助手的指令文件,让 AI 工具打开项目就知道该遵循什么规范。
|
|
6
|
+
|
|
7
|
+
## 概述
|
|
8
|
+
|
|
9
|
+
AGENTS.md 放在项目根目录。当 AI 工具(Cursor、Claude Code、OpenCode 等)打开项目时,自动读取此文件,了解项目遵循的规范和工作方式。
|
|
10
|
+
|
|
11
|
+
## 内容结构
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
# AI Assistant Instructions
|
|
15
|
+
|
|
16
|
+
This project follows the **OpenLogos** methodology.
|
|
17
|
+
Read `logos/logos-project.yaml` first to understand the project resource index.
|
|
18
|
+
|
|
19
|
+
## Project Context
|
|
20
|
+
- Config: `logos/logos.config.json`
|
|
21
|
+
- Resource Index: `logos/logos-project.yaml`
|
|
22
|
+
- Tech Stack: [从 logos-project.yaml 读取]
|
|
23
|
+
|
|
24
|
+
## Methodology Rules
|
|
25
|
+
1. Never write code without first completing the design documents
|
|
26
|
+
2. Follow the Why → What → How progression
|
|
27
|
+
3. All API designs must originate from scenario sequence diagrams
|
|
28
|
+
4. All code changes must have corresponding API orchestration tests
|
|
29
|
+
5. Use the Delta change workflow for iterations (see logos/changes/ directory)
|
|
30
|
+
|
|
31
|
+
## Interaction Guidelines
|
|
32
|
+
When the user's request is vague or they ask "what should I do next":
|
|
33
|
+
1. Scan `logos/resources/` to determine the current project phase
|
|
34
|
+
2. Suggest the specific next step based on what's missing
|
|
35
|
+
3. Provide a ready-to-use prompt the user can directly say
|
|
36
|
+
4. Never start generating documents without confirming key information
|
|
37
|
+
|
|
38
|
+
Phase detection logic:
|
|
39
|
+
- `logos/resources/prd/1-product-requirements/` is empty → suggest Phase 1 (prd-writer)
|
|
40
|
+
- requirements exist but `2-product-design/` is empty → suggest Phase 2 (product-designer)
|
|
41
|
+
- design exists but `3-technical-plan/1-architecture/` is empty → suggest Phase 3 Step 0 (architecture-designer)
|
|
42
|
+
- architecture exists but `3-technical-plan/2-scenario-implementation/` is empty → suggest Phase 3 Step 1 (scenario-architect)
|
|
43
|
+
- scenarios exist but `logos/resources/api/` is empty → suggest Phase 3 Step 2 (api-designer + db-designer)
|
|
44
|
+
- API exists but `logos/resources/test/` is empty → suggest Phase 3 Step 3a (test-writer)
|
|
45
|
+
- test cases exist but `logos/resources/scenario/` is empty → suggest Phase 3 Step 3b (test-orchestrator, API projects only)
|
|
46
|
+
- All above exist → suggest Phase 3 Step 4 (code generation)
|
|
47
|
+
- code generated but `logos/resources/verify/` is empty → suggest Phase 3 Step 5 (run tests then `openlogos verify`)
|
|
48
|
+
|
|
49
|
+
## Active Skills
|
|
50
|
+
[根据 `logos.config.json` 的 `aiTool` 字段动态生成]
|
|
51
|
+
|
|
52
|
+
当 aiTool = "cursor" 时,列出 `.cursor/rules/` 下部署的 `.mdc` 文件:
|
|
53
|
+
- `skills/prd-writer` — `.cursor/rules/prd-writer.mdc`
|
|
54
|
+
- `skills/product-designer` — `.cursor/rules/product-designer.mdc`
|
|
55
|
+
- ...(共 12 项)
|
|
56
|
+
|
|
57
|
+
当 aiTool = "claude-code" 或 "other" 时,列出 `logos/skills/` 下部署的 `SKILL.md` 文件:
|
|
58
|
+
- `skills/prd-writer` — `logos/skills/prd-writer/SKILL.md`
|
|
59
|
+
- `skills/product-designer` — `logos/skills/product-designer/SKILL.md`
|
|
60
|
+
- ...(共 12 项)
|
|
61
|
+
|
|
62
|
+
## Conventions
|
|
63
|
+
- [从 logos-project.yaml 的 conventions 段读取]
|
|
64
|
+
- When writing Markdown files that contain triple-backtick code blocks inside other code blocks, use 4-backtick fences (````) for the outer block
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 生成规则
|
|
68
|
+
|
|
69
|
+
### 数据来源
|
|
70
|
+
|
|
71
|
+
AGENTS.md 的内容从以下文件中自动提取:
|
|
72
|
+
|
|
73
|
+
| 字段 | 来源 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| Tech Stack | `logos-project.yaml` → `tech_stack` |
|
|
76
|
+
| Active Skills | `logos.config.json` → `aiTool` 字段决定路径前缀 + 扫描项目中已部署的 Skills |
|
|
77
|
+
| Conventions | `logos-project.yaml` → `conventions` |
|
|
78
|
+
| Methodology Rules | 固定内容(OpenLogos 核心规则) |
|
|
79
|
+
|
|
80
|
+
### 核心规则(固定内容)
|
|
81
|
+
|
|
82
|
+
以下规则在所有 OpenLogos 项目中一致,不可自定义:
|
|
83
|
+
|
|
84
|
+
1. Never write code without first completing the design documents
|
|
85
|
+
2. Follow the Why → What → How progression
|
|
86
|
+
3. All API designs must originate from scenario sequence diagrams
|
|
87
|
+
4. All code changes must have corresponding API orchestration tests
|
|
88
|
+
5. Use the Delta change workflow for iterations
|
|
89
|
+
6. All generated test code must include an OpenLogos reporter (see spec/test-results.md)
|
|
90
|
+
|
|
91
|
+
### 生成时机
|
|
92
|
+
|
|
93
|
+
- `openlogos init`:初始化项目时首次生成(含 Active Skills 段,Skills 同步部署)
|
|
94
|
+
- `openlogos sync`:手动触发重新生成(当项目配置变化时,同时重新部署 Skills 并刷新 Active Skills 段)
|
|
95
|
+
- `project-init` Skill:AI 初始化项目时生成
|
|
96
|
+
|
|
97
|
+
## 多平台适配
|
|
98
|
+
|
|
99
|
+
不同 AI 工具使用不同的指令文件名,但内容一致:
|
|
100
|
+
|
|
101
|
+
| 工具 | 指令文件 | Skills 部署位置 | 处理方式 |
|
|
102
|
+
|------|---------|---------------|---------|
|
|
103
|
+
| **Cursor** | `AGENTS.md`(原生支持) | `.cursor/rules/*.mdc` | `init` / `sync` 自动部署 |
|
|
104
|
+
| **Claude Code** | `CLAUDE.md` | `logos/skills/*/SKILL.md` | `init` / `sync` 自动部署 |
|
|
105
|
+
| **OpenCode** | `AGENTS.md` | `logos/skills/*/SKILL.md` | `init` / `sync` 自动部署 |
|
|
106
|
+
| **GitHub Copilot** | `.github/copilot-instructions.md` | 规划中 | Phase 1.5 |
|
|
107
|
+
|
|
108
|
+
`openlogos sync` 命令会同时生成所有需要的指令文件,确保不同 AI 工具看到的指令一致。
|
|
109
|
+
|
|
110
|
+
## 与 logos-project.yaml 的关系
|
|
111
|
+
|
|
112
|
+
| 文件 | 格式 | 受众 | 内容 |
|
|
113
|
+
|------|------|------|------|
|
|
114
|
+
| `logos-project.yaml` | 结构化 YAML | AI + 工具 | 资源索引、技术栈、约定 |
|
|
115
|
+
| `AGENTS.md` | 自然语言 Markdown | AI 助手 | 行为指令、规则、Skill 列表 |
|
|
116
|
+
|
|
117
|
+
两者互补:AGENTS.md 引导 AI 去读 logos-project.yaml,logos-project.yaml 提供结构化数据。
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Delta 变更管理规范
|
|
2
|
+
|
|
3
|
+
> 版本:0.3.0
|
|
4
|
+
>
|
|
5
|
+
> 本文档定义 OpenLogos 的 Delta 变更管理机制。每次功能迭代或 Bug 修复,先创建变更提案,审核通过后再合并回主文档。确保变更过程可追溯、可审核、可回滚。
|
|
6
|
+
|
|
7
|
+
## 核心原则
|
|
8
|
+
|
|
9
|
+
1. **不直接修改主文档**:每次变更先在 `logos/changes/` 中创建提案
|
|
10
|
+
2. **影响分析先行**:在 `proposal.md` 中明确变更范围
|
|
11
|
+
3. **按需传播**:不是每次都全链路更新,只更新受影响的环节
|
|
12
|
+
4. **归档留痕**:变更完成后归档,保留完整历史
|
|
13
|
+
|
|
14
|
+
## 目录结构
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
project-root/
|
|
18
|
+
└── logos/
|
|
19
|
+
├── resources/ # 主文档(当前已生效的"真相")
|
|
20
|
+
│
|
|
21
|
+
└── changes/ # 变更提案工作区
|
|
22
|
+
├── add-remember-me/ # 一个变更提案
|
|
23
|
+
│ ├── proposal.md # 变更说明
|
|
24
|
+
│ ├── tasks.md # 实现任务清单
|
|
25
|
+
│ └── deltas/ # 增量修改(Delta)
|
|
26
|
+
│ ├── prd/
|
|
27
|
+
│ ├── api/
|
|
28
|
+
│ ├── database/
|
|
29
|
+
│ └── scenario/
|
|
30
|
+
│
|
|
31
|
+
└── archive/ # 已完成变更的历史归档
|
|
32
|
+
└── add-remember-me/
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 文件规范
|
|
36
|
+
|
|
37
|
+
### proposal.md
|
|
38
|
+
|
|
39
|
+
变更说明文档,必须包含:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
# 变更提案:[变更名称]
|
|
43
|
+
|
|
44
|
+
## 变更原因
|
|
45
|
+
[为什么要做这个变更?来源于哪个需求/反馈/Bug?]
|
|
46
|
+
|
|
47
|
+
## 变更范围
|
|
48
|
+
- 影响的需求文档:[列表]
|
|
49
|
+
- 影响的功能规格:[列表]
|
|
50
|
+
- 影响的业务场景:[列表]
|
|
51
|
+
- 影响的 API:[列表]
|
|
52
|
+
- 影响的 DB 表:[列表]
|
|
53
|
+
|
|
54
|
+
## 变更概述
|
|
55
|
+
[用 1-3 段话概述具体改什么]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### tasks.md
|
|
59
|
+
|
|
60
|
+
实现任务清单,按 Phase 组织:
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
# 实现任务
|
|
64
|
+
|
|
65
|
+
## Phase 1: 文档变更
|
|
66
|
+
- [ ] 更新需求文档的用户故事和验收条件
|
|
67
|
+
- [ ] 更新产品设计文档的功能规格
|
|
68
|
+
|
|
69
|
+
## Phase 2: 设计变更
|
|
70
|
+
- [ ] 更新 HTML 原型
|
|
71
|
+
- [ ] 更新场景时序图
|
|
72
|
+
- [ ] 更新 API YAML
|
|
73
|
+
- [ ] 更新 DB DDL
|
|
74
|
+
|
|
75
|
+
## Phase 3: 编排与代码
|
|
76
|
+
- [ ] 更新 API 编排测试用例
|
|
77
|
+
- [ ] 实现代码变更
|
|
78
|
+
- [ ] 部署到测试环境
|
|
79
|
+
- [ ] 运行编排验收
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### deltas/ 目录
|
|
83
|
+
|
|
84
|
+
增量修改文件,使用标记格式:
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
## ADDED — [新增内容标题]
|
|
88
|
+
[新增的完整内容]
|
|
89
|
+
|
|
90
|
+
## MODIFIED — [修改内容标题]
|
|
91
|
+
[修改后的完整内容,替换主文档中同名章节]
|
|
92
|
+
|
|
93
|
+
## REMOVED — [删除内容标题]
|
|
94
|
+
[说明删除原因]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Delta 文件的目录结构映射主文档目录:
|
|
98
|
+
- `deltas/prd/` → 对应 `logos/resources/prd/` 的变更
|
|
99
|
+
- `deltas/api/` → 对应 `logos/resources/api/` 的变更
|
|
100
|
+
- `deltas/database/` → 对应 `logos/resources/database/` 的变更
|
|
101
|
+
- `deltas/scenario/` → 对应 `logos/resources/scenario/` 的变更
|
|
102
|
+
|
|
103
|
+
## 变更工作流
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
1. 创建变更提案(CLI)
|
|
107
|
+
└── openlogos change {slug}
|
|
108
|
+
└── 生成 logos/changes/{slug}/proposal.md + tasks.md + deltas/
|
|
109
|
+
|
|
110
|
+
2. AI 辅助填写提案(change-writer Skill)
|
|
111
|
+
└── AI 分析影响范围,填写 proposal.md 和 tasks.md
|
|
112
|
+
|
|
113
|
+
3. 按 tasks.md 逐项产出 Delta 文件(各阶段 Skill)
|
|
114
|
+
└── 每完成一项任务,将增量变更写入 deltas/ 对应子目录
|
|
115
|
+
|
|
116
|
+
4. 审核变更提案
|
|
117
|
+
└── 团队/自审 proposal.md 和 delta 文件
|
|
118
|
+
|
|
119
|
+
5. 生成合并指令(CLI)
|
|
120
|
+
└── openlogos merge {slug}
|
|
121
|
+
└── 扫描 deltas/,生成 MERGE_PROMPT.md
|
|
122
|
+
|
|
123
|
+
6. AI 执行合并(merge-executor Skill)
|
|
124
|
+
└── AI 读取 MERGE_PROMPT.md,逐个 delta 合并到主文档
|
|
125
|
+
|
|
126
|
+
7. 归档变更(CLI)
|
|
127
|
+
└── openlogos archive {slug}
|
|
128
|
+
└── 将 logos/changes/{slug}/ 移入 logos/changes/archive/
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 变更传播规则
|
|
132
|
+
|
|
133
|
+
不是每次变更都需要全链路更新。根据变更类型决定影响范围:
|
|
134
|
+
|
|
135
|
+
| 变更类型 | 最少需要更新 | 说明 |
|
|
136
|
+
|---------|------------|------|
|
|
137
|
+
| 需求级变更 | 全链路 | 需求变了,所有下游都可能受影响 |
|
|
138
|
+
| 设计级变更 | 原型 + 场景 + API/DB + 编排 + 代码 | 需求不变,实现方案调整 |
|
|
139
|
+
| 接口级变更 | API/DB + 编排 + 代码 | 设计不变,接口细节调整 |
|
|
140
|
+
| 代码级修复 | 代码 + 重新验收 | Bug 修复,不涉及设计变更 |
|
|
141
|
+
|
|
142
|
+
## Git 集成
|
|
143
|
+
|
|
144
|
+
- 每个变更提案对应一个 Git 分支:`change/{change-name}`
|
|
145
|
+
- 分支合并时,`logos/changes/{change-name}/` 同步移入 `logos/changes/archive/`
|
|
146
|
+
- 重大变更在文档顶部的"最后更新"时间戳中标注
|
|
147
|
+
- `logos/changes/archive/` 提供完整变更历史
|
|
148
|
+
|
|
149
|
+
## MERGE_PROMPT.md 文件规范
|
|
150
|
+
|
|
151
|
+
`openlogos merge` 命令自动生成的指令文件,结构如下:
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
# Merge Instruction
|
|
155
|
+
|
|
156
|
+
## 变更提案
|
|
157
|
+
- 提案名称:{slug}
|
|
158
|
+
- 提案目录:logos/changes/{slug}/
|
|
159
|
+
|
|
160
|
+
## 提案内容
|
|
161
|
+
[从 proposal.md 中读取的完整内容]
|
|
162
|
+
|
|
163
|
+
## 需要合并的 Delta 文件
|
|
164
|
+
|
|
165
|
+
### 1. {delta-relative-path}
|
|
166
|
+
- Delta 文件:`logos/changes/{slug}/deltas/{category}/{file}`
|
|
167
|
+
- 目标目录:`logos/resources/{category}/`
|
|
168
|
+
- 操作:读取 delta 中的 ADDED / MODIFIED / REMOVED 标记,合并到目标目录中对应的主文档
|
|
169
|
+
|
|
170
|
+
## 执行要求
|
|
171
|
+
1. 逐个 Delta 文件处理,每处理完一个报告修改摘要
|
|
172
|
+
2. 对于 ADDED 标记:在主文档的指定位置插入新内容
|
|
173
|
+
3. 对于 MODIFIED 标记:替换主文档中同名章节的内容
|
|
174
|
+
4. 对于 REMOVED 标记:从主文档中删除对应章节
|
|
175
|
+
5. 保持主文档的原有格式和风格
|
|
176
|
+
6. 如果主文档有"最后更新"时间戳,同步更新
|
|
177
|
+
7. 所有变更完成后,列出修改清单
|
|
178
|
+
8. 完成后提醒用户运行 `openlogos archive {slug}`
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## CLI 命令
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
# 创建变更提案
|
|
185
|
+
openlogos change add-remember-me
|
|
186
|
+
|
|
187
|
+
# 生成合并指令(由 AI 执行实际合并)
|
|
188
|
+
openlogos merge add-remember-me
|
|
189
|
+
|
|
190
|
+
# 归档已完成的变更
|
|
191
|
+
openlogos archive add-remember-me
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## AI Skills 集成
|
|
195
|
+
|
|
196
|
+
- **change-writer**:在 `openlogos change` 后使用,辅助填写 proposal.md 和 tasks.md
|
|
197
|
+
- **merge-executor**:在 `openlogos merge` 后使用,读取 MERGE_PROMPT.md 执行实际合并
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# 目录结构约定
|
|
2
|
+
|
|
3
|
+
> 版本:0.3.0
|
|
4
|
+
>
|
|
5
|
+
> 本文档定义遵循 OpenLogos 方法论的项目应采用的标准目录结构。统一的目录结构让 AI 工具和团队成员都能快速定位资源。
|
|
6
|
+
|
|
7
|
+
## 标准项目结构
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
project-root/
|
|
11
|
+
├── AGENTS.md # AI 助手指令(自动生成,根目录)
|
|
12
|
+
│
|
|
13
|
+
├── logos/ # OpenLogos 方法论资产(独立收纳)
|
|
14
|
+
│ ├── logos.config.json # 项目配置(OpenLogos 规范)
|
|
15
|
+
│ ├── logos-project.yaml # AI 协作索引(OpenLogos 规范)
|
|
16
|
+
│ │
|
|
17
|
+
│ ├── resources/ # 研发资源文档(当前已生效的"真相")
|
|
18
|
+
│ │ ├── prd/ # 产品文档
|
|
19
|
+
│ │ │ ├── 1-product-requirements/ # Phase 1: 需求文档
|
|
20
|
+
│ │ │ ├── 2-product-design/
|
|
21
|
+
│ │ │ │ ├── 1-feature-specs/ # Phase 2: 功能规格
|
|
22
|
+
│ │ │ │ └── 2-page-design/ # Phase 2: 页面设计 + HTML 原型
|
|
23
|
+
│ │ │ └── 3-technical-plan/
|
|
24
|
+
│ │ │ ├── 1-architecture/ # Phase 3: 架构与技术选型
|
|
25
|
+
│ │ │ └── 2-scenario-implementation/ # Phase 3: 场景实现文档
|
|
26
|
+
│ │ ├── api/ # Phase 3: OpenAPI YAML
|
|
27
|
+
│ │ ├── database/ # Phase 3: SQL DDL
|
|
28
|
+
│ │ ├── test/ # Phase 3: 测试用例规格(Markdown)
|
|
29
|
+
│ │ ├── scenario/ # Phase 3: API 编排测试(JSON)
|
|
30
|
+
│ │ └── verify/ # Phase 3: 测试验收结果(JSONL + 报告)
|
|
31
|
+
│ │
|
|
32
|
+
│ └── changes/ # 变更提案工作区
|
|
33
|
+
│ ├── {change-name}/ # 进行中的变更提案
|
|
34
|
+
│ │ ├── proposal.md
|
|
35
|
+
│ │ ├── tasks.md
|
|
36
|
+
│ │ └── deltas/
|
|
37
|
+
│ └── archive/ # 已完成变更的历史归档
|
|
38
|
+
│
|
|
39
|
+
└── src/ # 源代码(结构由项目技术栈决定)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
OpenLogos 的所有方法论资产收纳在 `logos/` 目录下,与项目自身代码和配置彻底分离。`AGENTS.md`(及 `CLAUDE.md`)保留在项目根目录,因为 AI 工具要求指令文件位于根目录。
|
|
43
|
+
|
|
44
|
+
## 目录职责
|
|
45
|
+
|
|
46
|
+
### logos/
|
|
47
|
+
|
|
48
|
+
OpenLogos 方法论的统一入口。包含配置文件、研发资源文档和变更管理。
|
|
49
|
+
|
|
50
|
+
### logos/resources/
|
|
51
|
+
|
|
52
|
+
存放所有研发资源文档,是项目当前已生效的"真相源"。按 OpenLogos 三层推进模型组织:
|
|
53
|
+
|
|
54
|
+
| 子目录 | 对应阶段 | 内容 |
|
|
55
|
+
|--------|---------|------|
|
|
56
|
+
| `prd/1-product-requirements/` | Phase 1: WHY | 需求文档、用户故事、竞品分析 |
|
|
57
|
+
| `prd/2-product-design/1-feature-specs/` | Phase 2: WHAT | 功能规格、信息架构、设计规范 |
|
|
58
|
+
| `prd/2-product-design/2-page-design/` | Phase 2: WHAT | 页面设计文档 + HTML 原型 |
|
|
59
|
+
| `prd/3-technical-plan/1-architecture/` | Phase 3: HOW | 整体架构、技术选型 |
|
|
60
|
+
| `prd/3-technical-plan/2-scenario-implementation/` | Phase 3: HOW | 业务场景文档(时序图 + 步骤说明) |
|
|
61
|
+
| `api/` | Phase 3: HOW | OpenAPI YAML 规格文件 |
|
|
62
|
+
| `database/` | Phase 3: HOW | SQL DDL 设计文件 |
|
|
63
|
+
| `test/` | Phase 3: HOW | 单元测试 + 场景测试用例规格(Markdown) |
|
|
64
|
+
| `scenario/` | Phase 3: HOW | API 编排测试用例(JSON,仅 API 项目) |
|
|
65
|
+
| `verify/` | Phase 3: HOW | 测试运行结果(JSONL)+ 验收报告(Markdown) |
|
|
66
|
+
|
|
67
|
+
### logos/changes/
|
|
68
|
+
|
|
69
|
+
变更提案工作区。每次功能迭代或 Bug 修复,先在这里创建变更提案,审核通过后再合并回主文档。详见 [change-management.md](./change-management.md)。
|
|
70
|
+
|
|
71
|
+
### logos.config.json 与 logos-project.yaml
|
|
72
|
+
|
|
73
|
+
- `logos/logos.config.json`:项目配置文件,定义文档模块的路径和匹配模式
|
|
74
|
+
- `logos/logos-project.yaml`:AI 协作索引,为 AI 助手提供项目全局上下文
|
|
75
|
+
|
|
76
|
+
两个文件都放在 `logos/` 目录下。
|
|
77
|
+
|
|
78
|
+
## 文件命名约定
|
|
79
|
+
|
|
80
|
+
### 文档文件
|
|
81
|
+
|
|
82
|
+
- 使用 `{序号}-{英文名}.md` 格式:`01-requirements.md`
|
|
83
|
+
- 序号用于控制显示顺序
|
|
84
|
+
- HTML 原型使用 `{序号}-{英文名}-prototype.html` 格式
|
|
85
|
+
- 设计文档与原型成对出现:`03-homepage-design.md` + `03-homepage-prototype.html`
|
|
86
|
+
|
|
87
|
+
### API 文件
|
|
88
|
+
|
|
89
|
+
- 按领域分文件:`auth.yaml`、`payment.yaml`、`license.yaml`
|
|
90
|
+
- 使用 OpenAPI 3.0 YAML 格式
|
|
91
|
+
|
|
92
|
+
### 数据库文件
|
|
93
|
+
|
|
94
|
+
- 完整 Schema:`{project-name}.sql`
|
|
95
|
+
- 或按领域分文件:`auth.sql`、`payment.sql`
|
|
96
|
+
|
|
97
|
+
### 测试用例规格文件
|
|
98
|
+
|
|
99
|
+
- 按场景分文件:`S01-test-cases.md`、`S02-test-cases.md`
|
|
100
|
+
- 使用 Markdown 格式,包含单元测试和场景测试的用例设计
|
|
101
|
+
- 每个文件对应一个场景编号,覆盖该场景的所有测试层级
|
|
102
|
+
|
|
103
|
+
### 场景文件
|
|
104
|
+
|
|
105
|
+
- 按场景分文件:`user-auth.json`、`payment-flow.json`
|
|
106
|
+
- 使用 JSON 格式定义 API 编排
|
|
107
|
+
|
|
108
|
+
### 验收文件
|
|
109
|
+
|
|
110
|
+
- 测试结果:`test-results.jsonl`(JSONL 格式,每行一个用例结果)
|
|
111
|
+
- 验收报告:`acceptance-report.md`(由 `openlogos verify` 自动生成)
|
|
112
|
+
- 详细格式定义见 [test-results.md](./test-results.md)
|
|
113
|
+
|
|
114
|
+
## 可选目录
|
|
115
|
+
|
|
116
|
+
根据项目需要,可以添加以下目录:
|
|
117
|
+
|
|
118
|
+
| 目录 | 用途 |
|
|
119
|
+
|------|------|
|
|
120
|
+
| `logos/resources/image/` | 产品图片资源(截图、图标等) |
|
|
121
|
+
| `logos/resources/context/` | 额外的 AI 上下文文件 |
|
|
122
|
+
| `docs/` | 面向用户的文档(部署文档、使用手册等) |
|
|
123
|
+
| `scripts/` | 开发脚本 |
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# logos-project.yaml 规范
|
|
2
|
+
|
|
3
|
+
> 版本:0.3.0
|
|
4
|
+
>
|
|
5
|
+
> logos-project.yaml 是 OpenLogos 项目的 AI 协作索引文件。它为 AI 助手提供项目的全局上下文,让 AI 打开项目就知道该读哪些资料、项目用了什么技术栈、遵循什么约定。
|
|
6
|
+
|
|
7
|
+
## 文件位置
|
|
8
|
+
|
|
9
|
+
`logos/logos-project.yaml`(位于 `logos/` 目录下)
|
|
10
|
+
|
|
11
|
+
## 字段定义
|
|
12
|
+
|
|
13
|
+
### 顶层字段
|
|
14
|
+
|
|
15
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
16
|
+
|------|------|------|------|
|
|
17
|
+
| `project` | object | 是 | 项目基本信息 |
|
|
18
|
+
| `tech_stack` | object | 是 | 技术栈描述 |
|
|
19
|
+
| `resource_index` | array | 是 | 资源索引列表 |
|
|
20
|
+
| `conventions` | array | 否 | 项目约定 |
|
|
21
|
+
|
|
22
|
+
### project
|
|
23
|
+
|
|
24
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
25
|
+
|------|------|------|------|
|
|
26
|
+
| `name` | string | 是 | 项目名称 |
|
|
27
|
+
| `description` | string | 是 | 项目一句话描述 |
|
|
28
|
+
| `methodology` | string | 否 | 遵循的方法论(默认 "OpenLogos") |
|
|
29
|
+
|
|
30
|
+
### tech_stack
|
|
31
|
+
|
|
32
|
+
自由格式的键值对,描述项目使用的技术栈。推荐包含以下 key:
|
|
33
|
+
|
|
34
|
+
| Key | 说明 | 示例 |
|
|
35
|
+
|-----|------|------|
|
|
36
|
+
| `framework` | 主框架 | "Astro 5.x" |
|
|
37
|
+
| `language` | 主语言 | "TypeScript" |
|
|
38
|
+
| `hosting` | 部署平台 | "Cloudflare Pages" |
|
|
39
|
+
| `database` | 数据库 | "Supabase (PostgreSQL)" |
|
|
40
|
+
| `auth` | 认证方案 | "Supabase Auth" |
|
|
41
|
+
|
|
42
|
+
### external_dependencies
|
|
43
|
+
|
|
44
|
+
数组,声明项目依赖的外部服务及其测试策略。在架构设计阶段(S12)确定,供编排测试阶段(S06)自动消费。
|
|
45
|
+
|
|
46
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
47
|
+
|------|------|------|------|
|
|
48
|
+
| `name` | string | 是 | 外部依赖名称(如"邮件服务"、"图形验证码") |
|
|
49
|
+
| `provider` | string | 是 | 具体服务商(如"SendGrid"、"reCAPTCHA") |
|
|
50
|
+
| `used_in` | array | 是 | 涉及的场景列表(如 `["S01-用户注册", "S03-忘记密码"]`) |
|
|
51
|
+
| `test_strategy` | string | 是 | 测试策略枚举值(见下表) |
|
|
52
|
+
| `test_config` | string | 是 | 测试策略的具体配置说明 |
|
|
53
|
+
|
|
54
|
+
`test_strategy` 枚举值:
|
|
55
|
+
|
|
56
|
+
| 值 | 说明 | 典型场景 |
|
|
57
|
+
|----|------|---------|
|
|
58
|
+
| `test-api` | 测试环境提供后门 API 获取验证码/回调等 | 邮件验证码、短信验证码 |
|
|
59
|
+
| `fixed-value` | 特定测试数据使用固定值 | 测试手机号固定验证码 |
|
|
60
|
+
| `env-disable` | 通过环境变量关闭该功能 | 图形验证码、滑块验证 |
|
|
61
|
+
| `mock-callback` | 编排中主动调用模拟回调端点 | 支付回调、Webhook |
|
|
62
|
+
| `mock-service` | 使用本地 mock 服务替代 | OAuth Provider、第三方 API |
|
|
63
|
+
|
|
64
|
+
### resource_index
|
|
65
|
+
|
|
66
|
+
数组,每个元素描述一个关键资源文件:
|
|
67
|
+
|
|
68
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
69
|
+
|------|------|------|------|
|
|
70
|
+
| `path` | string | 是 | 文件相对路径 |
|
|
71
|
+
| `desc` | string | 是 | 一句话描述——告诉 AI 什么场景下需要读这个文件 |
|
|
72
|
+
|
|
73
|
+
### conventions
|
|
74
|
+
|
|
75
|
+
数组,每个元素是一条项目约定(字符串格式)。
|
|
76
|
+
|
|
77
|
+
## 完整示例
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
project:
|
|
81
|
+
name: "My SaaS Product"
|
|
82
|
+
description: "一个基于 OpenLogos 方法论构建的 SaaS 产品"
|
|
83
|
+
methodology: "OpenLogos"
|
|
84
|
+
|
|
85
|
+
tech_stack:
|
|
86
|
+
framework: "Next.js 15"
|
|
87
|
+
language: "TypeScript"
|
|
88
|
+
hosting: "Vercel"
|
|
89
|
+
database: "Supabase (PostgreSQL)"
|
|
90
|
+
auth: "Supabase Auth"
|
|
91
|
+
payment: "Paddle"
|
|
92
|
+
|
|
93
|
+
external_dependencies:
|
|
94
|
+
- name: "邮件服务"
|
|
95
|
+
provider: "SendGrid"
|
|
96
|
+
used_in: ["S01-用户注册", "S03-忘记密码"]
|
|
97
|
+
test_strategy: "test-api"
|
|
98
|
+
test_config: "GET /api/test/latest-email?to={email}"
|
|
99
|
+
- name: "图形验证码"
|
|
100
|
+
provider: "reCAPTCHA"
|
|
101
|
+
used_in: ["S01-用户注册", "S02-密码登录"]
|
|
102
|
+
test_strategy: "env-disable"
|
|
103
|
+
test_config: "CAPTCHA_ENABLED=false"
|
|
104
|
+
- name: "支付回调"
|
|
105
|
+
provider: "Paddle"
|
|
106
|
+
used_in: ["S05-订阅付费"]
|
|
107
|
+
test_strategy: "mock-callback"
|
|
108
|
+
test_config: "POST /api/test/simulate-payment-callback"
|
|
109
|
+
|
|
110
|
+
resource_index:
|
|
111
|
+
- path: logos/resources/prd/1-product-requirements/01-requirements.md
|
|
112
|
+
desc: 产品核心需求文档。涉及产品定位、目标用户、功能需求时必读。
|
|
113
|
+
- path: logos/resources/prd/2-product-design/1-feature-specs/01-information-architecture.md
|
|
114
|
+
desc: 信息架构文档。涉及页面结构、导航设计时必读。
|
|
115
|
+
- path: logos/resources/api/auth.yaml
|
|
116
|
+
desc: 认证相关 API 规格。涉及登录、注册、OAuth 接口设计时必读。
|
|
117
|
+
- path: logos/resources/database/schema.sql
|
|
118
|
+
desc: 数据库完整 Schema。涉及表结构、字段设计、RLS 策略时必读。
|
|
119
|
+
- path: logos/resources/scenario/user-auth.json
|
|
120
|
+
desc: 用户认证场景的 API 编排。涉及认证流程验收时必读。
|
|
121
|
+
|
|
122
|
+
conventions:
|
|
123
|
+
- "所有 API 路径以 /api/ 开头"
|
|
124
|
+
- "数据库金额字段使用 INTEGER 存储分值"
|
|
125
|
+
- "时间字段统一使用 TIMESTAMPTZ"
|
|
126
|
+
- "每次变更必须先创建 logos/changes/ 变更提案"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 与 AGENTS.md 的关系
|
|
130
|
+
|
|
131
|
+
`logos-project.yaml` 是项目资源的结构化索引,`AGENTS.md` 是面向 AI 的自然语言指令。两者互补:
|
|
132
|
+
|
|
133
|
+
- AGENTS.md 告诉 AI "先读 `logos/logos-project.yaml`"
|
|
134
|
+
- logos-project.yaml 告诉 AI "这个项目有哪些关键文件、什么时候该读"
|
|
135
|
+
- `openlogos sync` 命令会根据 logos-project.yaml 的内容更新 AGENTS.md
|