@opellen/opengoal 1.0.2 → 1.0.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/README.ja.md +4 -2
- package/README.ko.md +4 -2
- package/README.md +417 -415
- package/README.zh-CN.md +4 -2
- package/package.json +1 -1
- package/templates/commands/context.md +1 -1
- package/templates/commands/goal.md +4 -2
- package/templates/commands/verify.md +1 -0
- package/templates/skills/opengoal-flow/SKILL.md +13 -3
package/README.ja.md
CHANGED
|
@@ -83,7 +83,8 @@ docs/
|
|
|
83
83
|
├── DESIGN.md ← Implementation design (as needed)
|
|
84
84
|
├── PLAN.md ← Implementation plan (auto-generated for complex tasks)
|
|
85
85
|
├── ROADMAP.md ← Milestone-based overall plan
|
|
86
|
-
├── BACKLOG.md ←
|
|
86
|
+
├── BACKLOG.md ← 優先度キュー (最大3行、ゴールアーカイブ時に整理)
|
|
87
|
+
├── backlog/ ← 詳細な発見事項(open/)およびドロップ/アーカイブ履歴(archive/)
|
|
87
88
|
├── OVERVIEW.md ← Full project overview (as needed)
|
|
88
89
|
└── suspended/ ← Suspended goals and parked sub-goals
|
|
89
90
|
```
|
|
@@ -96,7 +97,8 @@ docs/
|
|
|
96
97
|
| `DESIGN.md` | どう実装するか? | ゴール達成まで |
|
|
97
98
|
| `PLAN.md` | このタスクをどう実装するか? | 自動生成 → 自動アーカイブ |
|
|
98
99
|
| `ROADMAP.md` | 全体の中で今どこにいるか? | プロジェクトの存続期間 |
|
|
99
|
-
| `BACKLOG.md` | 発見したが後回しにしたことは何か? |
|
|
100
|
+
| `BACKLOG.md` | 発見したが後回しにしたことは何か? | ゴールアーカイブ時に整理 |
|
|
101
|
+
| `backlog/` | 詳細な分析とドロップ履歴はどこにあるか? | 恒久保存 / アーカイブ |
|
|
100
102
|
| `OVERVIEW.md` | プロジェクト全体はどんな姿か? | プロジェクトの存続期間 |
|
|
101
103
|
|
|
102
104
|
`GOAL.md`だけから始めて`ROADMAP.md`へ広げていくのでも、`ROADMAP.md`で全体像を描いてから`GOAL.md`へ落とし込んでいくのでも構いません。どちらの進め方でも、OpenGoalは「今何をすべきか」をMarkdown上に見える状態に保ちます。
|
package/README.ko.md
CHANGED
|
@@ -80,7 +80,8 @@ docs/
|
|
|
80
80
|
├── DESIGN.md ← 구현 설계 (필요 시)
|
|
81
81
|
├── PLAN.md ← 구현 계획 (복잡한 태스크에서 자동 생성)
|
|
82
82
|
├── ROADMAP.md ← 마일스톤 단위 전체 계획
|
|
83
|
-
├── BACKLOG.md ←
|
|
83
|
+
├── BACKLOG.md ← 우선순위 큐 (최대 3줄, 목표 아카이브 시 정리)
|
|
84
|
+
├── backlog/ ← 상세 분석(open/) 및 드롭/아카이브 이력(archive/)
|
|
84
85
|
├── OVERVIEW.md ← 프로젝트 전체 조망 (필요 시)
|
|
85
86
|
└── suspended/ ← 중단된 목표 및 대기 중인 서브골
|
|
86
87
|
```
|
|
@@ -93,7 +94,8 @@ docs/
|
|
|
93
94
|
| `DESIGN.md` | 어떻게 구현하지? | 목표 달성까지 |
|
|
94
95
|
| `PLAN.md` | 이 작업을 어떻게 구현하지? | 자동 생성 → 자동 아카이브 |
|
|
95
96
|
| `ROADMAP.md` | 큰 그림에서 지금 어디쯤에 있지? | 프로젝트 전체 |
|
|
96
|
-
| `BACKLOG.md` | 발견했지만 미뤄둔 건 뭐지? |
|
|
97
|
+
| `BACKLOG.md` | 발견했지만 미뤄둔 건 뭐지? | 목표 아카이브 시 스윕 |
|
|
98
|
+
| `backlog/` | 상세 분석과 드롭된 이력은 어디 있지? | 영구 보관 / 아카이브 |
|
|
97
99
|
| `OVERVIEW.md` | 프로젝트 전체를 한눈에 조망하면? | 프로젝트 전체 |
|
|
98
100
|
|
|
99
101
|
`GOAL.md` 하나로 작게 시작해서 `ROADMAP.md`로 확장해도 되고, `ROADMAP.md`에서 큰 그림을 그리고 `GOAL.md`로 내려와도 됩니다. 어느 방향으로 가든 OpenGoal은 '지금 당장 해야 할 일'을 마크다운으로 한 눈에 보이게 유지합니다.
|
package/README.md
CHANGED
|
@@ -1,415 +1,417 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
<picture>
|
|
3
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/opengoal-banner-light.webp">
|
|
4
|
-
<img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/opengoal-banner-dark.webp" alt="OpenGoal — goal-centric AI harness"/>
|
|
5
|
-
</picture>
|
|
6
|
-
<p>One question, one file — <code>CONTEXT.md</code>, <code>GOAL.md</code>, <code>ROADMAP.md</code></p>
|
|
7
|
-
<p>
|
|
8
|
-
Open <code>GOAL.md</code> and see <b>what to do now</b>.<br/>
|
|
9
|
-
Open <code>CONTEXT.md</code> and see <b>the current context</b>.<br/>
|
|
10
|
-
Open <code>ROADMAP.md</code> and see <b>the current big picture</b>.
|
|
11
|
-
</p>
|
|
12
|
-
<p><strong>English</strong> · <a href="README.ko.md">한국어</a> · <a href="README.zh-CN.md">简体中文</a> · <a href="README.ja.md">日本語</a></p>
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
## What is it?
|
|
16
|
-
|
|
17
|
-
OpenGoal keeps the current goal visible, in plain markdown, for both you and your AI agent.
|
|
18
|
-
|
|
19
|
-
One npx command installs markdown slash-commands and agent skills into your project. After that
|
|
20
|
-
there is no runtime — no CLI in the loop, no hooks intercepting your actions, no MCP server
|
|
21
|
-
holding tool definitions open. What is left on disk is markdown your agent reads and you can
|
|
22
|
-
edit in any editor.
|
|
23
|
-
|
|
24
|
-
## What does it solve?
|
|
25
|
-
|
|
26
|
-
**What you need to do right now isn't visible.**
|
|
27
|
-
The current goal ends up scattered across state files, task lists, and design documents.
|
|
28
|
-
You can't open one file and immediately see what to do next — and neither can your agent,
|
|
29
|
-
which is worse, because it will confidently proceed from whichever fragment it read last.
|
|
30
|
-
|
|
31
|
-
In OpenGoal, one question maps to one file.
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
ROADMAP.md ───────── where am I in the big picture?
|
|
35
|
-
CONTEXT.md ────── what is this project?
|
|
36
|
-
● GOAL.md ── what do I do now?
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**Keeping context shouldn't cost more than the context.**
|
|
40
|
-
Frameworks that maintain state across sessions tend to reach for CLIs, hooks, and MCP servers.
|
|
41
|
-
Light exploration triggers a CLI run, hooks intercept every action, and a configured MCP server
|
|
42
|
-
spends tokens on tool definitions in sessions that never call them. Persistence is worth paying
|
|
43
|
-
for; that price isn't.
|
|
44
|
-
|
|
45
|
-
## Quick start
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npx @opellen/opengoal init
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Markdown commands are installed in your project. No CLI needed after this.
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
/opgl:scout # Start session — just remember this
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Whether it's a new project or an existing codebase, scout reads the current state and guides you to the next step.
|
|
58
|
-
Got existing code? It starts with context setup (`/opgl:context`). Empty project? It starts by exploring your idea through conversation.
|
|
59
|
-
|
|
60
|
-
Most commands auto-run `init` on first use — `/opgl:goal "my goal"` works immediately without typing `init`.
|
|
61
|
-
|
|
62
|
-
### Options
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
opengoal init --docs .planning # Use a different path instead of docs/
|
|
66
|
-
opengoal init --codebase src # Point templates at a sub-directory codebase (default: .)
|
|
67
|
-
opengoal init --tools cursor # Install for a specific tool
|
|
68
|
-
opengoal init --tools cursor,windsurf # Multiple tools
|
|
69
|
-
opengoal init --no-subagent # Disable subagent delegation (enabled by default)
|
|
70
|
-
opengoal init --root path/to/proj # Install into a different project directory
|
|
71
|
-
opengoal init --force # Overwrite existing files
|
|
72
|
-
opengoal init --dry-run # Preview files to install
|
|
73
|
-
opengoal init --prefix <name> # Slash-command prefix (default: opgl)
|
|
74
|
-
opengoal init --from-prefix <name> # Clean up command files left by a previous prefix
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
`--tools` targets `Claude Code`, `Cursor`, `Windsurf`, and [20+ others](docs/supported-tools.md).
|
|
78
|
-
|
|
79
|
-
## Document structure
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
docs/
|
|
83
|
-
├── CONTEXT.md ← Project context, principles, workflow
|
|
84
|
-
├── GOAL.md ← Current objective and checklist
|
|
85
|
-
├── CHECKPOINT.md ← Last session progress
|
|
86
|
-
├── DESIGN.md ← Implementation design (as needed)
|
|
87
|
-
├── PLAN.md ← Implementation plan (auto-generated for complex tasks)
|
|
88
|
-
├── ROADMAP.md ← Milestone-based overall plan
|
|
89
|
-
├── BACKLOG.md ←
|
|
90
|
-
├──
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
- [
|
|
125
|
-
- [ ]
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
- src/
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
- [
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
|
177
|
-
|
|
178
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
179
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
180
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
181
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
182
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
183
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
184
|
-
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
|
198
|
-
|
|
199
|
-
| **
|
|
200
|
-
| **
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
You:
|
|
301
|
-
AI:
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
You:
|
|
320
|
-
AI:
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
- [
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
>
|
|
362
|
-
>
|
|
363
|
-
>
|
|
364
|
-
>
|
|
365
|
-
>
|
|
366
|
-
>
|
|
367
|
-
>
|
|
368
|
-
>
|
|
369
|
-
>
|
|
370
|
-
>
|
|
371
|
-
>
|
|
372
|
-
>
|
|
373
|
-
>
|
|
374
|
-
>
|
|
375
|
-
>
|
|
376
|
-
> I wanted to
|
|
377
|
-
>
|
|
378
|
-
>
|
|
379
|
-
>
|
|
380
|
-
>
|
|
381
|
-
>
|
|
382
|
-
>
|
|
383
|
-
> I
|
|
384
|
-
>
|
|
385
|
-
>
|
|
386
|
-
> I
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
The
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
npm
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/opengoal-banner-light.webp">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/opengoal-banner-dark.webp" alt="OpenGoal — goal-centric AI harness"/>
|
|
5
|
+
</picture>
|
|
6
|
+
<p>One question, one file — <code>CONTEXT.md</code>, <code>GOAL.md</code>, <code>ROADMAP.md</code></p>
|
|
7
|
+
<p>
|
|
8
|
+
Open <code>GOAL.md</code> and see <b>what to do now</b>.<br/>
|
|
9
|
+
Open <code>CONTEXT.md</code> and see <b>the current context</b>.<br/>
|
|
10
|
+
Open <code>ROADMAP.md</code> and see <b>the current big picture</b>.
|
|
11
|
+
</p>
|
|
12
|
+
<p><strong>English</strong> · <a href="README.ko.md">한국어</a> · <a href="README.zh-CN.md">简体中文</a> · <a href="README.ja.md">日本語</a></p>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
## What is it?
|
|
16
|
+
|
|
17
|
+
OpenGoal keeps the current goal visible, in plain markdown, for both you and your AI agent.
|
|
18
|
+
|
|
19
|
+
One npx command installs markdown slash-commands and agent skills into your project. After that
|
|
20
|
+
there is no runtime — no CLI in the loop, no hooks intercepting your actions, no MCP server
|
|
21
|
+
holding tool definitions open. What is left on disk is markdown your agent reads and you can
|
|
22
|
+
edit in any editor.
|
|
23
|
+
|
|
24
|
+
## What does it solve?
|
|
25
|
+
|
|
26
|
+
**What you need to do right now isn't visible.**
|
|
27
|
+
The current goal ends up scattered across state files, task lists, and design documents.
|
|
28
|
+
You can't open one file and immediately see what to do next — and neither can your agent,
|
|
29
|
+
which is worse, because it will confidently proceed from whichever fragment it read last.
|
|
30
|
+
|
|
31
|
+
In OpenGoal, one question maps to one file.
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
ROADMAP.md ───────── where am I in the big picture?
|
|
35
|
+
CONTEXT.md ────── what is this project?
|
|
36
|
+
● GOAL.md ── what do I do now?
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Keeping context shouldn't cost more than the context.**
|
|
40
|
+
Frameworks that maintain state across sessions tend to reach for CLIs, hooks, and MCP servers.
|
|
41
|
+
Light exploration triggers a CLI run, hooks intercept every action, and a configured MCP server
|
|
42
|
+
spends tokens on tool definitions in sessions that never call them. Persistence is worth paying
|
|
43
|
+
for; that price isn't.
|
|
44
|
+
|
|
45
|
+
## Quick start
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @opellen/opengoal init
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Markdown commands are installed in your project. No CLI needed after this.
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
/opgl:scout # Start session — just remember this
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Whether it's a new project or an existing codebase, scout reads the current state and guides you to the next step.
|
|
58
|
+
Got existing code? It starts with context setup (`/opgl:context`). Empty project? It starts by exploring your idea through conversation.
|
|
59
|
+
|
|
60
|
+
Most commands auto-run `init` on first use — `/opgl:goal "my goal"` works immediately without typing `init`.
|
|
61
|
+
|
|
62
|
+
### Options
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
opengoal init --docs .planning # Use a different path instead of docs/
|
|
66
|
+
opengoal init --codebase src # Point templates at a sub-directory codebase (default: .)
|
|
67
|
+
opengoal init --tools cursor # Install for a specific tool
|
|
68
|
+
opengoal init --tools cursor,windsurf # Multiple tools
|
|
69
|
+
opengoal init --no-subagent # Disable subagent delegation (enabled by default)
|
|
70
|
+
opengoal init --root path/to/proj # Install into a different project directory
|
|
71
|
+
opengoal init --force # Overwrite existing files
|
|
72
|
+
opengoal init --dry-run # Preview files to install
|
|
73
|
+
opengoal init --prefix <name> # Slash-command prefix (default: opgl)
|
|
74
|
+
opengoal init --from-prefix <name> # Clean up command files left by a previous prefix
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`--tools` targets `Claude Code`, `Cursor`, `Windsurf`, and [20+ others](docs/supported-tools.md).
|
|
78
|
+
|
|
79
|
+
## Document structure
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
docs/
|
|
83
|
+
├── CONTEXT.md ← Project context, principles, workflow
|
|
84
|
+
├── GOAL.md ← Current objective and checklist
|
|
85
|
+
├── CHECKPOINT.md ← Last session progress
|
|
86
|
+
├── DESIGN.md ← Implementation design (as needed)
|
|
87
|
+
├── PLAN.md ← Implementation plan (auto-generated for complex tasks)
|
|
88
|
+
├── ROADMAP.md ← Milestone-based overall plan
|
|
89
|
+
├── BACKLOG.md ← Priority queue for out-of-scope discoveries (max 3 lines)
|
|
90
|
+
├── backlog/ ← Detailed findings (open/) and dropped archive (archive/)
|
|
91
|
+
├── OVERVIEW.md ← Full project overview (as needed)
|
|
92
|
+
└── suspended/ ← Suspended goals and parked sub-goals
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
| Document | Question it answers | Lifespan |
|
|
96
|
+
|----------|-------------------|----------|
|
|
97
|
+
| `CONTEXT.md` | What is this project and how do I work on it? | Project lifetime |
|
|
98
|
+
| `GOAL.md` | What should I do right now? | Until goal is achieved |
|
|
99
|
+
| `CHECKPOINT.md` | Where did the last session leave off? | Per session (overwritten) |
|
|
100
|
+
| `DESIGN.md` | How do I implement this? | Until goal is achieved |
|
|
101
|
+
| `PLAN.md` | How do I implement this task? | Auto-generated → auto-archived |
|
|
102
|
+
| `ROADMAP.md` | Where am I in the big picture? | Project lifetime |
|
|
103
|
+
| `BACKLOG.md` | What did I discover but defer? | Swept on goal archive |
|
|
104
|
+
| `backlog/` | What are the detailed findings and dropped records? | Persistent / archived |
|
|
105
|
+
| `OVERVIEW.md` | What does this whole project look like? | Project lifetime |
|
|
106
|
+
|
|
107
|
+
Start with just `GOAL.md` and expand to `ROADMAP.md`, or lay out the big picture in `ROADMAP.md` and drill down to `GOAL.md`. Either way, OpenGoal keeps "what to do now" visible on markdown.
|
|
108
|
+
|
|
109
|
+
<details>
|
|
110
|
+
<summary>GOAL.md example</summary>
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
---
|
|
114
|
+
id: session-auth
|
|
115
|
+
goal: Migrate auth from JWT to session-based
|
|
116
|
+
status: in-progress
|
|
117
|
+
started: 2026-04-04
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Tasks
|
|
121
|
+
|
|
122
|
+
- [x] 1. Set up session store
|
|
123
|
+
- [ ] 2. Replace middleware — Step 1/2 (session middleware in progress)
|
|
124
|
+
- [x] 2.1. Implement session middleware
|
|
125
|
+
- [ ] 2.2. Remove legacy JWT code
|
|
126
|
+
- [ ] 3. DB schema migration
|
|
127
|
+
- [ ] 4. Integration tests
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
</details>
|
|
131
|
+
|
|
132
|
+
<details>
|
|
133
|
+
<summary>CONTEXT.md example</summary>
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
# Project Overview
|
|
137
|
+
Express + PostgreSQL REST API server.
|
|
138
|
+
Auth migration from JWT to session-based in progress.
|
|
139
|
+
|
|
140
|
+
# Architecture
|
|
141
|
+
- src/server/ — HTTP routing (Express)
|
|
142
|
+
- src/auth/ — Auth middleware
|
|
143
|
+
- src/db/ — Database access layer
|
|
144
|
+
|
|
145
|
+
# Principles
|
|
146
|
+
- Zero downtime during migration
|
|
147
|
+
- Backward compatibility with existing clients
|
|
148
|
+
|
|
149
|
+
# Resources
|
|
150
|
+
- DB: PostgreSQL 14, migrations via prisma
|
|
151
|
+
- Auth: express-session + connect-pg-simple
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
</details>
|
|
155
|
+
|
|
156
|
+
<details>
|
|
157
|
+
<summary>ROADMAP.md example</summary>
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
---
|
|
161
|
+
id: api-v2
|
|
162
|
+
title: API v2 migration
|
|
163
|
+
status: active
|
|
164
|
+
started: 2026-03-01
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
- [x] **M1: Auth migration**
|
|
168
|
+
- [ ] **M2: Rate limiting**
|
|
169
|
+
- [ ] **M3: API versioning**
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
</details>
|
|
173
|
+
|
|
174
|
+
## Commands
|
|
175
|
+
|
|
176
|
+
| | Command | Description |
|
|
177
|
+
|---|---------|-------------|
|
|
178
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-scout-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-scout.webp" alt="" width="20"/></picture> | `/opgl:scout` | Start session — read docs, assess current state, suggest next action |
|
|
179
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-go-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-go.webp" alt="" width="20"/></picture> | `/opgl:go` | Execute goal — proceed through `GOAL.md` tasks in order |
|
|
180
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-context-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-context.webp" alt="" width="20"/></picture> | `/opgl:context` | Create and sync `CONTEXT.md` |
|
|
181
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-goal-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-goal.webp" alt="" width="20"/></picture> | `/opgl:goal` | `GOAL.md` management (init, breakdown, checkpoint, suspend, resume, subgoal, archive) |
|
|
182
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-design-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-design.webp" alt="" width="20"/></picture> | `/opgl:design` | `DESIGN.md` management (init, sync, archive) |
|
|
183
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-roadmap-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-roadmap.webp" alt="" width="20"/></picture> | `/opgl:roadmap` | `ROADMAP.md` milestone management (init, add, archive) |
|
|
184
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-overview-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-overview.webp" alt="" width="20"/></picture> | `/opgl:overview` | `OVERVIEW.md` full project overview |
|
|
185
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-verify-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-verify.webp" alt="" width="20"/></picture> | `/opgl:verify` | Verify consistency across goal, design, and implementation |
|
|
186
|
+
| <picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-recap-dark.webp"><img src="https://raw.githubusercontent.com/opellen/opengoal/main/assets/icons/opengoal-icon-recap.webp" alt="" width="20"/></picture> | `/opgl:recap` | Session wrap-up — sync decisions into living documents |
|
|
187
|
+
|
|
188
|
+
Two skills install alongside them — `opengoal-flow` (when to document, when to checkpoint,
|
|
189
|
+
and when a discovery becomes a goal of its own) and `opengoal-subagent` (how work is split,
|
|
190
|
+
and what the main agent never hands off). You never invoke a skill directly; the commands
|
|
191
|
+
load them when they need them.
|
|
192
|
+
|
|
193
|
+
### Invocation
|
|
194
|
+
|
|
195
|
+
You don't always need to type `/opgl:` — when intent is clear from context, natural language works too.
|
|
196
|
+
|
|
197
|
+
| Path | `/opgl` required? | Example |
|
|
198
|
+
|------|-------------------|---------|
|
|
199
|
+
| **Explicit invocation** | Yes | `/opgl goal init`, `/opgl:goal init & design init` |
|
|
200
|
+
| **Confirming a recent recommendation** | No | AI: "Recommend `/opgl:goal init`" → User: "ok" / "go" |
|
|
201
|
+
| **Continuation in active flow** | No | (after goal init) User: "breakdown now" |
|
|
202
|
+
| **Task-execution intent** | No | "proceed with task 6" → `/opgl:go`, "save progress" → `/opgl:goal checkpoint` |
|
|
203
|
+
|
|
204
|
+
With clear context, natural language alone triggers execution. `/opgl` serves as an escape hatch when context is ambiguous.
|
|
205
|
+
|
|
206
|
+
## Usage flow
|
|
207
|
+
|
|
208
|
+
### Applying to an existing project
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
You: /opgl:scout
|
|
212
|
+
AI: Found an existing codebase. No CONTEXT.md yet.
|
|
213
|
+
Set up project context with `/opgl:context`?
|
|
214
|
+
|
|
215
|
+
You: /opgl:context init
|
|
216
|
+
AI: ✓ docs/CONTEXT.md created
|
|
217
|
+
To set a goal: `/opgl:goal init`
|
|
218
|
+
|
|
219
|
+
You: /opgl:goal Migrate auth module from JWT to session-based
|
|
220
|
+
AI: ✓ docs/GOAL.md created (5 tasks)
|
|
221
|
+
Recommend `/opgl:design init` — implementation task with file-level decisions.
|
|
222
|
+
|
|
223
|
+
You: /opgl:design init
|
|
224
|
+
AI: ✓ docs/DESIGN.md created
|
|
225
|
+
Session store selection, migration strategy, rollback plan included
|
|
226
|
+
|
|
227
|
+
You: /opgl:go
|
|
228
|
+
AI: Task 1/5: Set up session store... ✓ done
|
|
229
|
+
Task 2/5: Replace middleware... ✓ done
|
|
230
|
+
Task 3/5 requires DB schema changes. Proceed?
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### New project
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
You: /opgl:scout Let's discuss building a real-time collaborative editor
|
|
237
|
+
AI: (Discovery Mode — exploring tech stack, requirements, constraints)
|
|
238
|
+
...
|
|
239
|
+
✓ docs/CONTEXT.md created
|
|
240
|
+
|
|
241
|
+
You: /opgl:roadmap init
|
|
242
|
+
AI: ✓ docs/ROADMAP.md created
|
|
243
|
+
├── M1: Core editor engine
|
|
244
|
+
├── M2: Real-time sync (CRDT)
|
|
245
|
+
└── M3: Deployment & infrastructure
|
|
246
|
+
|
|
247
|
+
You: /opgl:goal
|
|
248
|
+
AI: Selecting M1 from ROADMAP.md.
|
|
249
|
+
✓ docs/GOAL.md created
|
|
250
|
+
|
|
251
|
+
You: /opgl:goal breakdown
|
|
252
|
+
AI: Decomposed into 7 subtasks
|
|
253
|
+
|
|
254
|
+
You: /opgl:goal breakdown 3
|
|
255
|
+
AI: Decomposed Task 3 into 4 subtasks (3.1–3.4)
|
|
256
|
+
|
|
257
|
+
You: /opgl:go
|
|
258
|
+
AI: Task 1/7: Project initialization... ✓ done
|
|
259
|
+
Task 2/7: Editor core implementation... ✓ done
|
|
260
|
+
Task 3/7: CRDT sync engine... ✓ done
|
|
261
|
+
|
|
262
|
+
You: /opgl:goal checkpoint
|
|
263
|
+
AI: ✓ docs/CHECKPOINT.md saved
|
|
264
|
+
(If the session drops, the next one picks up where you left off)
|
|
265
|
+
|
|
266
|
+
... (continue in next session, all tasks complete)
|
|
267
|
+
|
|
268
|
+
You: /opgl:goal archive
|
|
269
|
+
AI: ✓ Archived 4 files to docs/archive/goals/2026-04-04-editor-core/
|
|
270
|
+
(GOAL.md, DESIGN.md, PLAN.md, CHECKPOINT.md)
|
|
271
|
+
Marked M1 done in ROADMAP.md.
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Resuming work
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
You: /opgl:scout
|
|
278
|
+
AI: CONTEXT.md ✓ | GOAL.md ✓ (3/5 complete)
|
|
279
|
+
You were working on API endpoints in the previous session.
|
|
280
|
+
Resume with `/opgl:go`?
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### After a context compaction
|
|
284
|
+
|
|
285
|
+
When the conversation gets compacted mid-work, just re-invoke the command:
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
You: /opgl:go
|
|
289
|
+
AI: GOAL.md ✓ (3/7 complete) — Task 4, Step 2/3
|
|
290
|
+
Resuming: conflict resolution in the CRDT sync engine.
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
One command brings everything back — `GOAL.md`, and the checkpoint if you made one — and work continues from the `— Step N/M` annotation instead of starting over. Use `/opgl:scout` if you want a state report first.
|
|
294
|
+
|
|
295
|
+
### Handling blockers
|
|
296
|
+
|
|
297
|
+
When something comes up mid-goal that must be fixed first:
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
You: (during Goal A) Let's fix this dependency bug first.
|
|
301
|
+
AI: Suggest: /opgl:goal suspend + /opgl:goal init "Fix dependency bug"
|
|
302
|
+
You: ok
|
|
303
|
+
AI: ✓ Goal A suspended to docs/suspended/goal-a/
|
|
304
|
+
✓ New GOAL.md created for the blocker.
|
|
305
|
+
|
|
306
|
+
... (work through the blocker, archive when done)
|
|
307
|
+
|
|
308
|
+
You: /opgl:goal resume
|
|
309
|
+
AI: Resumed: Goal A. Continue with /opgl:go?
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Nested blockers follow the same pattern — suspend stacks, resume presents a list when multiple goals are paused. If a sub-goal is active, park it first with `/opgl:goal subgoal pause` — `suspend` and `init` are refused while one is active.
|
|
313
|
+
|
|
314
|
+
### Handling sub-goals
|
|
315
|
+
|
|
316
|
+
Sometimes what comes up isn't a blocker — the goal can still move forward — but it's bigger than a task, needed now, and a different kind of work than the goal itself, so it can't just wait in `BACKLOG.md` either:
|
|
317
|
+
|
|
318
|
+
```
|
|
319
|
+
You: (during Goal A: job-application pipeline) I need a YAML→PDF portfolio builder for this — it needs its own architecture decisions first.
|
|
320
|
+
AI: Doesn't block Goal A, but it's too big to just do inline. Suggest: /opgl:goal subgoal init "Portfolio PDF builder"
|
|
321
|
+
You: ok
|
|
322
|
+
AI: ✓ Goal A parked to docs/suspended/job-application-pipeline/
|
|
323
|
+
✓ New GOAL.md created, linked to Goal A.
|
|
324
|
+
|
|
325
|
+
... (design and build the portfolio tool, archive when done)
|
|
326
|
+
|
|
327
|
+
AI: ✓ Sub-goal archived. Back on Goal A — pointer task checked off.
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
If the goal can't proceed without it, park it as a blocker instead — see above.
|
|
331
|
+
|
|
332
|
+
## In the field
|
|
333
|
+
|
|
334
|
+
The same goal documents carry a multi-year application build and a weekend plugin.
|
|
335
|
+
That range is the point.
|
|
336
|
+
|
|
337
|
+
**Long-horizon builds**
|
|
338
|
+
|
|
339
|
+
- [Planura](https://github.com/opellen/Planura) — a native direct-modeling 3D application
|
|
340
|
+
(C++20 / Qt 6 / OpenGL): half-edge geometry kernel, CSG solid modeling, inference-driven
|
|
341
|
+
drawing, on [Ordo](https://github.com/opellen/Ordo), its purpose-built application framework.
|
|
342
|
+
- [Ordo](https://github.com/opellen/Ordo) — a typed-event application framework for C++20, extracted from
|
|
343
|
+
Planura. An event is a plain struct: the type is the identity, the fields are the payload.
|
|
344
|
+
- Reverse-engineering campaigns — the domain OpenGoal was designed in, where the goal is
|
|
345
|
+
large, the path is unknown, and progress depends on splitting it finely.
|
|
346
|
+
|
|
347
|
+
**Applications & tools**
|
|
348
|
+
|
|
349
|
+
- [SeedNote](https://github.com/opellen/Seed-Note) — a structured block editor for Android (Kotlin / Jetpack Compose)
|
|
350
|
+
- [ScreenUse](https://github.com/opellen/Screen-Use) — a scenario-driven UI replay and verification tool that drives a real app and records it
|
|
351
|
+
- [OpenIllust](https://github.com/opellen/OpenIllust) — campaign-driven AI vector asset production for Claude Code and
|
|
352
|
+
Codex; the logo set in this repository was produced with it
|
|
353
|
+
|
|
354
|
+
**Focused tools**
|
|
355
|
+
|
|
356
|
+
- [Hilo](https://github.com/opellen/Hilo) — an Obsidian highlighting plugin
|
|
357
|
+
- [Loft](https://github.com/opellen/Loft) — an Obsidian image upload plugin
|
|
358
|
+
|
|
359
|
+
## From the **gap**
|
|
360
|
+
|
|
361
|
+
> **It didn't start with application development.**
|
|
362
|
+
>
|
|
363
|
+
> OpenGoal was built for work where the goal is large, the path is unknown, and progress
|
|
364
|
+
> only comes from splitting the unknown into small, verifiable steps that a human and an
|
|
365
|
+
> agent can hand back and forth over a long horizon — long reverse-engineering campaigns,
|
|
366
|
+
> in the original case. Everything else it is used for inherited that shape.
|
|
367
|
+
>
|
|
368
|
+
> **Heavy workflows weren't always necessary.**
|
|
369
|
+
>
|
|
370
|
+
> All I wanted was a small fix — did I really need all this?
|
|
371
|
+
> Exhaustive discussions with question bombardment and airtight specifications weren't always necessary.
|
|
372
|
+
> Thorough processes are appealing. But AI kept absorbing more and more,
|
|
373
|
+
> and I started to think that maybe the safety nets we want to lean on were, in many cases, becoming excessive shackles.
|
|
374
|
+
> Yet context needed to persist.
|
|
375
|
+
>
|
|
376
|
+
> **I wanted to focus on the present.**
|
|
377
|
+
>
|
|
378
|
+
> I wanted to pull the "current goal" out from under specs and task lists.
|
|
379
|
+
> I wanted to create a "present" that both I and AI could immediately understand and focus on.
|
|
380
|
+
> Whether you grow from small to large, or descend from the big picture —
|
|
381
|
+
> either direction, I wanted a structure where "what to do now" is immediately visible.
|
|
382
|
+
>
|
|
383
|
+
> **I wanted to fill the gap.**
|
|
384
|
+
>
|
|
385
|
+
> I sometimes start with OpenSpec and cross over to OpenGoal, and vice versa.
|
|
386
|
+
> Sometimes I equip Superpowers.
|
|
387
|
+
> What works well should still be used well.
|
|
388
|
+
> I needed something that could sit in front of — or between — completeness and power.
|
|
389
|
+
|
|
390
|
+
## Notation
|
|
391
|
+
|
|
392
|
+
OpenGoal's commands and skills aren't written as plain prose. They follow a small markdown notation — `## Constraints`, `(condition) => action` dispatch rules, `for each`, `loop until`.
|
|
393
|
+
|
|
394
|
+
The form follows published work on pseudocode prompting. CodeAgents (2025) reported that describing agent workflows as pseudocode rather than prose cut token usage by 55–87% while improving task performance by 3–36 points.
|
|
395
|
+
|
|
396
|
+
The syntax and priority rules are documented in [docs/NOTATION.md](docs/NOTATION.md) — useful if you tweak the installed commands in your own project. For the rationale and research background behind the notation, see [docs/notation-guide.md](docs/notation-guide.md).
|
|
397
|
+
|
|
398
|
+
## Contributing
|
|
399
|
+
|
|
400
|
+
Issues are welcome — bugs, questions, ideas, disagreements.
|
|
401
|
+
|
|
402
|
+
Pull requests are accepted for platform adapters (`src/platforms/`); I maintain the
|
|
403
|
+
prompt templates myself. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
404
|
+
|
|
405
|
+
### Development
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
git clone https://github.com/opellen/OpenGoal.git
|
|
409
|
+
cd OpenGoal
|
|
410
|
+
npm install
|
|
411
|
+
npm run build
|
|
412
|
+
npm test
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
## License
|
|
416
|
+
|
|
417
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
package/README.zh-CN.md
CHANGED
|
@@ -89,7 +89,8 @@ docs/
|
|
|
89
89
|
├── DESIGN.md ← 实现设计(按需)
|
|
90
90
|
├── PLAN.md ← 实现计划(复杂任务时自动生成)
|
|
91
91
|
├── ROADMAP.md ← 以里程碑组织的整体计划
|
|
92
|
-
├── BACKLOG.md ←
|
|
92
|
+
├── BACKLOG.md ← 优先级队列(最多3行,目标归档时整理)
|
|
93
|
+
├── backlog/ ← 详细发现(open/)与已放弃/归档记录(archive/)
|
|
93
94
|
├── OVERVIEW.md ← 项目全貌总览(按需)
|
|
94
95
|
└── suspended/ ← 被中止的目标与暂存的子目标
|
|
95
96
|
```
|
|
@@ -102,7 +103,8 @@ docs/
|
|
|
102
103
|
| `DESIGN.md` | 这个要怎么实现? | 直到目标达成 |
|
|
103
104
|
| `PLAN.md` | 这个任务要怎么实现? | 自动生成 → 自动归档 |
|
|
104
105
|
| `ROADMAP.md` | 我在大局中处于哪个位置? | 项目全程 |
|
|
105
|
-
| `BACKLOG.md` | 我发现了什么,但先放一放? |
|
|
106
|
+
| `BACKLOG.md` | 我发现了什么,但先放一放? | 目标归档时整理 |
|
|
107
|
+
| `backlog/` | 详细分析与已放弃的记录在哪? | 长期保留 / 归档 |
|
|
106
108
|
| `OVERVIEW.md` | 整个项目大致是什么样子? | 项目全程 |
|
|
107
109
|
|
|
108
110
|
可以只从 `GOAL.md` 开始,再逐步扩展到 `ROADMAP.md`;也可以先在 `ROADMAP.md` 里画出
|
package/package.json
CHANGED
|
@@ -64,7 +64,7 @@ Creates `$DocsDir/CONTEXT.md`.
|
|
|
64
64
|
- Tasks live in `$DocsDir/GOAL.md` `## Tasks`. Front-matter requires an `id` (slug format).
|
|
65
65
|
- Implementation happens in `$CodebaseDir`.
|
|
66
66
|
- Session progress: `/$CommandPrefix:goal checkpoint` → `$DocsDir/CHECKPOINT.md` (overwritten per session).
|
|
67
|
-
- Deferred discoveries: out-of-scope findings go to `$DocsDir/BACKLOG.md` (
|
|
67
|
+
- Deferred discoveries: out-of-scope findings go to `$DocsDir/BACKLOG.md` (priority queue, max 3 lines per entry, swept on goal archive; details in `$DocsDir/backlog/open/`).
|
|
68
68
|
- Work larger than a task, subordinate to the current goal, needed now, and not blocking it: `/$CommandPrefix:goal subgoal init` (the parent resumes automatically on completion; a *blocking* discovery is a blocker, not a sub-goal).
|
|
69
69
|
```
|
|
70
70
|
|
|
@@ -63,8 +63,10 @@ Creates `$DocsDir/GOAL.md`.
|
|
|
63
63
|
5. Assess task granularity:
|
|
64
64
|
- (tasks are complex, embed multiple implicit steps) => recommend `/$CommandPrefix:goal breakdown` with 1-line rationale
|
|
65
65
|
- (tasks are specific and actionable) => recommend `/$CommandPrefix:design init` (implementation task) or `/$CommandPrefix:go` (analysis task) with 1-line rationale
|
|
66
|
-
6. If the goal was created from a `$DocsDir/BACKLOG.md` item, remove that item from BACKLOG.md (promotion = deletion).
|
|
66
|
+
6. If the goal was created from a `$DocsDir/BACKLOG.md` item, remove that item from BACKLOG.md (promotion = deletion). If the item referenced a file under `$DocsDir/backlog/open/`, move it to `$DocsDir/backlog/archive/`.
|
|
67
67
|
7. Report: `"Created [GOAL.md]($DocsDir/GOAL.md)."`
|
|
68
|
+
- (promoted from a backlog item without a detail file) => append `" Promoted from backlog: removed item from [$DocsDir/BACKLOG.md]($DocsDir/BACKLOG.md)."`
|
|
69
|
+
- (promoted from a backlog item with a detail file) => append `" Promoted from backlog: removed item from [$DocsDir/BACKLOG.md]($DocsDir/BACKLOG.md), moved detail file to [$DocsDir/backlog/archive/]($DocsDir/backlog/archive/)."`
|
|
68
70
|
|
|
69
71
|
GOAL.md format:
|
|
70
72
|
```yaml
|
|
@@ -339,7 +341,7 @@ Both `parent:` checks read the front-matter of each `$DocsDir/suspended/*/GOAL.m
|
|
|
339
341
|
- (any file was held back by step 3's collision rule or step 4's mismatch guard) => append `" Not moved: <files> — left in place for triage."`
|
|
340
342
|
- (peer goals remain under `$DocsDir/suspended/`) => close with `" Resume a parked goal with /$CommandPrefix:goal resume."`
|
|
341
343
|
- (no peer goals remain) => close with `" Set a new goal with /$CommandPrefix:goal init."`
|
|
342
|
-
7. If `$DocsDir/BACKLOG.md` has open items, suggest promoting one as the next goal.
|
|
344
|
+
7. If `$DocsDir/BACKLOG.md` has items resolved during this goal or carrying completion/dropped notes, sweep them following `opengoal-flow`'s `Backlog Disposal` section without exception, and report the sweep actions taken (e.g. `"Swept [$DocsDir/BACKLOG.md]($DocsDir/BACKLOG.md): <N> resolved item(s) deleted, <M> dropped item(s) indexed to [$DocsDir/backlog/archive/DROPPED.md]($DocsDir/backlog/archive/DROPPED.md)."`). Then, if open items remain, suggest promoting one as the next goal.
|
|
343
345
|
|
|
344
346
|
### archive (sub-goal completion)
|
|
345
347
|
|
|
@@ -11,6 +11,7 @@ Cross-checks the current implementation state against GOAL.md and DESIGN.md to s
|
|
|
11
11
|
|
|
12
12
|
## Constraints
|
|
13
13
|
|
|
14
|
+
- (command entry, and again on the first turn after a compaction) => load the `opengoal-flow` skill BEFORE reporting verification results, and say so in one line. A reference is not a load: its rules (backlog handling and disposal, self-verification, checkpoint triggers) only bind once the skill's content is actually in context.
|
|
14
15
|
<!-- @if subagent -->
|
|
15
16
|
- **Delegate** evidence gathering (e.g., reading files, running checks) to **subagents** — verification synthesis stays with main. Direct work is limited to one-line fixes, except where `opengoal-subagent` designates work main-only (iterative collaboration, 2nd-iteration rework, evolving design).
|
|
16
17
|
- Report subagent results to the user.
|
|
@@ -130,9 +130,19 @@ A bare "pause" now has three readings: stop working (the `/$CommandPrefix:go` lo
|
|
|
130
130
|
|
|
131
131
|
When a discovery falls outside the current goal's scope but does not block it (unrelated bug, improvement idea, tech debt):
|
|
132
132
|
|
|
133
|
-
-
|
|
134
|
-
- (
|
|
135
|
-
-
|
|
133
|
+
- **Pre-check**: Before appending, check `$DocsDir/backlog/archive/DROPPED.md` (via fast search). State the pre-check result in one line (e.g. `"Checked DROPPED.md: no prior determination"`). If already recorded as dropped, do not re-add unless new counter-evidence invalidates the previous decision.
|
|
134
|
+
- (out-of-scope discovery, fits in 3 lines) => offer to append a concise entry to `$DocsDir/BACKLOG.md` (max 3 lines), then continue the current task:
|
|
135
|
+
- Format: `- [ ] YYYY-MM-DD <one-liner> (found during <goal-id>)`
|
|
136
|
+
- (diagnosis/context exceeds 3 lines) => write details to `$DocsDir/backlog/open/YYYY-MM-DD-<slug>.md` (escape hatch); the backlog entry keeps only the one-liner + link to that file.
|
|
137
|
+
|
|
138
|
+
### Backlog Disposal (Sweep)
|
|
139
|
+
|
|
140
|
+
`$DocsDir/BACKLOG.md` is a priority queue, not an audit log. Completed or dropped entries must not accumulate inline reports:
|
|
141
|
+
|
|
142
|
+
- **Resolved by Goal (promoted or incidental)**: Delete from `$DocsDir/BACKLOG.md`. Implementation history lives in the goal archive. If the item referenced a file under `$DocsDir/backlog/open/`, move it to `$DocsDir/backlog/archive/`. If unreflected lessons/guidelines exist in notes, migrate them to permanent docs before deleting.
|
|
143
|
+
- **Partial completion**: Confirm uncompleted parts are re-homed into a new item or document before deleting the original.
|
|
144
|
+
- **Dropped / Won't-fix**: Delete from `$DocsDir/BACKLOG.md` and append a one-line entry to `$DocsDir/backlog/archive/DROPPED.md` with pointer (`- YYYY-MM-DD <topic>: <rationale> -> <audit/commit/archive pointer>`). If a detailed file exists in `$DocsDir/backlog/open/`, move it to `$DocsDir/backlog/archive/`.
|
|
145
|
+
- (stale dropped premise) => purge from `$DocsDir/backlog/archive/DROPPED.md` when the underlying architectural premise is obsolete.
|
|
136
146
|
|
|
137
147
|
Blocking discoveries belong to Blocker Handling (suspend); non-blocking ones split between Sub-goal Handling and here — run them through that section's discriminant, never default them into the backlog.
|
|
138
148
|
|