@clawplays/ospec-cli 0.1.1 → 0.3.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.ja.md +290 -0
- package/README.md +211 -469
- package/README.zh-CN.md +211 -469
- 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,291 @@
|
|
|
1
|
-
|
|
1
|
+
<h1><a href="https://ospec.ai/" target="_blank" rel="noopener noreferrer">OSpec</a></h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<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>
|
|
5
|
+
<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&cacheSeconds=300" alt="npm downloads"></a>
|
|
6
|
+
<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>
|
|
7
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/clawplays/ospec?style=for-the-badge&color=green" alt="License"></a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<img src="https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js 18+">
|
|
12
|
+
<img src="https://img.shields.io/badge/npm-8%2B-CB3837?style=flat-square&logo=npm&logoColor=white" alt="npm 8+">
|
|
13
|
+
<img src="https://img.shields.io/badge/language-TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript">
|
|
14
|
+
<img src="https://img.shields.io/badge/workflow-3_steps-0F766E?style=flat-square" alt="3-step workflow">
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="README.md">English</a> |
|
|
19
|
+
<strong>中文</strong> |
|
|
20
|
+
<a href="README.ja.md">日本語</a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
OSpec 是一个面向 AI 对话协作的文档驱动开发工作流,让你先用文档明确需求与变更,再驱动 AI 实现、验证与归档。
|
|
24
|
+
|
|
25
|
+
<p align="center">
|
|
26
|
+
<a href="docs/README.zh-CN.md">文档入口</a> |
|
|
27
|
+
<a href="docs/prompt-guide.zh-CN.md">提示词文档</a> |
|
|
28
|
+
<a href="docs/usage.zh-CN.md">使用说明</a> |
|
|
29
|
+
<a href="docs/project-overview.zh-CN.md">项目介绍</a> |
|
|
30
|
+
<a href="docs/installation.zh-CN.md">安装说明</a> |
|
|
31
|
+
<a href="https://github.com/clawplays/ospec/issues">Issues</a>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
## npm 安装
|
|
2
35
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
当前版本:
|
|
8
|
-
|
|
9
|
-
- CLI:`0.1.1`
|
|
10
|
-
|
|
11
|
-
文档入口:
|
|
12
|
-
|
|
13
|
-
- [项目介绍](docs/project-overview.zh-CN.md)
|
|
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
|
-
初始化后,关键文件和目录通常包括:
|
|
53
|
-
|
|
54
|
-
- `.skillrc`
|
|
55
|
-
- `.ospec/`
|
|
56
|
-
- `changes/active/`
|
|
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`
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g @clawplays/ospec-cli
|
|
38
|
+
```
|
|
93
39
|
|
|
94
|
-
|
|
40
|
+
## 推荐提示词
|
|
95
41
|
|
|
96
|
-
|
|
42
|
+
大多数团队使用 OSpec,只要 3 步:
|
|
97
43
|
|
|
98
|
-
|
|
44
|
+
1. 在你的项目目录初始化项目
|
|
45
|
+
2. 为文档更新、需求开发或 Bug 修复创建并推进一个 change
|
|
46
|
+
3. 在需求验收通过后归档这个 change
|
|
99
47
|
|
|
100
|
-
1.
|
|
101
|
-
2. 项目知识层补齐
|
|
102
|
-
3. active change 执行
|
|
103
|
-
4. verify / archive / finalize 收口
|
|
48
|
+
### 1. 在你的项目目录初始化项目
|
|
104
49
|
|
|
105
|
-
|
|
50
|
+
推荐提示词:
|
|
106
51
|
|
|
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>]
|
|
52
|
+
```text
|
|
53
|
+
使用 OSpec 初始化这个项目。
|
|
116
54
|
```
|
|
117
55
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
### 1. 先看项目状态
|
|
56
|
+
Claude / Codex Skill 方式:
|
|
121
57
|
|
|
122
|
-
```
|
|
123
|
-
ospec
|
|
58
|
+
```text
|
|
59
|
+
使用 $ospec 初始化这个项目。
|
|
124
60
|
```
|
|
125
61
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
- 项目是否已经初始化
|
|
129
|
-
- 缺哪些协议文件
|
|
130
|
-
- 项目文档覆盖率如何
|
|
131
|
-
- skills 是否完整
|
|
132
|
-
- 当前是否存在 active changes
|
|
133
|
-
- 下一步最推荐执行什么
|
|
134
|
-
|
|
135
|
-
### 2. 初始化协议壳
|
|
62
|
+
<details>
|
|
63
|
+
<summary>命令行</summary>
|
|
136
64
|
|
|
137
65
|
```bash
|
|
138
66
|
ospec init .
|
|
67
|
+
ospec init . --summary "运营后台"
|
|
68
|
+
ospec init . --summary "运营后台" --tech-stack node,react,postgres
|
|
69
|
+
ospec init . --architecture "单体 Web 应用 + API + 统一鉴权" --document-language zh-CN
|
|
139
70
|
```
|
|
140
71
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
- 创建 OSpec 协议壳
|
|
144
|
-
- 不默认生成 Web 模板或业务 scaffold
|
|
145
|
-
- 不自动创建第一个 change
|
|
146
|
-
|
|
147
|
-
这体现了 OSpec 的一个核心原则:先建立协作协议,不抢业务决策,也不猜项目类型。
|
|
72
|
+
命令行说明:
|
|
148
73
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
74
|
+
- `--summary`:项目概况,会写入生成的项目文档
|
|
75
|
+
- `--tech-stack`:技术栈,使用逗号分隔,例如 `node,react,postgres`
|
|
76
|
+
- `--architecture`:简短的架构说明
|
|
77
|
+
- `--document-language`:生成文档的语言,通常使用 `zh-CN` 或 `en-US`
|
|
78
|
+
- 传了这些参数,就按你提供的内容生成项目说明
|
|
79
|
+
- 不传时,OSpec 会优先复用现有文档;如果没有,就先生成待补充的默认文档
|
|
154
80
|
|
|
155
|
-
|
|
81
|
+
</details>
|
|
156
82
|
|
|
157
|
-
|
|
83
|
+
### 2. 创建并推进一个 Change
|
|
158
84
|
|
|
159
|
-
|
|
160
|
-
- 不会自动应用业务 scaffold
|
|
161
|
-
- 不会自动开始一个需求
|
|
85
|
+
文档更新、需求开发、重构、Bug 修复,都使用这一类方式。
|
|
162
86
|
|
|
163
|
-
|
|
87
|
+
推荐提示词:
|
|
164
88
|
|
|
165
|
-
```
|
|
166
|
-
|
|
89
|
+
```text
|
|
90
|
+
使用 OSpec 为这个需求创建并推进一个 change。
|
|
167
91
|
```
|
|
168
92
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
创建后,项目里会出现:
|
|
93
|
+
Claude / Codex Skill 方式:
|
|
172
94
|
|
|
173
|
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
- `verification.md`:记录验证项
|
|
177
|
-
- `review.md`:记录评审视角
|
|
95
|
+
```text
|
|
96
|
+
使用 $ospec-change 为这个需求创建并推进一个 change。
|
|
97
|
+
```
|
|
178
98
|
|
|
179
|
-
|
|
99
|
+

|
|
180
100
|
|
|
181
|
-
|
|
101
|
+
<details>
|
|
102
|
+
<summary>命令行</summary>
|
|
182
103
|
|
|
183
104
|
```bash
|
|
184
|
-
ospec
|
|
185
|
-
ospec
|
|
186
|
-
ospec
|
|
105
|
+
ospec new docs-homepage-refresh .
|
|
106
|
+
ospec new fix-login-timeout .
|
|
107
|
+
ospec new update-billing-copy .
|
|
187
108
|
```
|
|
188
109
|
|
|
189
|
-
|
|
110
|
+
</details>
|
|
190
111
|
|
|
191
|
-
|
|
192
|
-
- `verify`:当前 change 的协议文件和验证项是否完整
|
|
193
|
-
- `changes status`:整个项目所有 active changes 的 PASS / WARN / FAIL 汇总
|
|
112
|
+
### 3. 验收通过后归档
|
|
194
113
|
|
|
195
|
-
|
|
114
|
+
当需求已经完成部署、测试、QA 或业务验收后,再归档这个 change。
|
|
196
115
|
|
|
197
|
-
|
|
116
|
+
推荐提示词:
|
|
198
117
|
|
|
199
|
-
```
|
|
200
|
-
|
|
118
|
+
```text
|
|
119
|
+
使用 OSpec 归档这个已验收通过的 change。
|
|
201
120
|
```
|
|
202
121
|
|
|
203
|
-
|
|
122
|
+
Claude / Codex Skill 方式:
|
|
204
123
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
最后把 change 从 `changes/active/` 挪到 `changes/archived/`,并把仓库留在“可以手动提交 Git”的状态。
|
|
210
|
-
|
|
211
|
-
### 7. 显式队列模式
|
|
212
|
-
|
|
213
|
-
队列模式默认是保守接入:
|
|
214
|
-
|
|
215
|
-
- `ospec new` 仍然只创建一个普通 active change
|
|
216
|
-
- 不会因为仓库状态自动进入队列模式
|
|
217
|
-
- 只有显式使用 `ospec queue ...` 或 `ospec run ...` 才会启动队列能力
|
|
124
|
+
```text
|
|
125
|
+
使用 $ospec 归档这个已验收通过的 change。
|
|
126
|
+
```
|
|
218
127
|
|
|
219
|
-
|
|
128
|
+
<details>
|
|
129
|
+
<summary>命令行</summary>
|
|
220
130
|
|
|
221
131
|
```bash
|
|
222
|
-
ospec
|
|
223
|
-
ospec
|
|
224
|
-
ospec queue status .
|
|
225
|
-
ospec queue next .
|
|
226
|
-
ospec run start . --profile manual-safe
|
|
227
|
-
ospec run step .
|
|
132
|
+
ospec verify changes/active/<change-name>
|
|
133
|
+
ospec finalize changes/active/<change-name>
|
|
228
134
|
```
|
|
229
135
|
|
|
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. 先门禁,再归档
|
|
136
|
+
归档说明:
|
|
137
|
+
|
|
138
|
+
- 先完成你项目自己的部署、测试、QA 或验收流程
|
|
139
|
+
- 使用 `ospec verify` 确认当前 change 已满足归档条件
|
|
140
|
+
- 使用 `ospec finalize` 重建索引并归档这个已验收通过的 change
|
|
141
|
+
|
|
142
|
+
</details>
|
|
143
|
+
|
|
144
|
+
## OSpec 的工作方式
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
148
|
+
│ 1. 用户提出需求 │
|
|
149
|
+
│ “使用 OSpec 为这个任务创建并推进一个 change。” │
|
|
150
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
151
|
+
│
|
|
152
|
+
▼
|
|
153
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
154
|
+
│ 2. 初始化到 change-ready │
|
|
155
|
+
│ ospec init │
|
|
156
|
+
│ - .skillrc │
|
|
157
|
+
│ - .ospec/ │
|
|
158
|
+
│ - changes/active + changes/archived │
|
|
159
|
+
│ - 根目录 SKILL 文件和 for-ai 规则文档 │
|
|
160
|
+
│ - docs/project/* 基础知识文档 │
|
|
161
|
+
│ - 复用已有文档或回退到占位文档 │
|
|
162
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
163
|
+
│
|
|
164
|
+
▼
|
|
165
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
166
|
+
│ 3. 执行 │
|
|
167
|
+
│ ospec new <change-name> │
|
|
168
|
+
│ ospec progress │
|
|
169
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
170
|
+
│
|
|
171
|
+
▼
|
|
172
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
173
|
+
│ 4. 部署并验证 │
|
|
174
|
+
│ 项目部署 / 测试 / QA │
|
|
175
|
+
│ ospec verify │
|
|
176
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
177
|
+
│
|
|
178
|
+
▼
|
|
179
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
180
|
+
│ 5. 归档 │
|
|
181
|
+
│ ospec finalize │
|
|
182
|
+
│ 重建索引 + archive │
|
|
183
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
184
|
+
```
|
|
448
185
|
|
|
449
|
-
|
|
186
|
+
## 三个核心概念
|
|
450
187
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
-
|
|
188
|
+
| 概念 | 说明 |
|
|
189
|
+
|------|------|
|
|
190
|
+
| **协议壳** | 最小协作骨架,包括 `.skillrc`、`.ospec/`、`changes/`、根目录 `SKILL.md`、`SKILL.index.json` 和 `for-ai/` 规则文档。 |
|
|
191
|
+
| **项目知识层** | 给 AI 持续读取的项目上下文,例如 `docs/project/*`、分层技能文件和索引状态。 |
|
|
192
|
+
| **Active Change** | 单个需求的独立执行容器,通常包含 `proposal.md`、`tasks.md`、`state.json`、`verification.md`、`review.md`。 |
|
|
454
193
|
|
|
455
|
-
|
|
194
|
+
## 功能特性
|
|
456
195
|
|
|
457
|
-
|
|
196
|
+
- **一步到 change-ready 的初始化**:`ospec init` 一次性创建协议壳和基础项目知识文档。
|
|
197
|
+
- **带追问能力的初始化**:在 AI 协作初始化中,如果缺少项目概况或技术栈,可以只追问一次;纯 CLI 初始化则直接落占位文档。
|
|
198
|
+
- **知识层维护命令**:`ospec docs generate` 用于后续刷新、修复或补齐项目知识层。
|
|
199
|
+
- **需求执行可追踪**:一个 change 可以持续对齐 proposal、tasks、state、verification、review。
|
|
200
|
+
- **显式队列能力**:`queue` 和 `run` 用于多 change 场景,不会默认偷偷进入队列模式。
|
|
201
|
+
- **插件工作流门禁**:内置支持 Stitch 设计审核和 Checkpoint 自动化检查。
|
|
202
|
+
- **skills 管理**:支持 Codex 和 Claude Code 的 OSpec skill 安装与检查。
|
|
203
|
+
- **标准收口路径**:`finalize` 负责验证、重建索引和归档,Git 提交仍保持手动可控。
|
|
458
204
|
|
|
459
|
-
|
|
205
|
+
## 插件功能
|
|
460
206
|
|
|
461
|
-
|
|
207
|
+
OSpec 内置两个可选插件,用来把 UI 审核和流程验证接入到文档驱动交付流程中。
|
|
462
208
|
|
|
463
|
-
|
|
464
|
-
- 安全检查
|
|
465
|
-
- 其他审批能力
|
|
209
|
+
### Stitch
|
|
466
210
|
|
|
467
|
-
|
|
211
|
+
用于页面设计审核与预览协作,适合落地页、营销页和 UI 变化较多的需求。
|
|
468
212
|
|
|
469
|
-
|
|
213
|
+
AI 对话方式:
|
|
470
214
|
|
|
471
|
-
|
|
215
|
+
```text
|
|
216
|
+
使用 OSpec 帮我打开 Stitch 插件。
|
|
217
|
+
```
|
|
472
218
|
|
|
473
|
-
|
|
474
|
-
- Claude Code
|
|
219
|
+
Claude / Codex Skill 方式:
|
|
475
220
|
|
|
476
|
-
|
|
221
|
+
```text
|
|
222
|
+
使用 $ospec 帮我打开 Stitch 插件。
|
|
223
|
+
```
|
|
477
224
|
|
|
478
|
-
|
|
225
|
+
<details>
|
|
226
|
+
<summary>命令行</summary>
|
|
479
227
|
|
|
480
|
-
|
|
228
|
+
```bash
|
|
229
|
+
ospec plugins enable stitch .
|
|
230
|
+
```
|
|
481
231
|
|
|
482
|
-
|
|
232
|
+
</details>
|
|
483
233
|
|
|
484
|
-
|
|
234
|
+
### Checkpoint
|
|
485
235
|
|
|
486
|
-
|
|
487
|
-
- `assets/`:协议文档、约定模板、全局 skills、git hooks
|
|
488
|
-
- `docs/`:对外说明文档和设计规范文档
|
|
489
|
-
- `scripts/`:安装、发版、fork 同步相关脚本
|
|
490
|
-
- `skill.yaml`、`SKILL.md`、`agents/`:技能打包和分发入口
|
|
236
|
+
用于应用流程验证与自动化检查,适合提交流程、关键路径和验收前的运行验证。
|
|
491
237
|
|
|
492
|
-
|
|
238
|
+
AI 对话方式:
|
|
493
239
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
240
|
+
```text
|
|
241
|
+
使用 OSpec 帮我打开 Checkpoint 插件。
|
|
242
|
+
```
|
|
497
243
|
|
|
498
|
-
|
|
244
|
+
Claude / Codex Skill 方式:
|
|
499
245
|
|
|
500
|
-
|
|
501
|
-
|
|
246
|
+
```text
|
|
247
|
+
使用 $ospec 帮我打开 Checkpoint 插件。
|
|
248
|
+
```
|
|
502
249
|
|
|
503
|
-
|
|
250
|
+
<details>
|
|
251
|
+
<summary>命令行</summary>
|
|
504
252
|
|
|
505
|
-
|
|
506
|
-
-
|
|
253
|
+
```bash
|
|
254
|
+
ospec plugins enable checkpoint . --base-url http://127.0.0.1:3000
|
|
255
|
+
```
|
|
507
256
|
|
|
508
|
-
|
|
257
|
+
说明:
|
|
509
258
|
|
|
510
|
-
|
|
259
|
+
- `--base-url` 用来指定运行中的应用地址,供自动化检查使用
|
|
511
260
|
|
|
512
|
-
|
|
513
|
-
- `ospec docs generate` 会补齐知识层和分层技能入口,但不会应用业务 scaffold
|
|
514
|
-
- 当 Stitch 插件未启用时,`ui_change`、`page_design` 这类 flag 会被记录在 `proposal.md`,但会提示为 unsupported flags
|
|
515
|
-
- 当 Stitch 插件启用后,同样的 flag 会真正激活 `stitch_design_review`,并自动生成 `artifacts/stitch/approval.json`
|
|
261
|
+
</details>
|
|
516
262
|
|
|
517
|
-
|
|
263
|
+
## 文档入口
|
|
518
264
|
|
|
519
|
-
|
|
520
|
-
- 显式扩展
|
|
521
|
-
- 流程可检查
|
|
522
|
-
- 插件可阻断
|
|
523
|
-
- 队列能力只有在显式要求时才启动
|
|
265
|
+
### 核心文档
|
|
524
266
|
|
|
525
|
-
|
|
267
|
+
- [文档总览](docs/README.zh-CN.md)
|
|
268
|
+
- [提示词文档](docs/prompt-guide.zh-CN.md)
|
|
269
|
+
- [使用说明](docs/usage.zh-CN.md)
|
|
270
|
+
- [项目介绍](docs/project-overview.zh-CN.md)
|
|
271
|
+
- [安装说明](docs/installation.zh-CN.md)
|
|
272
|
+
- [Skills 安装说明](docs/skills-installation.zh-CN.md)
|
|
526
273
|
|
|
527
|
-
|
|
274
|
+
### 插件高级说明
|
|
528
275
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
ospec init demo
|
|
532
|
-
ospec docs generate demo
|
|
533
|
-
ospec new landing-refresh demo
|
|
534
|
-
ospec changes status demo
|
|
535
|
-
ospec progress demo/changes/active/landing-refresh
|
|
536
|
-
```
|
|
276
|
+
- [Stitch 插件规范](docs/stitch-plugin-spec.zh-CN.md)
|
|
277
|
+
- [Checkpoint 插件规范](docs/checkpoint-plugin-spec.zh-CN.md)
|
|
537
278
|
|
|
538
|
-
|
|
279
|
+
## 仓库结构
|
|
539
280
|
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
|
|
281
|
+
```text
|
|
282
|
+
dist/ 编译后的 CLI 运行时
|
|
283
|
+
assets/ 托管协议资产、hooks 和 skill 载荷
|
|
284
|
+
docs/ 对外文档
|
|
285
|
+
scripts/ 发布和安装辅助脚本
|
|
286
|
+
.ospec/templates/hooks/ 随包分发的 Git hook 模板
|
|
543
287
|
```
|
|
544
288
|
|
|
545
|
-
##
|
|
546
|
-
|
|
547
|
-
如果用一句话概括 OSpec,它不是帮团队“更快生成代码”的工具,而是帮团队“更稳地用 AI 做交付”的工具。
|
|
289
|
+
## License
|
|
548
290
|
|
|
549
|
-
|
|
291
|
+
本项目使用 [MIT License](LICENSE)。
|