@clawplays/ospec-cli 0.1.1 → 0.2.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.
- package/README.md +172 -488
- package/README.zh-CN.md +169 -485
- package/dist/cli.js +104 -8
- package/dist/commands/DocsCommand.js +3 -2
- package/dist/commands/InitCommand.js +69 -11
- package/dist/commands/SkillCommand.js +41 -19
- package/dist/commands/StatusCommand.js +27 -8
- package/dist/commands/UpdateCommand.js +19 -5
- package/dist/services/ProjectService.js +173 -359
- package/dist/services/templates/ProjectTemplateBuilder.js +4 -10
- package/dist/services/templates/TemplateInputFactory.js +14 -7
- package/dist/utils/subcommandHelp.js +5 -5
- package/package.json +9 -2
- package/scripts/postinstall.js +13 -7
package/README.zh-CN.md
CHANGED
|
@@ -1,549 +1,233 @@
|
|
|
1
|
-
|
|
1
|
+
<h1><a href="https://ospec.ai/" target="_blank" rel="noopener noreferrer">OSpec</a></h1>
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[English](README.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/@clawplays/ospec-cli"><img src="https://img.shields.io/npm/v/%40clawplays%2Fospec-cli?style=for-the-badge&logo=npm&label=npm" alt="npm"></a>
|
|
7
|
+
<a href="https://www.npmjs.com/package/@clawplays/ospec-cli"><img src="https://img.shields.io/npm/dm/%40clawplays%2Fospec-cli?style=for-the-badge&logo=npm&label=downloads" alt="npm downloads"></a>
|
|
8
|
+
<a href="https://github.com/clawplays/ospec/stargazers"><img src="https://img.shields.io/github/stars/clawplays/ospec?style=for-the-badge&logo=github" alt="GitHub stars"></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/clawplays/ospec?style=for-the-badge&color=green" alt="License"></a>
|
|
10
|
+
</p>
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img src="https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js 18+">
|
|
14
|
+
<img src="https://img.shields.io/badge/npm-8%2B-CB3837?style=flat-square&logo=npm&logoColor=white" alt="npm 8+">
|
|
15
|
+
<img src="https://img.shields.io/badge/language-TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript">
|
|
16
|
+
<img src="https://img.shields.io/badge/workflow-3_steps-0F766E?style=flat-square" alt="3-step workflow">
|
|
17
|
+
</p>
|
|
8
18
|
|
|
9
|
-
|
|
19
|
+
OSpec 是一个面向 AI 协作交付的 CLI 工作流系统,用来把仓库一次性初始化到可提 change 的状态,并通过可审计的 change 容器推进需求执行。
|
|
10
20
|
|
|
11
|
-
|
|
21
|
+
<p align="center">
|
|
22
|
+
<a href="docs/README.zh-CN.md">文档入口</a> |
|
|
23
|
+
<a href="docs/prompt-guide.zh-CN.md">提示词文档</a> |
|
|
24
|
+
<a href="docs/usage.zh-CN.md">使用说明</a> |
|
|
25
|
+
<a href="docs/project-overview.zh-CN.md">项目介绍</a> |
|
|
26
|
+
<a href="docs/installation.zh-CN.md">安装说明</a> |
|
|
27
|
+
<a href="https://github.com/clawplays/ospec/issues">Issues</a>
|
|
28
|
+
</p>
|
|
12
29
|
|
|
13
|
-
|
|
14
|
-
- [安装说明](docs/installation.zh-CN.md)
|
|
15
|
-
- [使用说明](docs/usage.zh-CN.md)
|
|
16
|
-
- [提示词文档](docs/prompt-guide.zh-CN.md)
|
|
17
|
-
- [Skills 安装说明](docs/skills-installation.zh-CN.md)
|
|
18
|
-
- [GitLab 自定义 Fork 同步方案](docs/custom-fork-sync.zh-CN.md)
|
|
19
|
-
- [Stitch 插件规范](docs/stitch-plugin-spec.zh-CN.md)
|
|
20
|
-
- [Checkpoint 插件规范](docs/checkpoint-plugin-spec.zh-CN.md)
|
|
21
|
-
|
|
22
|
-
## OSpec 是什么
|
|
23
|
-
|
|
24
|
-
OSpec 的核心目标,不是帮团队一次性生成固定项目结构,而是先把 AI 协作的基本规则落下来。
|
|
25
|
-
|
|
26
|
-
它做的事情可以概括成三层:
|
|
27
|
-
|
|
28
|
-
- 先初始化最小协议壳,让项目进入统一协作状态
|
|
29
|
-
- 再补齐项目知识层,让 AI 有稳定上下文可读
|
|
30
|
-
- 最后用 active change 流程管理每个需求的执行、验证和收口
|
|
31
|
-
|
|
32
|
-
如果用更通俗的话说,OSpec 管的不是“先写什么业务页面”,而是“团队和 AI 应该按什么规则协作”。
|
|
33
|
-
|
|
34
|
-
## 想解决什么问题
|
|
35
|
-
|
|
36
|
-
在 AI 参与研发后,常见问题通常有这些:
|
|
37
|
-
|
|
38
|
-
- AI 能写代码,但不知道项目里的执行规则
|
|
39
|
-
- 需求做完以后,中间过程不可见,也很难回溯
|
|
40
|
-
- 文档、技能文件、实现状态容易不同步
|
|
41
|
-
- 不同 AI 客户端使用的协作协议不一致
|
|
42
|
-
- 某些需求需要设计审批或额外门禁,但缺少统一入口
|
|
43
|
-
|
|
44
|
-
OSpec 的思路不是直接给一个很重的业务模板,而是先把协议和门禁建立起来,让项目进入可检查、可追踪、可归档的状态。
|
|
45
|
-
|
|
46
|
-
## 三个核心概念
|
|
47
|
-
|
|
48
|
-
### 1. 协议壳
|
|
49
|
-
|
|
50
|
-
协议壳是项目最小可协作骨架,主要解决“项目先进入统一协作状态”。
|
|
51
|
-
|
|
52
|
-
初始化后,关键文件和目录通常包括:
|
|
30
|
+
## npm 安装
|
|
53
31
|
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
- `changes/archived/`
|
|
58
|
-
- `SKILL.md`
|
|
59
|
-
- `SKILL.index.json`
|
|
60
|
-
- `for-ai/` 下的一组 AI 协作规则文档
|
|
61
|
-
|
|
62
|
-
可以把它理解成项目的“协作底座”。
|
|
63
|
-
|
|
64
|
-
### 2. 项目知识层
|
|
65
|
-
|
|
66
|
-
协议壳建立以后,项目还需要长期稳定的知识上下文。OSpec 用 `docs/project/` 和分层 `SKILL.md` 去承接这部分内容。
|
|
67
|
-
|
|
68
|
-
默认会补齐的项目文档包括:
|
|
69
|
-
|
|
70
|
-
- `docs/project/overview.md`
|
|
71
|
-
- `docs/project/tech-stack.md`
|
|
72
|
-
- `docs/project/architecture.md`
|
|
73
|
-
- `docs/project/module-map.md`
|
|
74
|
-
- `docs/project/api-overview.md`
|
|
75
|
-
|
|
76
|
-
这一步的目标,是让 AI 后续不是盲写,而是有稳定上下文可以引用。
|
|
77
|
-
|
|
78
|
-
### 3. active change
|
|
79
|
-
|
|
80
|
-
OSpec 不把一个需求散落在聊天记录里,而是给每个需求建立一个独立的执行容器。
|
|
81
|
-
|
|
82
|
-
每个 active change 里最关键的文件是:
|
|
83
|
-
|
|
84
|
-
- `proposal.md`
|
|
85
|
-
- `tasks.md`
|
|
86
|
-
- `state.json`
|
|
87
|
-
- `verification.md`
|
|
88
|
-
- `review.md`
|
|
89
|
-
|
|
90
|
-
其中真正的执行状态真源是:
|
|
91
|
-
|
|
92
|
-
- `state.json`
|
|
32
|
+
```bash
|
|
33
|
+
npm install -g @clawplays/ospec-cli
|
|
34
|
+
```
|
|
93
35
|
|
|
94
|
-
|
|
36
|
+
## 推荐提示词
|
|
95
37
|
|
|
96
|
-
|
|
38
|
+
大多数团队使用 OSpec,只要 3 步:
|
|
97
39
|
|
|
98
|
-
|
|
40
|
+
1. 初始化项目
|
|
41
|
+
2. 为文档更新、需求开发或 Bug 修复创建并推进一个 change
|
|
42
|
+
3. 在需求验收通过后归档这个 change
|
|
99
43
|
|
|
100
|
-
1.
|
|
101
|
-
2. 项目知识层补齐
|
|
102
|
-
3. active change 执行
|
|
103
|
-
4. verify / archive / finalize 收口
|
|
44
|
+
### 1. 初始化项目
|
|
104
45
|
|
|
105
|
-
|
|
46
|
+
推荐提示词:
|
|
106
47
|
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
ospec init [path]
|
|
110
|
-
ospec docs generate [path]
|
|
111
|
-
ospec new <change-name> [path]
|
|
112
|
-
ospec progress [changes/active/<change>]
|
|
113
|
-
ospec verify [changes/active/<change>]
|
|
114
|
-
ospec archive [changes/active/<change>]
|
|
115
|
-
ospec finalize [changes/active/<change>]
|
|
48
|
+
```text
|
|
49
|
+
使用 OSpec 初始化这个项目。
|
|
116
50
|
```
|
|
117
51
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
### 1. 先看项目状态
|
|
52
|
+
Claude / Codex Skill 方式:
|
|
121
53
|
|
|
122
|
-
```
|
|
123
|
-
ospec
|
|
54
|
+
```text
|
|
55
|
+
使用 $ospec 初始化这个项目。
|
|
124
56
|
```
|
|
125
57
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
- 项目是否已经初始化
|
|
129
|
-
- 缺哪些协议文件
|
|
130
|
-
- 项目文档覆盖率如何
|
|
131
|
-
- skills 是否完整
|
|
132
|
-
- 当前是否存在 active changes
|
|
133
|
-
- 下一步最推荐执行什么
|
|
134
|
-
|
|
135
|
-
### 2. 初始化协议壳
|
|
58
|
+
<details>
|
|
59
|
+
<summary>命令行</summary>
|
|
136
60
|
|
|
137
61
|
```bash
|
|
138
62
|
ospec init .
|
|
63
|
+
ospec init . --summary "运营后台"
|
|
64
|
+
ospec init . --summary "运营后台" --tech-stack node,react,postgres
|
|
65
|
+
ospec init . --architecture "单体 Web 应用 + API + 统一鉴权" --document-language zh-CN
|
|
139
66
|
```
|
|
140
67
|
|
|
141
|
-
|
|
68
|
+
命令行说明:
|
|
142
69
|
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
70
|
+
- `--summary`:项目概况,会写入生成的项目文档
|
|
71
|
+
- `--tech-stack`:技术栈,使用逗号分隔,例如 `node,react,postgres`
|
|
72
|
+
- `--architecture`:简短的架构说明
|
|
73
|
+
- `--document-language`:生成文档的语言,通常使用 `zh-CN` 或 `en-US`
|
|
74
|
+
- 传了这些参数,就按你提供的内容生成项目说明
|
|
75
|
+
- 不传时,OSpec 会优先复用现有文档;如果没有,就先生成待补充的默认文档
|
|
146
76
|
|
|
147
|
-
|
|
77
|
+
</details>
|
|
148
78
|
|
|
149
|
-
###
|
|
79
|
+
### 2. 创建并推进一个 Change
|
|
150
80
|
|
|
151
|
-
|
|
152
|
-
ospec docs generate .
|
|
153
|
-
```
|
|
81
|
+
文档更新、需求开发、重构、Bug 修复,都使用这一类方式。
|
|
154
82
|
|
|
155
|
-
|
|
83
|
+
推荐提示词:
|
|
156
84
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
- 会补项目知识
|
|
160
|
-
- 不会自动应用业务 scaffold
|
|
161
|
-
- 不会自动开始一个需求
|
|
162
|
-
|
|
163
|
-
### 4. 创建一个需求 change
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
ospec new landing-refresh .
|
|
85
|
+
```text
|
|
86
|
+
使用 OSpec 为这个需求创建并推进一个 change。
|
|
167
87
|
```
|
|
168
88
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
创建后,项目里会出现:
|
|
89
|
+
Claude / Codex Skill 方式:
|
|
172
90
|
|
|
173
|
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
- `verification.md`:记录验证项
|
|
177
|
-
- `review.md`:记录评审视角
|
|
91
|
+
```text
|
|
92
|
+
使用 $ospec-change 为这个需求创建并推进一个 change。
|
|
93
|
+
```
|
|
178
94
|
|
|
179
|
-
|
|
95
|
+

|
|
180
96
|
|
|
181
|
-
|
|
97
|
+
<details>
|
|
98
|
+
<summary>命令行</summary>
|
|
182
99
|
|
|
183
100
|
```bash
|
|
184
|
-
ospec
|
|
185
|
-
ospec
|
|
186
|
-
ospec
|
|
101
|
+
ospec new docs-homepage-refresh .
|
|
102
|
+
ospec new fix-login-timeout .
|
|
103
|
+
ospec new update-billing-copy .
|
|
187
104
|
```
|
|
188
105
|
|
|
189
|
-
|
|
106
|
+
</details>
|
|
190
107
|
|
|
191
|
-
|
|
192
|
-
- `verify`:当前 change 的协议文件和验证项是否完整
|
|
193
|
-
- `changes status`:整个项目所有 active changes 的 PASS / WARN / FAIL 汇总
|
|
108
|
+
### 3. 验收通过后归档
|
|
194
109
|
|
|
195
|
-
|
|
110
|
+
当需求已经完成部署、测试、QA 或业务验收后,再归档这个 change。
|
|
196
111
|
|
|
197
|
-
|
|
112
|
+
推荐提示词:
|
|
198
113
|
|
|
199
|
-
```
|
|
200
|
-
|
|
114
|
+
```text
|
|
115
|
+
使用 OSpec 归档这个已验收通过的 change。
|
|
201
116
|
```
|
|
202
117
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
- verify
|
|
206
|
-
- 重建索引
|
|
207
|
-
- archive
|
|
208
|
-
|
|
209
|
-
最后把 change 从 `changes/active/` 挪到 `changes/archived/`,并把仓库留在“可以手动提交 Git”的状态。
|
|
210
|
-
|
|
211
|
-
### 7. 显式队列模式
|
|
212
|
-
|
|
213
|
-
队列模式默认是保守接入:
|
|
118
|
+
Claude / Codex Skill 方式:
|
|
214
119
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
120
|
+
```text
|
|
121
|
+
使用 $ospec 归档这个已验收通过的 change。
|
|
122
|
+
```
|
|
218
123
|
|
|
219
|
-
|
|
124
|
+
<details>
|
|
125
|
+
<summary>命令行</summary>
|
|
220
126
|
|
|
221
127
|
```bash
|
|
222
|
-
ospec
|
|
223
|
-
ospec
|
|
224
|
-
ospec queue status .
|
|
225
|
-
ospec queue next .
|
|
226
|
-
ospec run start . --profile manual-safe
|
|
227
|
-
ospec run step .
|
|
128
|
+
ospec verify changes/active/<change-name>
|
|
129
|
+
ospec finalize changes/active/<change-name>
|
|
228
130
|
```
|
|
229
131
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
- `init`
|
|
280
|
-
- `docs status`
|
|
281
|
-
- `docs generate`
|
|
282
|
-
|
|
283
|
-
这组命令主要解决“项目是否进入协议化协作状态”。
|
|
284
|
-
|
|
285
|
-
### 2. 需求执行流程
|
|
286
|
-
|
|
287
|
-
- `new`
|
|
288
|
-
- `progress`
|
|
289
|
-
- `verify`
|
|
290
|
-
- `archive`
|
|
291
|
-
- `finalize`
|
|
292
|
-
- `changes status`
|
|
293
|
-
|
|
294
|
-
这组命令主要解决“一个需求如何从创建走到收口”。
|
|
295
|
-
|
|
296
|
-
### 3. 技能与索引管理
|
|
297
|
-
|
|
298
|
-
- `skills status`
|
|
299
|
-
- `skill status`
|
|
300
|
-
- `skill install`
|
|
301
|
-
- `index check`
|
|
302
|
-
- `index build`
|
|
303
|
-
|
|
304
|
-
这组命令主要解决“AI 该从哪里读规则,以及规则是否同步”。
|
|
305
|
-
|
|
306
|
-
### 4. 插件化工作流
|
|
307
|
-
|
|
308
|
-
- `plugins status`
|
|
309
|
-
- `plugins enable stitch`
|
|
310
|
-
- `plugins run stitch`
|
|
311
|
-
- `plugins approve stitch`
|
|
312
|
-
- `plugins reject stitch`
|
|
313
|
-
- `plugins doctor stitch`
|
|
314
|
-
|
|
315
|
-
这组命令主要解决“某些需求除了代码之外,还需要额外阻断步骤”。
|
|
316
|
-
|
|
317
|
-
当前第一个插件是 `stitch`,主要面向页面设计验收。
|
|
318
|
-
|
|
319
|
-
### 5. 协议更新与分发
|
|
320
|
-
|
|
321
|
-
- `update`
|
|
322
|
-
- `skill install`
|
|
323
|
-
- `skill install-claude`
|
|
324
|
-
|
|
325
|
-
这组能力让 OSpec 不只管理单个项目,还能把同一套协作协议同步给不同 AI 客户端。
|
|
326
|
-
|
|
327
|
-
其中 `ospec update [path]` 的边界是:
|
|
328
|
-
|
|
329
|
-
- 会刷新协议文档、项目 tooling、Git hooks、托管安装的 skills,以及已启用插件的托管工作目录资产
|
|
330
|
-
- 不会自动 `enable/disable` 插件
|
|
331
|
-
- 不会自动调整已有 active changes 到新的插件工作流
|
|
332
|
-
- 如果要启用 Stitch,仍需显式执行 `ospec plugins enable stitch [path]`
|
|
333
|
-
|
|
334
|
-
## 一个容易混淆的细节
|
|
335
|
-
|
|
336
|
-
当前版本里,有两个概念需要分开理解:
|
|
337
|
-
|
|
338
|
-
- 结构层级
|
|
339
|
-
- 工作流模式
|
|
340
|
-
|
|
341
|
-
### 结构层级
|
|
342
|
-
|
|
343
|
-
结构判断现在固定只按:
|
|
344
|
-
|
|
345
|
-
- `none`
|
|
346
|
-
|
|
347
|
-
来理解。
|
|
348
|
-
|
|
349
|
-
它不再使用 `basic` / `full` 去描述“仓库结构层级”。
|
|
350
|
-
|
|
351
|
-
### 工作流模式
|
|
352
|
-
|
|
353
|
-
初始化出来的 `.skillrc` 默认工作流模式仍然是:
|
|
354
|
-
|
|
355
|
-
- `full`
|
|
356
|
-
|
|
357
|
-
它影响的是:
|
|
358
|
-
|
|
359
|
-
- 支持哪些 feature flags
|
|
360
|
-
- 哪些 optional steps 会被激活
|
|
361
|
-
- archive gate 需要检查什么
|
|
362
|
-
|
|
363
|
-
所以应当这样理解:
|
|
364
|
-
|
|
365
|
-
- 结构层级表示项目是否完成协议化初始化
|
|
366
|
-
- 工作流模式表示需求执行时采用多严格的流程
|
|
367
|
-
|
|
368
|
-
## Stitch 插件
|
|
369
|
-
|
|
370
|
-
Stitch 体现了 OSpec 的插件化扩展能力。
|
|
371
|
-
|
|
372
|
-
它的思路不是把设计审核硬编码进主流程,而是:
|
|
373
|
-
|
|
374
|
-
- 项目通过 plugin 启用能力
|
|
375
|
-
- plugin 贡献 optional step
|
|
376
|
-
- change 根据 flag 命中后激活这个 step
|
|
377
|
-
- `verify / archive / finalize` 依据审批产物进行阻断
|
|
378
|
-
|
|
379
|
-
例如项目启用 Stitch 后,如果新 change 带这些 flags:
|
|
380
|
-
|
|
381
|
-
- `ui_change`
|
|
382
|
-
- `page_design`
|
|
383
|
-
- `landing_page`
|
|
384
|
-
|
|
385
|
-
那么系统会激活:
|
|
386
|
-
|
|
387
|
-
- `stitch_design_review`
|
|
388
|
-
|
|
389
|
-
并在 change 下生成:
|
|
390
|
-
|
|
391
|
-
- `artifacts/stitch/approval.json`
|
|
392
|
-
|
|
393
|
-
如果这个审批文件没有通过,change 就不能声称已完成,也不能归档。
|
|
394
|
-
|
|
395
|
-
在页面设计评审场景下,这个门禁还要求:
|
|
396
|
-
|
|
397
|
-
- 同一路由只能有一个 canonical layout
|
|
398
|
-
- `light/dark` 必须是一套 layout 的主题变体,不能变成两套不同排版
|
|
399
|
-
- 交付中必须给出 `screen mapping`
|
|
400
|
-
- 旧稿和探索稿必须归档,不能与 canonical 页面并列
|
|
401
|
-
|
|
402
|
-
这说明 OSpec 的插件不是简单提醒,而是真正参与流程门禁。
|
|
403
|
-
|
|
404
|
-
## 设计理念
|
|
405
|
-
|
|
406
|
-
### 1. Protocol-shell-first
|
|
407
|
-
|
|
408
|
-
先建协议壳,再谈业务。
|
|
409
|
-
|
|
410
|
-
这样做的好处是:
|
|
411
|
-
|
|
412
|
-
- 初始化足够轻
|
|
413
|
-
- 不容易误判项目类型
|
|
414
|
-
- 不会把一个还没想清楚的仓库直接塞成固定模板
|
|
415
|
-
|
|
416
|
-
### 2. 显式优于隐式
|
|
417
|
-
|
|
418
|
-
OSpec 很少做“猜你想要什么”的事情。
|
|
419
|
-
|
|
420
|
-
例如:
|
|
421
|
-
|
|
422
|
-
- `init` 不自动补 docs
|
|
423
|
-
- `docs generate` 不自动建 change
|
|
424
|
-
- `new` 不自动推进业务实现
|
|
425
|
-
|
|
426
|
-
每一步都尽量清晰、可控、可解释。
|
|
427
|
-
|
|
428
|
-
### 3. 文档是执行面的一部分
|
|
429
|
-
|
|
430
|
-
在 OSpec 里:
|
|
431
|
-
|
|
432
|
-
- proposal 不是附属汇报材料
|
|
433
|
-
- tasks 不是临时记事本
|
|
434
|
-
- verification 不是最后补充说明
|
|
435
|
-
|
|
436
|
-
这些文档本身就是工作流的一部分,会直接影响后续能不能通过 verify 和 archive。
|
|
437
|
-
|
|
438
|
-
### 4. `state.json` 是状态真源
|
|
439
|
-
|
|
440
|
-
项目明确要求:
|
|
441
|
-
|
|
442
|
-
- 以 `state.json` 作为当前执行状态依据
|
|
443
|
-
- `verification.md` 不能替代 `state.json`
|
|
444
|
-
|
|
445
|
-
这让流程不会因为“说法不一致”而漂移。
|
|
446
|
-
|
|
447
|
-
### 5. 先门禁,再归档
|
|
448
|
-
|
|
449
|
-
OSpec 的收口不是“代码写完就提交”,而是:
|
|
450
|
-
|
|
451
|
-
- 先检查流程是否完整
|
|
452
|
-
- 再允许归档
|
|
453
|
-
- 归档后再进入 Git 提交阶段
|
|
454
|
-
|
|
455
|
-
这会让交付边界更清楚。
|
|
456
|
-
|
|
457
|
-
### 6. 插件化而不是硬编码
|
|
458
|
-
|
|
459
|
-
像设计审核这类能力,不是直接写死在主流程里,而是通过 plugin 注入 step。
|
|
460
|
-
|
|
461
|
-
这意味着未来可以继续扩展:
|
|
462
|
-
|
|
463
|
-
- 设计评审
|
|
464
|
-
- 安全检查
|
|
465
|
-
- 其他审批能力
|
|
466
|
-
|
|
467
|
-
而不用把主工作流改得越来越臃肿。
|
|
468
|
-
|
|
469
|
-
### 7. 同一套协议适配多个 AI 客户端
|
|
470
|
-
|
|
471
|
-
当前项目不仅管理项目内部流程,还能把技能包同步给:
|
|
472
|
-
|
|
473
|
-
- Codex
|
|
474
|
-
- Claude Code
|
|
475
|
-
|
|
476
|
-
这意味着团队即使使用不同 AI 工具,也能尽量共享同一套协作协议。
|
|
477
|
-
|
|
478
|
-
## 当前仓库说明
|
|
479
|
-
|
|
480
|
-
当前仓库本身首先是:
|
|
481
|
-
|
|
482
|
-
- OSpec 的实现与发布仓库
|
|
483
|
-
|
|
484
|
-
它主要包含这些部分:
|
|
485
|
-
|
|
486
|
-
- `dist/`:编译后的 CLI、commands、workflow、services、adapters
|
|
487
|
-
- `assets/`:协议文档、约定模板、全局 skills、git hooks
|
|
488
|
-
- `docs/`:对外说明文档和设计规范文档
|
|
489
|
-
- `scripts/`:安装、发版、fork 同步相关脚本
|
|
490
|
-
- `skill.yaml`、`SKILL.md`、`agents/`:技能打包和分发入口
|
|
491
|
-
|
|
492
|
-
从 `ospec status .` 的结果看,当前仓库根目录并没有完整初始化成一个“被 OSpec 管理的业务项目”,它还缺:
|
|
493
|
-
|
|
494
|
-
- `.skillrc`
|
|
495
|
-
- `changes/active/`
|
|
496
|
-
- `changes/archived/`
|
|
497
|
-
|
|
498
|
-
这说明当前仓库有两个不同身份:
|
|
499
|
-
|
|
500
|
-
- 它是 OSpec 工具本身的源码仓
|
|
501
|
-
- 它不是一个已经用 OSpec 执行业务需求的示例业务仓
|
|
502
|
-
|
|
503
|
-
因此更准确的理解是:
|
|
132
|
+
归档说明:
|
|
133
|
+
|
|
134
|
+
- 先完成你项目自己的部署、测试、QA 或验收流程
|
|
135
|
+
- 使用 `ospec verify` 确认当前 change 已满足归档条件
|
|
136
|
+
- 使用 `ospec finalize` 重建索引并归档这个已验收通过的 change
|
|
137
|
+
|
|
138
|
+
</details>
|
|
139
|
+
|
|
140
|
+
## OSpec 的工作方式
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
144
|
+
│ 1. 用户提出需求 │
|
|
145
|
+
│ “使用 OSpec 为这个任务创建并推进一个 change。” │
|
|
146
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
147
|
+
│
|
|
148
|
+
▼
|
|
149
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
150
|
+
│ 2. 初始化到 change-ready │
|
|
151
|
+
│ ospec init │
|
|
152
|
+
│ - .skillrc │
|
|
153
|
+
│ - .ospec/ │
|
|
154
|
+
│ - changes/active + changes/archived │
|
|
155
|
+
│ - 根目录 SKILL 文件和 for-ai 规则文档 │
|
|
156
|
+
│ - docs/project/* 基础知识文档 │
|
|
157
|
+
│ - 复用已有文档或回退到占位文档 │
|
|
158
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
159
|
+
│
|
|
160
|
+
▼
|
|
161
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
162
|
+
│ 3. 执行 │
|
|
163
|
+
│ ospec new <change-name> │
|
|
164
|
+
│ ospec progress │
|
|
165
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
166
|
+
│
|
|
167
|
+
▼
|
|
168
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
169
|
+
│ 4. 部署并验证 │
|
|
170
|
+
│ 项目部署 / 测试 / QA │
|
|
171
|
+
│ ospec verify │
|
|
172
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
173
|
+
│
|
|
174
|
+
▼
|
|
175
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
176
|
+
│ 5. 归档 │
|
|
177
|
+
│ ospec finalize │
|
|
178
|
+
│ 重建索引 + archive │
|
|
179
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
180
|
+
```
|
|
504
181
|
|
|
505
|
-
|
|
506
|
-
- OSpec 的直接使用对象,是下游业务项目或新初始化目录
|
|
182
|
+
## 三个核心概念
|
|
507
183
|
|
|
508
|
-
|
|
184
|
+
| 概念 | 说明 |
|
|
185
|
+
|------|------|
|
|
186
|
+
| **协议壳** | 最小协作骨架,包括 `.skillrc`、`.ospec/`、`changes/`、根目录 `SKILL.md`、`SKILL.index.json` 和 `for-ai/` 规则文档。 |
|
|
187
|
+
| **项目知识层** | 给 AI 持续读取的项目上下文,例如 `docs/project/*`、分层技能文件和索引状态。 |
|
|
188
|
+
| **Active Change** | 单个需求的独立执行容器,通常包含 `proposal.md`、`tasks.md`、`state.json`、`verification.md`、`review.md`。 |
|
|
509
189
|
|
|
510
|
-
|
|
190
|
+
## 功能特性
|
|
511
191
|
|
|
512
|
-
-
|
|
513
|
-
-
|
|
514
|
-
-
|
|
515
|
-
-
|
|
192
|
+
- **一步到 change-ready 的初始化**:`ospec init` 一次性创建协议壳和基础项目知识文档。
|
|
193
|
+
- **带追问能力的初始化**:在 AI 协作初始化中,如果缺少项目概况或技术栈,可以只追问一次;纯 CLI 初始化则直接落占位文档。
|
|
194
|
+
- **知识层维护命令**:`ospec docs generate` 用于后续刷新、修复或补齐项目知识层。
|
|
195
|
+
- **需求执行可追踪**:一个 change 可以持续对齐 proposal、tasks、state、verification、review。
|
|
196
|
+
- **显式队列能力**:`queue` 和 `run` 用于多 change 场景,不会默认偷偷进入队列模式。
|
|
197
|
+
- **插件工作流门禁**:内置支持 Stitch 设计审核和 Checkpoint 自动化检查。
|
|
198
|
+
- **skills 管理**:支持 Codex 和 Claude Code 的 OSpec skill 安装与检查。
|
|
199
|
+
- **标准收口路径**:`finalize` 负责验证、重建索引和归档,Git 提交仍保持手动可控。
|
|
516
200
|
|
|
517
|
-
|
|
201
|
+
## 文档入口
|
|
518
202
|
|
|
519
|
-
|
|
520
|
-
- 显式扩展
|
|
521
|
-
- 流程可检查
|
|
522
|
-
- 插件可阻断
|
|
523
|
-
- 队列能力只有在显式要求时才启动
|
|
203
|
+
### 核心文档
|
|
524
204
|
|
|
525
|
-
|
|
205
|
+
- [文档总览](docs/README.zh-CN.md)
|
|
206
|
+
- [提示词文档](docs/prompt-guide.zh-CN.md)
|
|
207
|
+
- [使用说明](docs/usage.zh-CN.md)
|
|
208
|
+
- [项目介绍](docs/project-overview.zh-CN.md)
|
|
209
|
+
- [安装说明](docs/installation.zh-CN.md)
|
|
210
|
+
- [Skills 安装说明](docs/skills-installation.zh-CN.md)
|
|
211
|
+
- [GitLab 自定义 Fork 同步方案](docs/custom-fork-sync.zh-CN.md)
|
|
212
|
+
- [上游品牌保护说明](docs/upstream-brand-protection.zh-CN.md)
|
|
526
213
|
|
|
527
|
-
|
|
214
|
+
### 高级规范
|
|
528
215
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
ospec new landing-refresh demo
|
|
534
|
-
ospec changes status demo
|
|
535
|
-
ospec progress demo/changes/active/landing-refresh
|
|
536
|
-
```
|
|
216
|
+
- [Stitch 插件规范](docs/stitch-plugin-spec.zh-CN.md)
|
|
217
|
+
- [Stitch 插件路线图](docs/stitch-plugin-roadmap.zh-CN.md)
|
|
218
|
+
- [Checkpoint 插件规范](docs/checkpoint-plugin-spec.zh-CN.md)
|
|
219
|
+
- [当前 Vibe Coding Spec Flow](docs/current-vibe-coding-spec-flow.zh-CN.md)
|
|
537
220
|
|
|
538
|
-
|
|
221
|
+
## 仓库结构
|
|
539
222
|
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
|
|
223
|
+
```text
|
|
224
|
+
dist/ 编译后的 CLI 运行时
|
|
225
|
+
assets/ 托管协议资产、hooks 和 skill 载荷
|
|
226
|
+
docs/ 对外文档
|
|
227
|
+
scripts/ 发布和安装辅助脚本
|
|
228
|
+
.ospec/templates/hooks/ 随包分发的 Git hook 模板
|
|
543
229
|
```
|
|
544
230
|
|
|
545
|
-
##
|
|
546
|
-
|
|
547
|
-
如果用一句话概括 OSpec,它不是帮团队“更快生成代码”的工具,而是帮团队“更稳地用 AI 做交付”的工具。
|
|
231
|
+
## License
|
|
548
232
|
|
|
549
|
-
|
|
233
|
+
本项目使用 [MIT License](LICENSE)。
|