@deltafleet/codex-goalkeeper 0.1.0 → 0.1.1

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 CHANGED
@@ -4,6 +4,12 @@ All notable changes to Codex Goalkeeper are documented here.
4
4
 
5
5
  This project follows [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [0.1.1] - 2026-05-18
8
+
9
+ - Moved the installable skill payload into `src/codex-goalkeeper/` so Skills CLI installs only skill files.
10
+ - Kept repository docs, tests, examples, and GitHub metadata outside the installable skill directory.
11
+ - Added Node.js 18+ requirement notes to the README files.
12
+
7
13
  ## [0.1.0] - 2026-05-18
8
14
 
9
15
  Initial public release.
package/README.ja.md CHANGED
@@ -1,37 +1,74 @@
1
1
  # Codex Goalkeeper
2
2
 
3
- 長い Codex セッションを壊すのは、コンテキスト圧縮そのものではありません。方向感覚の喪失です。
3
+ 長い Codex 作業は、たいてい一気に壊れるわけではありません。
4
4
 
5
- Codex Goalkeeper は、長い `/goal` セッション、繰り返される compaction、handoff、数日にまたがる実装作業で、Codex が進むべき方向を失わないようにする小さな skill です。
5
+ 少しずつ方向を失います。
6
6
 
7
- 隠れたメモリエンジンを目指していません。エージェントに単純な習慣を持たせます。
7
+ エージェントはまだ自信ありげに話します。テストも実行します。計画も一見もっともらしいままです。しかし compaction、handoff、resume が重なると、いちばん重要な感覚が静かに薄れていきます。
8
8
 
9
- 1. 現在のミッションを書き残す。
10
- 2. compaction 後も残すべき判断理由を保存する。
11
- 3. 決定、失敗、検証結果をイベントとして記録する。
12
- 4. 続行する前に checkpoint を最初に読む。
9
+ > なぜ、この方針で進んでいたのか?
13
10
 
14
- それだけです。退屈なファイル。より良い継続性。
11
+ Codex Goalkeeper は、長い `/goal` 作業が compaction、resume、handoff をまたいでも方向を保てるようにする小さな skill です。
12
+
13
+ 隠れたメモリエンジンを追加するものではありません。エージェントに耐久性のある作業習慣を与えます。
14
+
15
+ - 短い checkpoint を保つ
16
+ - より詳しい context pack を保つ
17
+ - 決定と検証を event log に残す
18
+ - drift が起きやすい境界の後は、続行前に checkpoint を読む
19
+
20
+ 退屈なファイル。より良い継続性。
15
21
 
16
22
  [English](README.md) | [한국어](README.ko.md) | [中文](README.zh-CN.md)
17
23
 
24
+ ## インストール
25
+
26
+ ```bash
27
+ npx skills add deltafleet/codex-goalkeeper
28
+ ```
29
+
30
+ 要件: Node.js 18+ と `npx`。長い goal workflow で、Codex は skill に同梱された Node helper script を使います。
31
+
32
+ そして長い作業で Codex にこう依頼します。
33
+
34
+ > Use codex-goalkeeper for this `/goal`. Keep the goal, constraints, decisions, verification state, failed attempts, and next action recoverable across compaction.
35
+
36
+ 通常の利用はここまでです。ユーザーが Goalkeeper の helper script を手で実行する必要はありません。Codex が skill workflow の一部として実行します。
37
+
18
38
  ## 問題
19
39
 
20
- 長いエージェントセッションは、たいてい細かい情報を一つ忘れたせいで失敗するわけではありません。`なぜこの方向で進んでいたのか` が曖昧になることで失敗します。
40
+ 短い作業なら、compaction はたいてい大きな問題になりません。エージェントは大まかに復旧できます。
41
+
42
+ しかし長い goal は違います。
21
43
 
22
- - なぜこの方針を選んだのか
23
- - ユーザーが明示的に禁止したことは何か
24
- - どの試行がすでに失敗したのか
25
- - 実際に検証済みなのは何か
26
- - 次に何をするはずだったのか
44
+ 実際のセッションを想像してください。
27
45
 
28
- 何度も compaction が起きると、セッションは自信ありげに続いているように見えても、静かに筋を失うことがあります。
46
+ 1. Codex にリリース hardening を任せます。
47
+ 2. Codex は壊れやすい edge case を見つけ、保守的なルートを選びます。
48
+ 3. ユーザーは魅力的だが危険な shortcut を明示的に拒否します。
49
+ 4. 2 回の実装試行が微妙な理由で失敗します。
50
+ 5. あるテストがようやく正しいルートを証明します。
51
+ 6. コンテキストが compact されます。
52
+ 7. 後でエージェントはきれいな要約を持って戻りますが、そのルートが正しかった理由の圧力は薄れています。
29
53
 
30
- Goalkeeper は、その筋をファイルとして明示します。
54
+ ここから drift が始まります。
31
55
 
32
- ## 作成される状態
56
+ 失敗の原因は「モデルが全部忘れた」ことではありません。もっと厄介です。続けるだけの記憶はあるが、同じ方向で続けるだけの記憶がないのです。
33
57
 
34
- Goalkeeper は作業中のプロジェクト内に状態を保存します。
58
+ それは次のような形で現れます。
59
+
60
+ - ユーザーがすでに拒否した方針を再び開く
61
+ - 失敗理由が要約から落ち、同じ試行を繰り返す
62
+ - 未検証の仮説を確定事実のように扱う
63
+ - 長い handoff の後で正確な next action を失う
64
+ - goal は残るが運用上の制約を失う
65
+ - 説明は滑らかだが実際の作業ストリームからずれる
66
+
67
+ Goalkeeper は「goal は残っているが、セッションの方向感覚が弱くなった」その隙間を埋めるためのものです。
68
+
69
+ ## Codex がすること
70
+
71
+ skill が有効になると、Codex はプロジェクト内に継続性フォルダを維持します。
35
72
 
36
73
  ```text
37
74
  .goalkeeper/
@@ -43,120 +80,90 @@ Goalkeeper は作業中のプロジェクト内に状態を保存します。
43
80
  events.jsonl
44
81
  ```
45
82
 
46
- それぞれの役割は異なります。
47
-
48
- - `checkpoint.md`: 毎回最初に読む短い復旧状態
49
- - `context-pack.md`: compaction 後も残すべき中密度の判断理由
50
- - `events.jsonl`: 決定、失敗、コマンド、検証、リスク、handoff の append-only 記録
51
-
52
- Codex の goal が目的地なら、Goalkeeper は道に迷わないための現在地の地図です。
53
-
54
- ## インストール
83
+ それぞれの役割は違います。
55
84
 
56
- Skills CLI を使います。
85
+ - `checkpoint.md`: 再開時に最初に読む短い復旧状態
86
+ - `context-pack.md`: checkpoint には長すぎるが compaction 後も残すべき判断理由
87
+ - `events.jsonl`: 決定、失敗した試行、コマンド根拠、検証、リスク、handoff の記録
57
88
 
58
- ```bash
59
- npx skills add deltafleet/codex-goalkeeper
60
- ```
89
+ Codex の active goal が目的地なら、Goalkeeper はなぜこのルートがまだ正しいのかを保ちます。
61
90
 
62
- ローカル checkout からもインストールできます。
63
-
64
- ```bash
65
- git clone https://github.com/deltafleet/codex-goalkeeper
66
- cd codex-goalkeeper
67
- npx skills add .
68
- ```
91
+ ## 仕組み
69
92
 
70
- ## 長い Goal を開始する
93
+ Goalkeeper は長いエージェント作業を単純なループにします。
71
94
 
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"
95
+ ```text
96
+ 長い /goal が始まる
97
+ -> Codex が Goalkeeper セッションを作成または再開する
98
+ -> 重要な制約と決定を記録する
99
+ -> 失敗した試行を残し、同じ失敗を繰り返さないようにする
100
+ -> 信頼度が変わる検証根拠を残す
101
+ -> 意味のある境界で checkpoint.md を更新する
102
+ -> context-pack.md が深い判断理由を保つ
103
+ -> resume、handoff、compaction が疑われる後、Codex は checkpoint.md を最初に読む
104
+ -> checkpoint が薄ければ context-pack.md を読む
105
+ -> 正確な証拠が必要なら events.jsonl または source file を確認する
79
106
  ```
80
107
 
81
- このコマンドは、プロジェクトローカルの `.goalkeeper/` ディレクトリと active session pointer を作成します。
108
+ これは会話 transcript の保存ではありません。作業状態の保存です。
82
109
 
83
- ## 正しく再開する
110
+ ## あえて小さくしています
84
111
 
85
- 新しい turn、handoff 後、または compaction が疑われるときは、まずこれを実行します。
112
+ このプロジェクトを大きくするのは簡単です。
86
113
 
87
- ```bash
88
- node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
89
- --workspace <workspace>
90
- ```
114
+ - daemon
115
+ - database
116
+ - session rewriter
117
+ - private runtime hook
118
+ - vector memory layer
119
+ - full transcript engine
91
120
 
92
- 短い checkpoint だけでは不十分な場合は、context pack も読みます。
121
+ Goalkeeper は意図的にその方向を避けます。
93
122
 
94
- ```bash
95
- node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
96
- --workspace <workspace> \
97
- --context
98
- ```
123
+ ファイルを使う理由は、見える、レビューできる、移動しやすい、そして compaction 後にエージェントが読み返しやすいからです。目的は Codex を全知にすることではありません。次の turn を正しい状態から始めることです。
99
124
 
100
- 重要なのは、エージェントがプロジェクトに触れる前に現在のミッションを読むことです。
125
+ ## これは何ではないか
101
126
 
102
- ## 重要なことだけを記録する
127
+ - Codex plugin ではありません。
128
+ - MCP server ではありません。
129
+ - database ではありません。
130
+ - 完全な会話 transcript の保存庫ではありません。
131
+ - private Codex runtime hook ではありません。
132
+ - 完璧な記憶を保証しません。
133
+ - compaction の頻度を下げません。
103
134
 
104
- 意味のあるイベントを追加します。
135
+ Goalkeeper は継続性を改善します。コンテキスト制限が消えるふりはしません。
105
136
 
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
- ```
137
+ ## 何が良くなるか
112
138
 
113
- 実際の状態が変わったら checkpoint を更新します。
139
+ Goalkeeper を使うと、再開されたセッションが次を復旧できる可能性が上がります。
114
140
 
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
- ```
141
+ - ユーザーの non-negotiable constraints
142
+ - 現在の実装方向
143
+ - 拒否した代替案がなぜ今も拒否されるべきか
144
+ - 信頼度を変えたテストやコマンド
145
+ - 実際の next action
146
+ - 雑に流してはいけない unresolved risks
122
147
 
123
- 長い作業に使う前に doctor で状態を確認します。
148
+ 長いエージェント作業で起きる退屈で高くつく失敗の多くは、これだけでも減らせます。
124
149
 
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
- ## 典型的な流れ
150
+ ## リポジトリ構成
133
151
 
134
152
  ```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 とイベント証拠を読む
153
+ src/codex-goalkeeper/ # installable skill payload
154
+ SKILL.md
155
+ agents/openai.yaml
156
+ scripts/
157
+ templates/
158
+ references/
159
+ tests/ # maintainer tests
160
+ examples/goalkeeper-session # static example state
161
+ docs/ # roadmap and release policy
143
162
  ```
144
163
 
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 は小さく保ちます。
164
+ ## Maintainer Validation
158
165
 
159
- ## 検証
166
+ リポジトリ maintainer 向けの検証です。
160
167
 
161
168
  ```bash
162
169
  npm run validate
@@ -165,8 +172,8 @@ npm run validate
165
172
  手動では次を実行します。
166
173
 
167
174
  ```bash
168
- find src/scripts -name '*.mjs' -print0 | xargs -0 -n1 node --check
169
- node src/scripts/test-goalkeeper-update-checkpoint.mjs
175
+ find src/codex-goalkeeper/scripts tests -name '*.mjs' -print0 | xargs -0 -n1 node --check
176
+ node tests/test-goalkeeper-update-checkpoint.mjs
170
177
  npx skills add . --list
171
178
  ```
172
179
 
package/README.ko.md CHANGED
@@ -1,148 +1,126 @@
1
1
  # Codex Goalkeeper
2
2
 
3
- 컨텍스트 컴팩션이 긴 Codex 작업을 망치는 아닙니다. 방향 상실이 망칩니다.
3
+ 긴 Codex 작업은 보통 번에 망가지지 않습니다.
4
4
 
5
- Codex Goalkeeper는 긴 `/goal` 세션, 반복되는 compact, handoff, 며칠짜리 구현 작업에서 Codex가 방향을 잃지 않도록 도와주는 작은 skill입니다.
5
+ 조금씩 방향을 잃습니다.
6
6
 
7
- 숨겨진 메모리 엔진을 흉내 내지 않습니다. 대신 에이전트에게 단순한 습관을 강제합니다.
7
+ 에이전트는 여전히 자신 있게 말합니다. 테스트도 돌립니다. 계획도 그럴듯해 보입니다. 그런데 compact, handoff, resume이 반복된 뒤에는 가장 중요한 감각이 조용히 흐려질 수 있습니다.
8
8
 
9
- 1. 지금 목표를 짧게 기록한다.
10
- 2. compact 이후에도 살아남아야 하는 판단 근거를 보존한다.
11
- 3. 결정, 실패, 검증 결과를 이벤트로 남긴다.
12
- 4. 다시 시작할 때 프로젝트 파일보다 checkpoint를 먼저 읽는다.
9
+ > 우리가 방향으로 가고 있었지?
13
10
 
14
- 그게 전부입니다. 지루한 파일들. 나은 연속성.
11
+ Codex Goalkeeper는 `/goal` 작업이 compact, resume, handoff를 지나도 방향을 잃지 않도록 돕는 작은 skill입니다.
15
12
 
16
- [English](README.md) | [日本語](README.ja.md) | [中文](README.zh-CN.md)
17
-
18
- ## 문제
19
-
20
- 긴 에이전트 세션은 보통 사소한 디테일 하나를 잊어서 망하지 않습니다. `왜 이렇게 가고 있었는지`가 흐려지면서 망합니다.
13
+ 숨겨진 메모리 엔진을 추가하지 않습니다. 대신 에이전트에게 지속 가능한 작업 습관을 줍니다.
21
14
 
22
- - 방향을 선택했는지
23
- - 사용자가 명시적으로 금지한 접근이 무엇인지
24
- - 이미 실패한 시도가 무엇인지
25
- - 실제로 검증된 것이 무엇인지
26
- - 다음 액션이 무엇이었는지
15
+ - 짧은 checkpoint를 유지한다
16
+ - 풍부한 context pack을 유지한다
17
+ - 결정과 검증을 event log에 남긴다
18
+ - drift가 생기기 쉬운 경계 이후에는 계속하기 전에 checkpoint를 먼저 읽는다
27
19
 
28
- compact가 여러 지나면 세션은 여전히 그럴듯하게 말하지만, 실제로는 방향을 잃을 수 있습니다.
20
+ 지루한 파일들. 나은 연속성.
29
21
 
30
- Goalkeeper는 방향을 파일로 명시합니다.
31
-
32
- ## 생성되는 상태
22
+ [English](README.md) | [日本語](README.ja.md) | [中文](README.zh-CN.md)
33
23
 
34
- Goalkeeper는 작업 중인 프로젝트 안에 상태를 저장합니다.
24
+ ## 설치
35
25
 
36
- ```text
37
- .goalkeeper/
38
- active-session
39
- sessions/
40
- <goal-session-id>/
41
- checkpoint.md
42
- context-pack.md
43
- events.jsonl
26
+ ```bash
27
+ npx skills add deltafleet/codex-goalkeeper
44
28
  ```
45
29
 
46
- 파일의 역할은 다릅니다.
30
+ 요구사항: Node.js 18+와 `npx`. 긴 goal workflow에서 Codex가 skill에 포함된 Node helper script를 사용합니다.
47
31
 
48
- - `checkpoint.md`: 매번 먼저 읽는 짧은 복구 상태
49
- - `context-pack.md`: compact 이후에도 살아남아야 하는 중간 밀도의 판단 근거
50
- - `events.jsonl`: 결정, 실패, 명령, 검증, 리스크, handoff의 append-only 기록
32
+ 그리고 작업에서 Codex에게 이렇게 요청합니다.
51
33
 
52
- Codex의 goal목적지를 말한다면, Goalkeeper는 길을 잃지 않기 위한 현재 지도를 보존합니다.
34
+ >`/goal`에는 codex-goalkeeper를 사용해줘. 목표, 제약, 결정, 검증 상태, 실패한 시도, 다음 액션이 compact 이후에도 복구 가능하게 관리해줘.
53
35
 
54
- ## 설치
36
+ 정상적인 사용 흐름은 여기까지입니다. 사용자가 Goalkeeper의 helper script를 직접 실행할 필요는 없습니다. Codex가 skill workflow의 일부로 실행합니다.
55
37
 
56
- Skills CLI로 설치합니다.
38
+ ## 문제
57
39
 
58
- ```bash
59
- npx skills add deltafleet/codex-goalkeeper
60
- ```
40
+ 짧은 작업에서 compact는 대개 큰 문제가 아닙니다. 에이전트가 대충 복구할 수 있습니다.
61
41
 
62
- 로컬 체크아웃에서 설치할 수도 있습니다.
42
+ 하지만 goal은 다릅니다.
63
43
 
64
- ```bash
65
- git clone https://github.com/deltafleet/codex-goalkeeper
66
- cd codex-goalkeeper
67
- npx skills add .
68
- ```
44
+ 실제 세션을 상상해보면 이렇습니다.
69
45
 
70
- ## Goal 시작
46
+ 1. Codex에게 릴리스 hardening을 맡깁니다.
47
+ 2. Codex가 취약한 edge case를 발견하고 보수적인 경로를 선택합니다.
48
+ 3. 사용자는 그럴듯하지만 위험한 shortcut을 명시적으로 금지합니다.
49
+ 4. 두 번의 구현 시도가 미묘한 이유로 실패합니다.
50
+ 5. 어떤 테스트가 드디어 올바른 경로를 증명합니다.
51
+ 6. 컨텍스트가 compact됩니다.
52
+ 7. 나중에 에이전트가 깔끔한 요약을 들고 돌아오지만, 왜 그 경로가 맞았는지에 대한 압력은 희미해져 있습니다.
71
53
 
72
- 작업 프로젝트에 Goalkeeper 세션을 만듭니다.
54
+ 여기서 drift가 시작됩니다.
73
55
 
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
- ```
56
+ 실패 원인은 “모델이 전부 잊었다”가 아닙니다. 더 까다롭습니다. 계속할 만큼은 기억하지만, 같은 방향으로 계속할 만큼은 기억하지 못합니다.
80
57
 
81
- 명령은 프로젝트 로컬 `.goalkeeper/` 디렉터리와 active session pointer를 만듭니다.
58
+ 이런 순간에 드러납니다.
82
59
 
83
- ## 다시 시작할 때
60
+ - 사용자가 이미 거부한 접근을 다시 연다
61
+ - 실패 이유가 요약에서 사라져 같은 시도를 반복한다
62
+ - 검증되지 않은 가정을 확정 사실처럼 다룬다
63
+ - 긴 handoff 뒤에 정확한 next action을 잃는다
64
+ - goal은 유지하지만 운영 제약을 잃는다
65
+ - 설명은 매끄럽지만 실제 작업 흐름과 어긋난다
84
66
 
85
- turn, handoff 이후, compact가 의심되는 상황에서는 먼저 명령을 실행합니다.
67
+ Goalkeeper는 “goal은 남아 있지만 세션의 방향 감각은 약해진” 틈을 메우기 위한 도구입니다.
86
68
 
87
- ```bash
88
- node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
89
- --workspace <workspace>
90
- ```
69
+ ## Codex가 하는 일
91
70
 
92
- 짧은 checkpoint만으로 충분하지 않으면 context pack까지 읽습니다.
71
+ skill이 활성화되면 Codex는 프로젝트 안에 연속성 폴더를 유지합니다.
93
72
 
94
- ```bash
95
- node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
96
- --workspace <workspace> \
97
- --context
73
+ ```text
74
+ .goalkeeper/
75
+ active-session
76
+ sessions/
77
+ <goal-session-id>/
78
+ checkpoint.md
79
+ context-pack.md
80
+ events.jsonl
98
81
  ```
99
82
 
100
- 핵심은 간단합니다. 에이전트가 프로젝트를 건드리기 전에 현재 미션을 먼저 읽게 만드는 것입니다.
83
+ 파일의 역할은 다릅니다.
101
84
 
102
- ## 중요한 것만 기록
85
+ - `checkpoint.md`: 다시 시작할 때 먼저 읽는 짧은 복구 상태
86
+ - `context-pack.md`: checkpoint에는 너무 길지만 compact 이후에도 살아남아야 하는 판단 근거
87
+ - `events.jsonl`: 결정, 실패한 시도, 명령 근거, 검증, 리스크, handoff 기록
103
88
 
104
- 중요한 이벤트를 남깁니다.
89
+ Codex의 active goal이 목적지를 말한다면, Goalkeeper는 왜 이 경로가 아직 맞는지를 보존합니다.
105
90
 
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
- ```
91
+ ## 동작 원리
112
92
 
113
- 실제 상태가 바뀌면 checkpoint를 갱신합니다.
93
+ Goalkeeper는 에이전트 작업을 단순한 루프로 바꿉니다.
114
94
 
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."
95
+ ```text
96
+ /goal이 시작된다
97
+ -> Codex가 Goalkeeper 세션을 만들거나 재개한다
98
+ -> 중요한 제약과 결정을 기록한다
99
+ -> 실패한 시도를 남겨 같은 삽질을 반복하지 않게 한다
100
+ -> 신뢰도가 바뀌는 검증 근거를 남긴다
101
+ -> 의미 있는 경계마다 checkpoint.md를 갱신한다
102
+ -> context-pack.md가 더 깊은 판단 근거를 보존한다
103
+ -> resume, handoff, compact 의심 이후 Codex는 checkpoint.md를 먼저 읽는다
104
+ -> checkpoint가 얇으면 context-pack.md를 읽는다
105
+ -> 정확한 증거가 필요하면 events.jsonl이나 source file을 확인한다
121
106
  ```
122
107
 
123
- 작업을 믿고 맡기기 전에 doctor로 상태를 점검합니다.
108
+ 이것은 대화 transcript 저장이 아닙니다. 작업 상태 보존입니다.
124
109
 
125
- ```bash
126
- node <skill-path>/src/scripts/goalkeeper-doctor.mjs \
127
- --workspace <workspace> \
128
- --session 2026-05-18-release-hardening \
129
- --strict
130
- ```
110
+ ## 일부러 작게 만들었습니다
131
111
 
132
- ## 전형적인 흐름
112
+ 프로젝트를 크게 만드는 방법은 쉽습니다.
133
113
 
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
- ```
114
+ - daemon
115
+ - database
116
+ - session rewriter
117
+ - private runtime hook
118
+ - vector memory layer
119
+ - full transcript engine
144
120
 
145
- Goalkeeper는 compact를 없애지 않습니다. compact 이후 복구를 감이 아니라 상태에 의존하게 만듭니다.
121
+ Goalkeeper는 의도적으로 방향을 피합니다.
122
+
123
+ 파일을 쓰는 이유는 파일이 보이고, 검토 가능하고, 옮기기 쉽고, compact 이후에도 에이전트가 다시 읽기 쉽기 때문입니다. 목표는 Codex를 전지전능하게 만드는 것이 아닙니다. 다음 turn이 올바른 상태에서 시작하게 만드는 것입니다.
146
124
 
147
125
  ## 이것이 아닌 것
148
126
 
@@ -150,13 +128,42 @@ Goalkeeper는 compact를 없애지 않습니다. compact 이후 복구를 감이
150
128
  - MCP server가 아닙니다.
151
129
  - 데이터베이스가 아닙니다.
152
130
  - 전체 대화 transcript 저장소가 아닙니다.
153
- - private runtime hook이 아닙니다.
131
+ - private Codex runtime hook이 아닙니다.
154
132
  - 완벽한 기억을 보장하지 않습니다.
155
- - compact 빈도를 줄여주지 않습니다.
133
+ - compact 빈도를 줄이지 않습니다.
134
+
135
+ Goalkeeper는 연속성을 개선합니다. 컨텍스트 한계를 없애는 척하지 않습니다.
136
+
137
+ ## 좋아지는 것
138
+
139
+ Goalkeeper를 쓰면 resume된 세션이 다음을 복구할 가능성이 높아집니다.
140
+
141
+ - 사용자의 non-negotiable constraints
142
+ - 현재 구현 방향
143
+ - 거부된 대안이 왜 여전히 거부되어야 하는지
144
+ - 신뢰도를 바꾼 테스트나 명령
145
+ - 실제 next action
146
+ - 대충 넘기면 안 되는 unresolved risks
147
+
148
+ 긴 에이전트 작업에서 발생하는 지루하고 비싼 실패 상당수는 이 정도만으로도 줄어듭니다.
149
+
150
+ ## 저장소 구조
151
+
152
+ ```text
153
+ src/codex-goalkeeper/ # installable skill payload
154
+ SKILL.md
155
+ agents/openai.yaml
156
+ scripts/
157
+ templates/
158
+ references/
159
+ tests/ # maintainer tests
160
+ examples/goalkeeper-session # static example state
161
+ docs/ # roadmap and release policy
162
+ ```
156
163
 
157
- 작은 습관일수록 실제 작업에서 오래 살아남습니다. 그래서 Goalkeeper는 작게 유지합니다.
164
+ ## Maintainer Validation
158
165
 
159
- ## 검증
166
+ 저장소 maintainer용 검증입니다.
160
167
 
161
168
  ```bash
162
169
  npm run validate
@@ -165,8 +172,8 @@ npm run validate
165
172
  수동으로는 다음을 실행합니다.
166
173
 
167
174
  ```bash
168
- find src/scripts -name '*.mjs' -print0 | xargs -0 -n1 node --check
169
- node src/scripts/test-goalkeeper-update-checkpoint.mjs
175
+ find src/codex-goalkeeper/scripts tests -name '*.mjs' -print0 | xargs -0 -n1 node --check
176
+ node tests/test-goalkeeper-update-checkpoint.mjs
170
177
  npx skills add . --list
171
178
  ```
172
179