@deltafleet/codex-goalkeeper 0.1.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/CHANGELOG.md +15 -0
- package/CODE_OF_CONDUCT.md +13 -0
- package/CONTRIBUTING.md +57 -0
- package/LICENSE +22 -0
- package/README.ja.md +197 -0
- package/README.ko.md +197 -0
- package/README.md +223 -0
- package/README.zh-CN.md +197 -0
- package/SECURITY.md +32 -0
- package/SKILL.md +164 -0
- package/agents/openai.yaml +5 -0
- package/docs/RELEASE.md +77 -0
- package/docs/ROADMAP.md +77 -0
- package/examples/goalkeeper-session/checkpoint.md +58 -0
- package/examples/goalkeeper-session/context-pack.md +39 -0
- package/examples/goalkeeper-session/events.jsonl +5 -0
- package/package.json +60 -0
- package/src/references/event-schema.md +63 -0
- package/src/references/guardrail.md +62 -0
- package/src/references/workflow.md +187 -0
- package/src/scripts/goalkeeper-append-event.mjs +263 -0
- package/src/scripts/goalkeeper-doctor.mjs +476 -0
- package/src/scripts/goalkeeper-init.mjs +271 -0
- package/src/scripts/goalkeeper-turn-start.mjs +166 -0
- package/src/scripts/goalkeeper-update-checkpoint.mjs +339 -0
- package/src/scripts/test-goalkeeper-update-checkpoint.mjs +236 -0
- package/src/templates/AGENTS.goalkeeper.md +48 -0
- package/src/templates/active-session +1 -0
- package/src/templates/checkpoint.md +54 -0
- package/src/templates/context-pack.md +45 -0
- package/src/templates/event.jsonl +3 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Codex Goalkeeper are documented here.
|
|
4
|
+
|
|
5
|
+
This project follows [Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## [0.1.0] - 2026-05-18
|
|
8
|
+
|
|
9
|
+
Initial public release.
|
|
10
|
+
|
|
11
|
+
- Added the `codex-goalkeeper` skill.
|
|
12
|
+
- Added project-local `.goalkeeper/` session layout.
|
|
13
|
+
- Added checkpoint, context pack, and JSONL event workflow.
|
|
14
|
+
- Added helper scripts for init, turn start, event append, checkpoint update, and doctor checks.
|
|
15
|
+
- Added examples, templates, multilingual READMEs, and open-source operating docs.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
Codex Goalkeeper uses a simple contributor standard:
|
|
4
|
+
|
|
5
|
+
- Be direct, respectful, and specific.
|
|
6
|
+
- Critique ideas and patches, not people.
|
|
7
|
+
- Assume good intent, but prioritize technical clarity.
|
|
8
|
+
- Do not harass, threaten, insult, or target people based on identity, background, or affiliation.
|
|
9
|
+
- Keep issues and pull requests focused on the project.
|
|
10
|
+
|
|
11
|
+
Maintainers may remove comments, close issues, block users, or restrict participation when behavior makes the project harder to use or maintain.
|
|
12
|
+
|
|
13
|
+
Report conduct concerns privately through the security contact in [SECURITY.md](SECURITY.md).
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thanks for considering a contribution to Codex Goalkeeper.
|
|
4
|
+
|
|
5
|
+
The project has one strong bias: keep the core small enough that agents will actually use it during long work.
|
|
6
|
+
|
|
7
|
+
## Good Contributions
|
|
8
|
+
|
|
9
|
+
- Make checkpoint-first recovery easier to follow.
|
|
10
|
+
- Improve script reliability without adding hidden services.
|
|
11
|
+
- Improve documentation, examples, or translations.
|
|
12
|
+
- Add tests around existing helper behavior.
|
|
13
|
+
- Tighten validation or error messages.
|
|
14
|
+
|
|
15
|
+
## Contributions That Need Extra Justification
|
|
16
|
+
|
|
17
|
+
- New persistent state beyond `.goalkeeper/`.
|
|
18
|
+
- Background processes.
|
|
19
|
+
- Runtime hooks into private Codex internals.
|
|
20
|
+
- Global databases or cross-project indexing.
|
|
21
|
+
- Large abstractions around the five core helper scripts.
|
|
22
|
+
|
|
23
|
+
These may be useful later, but they should not enter the project without a clear real-world failure case.
|
|
24
|
+
|
|
25
|
+
## Local Validation
|
|
26
|
+
|
|
27
|
+
Run:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm run validate
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Manual equivalent:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
find src/scripts -name '*.mjs' -print0 | xargs -0 -n1 node --check
|
|
37
|
+
node src/scripts/test-goalkeeper-update-checkpoint.mjs
|
|
38
|
+
find examples -name '*.jsonl' -print0 | xargs -0 -n1 jq -c . >/dev/null
|
|
39
|
+
npx skills add . --list
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Pull Request Checklist
|
|
43
|
+
|
|
44
|
+
- Keep `SKILL.md` concise.
|
|
45
|
+
- Keep `README.md` useful for first-time readers.
|
|
46
|
+
- Update translated READMEs when changing the public workflow.
|
|
47
|
+
- Update `CHANGELOG.md` for user-visible changes.
|
|
48
|
+
- Update `docs/RELEASE.md` if the release process changes.
|
|
49
|
+
- Do not add secrets, local `.goalkeeper/` state, or generated scratch output.
|
|
50
|
+
|
|
51
|
+
## Versioning
|
|
52
|
+
|
|
53
|
+
Use SemVer:
|
|
54
|
+
|
|
55
|
+
- Patch for docs, examples, tests, and compatible bug fixes.
|
|
56
|
+
- Minor for new compatible helpers or workflow fields.
|
|
57
|
+
- Major for breaking checkpoint, event, or script contracts.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Deltafleet
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.ja.md
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Codex Goalkeeper
|
|
2
|
+
|
|
3
|
+
長い Codex セッションを壊すのは、コンテキスト圧縮そのものではありません。方向感覚の喪失です。
|
|
4
|
+
|
|
5
|
+
Codex Goalkeeper は、長い `/goal` セッション、繰り返される compaction、handoff、数日にまたがる実装作業で、Codex が進むべき方向を失わないようにする小さな skill です。
|
|
6
|
+
|
|
7
|
+
隠れたメモリエンジンを目指していません。エージェントに単純な習慣を持たせます。
|
|
8
|
+
|
|
9
|
+
1. 現在のミッションを書き残す。
|
|
10
|
+
2. compaction 後も残すべき判断理由を保存する。
|
|
11
|
+
3. 決定、失敗、検証結果をイベントとして記録する。
|
|
12
|
+
4. 続行する前に checkpoint を最初に読む。
|
|
13
|
+
|
|
14
|
+
それだけです。退屈なファイル。より良い継続性。
|
|
15
|
+
|
|
16
|
+
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh-CN.md)
|
|
17
|
+
|
|
18
|
+
## 問題
|
|
19
|
+
|
|
20
|
+
長いエージェントセッションは、たいてい細かい情報を一つ忘れたせいで失敗するわけではありません。`なぜこの方向で進んでいたのか` が曖昧になることで失敗します。
|
|
21
|
+
|
|
22
|
+
- なぜこの方針を選んだのか
|
|
23
|
+
- ユーザーが明示的に禁止したことは何か
|
|
24
|
+
- どの試行がすでに失敗したのか
|
|
25
|
+
- 実際に検証済みなのは何か
|
|
26
|
+
- 次に何をするはずだったのか
|
|
27
|
+
|
|
28
|
+
何度も compaction が起きると、セッションは自信ありげに続いているように見えても、静かに筋を失うことがあります。
|
|
29
|
+
|
|
30
|
+
Goalkeeper は、その筋をファイルとして明示します。
|
|
31
|
+
|
|
32
|
+
## 作成される状態
|
|
33
|
+
|
|
34
|
+
Goalkeeper は作業中のプロジェクト内に状態を保存します。
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
.goalkeeper/
|
|
38
|
+
active-session
|
|
39
|
+
sessions/
|
|
40
|
+
<goal-session-id>/
|
|
41
|
+
checkpoint.md
|
|
42
|
+
context-pack.md
|
|
43
|
+
events.jsonl
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
それぞれの役割は異なります。
|
|
47
|
+
|
|
48
|
+
- `checkpoint.md`: 毎回最初に読む短い復旧状態
|
|
49
|
+
- `context-pack.md`: compaction 後も残すべき中密度の判断理由
|
|
50
|
+
- `events.jsonl`: 決定、失敗、コマンド、検証、リスク、handoff の append-only 記録
|
|
51
|
+
|
|
52
|
+
Codex の goal が目的地なら、Goalkeeper は道に迷わないための現在地の地図です。
|
|
53
|
+
|
|
54
|
+
## インストール
|
|
55
|
+
|
|
56
|
+
Skills CLI を使います。
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx skills add deltafleet/codex-goalkeeper
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
ローカル checkout からもインストールできます。
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
git clone https://github.com/deltafleet/codex-goalkeeper
|
|
66
|
+
cd codex-goalkeeper
|
|
67
|
+
npx skills add .
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 長い Goal を開始する
|
|
71
|
+
|
|
72
|
+
作業プロジェクトに Goalkeeper セッションを作成します。
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
node <skill-path>/src/scripts/goalkeeper-init.mjs \
|
|
76
|
+
--workspace <workspace> \
|
|
77
|
+
--session 2026-05-18-release-hardening \
|
|
78
|
+
--goal "Ship the release without losing constraints after compaction"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
このコマンドは、プロジェクトローカルの `.goalkeeper/` ディレクトリと active session pointer を作成します。
|
|
82
|
+
|
|
83
|
+
## 正しく再開する
|
|
84
|
+
|
|
85
|
+
新しい turn、handoff 後、または compaction が疑われるときは、まずこれを実行します。
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
|
|
89
|
+
--workspace <workspace>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
短い checkpoint だけでは不十分な場合は、context pack も読みます。
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
|
|
96
|
+
--workspace <workspace> \
|
|
97
|
+
--context
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
重要なのは、エージェントがプロジェクトに触れる前に現在のミッションを読むことです。
|
|
101
|
+
|
|
102
|
+
## 重要なことだけを記録する
|
|
103
|
+
|
|
104
|
+
意味のあるイベントを追加します。
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
node <skill-path>/src/scripts/goalkeeper-append-event.mjs \
|
|
108
|
+
--workspace <workspace> \
|
|
109
|
+
--type decision \
|
|
110
|
+
--text "Keep the MVP skill-only; no MCP server or background daemon."
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
実際の状態が変わったら checkpoint を更新します。
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
node <skill-path>/src/scripts/goalkeeper-update-checkpoint.mjs \
|
|
117
|
+
--workspace <workspace> \
|
|
118
|
+
--goal "Ship the release without losing constraints after compaction" \
|
|
119
|
+
--status "Docs complete; validation pending." \
|
|
120
|
+
--next "Run validation and cut v0.1.0."
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
長い作業に使う前に doctor で状態を確認します。
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
node <skill-path>/src/scripts/goalkeeper-doctor.mjs \
|
|
127
|
+
--workspace <workspace> \
|
|
128
|
+
--session 2026-05-18-release-hardening \
|
|
129
|
+
--strict
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 典型的な流れ
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
ユーザーが長い /goal を開始する
|
|
136
|
+
-> Goalkeeper がプロジェクトローカルのセッションを作る
|
|
137
|
+
-> Codex は通常どおり作業する
|
|
138
|
+
-> 重要な決定と検証は events.jsonl に残す
|
|
139
|
+
-> 意味のある境界で checkpoint.md を更新する
|
|
140
|
+
-> context-pack.md が判断理由を保持する
|
|
141
|
+
-> resume または compaction 後、Codex は checkpoint.md を最初に読む
|
|
142
|
+
-> 必要なら context-pack.md とイベント証拠を読む
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Goalkeeper は compaction をなくしません。compaction 後の復旧を雰囲気ではなく状態に依存させます。
|
|
146
|
+
|
|
147
|
+
## これは何ではないか
|
|
148
|
+
|
|
149
|
+
- Codex plugin ではありません。
|
|
150
|
+
- MCP server ではありません。
|
|
151
|
+
- データベースではありません。
|
|
152
|
+
- 会話 transcript の保存庫ではありません。
|
|
153
|
+
- private runtime hook ではありません。
|
|
154
|
+
- 完璧な記憶を保証しません。
|
|
155
|
+
- compaction の頻度を減らしません。
|
|
156
|
+
|
|
157
|
+
小さな習慣ほど、現実の作業で生き残ります。だから Goalkeeper は小さく保ちます。
|
|
158
|
+
|
|
159
|
+
## 検証
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npm run validate
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
手動では次を実行します。
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
find src/scripts -name '*.mjs' -print0 | xargs -0 -n1 node --check
|
|
169
|
+
node src/scripts/test-goalkeeper-update-checkpoint.mjs
|
|
170
|
+
npx skills add . --list
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## バージョン管理
|
|
174
|
+
|
|
175
|
+
Goalkeeper は SemVer を使います。
|
|
176
|
+
|
|
177
|
+
- Patch: 文書、例、テスト、互換性のあるバグ修正
|
|
178
|
+
- Minor: 互換性のある helper または workflow field の追加
|
|
179
|
+
- Major: checkpoint、event、script contract の破壊的変更
|
|
180
|
+
|
|
181
|
+
リリース手順は [docs/RELEASE.md](docs/RELEASE.md) を参照してください。
|
|
182
|
+
|
|
183
|
+
## コントリビューション
|
|
184
|
+
|
|
185
|
+
Issue と PR を歓迎します。ただし、このプロジェクトの基準は厳格です。
|
|
186
|
+
|
|
187
|
+
- core workflow を小さく保つ
|
|
188
|
+
- 隠れた runtime dependency を追加しない
|
|
189
|
+
- 完璧な復旧を約束しない
|
|
190
|
+
- global state より project-local file を優先する
|
|
191
|
+
- 変更は検証コマンドで証明する
|
|
192
|
+
|
|
193
|
+
詳しくは [CONTRIBUTING.md](CONTRIBUTING.md)、[SECURITY.md](SECURITY.md)、[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) を参照してください。
|
|
194
|
+
|
|
195
|
+
## ライセンス
|
|
196
|
+
|
|
197
|
+
MIT. [LICENSE](LICENSE) を参照してください。
|
package/README.ko.md
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Codex Goalkeeper
|
|
2
|
+
|
|
3
|
+
컨텍스트 컴팩션이 긴 Codex 작업을 망치는 게 아닙니다. 방향 상실이 망칩니다.
|
|
4
|
+
|
|
5
|
+
Codex Goalkeeper는 긴 `/goal` 세션, 반복되는 compact, handoff, 며칠짜리 구현 작업에서 Codex가 방향을 잃지 않도록 도와주는 작은 skill입니다.
|
|
6
|
+
|
|
7
|
+
숨겨진 메모리 엔진을 흉내 내지 않습니다. 대신 에이전트에게 단순한 습관을 강제합니다.
|
|
8
|
+
|
|
9
|
+
1. 지금 목표를 짧게 기록한다.
|
|
10
|
+
2. compact 이후에도 살아남아야 하는 판단 근거를 보존한다.
|
|
11
|
+
3. 결정, 실패, 검증 결과를 이벤트로 남긴다.
|
|
12
|
+
4. 다시 시작할 때 프로젝트 파일보다 checkpoint를 먼저 읽는다.
|
|
13
|
+
|
|
14
|
+
그게 전부입니다. 지루한 파일들. 더 나은 연속성.
|
|
15
|
+
|
|
16
|
+
[English](README.md) | [日本語](README.ja.md) | [中文](README.zh-CN.md)
|
|
17
|
+
|
|
18
|
+
## 문제
|
|
19
|
+
|
|
20
|
+
긴 에이전트 세션은 보통 사소한 디테일 하나를 잊어서 망하지 않습니다. `왜 이렇게 가고 있었는지`가 흐려지면서 망합니다.
|
|
21
|
+
|
|
22
|
+
- 왜 이 방향을 선택했는지
|
|
23
|
+
- 사용자가 명시적으로 금지한 접근이 무엇인지
|
|
24
|
+
- 이미 실패한 시도가 무엇인지
|
|
25
|
+
- 실제로 검증된 것이 무엇인지
|
|
26
|
+
- 다음 액션이 무엇이었는지
|
|
27
|
+
|
|
28
|
+
compact가 여러 번 지나면 세션은 여전히 그럴듯하게 말하지만, 실제로는 방향을 잃을 수 있습니다.
|
|
29
|
+
|
|
30
|
+
Goalkeeper는 그 방향을 파일로 명시합니다.
|
|
31
|
+
|
|
32
|
+
## 생성되는 상태
|
|
33
|
+
|
|
34
|
+
Goalkeeper는 작업 중인 프로젝트 안에 상태를 저장합니다.
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
.goalkeeper/
|
|
38
|
+
active-session
|
|
39
|
+
sessions/
|
|
40
|
+
<goal-session-id>/
|
|
41
|
+
checkpoint.md
|
|
42
|
+
context-pack.md
|
|
43
|
+
events.jsonl
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
각 파일의 역할은 다릅니다.
|
|
47
|
+
|
|
48
|
+
- `checkpoint.md`: 매번 먼저 읽는 짧은 복구 상태
|
|
49
|
+
- `context-pack.md`: compact 이후에도 살아남아야 하는 중간 밀도의 판단 근거
|
|
50
|
+
- `events.jsonl`: 결정, 실패, 명령, 검증, 리스크, handoff의 append-only 기록
|
|
51
|
+
|
|
52
|
+
Codex의 goal이 목적지를 말한다면, Goalkeeper는 길을 잃지 않기 위한 현재 지도를 보존합니다.
|
|
53
|
+
|
|
54
|
+
## 설치
|
|
55
|
+
|
|
56
|
+
Skills CLI로 설치합니다.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx skills add deltafleet/codex-goalkeeper
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
로컬 체크아웃에서 설치할 수도 있습니다.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
git clone https://github.com/deltafleet/codex-goalkeeper
|
|
66
|
+
cd codex-goalkeeper
|
|
67
|
+
npx skills add .
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 긴 Goal 시작
|
|
71
|
+
|
|
72
|
+
작업 프로젝트에 Goalkeeper 세션을 만듭니다.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
node <skill-path>/src/scripts/goalkeeper-init.mjs \
|
|
76
|
+
--workspace <workspace> \
|
|
77
|
+
--session 2026-05-18-release-hardening \
|
|
78
|
+
--goal "Ship the release without losing constraints after compaction"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
이 명령은 프로젝트 로컬 `.goalkeeper/` 디렉터리와 active session pointer를 만듭니다.
|
|
82
|
+
|
|
83
|
+
## 다시 시작할 때
|
|
84
|
+
|
|
85
|
+
새 turn, handoff 이후, compact가 의심되는 상황에서는 먼저 이 명령을 실행합니다.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
|
|
89
|
+
--workspace <workspace>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
짧은 checkpoint만으로 충분하지 않으면 context pack까지 읽습니다.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
|
|
96
|
+
--workspace <workspace> \
|
|
97
|
+
--context
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
핵심은 간단합니다. 에이전트가 프로젝트를 건드리기 전에 현재 미션을 먼저 읽게 만드는 것입니다.
|
|
101
|
+
|
|
102
|
+
## 중요한 것만 기록
|
|
103
|
+
|
|
104
|
+
중요한 이벤트를 남깁니다.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
node <skill-path>/src/scripts/goalkeeper-append-event.mjs \
|
|
108
|
+
--workspace <workspace> \
|
|
109
|
+
--type decision \
|
|
110
|
+
--text "Keep the MVP skill-only; no MCP server or background daemon."
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
실제 상태가 바뀌면 checkpoint를 갱신합니다.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
node <skill-path>/src/scripts/goalkeeper-update-checkpoint.mjs \
|
|
117
|
+
--workspace <workspace> \
|
|
118
|
+
--goal "Ship the release without losing constraints after compaction" \
|
|
119
|
+
--status "Docs complete; validation pending." \
|
|
120
|
+
--next "Run validation and cut v0.1.0."
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
긴 작업을 믿고 맡기기 전에 doctor로 상태를 점검합니다.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
node <skill-path>/src/scripts/goalkeeper-doctor.mjs \
|
|
127
|
+
--workspace <workspace> \
|
|
128
|
+
--session 2026-05-18-release-hardening \
|
|
129
|
+
--strict
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 전형적인 흐름
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
사용자가 긴 /goal을 시작한다
|
|
136
|
+
-> Goalkeeper가 프로젝트 로컬 세션을 만든다
|
|
137
|
+
-> Codex는 평소처럼 작업한다
|
|
138
|
+
-> 중요한 결정과 검증은 events.jsonl에 남긴다
|
|
139
|
+
-> 의미 있는 경계마다 checkpoint.md를 갱신한다
|
|
140
|
+
-> context-pack.md는 판단 근거를 보존한다
|
|
141
|
+
-> resume 또는 compact 이후 Codex는 checkpoint.md를 먼저 읽는다
|
|
142
|
+
-> 필요하면 context-pack.md와 이벤트 근거를 더 읽는다
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Goalkeeper는 compact를 없애지 않습니다. compact 이후 복구를 감이 아니라 상태에 의존하게 만듭니다.
|
|
146
|
+
|
|
147
|
+
## 이것이 아닌 것
|
|
148
|
+
|
|
149
|
+
- Codex plugin이 아닙니다.
|
|
150
|
+
- MCP server가 아닙니다.
|
|
151
|
+
- 데이터베이스가 아닙니다.
|
|
152
|
+
- 전체 대화 transcript 저장소가 아닙니다.
|
|
153
|
+
- private runtime hook이 아닙니다.
|
|
154
|
+
- 완벽한 기억을 보장하지 않습니다.
|
|
155
|
+
- compact 빈도를 줄여주지 않습니다.
|
|
156
|
+
|
|
157
|
+
작은 습관일수록 실제 작업에서 오래 살아남습니다. 그래서 Goalkeeper는 작게 유지합니다.
|
|
158
|
+
|
|
159
|
+
## 검증
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npm run validate
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
수동으로는 다음을 실행합니다.
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
find src/scripts -name '*.mjs' -print0 | xargs -0 -n1 node --check
|
|
169
|
+
node src/scripts/test-goalkeeper-update-checkpoint.mjs
|
|
170
|
+
npx skills add . --list
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## 버전 관리
|
|
174
|
+
|
|
175
|
+
Goalkeeper는 SemVer를 사용합니다.
|
|
176
|
+
|
|
177
|
+
- Patch: 문서, 예제, 테스트, 호환 가능한 버그 수정
|
|
178
|
+
- Minor: 호환 가능한 helper 또는 workflow field 추가
|
|
179
|
+
- Major: checkpoint, event, script contract의 breaking change
|
|
180
|
+
|
|
181
|
+
릴리스 절차는 [docs/RELEASE.md](docs/RELEASE.md)를 참고하세요.
|
|
182
|
+
|
|
183
|
+
## 기여
|
|
184
|
+
|
|
185
|
+
Issue와 PR은 환영합니다. 단, 프로젝트의 기준은 엄격합니다.
|
|
186
|
+
|
|
187
|
+
- core workflow는 작게 유지한다
|
|
188
|
+
- 숨겨진 runtime dependency를 추가하지 않는다
|
|
189
|
+
- 완벽한 복구를 약속하지 않는다
|
|
190
|
+
- global state보다 project-local file을 우선한다
|
|
191
|
+
- 변경사항은 검증 명령으로 증명한다
|
|
192
|
+
|
|
193
|
+
자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)를 참고하세요.
|
|
194
|
+
|
|
195
|
+
## 라이선스
|
|
196
|
+
|
|
197
|
+
MIT. [LICENSE](LICENSE)를 참고하세요.
|