@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/README.md ADDED
@@ -0,0 +1,223 @@
1
+ # Codex Goalkeeper
2
+
3
+ Context compaction does not kill long Codex runs. Direction drift does.
4
+
5
+ Codex Goalkeeper is a tiny skill that helps Codex keep its bearings during long `/goal` sessions, repeated compactions, handoffs, and multi-day implementation work.
6
+
7
+ It does not try to be a hidden memory engine. It gives the agent a simple ritual:
8
+
9
+ 1. Write down the current mission.
10
+ 2. Preserve the reasoning that should survive compaction.
11
+ 3. Record decisions, failures, and verification as evidence.
12
+ 4. Read the checkpoint first before continuing.
13
+
14
+ That is it. Boring files. Better continuity.
15
+
16
+ [한국어](README.ko.md) | [日本語](README.ja.md) | [中文](README.zh-CN.md)
17
+
18
+ ## The Problem
19
+
20
+ Long agent sessions do not usually fail because the model forgets a random detail. They fail because the "why" gets blurred:
21
+
22
+ - why a direction was chosen
23
+ - what the user explicitly ruled out
24
+ - which attempt already failed
25
+ - what was actually verified
26
+ - what the next action was supposed to be
27
+
28
+ After enough compaction, a session can still sound confident while quietly losing the thread.
29
+
30
+ Goalkeeper makes the thread explicit.
31
+
32
+ ## What It Creates
33
+
34
+ Goalkeeper stores state inside the project you are working on:
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
+ The three files have different jobs:
47
+
48
+ - `checkpoint.md`: short, always-read recovery state
49
+ - `context-pack.md`: medium-density reasoning that should survive compaction
50
+ - `events.jsonl`: append-only evidence for decisions, failures, commands, risks, and handoffs
51
+
52
+ The active Codex goal says where you are going. Goalkeeper preserves how not to get lost on the way.
53
+
54
+ ## Install
55
+
56
+ With the Skills CLI:
57
+
58
+ ```bash
59
+ npx skills add deltafleet/codex-goalkeeper
60
+ ```
61
+
62
+ From a local checkout:
63
+
64
+ ```bash
65
+ git clone https://github.com/deltafleet/codex-goalkeeper
66
+ cd codex-goalkeeper
67
+ npx skills add .
68
+ ```
69
+
70
+ ## Start A Long Goal
71
+
72
+ Create a Goalkeeper session in your project:
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
+ This creates the project-local `.goalkeeper/` directory and sets the active session pointer.
82
+
83
+ ## Resume Correctly
84
+
85
+ At the start of a new turn, after handoff, or after suspected compaction:
86
+
87
+ ```bash
88
+ node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
89
+ --workspace <workspace>
90
+ ```
91
+
92
+ If the short checkpoint is not enough:
93
+
94
+ ```bash
95
+ node <skill-path>/src/scripts/goalkeeper-turn-start.mjs \
96
+ --workspace <workspace> \
97
+ --context
98
+ ```
99
+
100
+ This is the core behavior. The agent reads the current mission before touching the rest of the project.
101
+
102
+ ## Record What Matters
103
+
104
+ Append meaningful events:
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
+ Refresh the checkpoint after a real state change:
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
+ Check the workspace before trusting it for a long run:
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
+ ## A Typical Loop
133
+
134
+ ```text
135
+ User starts a long /goal
136
+ -> Goalkeeper initializes a project-local session
137
+ -> Codex works normally
138
+ -> important decisions and verification go into events.jsonl
139
+ -> checkpoint.md is refreshed at meaningful boundaries
140
+ -> context-pack.md preserves the reasoning chain
141
+ -> after resume or compaction, Codex reads checkpoint.md first
142
+ -> if needed, Codex reads context-pack.md and exact event evidence
143
+ ```
144
+
145
+ Goalkeeper does not remove compaction. It makes recovery from compaction less dependent on vibes.
146
+
147
+ ## What This Is Not
148
+
149
+ - Not a Codex plugin.
150
+ - Not an MCP server.
151
+ - Not a database.
152
+ - Not a transcript archive.
153
+ - Not a private runtime hook.
154
+ - Not a promise of perfect memory.
155
+ - Not a way to reduce compaction frequency.
156
+
157
+ Goalkeeper is intentionally small because small rituals survive real work.
158
+
159
+ ## Why It Works
160
+
161
+ Agent memory fails when the only durable state is the conversation itself.
162
+
163
+ Goalkeeper moves the minimum useful continuity state into the repository:
164
+
165
+ - constraints become visible
166
+ - decisions become inspectable
167
+ - failed paths stop repeating
168
+ - verification survives handoff
169
+ - the next action is explicit
170
+
171
+ The model still has to do the work. Goalkeeper just gives it a better starting point after the context window gets rewritten.
172
+
173
+ ## Repository Layout
174
+
175
+ ```text
176
+ SKILL.md # skill entrypoint
177
+ agents/openai.yaml # skill metadata
178
+ src/scripts/ # deterministic helpers
179
+ src/templates/ # starter Goalkeeper files
180
+ src/references/ # workflow and schema references
181
+ examples/goalkeeper-session # static example state
182
+ docs/ # roadmap and release policy
183
+ ```
184
+
185
+ ## Validation
186
+
187
+ ```bash
188
+ npm run validate
189
+ ```
190
+
191
+ Equivalent manual checks:
192
+
193
+ ```bash
194
+ find src/scripts -name '*.mjs' -print0 | xargs -0 -n1 node --check
195
+ node src/scripts/test-goalkeeper-update-checkpoint.mjs
196
+ npx skills add . --list
197
+ ```
198
+
199
+ ## Versioning
200
+
201
+ Goalkeeper uses SemVer.
202
+
203
+ - Patch: docs, examples, tests, and compatible bug fixes
204
+ - Minor: new compatible helpers or workflow fields
205
+ - Major: breaking changes to checkpoint, event, or script contracts
206
+
207
+ See [docs/RELEASE.md](docs/RELEASE.md) for release steps.
208
+
209
+ ## Contributing
210
+
211
+ Issues and PRs are welcome. The project bias is strict:
212
+
213
+ - keep the core workflow small
214
+ - do not add hidden runtime dependencies
215
+ - do not promise perfect recovery
216
+ - prefer project-local files over global state
217
+ - prove changes with the validation commands above
218
+
219
+ See [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
220
+
221
+ ## License
222
+
223
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,197 @@
1
+ # Codex Goalkeeper
2
+
3
+ 让长时间 Codex 任务失败的,通常不是上下文压缩本身,而是方向漂移。
4
+
5
+ Codex Goalkeeper 是一个很小的 skill,用来帮助 Codex 在长时间 `/goal` 会话、反复 compaction、handoff、跨天实现任务中保持方向。
6
+
7
+ 它不伪装成隐藏的记忆引擎。它只让 agent 养成一个简单习惯:
8
+
9
+ 1. 写下当前任务。
10
+ 2. 保存 compaction 后仍然需要保留的推理链。
11
+ 3. 把决策、失败和验证结果记录为事件。
12
+ 4. 继续工作前先读取 checkpoint。
13
+
14
+ 就这些。无聊的文件。更好的连续性。
15
+
16
+ [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md)
17
+
18
+ ## 问题
19
+
20
+ 长时间 agent 会话通常不是因为忘了某个小细节而失败,而是因为 `为什么要这样做` 变得模糊。
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
+ 核心行为很简单:agent 在触碰项目其它文件之前,先读当前任务状态。
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: 文档、示例、测试、兼容性 bug 修复
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
+ - 优先使用 project-local files,而不是 global state
191
+ - 用验证命令证明改动
192
+
193
+ 请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)、[SECURITY.md](SECURITY.md) 和 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。
194
+
195
+ ## License
196
+
197
+ MIT. See [LICENSE](LICENSE).
package/SECURITY.md ADDED
@@ -0,0 +1,32 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ The latest minor release receives security fixes.
6
+
7
+ During the `0.x` series, APIs may still evolve, but security fixes will be released as patch versions whenever possible.
8
+
9
+ ## Reporting A Vulnerability
10
+
11
+ Do not open a public issue for a vulnerability.
12
+
13
+ Report security concerns through GitHub private vulnerability reporting when available, or contact the maintainers through the repository owner profile.
14
+
15
+ Include:
16
+
17
+ - affected version or commit
18
+ - reproduction steps
19
+ - expected impact
20
+ - whether the issue exposes local files, credentials, or private project state
21
+
22
+ ## Project Boundaries
23
+
24
+ Goalkeeper stores state in project-local `.goalkeeper/` directories. It should not require:
25
+
26
+ - secret tokens
27
+ - background daemons
28
+ - network access for normal helper scripts
29
+ - private Codex runtime hooks
30
+ - global databases
31
+
32
+ If a change introduces any of those, treat it as security-sensitive and document the reason clearly.
package/SKILL.md ADDED
@@ -0,0 +1,164 @@
1
+ ---
2
+ name: codex-goalkeeper
3
+ description: Use automatically for Codex /goal work, long-running goals, multi-turn implementations, session resumes, handoffs, compacted conversations, or any task where Codex must preserve constraints, decisions, verification state, failed attempts, pre-compaction reasoning, and next actions. Maintains a project-local checkpoint, context pack, and append-only event log.
4
+ ---
5
+
6
+ # Codex Goalkeeper
7
+
8
+ Use this skill when a Codex task is expected to run long enough that compaction, handoff, or drift could cause the agent to lose direction.
9
+
10
+ Goalkeeper does not replace Codex's goal system. It records the working continuity around the goal.
11
+
12
+ Goalkeeper is a best-effort continuity habit, not a guarantee that every compacted turn will recover perfectly.
13
+
14
+ When a user starts or continues a `/goal`, strongly prefer initializing or resuming Goalkeeper unless the task is clearly short-lived.
15
+
16
+ ## First Action Rule
17
+
18
+ When a Goalkeeper-managed goal is already active, the first project-state action in a new assistant turn should be reading the active checkpoint, unless you have already read it in the same turn.
19
+
20
+ This is stricter than waiting until you notice compaction. A compacted turn may not reliably expose the compaction marker to the model, so checkpoint-first is the practical recovery rule for long-running goals.
21
+
22
+ Allowed before the checkpoint read:
23
+
24
+ - `pwd`
25
+ - listing `.goalkeeper/sessions/`
26
+ - minimal filename inspection to choose the active Goalkeeper session id
27
+
28
+ Do not send a user-visible progress or direction message before the checkpoint read.
29
+ Do not read project docs, source files, examples, tests, or make edits before the checkpoint read.
30
+ Do not combine the checkpoint read with other post-recovery work in the same shell command or parallel tool batch.
31
+
32
+ ## Required Files
33
+
34
+ Use a project-local `.goalkeeper/` directory. Each long-running goal session gets its own subdirectory:
35
+
36
+ ```text
37
+ .goalkeeper/
38
+ active-session # optional: current goal session id
39
+ sessions/
40
+ <goal-session-id>/
41
+ checkpoint.md
42
+ context-pack.md
43
+ events.jsonl
44
+ ```
45
+
46
+ Use a stable, readable `<goal-session-id>` such as `2026-05-17-codex-goalkeeper-roadmap` or `ads-ops-release-hardening`.
47
+
48
+ If any core file is missing during long goal work, create it from the templates in `src/templates/`.
49
+ Use `.goalkeeper/active-session` when a workspace has one active Goalkeeper session and the agent should not have to reconstruct the session id after compaction.
50
+
51
+ The directory is created inside the active project workspace, not in a global Codex directory. Example:
52
+
53
+ ```text
54
+ /path/to/project/.goalkeeper/sessions/2026-05-17-release-hardening/checkpoint.md
55
+ ```
56
+
57
+ Bundled scripts live in the skill package. When the script is not located inside the target workspace, pass the target workspace explicitly:
58
+
59
+ ```bash
60
+ node <skill-path>/src/scripts/goalkeeper-turn-start.mjs --workspace <workspace> --session <goal-session-id>
61
+ ```
62
+
63
+ If `<workspace>/.goalkeeper/active-session` points to the session id, `--session` may be omitted:
64
+
65
+ ```bash
66
+ node <skill-path>/src/scripts/goalkeeper-turn-start.mjs --workspace <workspace>
67
+ ```
68
+
69
+ To create a new session deterministically, run:
70
+
71
+ ```bash
72
+ node <skill-path>/src/scripts/goalkeeper-init.mjs --workspace <workspace> --session <goal-session-id> --goal "<active goal>"
73
+ ```
74
+
75
+ ## Recovery Rule
76
+
77
+ Before continuing after a resume, suspected compaction, long interruption, or handoff:
78
+
79
+ 1. Resolve the current goal session directory under `.goalkeeper/sessions/`.
80
+ 2. Read its `checkpoint.md`.
81
+ 3. If the checkpoint is stale, too thin, or missing the reasoning chain, read `context-pack.md`.
82
+ 4. If exact evidence is needed, inspect recent entries in `events.jsonl`.
83
+ 5. Restate the active direction internally before taking action.
84
+ 6. Continue only when the next action matches the recovered goal, constraints, and open risks.
85
+
86
+ After compaction, do not rely on the compacted conversation summary alone. Read the Goalkeeper checkpoint before continuing.
87
+
88
+ ## Recovery Guardrail
89
+
90
+ After a visible compact boundary, the first project-state action must be a Goalkeeper recovery read:
91
+
92
+ ```text
93
+ <workspace>/.goalkeeper/sessions/<goal-session-id>/checkpoint.md
94
+ ```
95
+
96
+ If you notice that you already continued without the checkpoint, stop, read the checkpoint, append a `recovery_violation` event, then continue from the recovered state.
97
+
98
+ ## Update Rule
99
+
100
+ Update Goalkeeper state when any of these change:
101
+
102
+ - active goal or done criteria
103
+ - user constraints or forbidden approaches
104
+ - major design decision
105
+ - failed attempt that should not be repeated
106
+ - important file or artifact path
107
+ - command result or verification status
108
+ - open risk, blocker, or next action
109
+ - handoff boundary
110
+
111
+ Append the event first, then update the session's `checkpoint.md` when the event changes the current working state.
112
+ Use `src/scripts/goalkeeper-update-checkpoint.mjs` when you want a bounded canonical checkpoint instead of manual Markdown edits.
113
+
114
+ ## Keep It Short
115
+
116
+ The checkpoint is a recovery artifact, not a transcript.
117
+
118
+ Keep it under about 8 KB when possible. If it grows beyond 16 KB, compact stale details into `events.jsonl` evidence references before relying on it for routine recovery.
119
+
120
+ Prefer:
121
+
122
+ - exact goal
123
+ - current throughline
124
+ - non-negotiable constraints
125
+ - decisions that explain direction
126
+ - verified facts
127
+ - open risks
128
+ - next action
129
+
130
+ Avoid:
131
+
132
+ - narrative summaries of every turn
133
+ - long command output
134
+ - speculative history
135
+ - stale alternatives that no longer matter
136
+
137
+ ## Context Pack
138
+
139
+ Use `context-pack.md` for medium-density pre-compaction context that is too detailed for the checkpoint:
140
+
141
+ - decision chain and reasoning
142
+ - rejected alternatives
143
+ - open threads
144
+ - domain model or implementation model
145
+ - evidence index for where exact facts live
146
+
147
+ Read it when checkpoint recovery is not enough. Keep raw transcripts and long command output out of it.
148
+
149
+ ## Reference Map
150
+
151
+ - Read `src/references/workflow.md` for lifecycle rules and examples.
152
+ - Read `src/references/event-schema.md` before adding or validating event records.
153
+ - Read `src/references/guardrail.md` when you need stronger always-on behavior in a target repository.
154
+ - Run `src/scripts/goalkeeper-init.mjs` when a long-running goal needs a new `.goalkeeper/sessions/<goal-session-id>/` directory.
155
+ - Run `src/scripts/goalkeeper-turn-start.mjs --context` when checkpoint recovery needs the larger context pack too.
156
+ - Run `src/scripts/goalkeeper-append-event.mjs` instead of hand-writing JSONL when recording decisions, verification, failures, risks, or handoffs; it can use `.goalkeeper/active-session` when `--session` is omitted.
157
+ - Run `src/scripts/goalkeeper-update-checkpoint.mjs` after appending a meaningful event when checkpoint state should be refreshed in a short canonical shape.
158
+ - Run `src/scripts/goalkeeper-doctor.mjs` after creating or changing Goalkeeper state to verify the target workspace is ready.
159
+
160
+ ## Safety Boundary
161
+
162
+ - Do not depend on private Codex runtime internals.
163
+ - Do not claim this reduces compaction frequency.
164
+ - Do not treat the checkpoint as proof when exact evidence is needed; inspect `events.jsonl` or source files.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Codex Goalkeeper"
3
+ short_description: "Keep Codex goals oriented"
4
+ default_prompt: "Use $codex-goalkeeper for this /goal or long-running Codex task so checkpoint, context pack, and event log preserve direction across compaction."
5
+ brand_color: "#2563EB"
@@ -0,0 +1,77 @@
1
+ # Release Policy
2
+
3
+ Codex Goalkeeper is released as a GitHub repository and optional npm package.
4
+
5
+ The skill source of truth is the repository root:
6
+
7
+ - `SKILL.md`
8
+ - `agents/openai.yaml`
9
+ - `src/`
10
+ - `examples/`
11
+ - `docs/`
12
+
13
+ ## Versioning
14
+
15
+ Use SemVer.
16
+
17
+ - `PATCH`: documentation, examples, tests, and compatible bug fixes
18
+ - `MINOR`: compatible helper scripts, metadata, templates, or workflow fields
19
+ - `MAJOR`: breaking changes to checkpoint, context-pack, event, or script contracts
20
+
21
+ During `0.x`, minor releases may still adjust public contracts. Document those changes clearly in `CHANGELOG.md`.
22
+
23
+ ## Release Checklist
24
+
25
+ 1. Update `package.json` version.
26
+ 2. Update `CHANGELOG.md`.
27
+ 3. Run validation:
28
+
29
+ ```bash
30
+ npm run validate
31
+ ```
32
+
33
+ 4. Confirm the public package does not include local Goalkeeper state:
34
+
35
+ ```bash
36
+ git status --short --ignored
37
+ npm pack --dry-run
38
+ ```
39
+
40
+ 5. Commit:
41
+
42
+ ```bash
43
+ git commit -m "Release vX.Y.Z"
44
+ ```
45
+
46
+ 6. Tag:
47
+
48
+ ```bash
49
+ git tag vX.Y.Z
50
+ ```
51
+
52
+ 7. Push:
53
+
54
+ ```bash
55
+ git push origin main --tags
56
+ ```
57
+
58
+ 8. Create a GitHub release:
59
+
60
+ ```bash
61
+ GH_CONFIG_DIR=$HOME/.config/gh-deltafleet gh release create vX.Y.Z --generate-notes
62
+ ```
63
+
64
+ 9. Optional npm publish:
65
+
66
+ ```bash
67
+ npm --userconfig ~/.config/npm-deltafleet/npmrc publish --access public
68
+ ```
69
+
70
+ ## Deltafleet Credentials
71
+
72
+ This repository can be published with the local deltafleet profiles:
73
+
74
+ - GitHub CLI: `GH_CONFIG_DIR=$HOME/.config/gh-deltafleet`
75
+ - npm: `npm --userconfig ~/.config/npm-deltafleet/npmrc`
76
+
77
+ Never commit these config files or token values.