@imdeadpool/guardex 7.0.27 → 7.0.34
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 +171 -818
- package/package.json +1 -1
- package/src/cli/main.js +360 -23
- package/src/context.js +64 -21
- package/src/doctor/index.js +42 -20
- package/src/finish/index.js +1 -0
- package/src/output/index.js +151 -15
- package/src/toolchain/index.js +6 -0
- package/templates/AGENTS.multiagent-safety.md +5 -1
- package/templates/githooks/post-checkout +8 -2
- package/templates/scripts/agent-branch-finish.sh +36 -21
- package/templates/scripts/agent-branch-start.sh +15 -1
- package/templates/scripts/codex-agent.sh +16 -1
- package/templates/vscode/guardex-active-agents/extension.js +39 -4
- package/templates/vscode/guardex-active-agents/package.json +4 -4
- package/templates/vscode/guardex-active-agents/session-schema.js +23 -5
package/README.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img alt="gitguardex logo" src="./logo.png" width="
|
|
2
|
+
<img alt="gitguardex logo" src="./logo.png" width="260">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h1 align="center">
|
|
5
|
+
<h1 align="center">guardian <em>t-rex</em> for multi-agent repos</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
|
|
8
|
+
Isolated worktrees, file locks, and PR-only merges for codex, claude,
|
|
9
|
+
and human teammates working the same codebase at the same time.
|
|
9
10
|
</p>
|
|
10
11
|
|
|
11
12
|
<p align="center">
|
|
@@ -19,905 +20,257 @@
|
|
|
19
20
|
</p>
|
|
20
21
|
|
|
21
22
|
<p align="center">
|
|
22
|
-
<a href="
|
|
23
|
-
<a href="#
|
|
24
|
-
<a href="#
|
|
25
|
-
<a href="#
|
|
26
|
-
<a href="#
|
|
27
|
-
<a href="#
|
|
23
|
+
<a href="#01--install-in-one-line">Install</a> ·
|
|
24
|
+
<a href="#03--what-it-does">What it does</a> ·
|
|
25
|
+
<a href="#04--daily-workflow">Workflow</a> ·
|
|
26
|
+
<a href="#05--what-gx-shows-first">gx status</a> ·
|
|
27
|
+
<a href="#07--commands">Commands</a> ·
|
|
28
|
+
<a href="#08--v6--v7-migration">Migration</a> ·
|
|
29
|
+
<a href="#10--companion-tools">Companions</a>
|
|
28
30
|
</p>
|
|
29
31
|
|
|
32
|
+
---
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npm i -g @imdeadpool/guardex
|
|
35
|
-
```
|
|
34
|
+
## `01` Install in one line
|
|
36
35
|
|
|
37
36
|
<p align="center">
|
|
38
|
-
<
|
|
39
|
-
Then <code>cd</code> into your repo and run <code>gx setup</code> — hook shims, repo state,
|
|
40
|
-
and OMX / OpenSpec / caveman wiring all scaffold in one go.
|
|
41
|
-
</sub>
|
|
42
|
-
</p>
|
|
43
|
-
|
|
44
|
-
<p align="center">
|
|
45
|
-
<strong>guard many agent. keep one repo clean.</strong>
|
|
37
|
+
<img alt="Install GitGuardex" src="https://raw.githubusercontent.com/recodeee/gitguardex/main/docs/images/install-hero.svg" width="680">
|
|
46
38
|
</p>
|
|
47
39
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
```bash
|
|
41
|
+
npm i -g @imdeadpool/guardex
|
|
42
|
+
cd /path/to/your-repo
|
|
43
|
+
gx setup # hooks, state, OMX / OpenSpec / caveman wiring — one shot
|
|
44
|
+
```
|
|
51
45
|
|
|
52
46
|
<p align="center">
|
|
53
|
-
|
|
47
|
+
<sub><b>THE PROMISE</b><br><em>"guard many agent. keep one repo clean."</em></sub>
|
|
54
48
|
</p>
|
|
55
49
|
|
|
56
|
-
---
|
|
57
|
-
|
|
58
50
|
> [!WARNING]
|
|
59
51
|
> Not affiliated with OpenAI, Anthropic, or Codex. Not an official tool.
|
|
60
52
|
|
|
61
53
|
> [!IMPORTANT]
|
|
62
|
-
> GitGuardex is still being tested in real multi-agent repos. If something
|
|
54
|
+
> GitGuardex is still being tested in real multi-agent repos. If something
|
|
55
|
+
> feels rough — especially around **cleanup**, **finish**, **merge**, or
|
|
56
|
+
> **recovery** flows — sorry. We're patching as we find things.
|
|
63
57
|
|
|
64
58
|
---
|
|
65
59
|
|
|
66
|
-
## The problem
|
|
60
|
+
## `02` The problem
|
|
67
61
|
|
|
68
62
|

|
|
69
63
|
|
|
70
|
-
I was running ~30 Codex agents in parallel and hit a wall: they kept
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-

|
|
75
|
-
|
|
76
|
-
GitGuardex exists to stop that loop. Every agent gets its own worktree, claims the files it's touching, and can't clobber files another agent has claimed. Your local branch stays clean; agents stay in their lanes.
|
|
77
|
-
|
|
78
|
-
## Install
|
|
79
|
-
|
|
80
|
-
<p align="center">
|
|
81
|
-
<img alt="Install GitGuardex" src="https://raw.githubusercontent.com/recodeee/gitguardex/main/docs/images/install-hero.svg" width="680">
|
|
82
|
-
</p>
|
|
83
|
-
|
|
84
|
-
### Dashboard
|
|
64
|
+
I was running ~30 Codex agents in parallel and hit a wall: they kept
|
|
65
|
+
working on the same files at the same time — especially tests — and
|
|
66
|
+
started overwriting or deleting each other's changes. More agents meant
|
|
67
|
+
**less** forward progress, not more.
|
|
85
68
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
69
|
+
| before · parallel collisions | after · isolated lanes + file locks |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| `codex-01` → `src/auth/login.ts` · ⚠ clash | `codex-01` → `agent/codex/login-refactor` · ● owned |
|
|
72
|
+
| `codex-02` → `src/auth/login.ts` · ⚠ clash | `codex-02` → `agent/codex/login-tests` · ● owned |
|
|
73
|
+
| `codex-03` → `test/auth.spec.ts` · ⚠ clash | `codex-03` → `agent/codex/session-guard` · ● owned |
|
|
74
|
+
| `claude-a` → `test/auth.spec.ts` · ⚠ clash | `claude-a` → `agent/claude/token-rotation` · ● owned |
|
|
75
|
+
| `codex-04` → `src/auth/session.ts` · ◌ stalled | `human` → `main` (protected) · ● clean |
|
|
89
76
|
|
|
90
77
|
---
|
|
91
78
|
|
|
92
|
-
## What it does
|
|
93
|
-
|
|
94
|
-
- **Isolated `agent/*` branch + worktree per task
|
|
95
|
-
|
|
96
|
-
- **
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- **
|
|
100
|
-
|
|
79
|
+
## `03` What it does
|
|
80
|
+
|
|
81
|
+
- **Isolated `agent/*` branch + worktree per task.** Agents never share a
|
|
82
|
+
working directory. Your visible local branch never changes mid-run.
|
|
83
|
+
- **Explicit file lock claiming.** An agent declares the files it's
|
|
84
|
+
editing before it edits them. Claimed files can't be clobbered by
|
|
85
|
+
another lane.
|
|
86
|
+
- **Deletion guard.** Claimed files can't be removed by another agent —
|
|
87
|
+
no more ghost-deleted tests between runs.
|
|
88
|
+
- **Protected-base safety.** `main`, `dev`, `master` are blocked by
|
|
89
|
+
default. Agents must go through PRs.
|
|
90
|
+
- **Auto-merges agent configs.** `oh-my-codex`, `oh-my-claudecode`,
|
|
91
|
+
caveman mode, and OpenSpec all get applied automatically per worktree.
|
|
92
|
+
- **Repair / doctor flow.** When drift happens (and it will), `gx doctor`
|
|
93
|
+
gets you back to a clean, verified state.
|
|
94
|
+
- **Auto-finish on session exit.** Codex exits → Guardex commits sandbox
|
|
95
|
+
changes, syncs against base, retries once if base moved, and opens a PR.
|
|
96
|
+
- **Monorepo + nested repos.** Setup walks into every nested `.git`.
|
|
97
|
+
Submodules and sandboxes are skipped automatically.
|
|
101
98
|
|
|
102
99
|
---
|
|
103
100
|
|
|
104
|
-
##
|
|
101
|
+
## `04` Daily workflow
|
|
105
102
|
|
|
106
|
-
|
|
107
|
-
npm i -g @imdeadpool/guardex
|
|
108
|
-
cd /path/to/your/repo
|
|
109
|
-
gx setup
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
That's it. Install and update via `@imdeadpool/guardex`. Setup installs the minimal repo footprint: managed hook shims, repo-local state, AGENTS wiring, OpenSpec/caveman/OMX scaffolding, and a small set of repo-local helper assets. Aliases: `gx` (preferred), `gitguardex` (full), `guardex` (legacy compatibility).
|
|
113
|
-
|
|
114
|
-
### Install surfaces at a glance
|
|
115
|
-
|
|
116
|
-
| Goal | Command | Installs |
|
|
117
|
-
| --- | --- | --- |
|
|
118
|
-
| Global Guardex CLI | `npm i -g @imdeadpool/guardex` | `gx`, `gitguardex`, `guardex`, and the CLI runtime |
|
|
119
|
-
| User-level Codex/Claude companions | `gx install-agent-skills` | `~/.codex/skills/gitguardex/SKILL.md`, `~/.codex/skills/guardex-merge-skills-to-dev/SKILL.md`, and `~/.claude/commands/gitguardex.md` |
|
|
120
|
-
| Generic repo skill catalog | `npx skills add recodee/` or `npx skills add recodee/gitguardex` | the repo-root `skills/` catalog for agents that support the generic installer |
|
|
121
|
-
|
|
122
|
-
These paths are complementary, not chained together. `npm i -g @imdeadpool/guardex` does not auto-run `npx skills add ...`.
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## How `AGENTS.md` and `CLAUDE.md` are handled
|
|
127
|
-
|
|
128
|
-
> [!IMPORTANT]
|
|
129
|
-
> **GitGuardex never overwrites your guidance.** Only the content between these markers is managed:
|
|
130
|
-
>
|
|
131
|
-
> ```text
|
|
132
|
-
> <!-- multiagent-safety:START -->
|
|
133
|
-
> ... managed content ...
|
|
134
|
-
> <!-- multiagent-safety:END -->
|
|
135
|
-
> ```
|
|
136
|
-
>
|
|
137
|
-
> Everything outside that block is preserved byte-for-byte.
|
|
138
|
-
|
|
139
|
-
### Behavior at a glance
|
|
140
|
-
|
|
141
|
-
<div align="center">
|
|
142
|
-
|
|
143
|
-
| Your repo has… | `gx setup` / `gx doctor` does… |
|
|
144
|
-
| :--- | :--- |
|
|
145
|
-
| `AGENTS.md` **with** markers | Refreshes **only** the managed block |
|
|
146
|
-
| `AGENTS.md` **without** markers | Appends the managed block to the end |
|
|
147
|
-
| No `AGENTS.md` | Creates it with the managed block |
|
|
148
|
-
| A root `CLAUDE.md` | Leaves it alone |
|
|
149
|
-
|
|
150
|
-
</div>
|
|
151
|
-
|
|
152
|
-
> [!NOTE]
|
|
153
|
-
> In this repo, `CLAUDE.md` is a symlink to `AGENTS.md`, so Claude reads the same contract as Codex.
|
|
154
|
-
>
|
|
155
|
-
> Keep the install paths separate:
|
|
156
|
-
> - `npm i -g @imdeadpool/guardex` installs the Guardex CLI.
|
|
157
|
-
> - `gx install-agent-skills` installs the user-level Codex/Claude companion files.
|
|
158
|
-
> - `npx skills add recodee/` or `npx skills add recodee/gitguardex` installs the generic repo skill catalog.
|
|
159
|
-
>
|
|
160
|
-
> The global npm install does not auto-run the generic `npx skills add ...` flow.
|
|
161
|
-
|
|
162
|
-
### Decision flow
|
|
163
|
-
|
|
164
|
-
```mermaid
|
|
165
|
-
flowchart TD
|
|
166
|
-
Start([gx setup / gx doctor])
|
|
167
|
-
Check{AGENTS.md<br/>exists?}
|
|
168
|
-
Markers{Markers<br/>present?}
|
|
169
|
-
Create[Create AGENTS.md<br/>with managed block]
|
|
170
|
-
Refresh[Refresh the<br/>managed block]
|
|
171
|
-
Append[Append managed block<br/>to end of file]
|
|
172
|
-
Done([Repo-owned text preserved])
|
|
173
|
-
|
|
174
|
-
Start --> Check
|
|
175
|
-
Check -- No --> Create
|
|
176
|
-
Check -- Yes --> Markers
|
|
177
|
-
Markers -- Yes --> Refresh
|
|
178
|
-
Markers -- No --> Append
|
|
179
|
-
Create --> Done
|
|
180
|
-
Refresh --> Done
|
|
181
|
-
Append --> Done
|
|
182
|
-
|
|
183
|
-
classDef entry fill:#0b76c5,stroke:#60a5fa,stroke-width:2px,color:#fff
|
|
184
|
-
classDef decide fill:#78350f,stroke:#fbbf24,stroke-width:2px,color:#fff
|
|
185
|
-
classDef action fill:#374151,stroke:#94a3b8,stroke-width:1.5px,color:#f1f5f9
|
|
186
|
-
classDef finish fill:#064e3b,stroke:#34d399,stroke-width:2px,color:#fff
|
|
187
|
-
|
|
188
|
-
class Start entry
|
|
189
|
-
class Check,Markers decide
|
|
190
|
-
class Create,Refresh,Append action
|
|
191
|
-
class Done finish
|
|
192
|
-
```
|
|
103
|
+
Per new agent task — four steps, every time:
|
|
193
104
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
# AGENTS
|
|
198
|
-
|
|
199
|
-
Project-specific guidance before managed block.
|
|
200
|
-
|
|
201
|
-
<!-- multiagent-safety:START -->
|
|
202
|
-
- - old managed contract
|
|
203
|
-
+ - current GitGuardex-managed contract
|
|
204
|
-
<!-- multiagent-safety:END -->
|
|
205
|
-
|
|
206
|
-
Trailing repo notes after managed block.
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
Only lines **inside** the marker block change. Everything above and below is preserved exactly.
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## What `gx` shows first
|
|
214
|
-
|
|
215
|
-
Before you branch, repair, or start agents, run plain `gx`. It gives you a one-screen status view for the CLI, global helpers, repo safety service, current repo path, and active branch.
|
|
216
|
-
|
|
217
|
-

|
|
218
|
-
|
|
219
|
-
Use `gx setup` the first time you wire GitGuardex into a repo. It bootstraps the managed hook shims, repo-local state, and optional workspace/OpenSpec wiring. If the repo drifts later, use `gx doctor` as the repair path: it reapplies the managed safety files, verifies the setup, and on protected `main` it auto-sandboxes the repair so your visible base branch stays clean.
|
|
220
|
-
|
|
221
|
-
---
|
|
105
|
+
| `01` start isolated lane | `02` claim files | `03` implement + verify | `04` finish |
|
|
106
|
+
| --- | --- | --- | --- |
|
|
107
|
+
| Spawns `agent/role/task` branch + its own worktree. | Declare what you're touching. Other agents are blocked from these paths. | Run tests inside the sandbox — not against the live base branch. | Commit, push, open PR, wait for merge, prune the sandbox. |
|
|
222
108
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
Per new agent task:
|
|
226
|
-
|
|
227
|
-
```sh
|
|
228
|
-
# 1) Start isolated branch/worktree
|
|
109
|
+
```bash
|
|
110
|
+
# 1) start isolated branch/worktree
|
|
229
111
|
gx branch start "task-name" "agent-name"
|
|
230
112
|
|
|
231
|
-
# 2)
|
|
232
|
-
gx locks claim
|
|
233
|
-
--branch "$(git rev-parse --abbrev-ref HEAD)" <file...>
|
|
113
|
+
# 2) claim the files you're going to touch
|
|
114
|
+
gx locks claim --branch "$(git rev-parse --abbrev-ref HEAD)" <file...>
|
|
234
115
|
|
|
235
|
-
# 3)
|
|
116
|
+
# 3) implement + verify
|
|
236
117
|
npm test
|
|
237
118
|
|
|
238
|
-
# 4)
|
|
239
|
-
gx branch finish \
|
|
240
|
-
|
|
241
|
-
--base main --via-pr --wait-for-merge --cleanup
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
If you launch Codex through Guardex, the finish flow runs automatically when the Codex session exits — it auto-commits, retries once after syncing if the base moved during the run, then pushes and opens the PR.
|
|
245
|
-
|
|
246
|
-
GitGuardex normally prunes merged sandboxes for you as part of the finish flow. If you simply do not want a local sandbox/worktree anymore, remove that worktree directly; delete the branch too only if you are intentionally abandoning that lane:
|
|
247
|
-
|
|
248
|
-
```sh
|
|
249
|
-
git worktree remove .omx/agent-worktrees/<worktree-name>
|
|
250
|
-
# Claude Code sandboxes live under .omc/agent-worktrees/<worktree-name>
|
|
251
|
-
git branch -D agent/<role>/<task> # optional, only if you are discarding the lane
|
|
119
|
+
# 4) finish — commit + push + PR + merge + cleanup
|
|
120
|
+
gx branch finish --branch "$(git rev-parse --abbrev-ref HEAD)" \
|
|
121
|
+
--base main --via-pr --wait-for-merge --cleanup
|
|
252
122
|
```
|
|
253
123
|
|
|
254
|
-
|
|
124
|
+
> [!TIP]
|
|
125
|
+
> Launching Codex through Guardex runs **finish automatically** when the
|
|
126
|
+
> session exits — auto-commits, retries once if the base moved mid-run,
|
|
127
|
+
> then pushes and opens the PR.
|
|
255
128
|
|
|
256
|
-
|
|
257
|
-
gx finish --all
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
Codex sessions default to `.omx/agent-worktrees/`. Claude Code sessions default to `.omc/agent-worktrees/`, so Claude sandboxes stay under the Claude runtime folder instead of sharing the Codex root.
|
|
129
|
+

|
|
261
130
|
|
|
262
131
|
---
|
|
263
132
|
|
|
264
|
-
##
|
|
265
|
-
|
|
266
|
-
| | |
|
|
267
|
-
|---|---|
|
|
268
|
-
|  | **`gx setup`** — bootstraps everything in one command |
|
|
269
|
-
|  | **`gx status`** — health check for tools, hooks, services |
|
|
270
|
-
|  | **Branch/worktree start protocol** |
|
|
271
|
-
|  | **Lock + delete-guard protocol** |
|
|
272
|
-
|  | **VS Code Source Control view** with agent + OpenSpec files |
|
|
133
|
+
## `05` What `gx` shows first
|
|
273
134
|
|
|
274
|
-
|
|
135
|
+
Before you branch, repair, or start agents, run plain `gx`. It gives you
|
|
136
|
+
a one-screen status for the CLI, global helpers, repo safety service,
|
|
137
|
+
current repo path, and active branch.
|
|
275
138
|
|
|
276
|
-
|
|
139
|
+
```text
|
|
140
|
+
$ gx
|
|
277
141
|
|
|
278
|
-
|
|
142
|
+
▮▮ gitguardex v7.0.31
|
|
143
|
+
─────────────────────────────────────────────────────────────
|
|
144
|
+
repo /Users/you/code/your-repo
|
|
145
|
+
branch agent/codex/login-refactor (sandbox of main)
|
|
146
|
+
hooks ● installed pre-commit · pre-push · post-merge
|
|
147
|
+
locks ● 4 files claimed by 3 agents
|
|
148
|
+
service ● running review-bot · cleanup
|
|
279
149
|
|
|
280
|
-
|
|
150
|
+
COMPANIONS
|
|
151
|
+
● oh-my-codex active
|
|
152
|
+
● oh-my-claude-sisyphus active
|
|
153
|
+
● @fission-ai/openspec active
|
|
154
|
+
● cavemem active
|
|
155
|
+
● cavekit optional · not installed
|
|
156
|
+
● gh authenticated
|
|
281
157
|
|
|
282
|
-
|
|
283
|
-
|
|
158
|
+
NEXT › gx branch start "task" "agent"
|
|
159
|
+
› gx doctor (if anything drifts)
|
|
284
160
|
```
|
|
285
161
|
|
|
286
|
-
|
|
162
|
+
Compact by default in a TTY. Pass `--verbose` for the full services
|
|
163
|
+
list and grouped help tree, or set `GUARDEX_COMPACT_STATUS=1` to force
|
|
164
|
+
the compact layout everywhere.
|
|
287
165
|
|
|
288
166
|
---
|
|
289
167
|
|
|
290
|
-
##
|
|
291
|
-
|
|
292
|
-
### Core
|
|
293
|
-
|
|
294
|
-
```sh
|
|
295
|
-
gx status # health check (default)
|
|
296
|
-
gx status --strict # exit non-zero on findings
|
|
297
|
-
gx setup # full bootstrap
|
|
298
|
-
gx setup --repair # repair only
|
|
299
|
-
gx setup --install-only # scaffold templates, skip global installs
|
|
300
|
-
gx doctor # repair + verify (auto-sandboxes on protected main)
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
### Targeting other repos
|
|
304
|
-
|
|
305
|
-
```sh
|
|
306
|
-
gx setup --target /path/to/repo
|
|
307
|
-
gx doctor --target /path/to/repo
|
|
308
|
-
|
|
309
|
-
# optional: VS Code workspace showing repo + agent worktrees
|
|
310
|
-
gx setup --target /path/to/repo --parent-workspace-view
|
|
311
|
-
```
|
|
168
|
+
## `06` How `AGENTS.md` is handled
|
|
312
169
|
|
|
313
|
-
|
|
170
|
+
> [!IMPORTANT]
|
|
171
|
+
> **GitGuardex never overwrites your guidance.** Only content between
|
|
172
|
+
> these markers is managed:
|
|
173
|
+
> `<!-- multiagent-safety:START --> … <!-- multiagent-safety:END -->`.
|
|
174
|
+
> Everything outside that block is preserved byte-for-byte.
|
|
314
175
|
|
|
315
|
-
|
|
176
|
+
| Your repo has… | `gx setup` / `gx doctor` does… |
|
|
177
|
+
| --- | --- |
|
|
178
|
+
| `AGENTS.md` **with** markers | Refreshes **only** the managed block. |
|
|
179
|
+
| `AGENTS.md` **without** markers | Appends the managed block to the end. |
|
|
180
|
+
| No `AGENTS.md` | Creates it with the managed block. |
|
|
181
|
+
| A root `CLAUDE.md` | Leaves it alone. |
|
|
316
182
|
|
|
317
|
-
|
|
318
|
-
gx setup --target /mainfolder
|
|
319
|
-
gx setup --target /mainfolder --no-recursive
|
|
320
|
-
gx setup --target /mainfolder --current
|
|
321
|
-
gx doctor --target /mainfolder --current
|
|
322
|
-
```
|
|
183
|
+
---
|
|
323
184
|
|
|
324
|
-
|
|
185
|
+
## `07` Commands
|
|
325
186
|
|
|
326
|
-
|
|
187
|
+
### Core
|
|
327
188
|
|
|
328
|
-
|
|
189
|
+
| command | does |
|
|
190
|
+
| --- | --- |
|
|
191
|
+
| `gx status` | Health check (the default when you type `gx`). |
|
|
192
|
+
| `gx status --strict` | Exit non-zero on findings. |
|
|
193
|
+
| `gx setup` | Full bootstrap. |
|
|
194
|
+
| `gx setup --repair` | Repair only. |
|
|
195
|
+
| `gx setup --install-only` | Scaffold templates, skip global installs. |
|
|
196
|
+
| `gx doctor` | Repair + verify (auto-sandboxes on protected main). |
|
|
329
197
|
|
|
330
|
-
|
|
331
|
-
GUARDEX_DOCKER_SERVICE=app bash scripts/guardex-docker-loader.sh -- npm test
|
|
332
|
-
```
|
|
198
|
+
### Lifecycle
|
|
333
199
|
|
|
334
|
-
|
|
200
|
+
| command | does |
|
|
201
|
+
| --- | --- |
|
|
202
|
+
| `gx finish --all` | Commit + PR + merge every ready `agent/*` branch. |
|
|
203
|
+
| `gx cleanup` | Prune merged / stale branches and worktrees. |
|
|
204
|
+
| `gx sync` | Sync current agent branch against base. |
|
|
205
|
+
| `gx release` | Update the GitHub release from README notes. |
|
|
335
206
|
|
|
336
207
|
### Protected branches
|
|
337
208
|
|
|
338
|
-
```
|
|
209
|
+
```bash
|
|
339
210
|
gx protect list
|
|
340
211
|
gx protect add release staging
|
|
341
212
|
gx protect remove release
|
|
342
213
|
gx protect set main release hotfix
|
|
343
|
-
gx protect reset
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
Defaults: `dev`, `main`, `master`. Stored in git config key `multiagent.protectedBranches`.
|
|
347
|
-
|
|
348
|
-
### Sync current agent branch
|
|
349
|
-
|
|
350
|
-
```sh
|
|
351
|
-
gx sync --check
|
|
352
|
-
gx sync
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
### Background bots
|
|
356
|
-
|
|
357
|
-
```sh
|
|
358
|
-
gx agents start # review monitor + stale cleanup
|
|
359
|
-
gx agents stop
|
|
360
|
-
gx agents stop --pid 12345
|
|
361
|
-
gx agents status
|
|
362
|
-
|
|
363
|
-
# tuning
|
|
364
|
-
gx agents start --review-interval 30 --cleanup-interval 60 --idle-minutes 10
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
### Lifecycle
|
|
368
|
-
|
|
369
|
-
```sh
|
|
370
|
-
gx finish --all # commit + PR + merge every ready agent/* branch
|
|
371
|
-
gx cleanup # prune merged/stale branches and worktrees
|
|
372
|
-
gx cleanup --watch --interval 60
|
|
373
|
-
gx cleanup --idle-minutes 10
|
|
374
|
-
gx cleanup --watch --once --interval 60
|
|
375
|
-
gx release # create/update the current GitHub release from README notes
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### Release publishing
|
|
379
|
-
|
|
380
|
-
`gx release` is the maintainer path for package releases. It reads the versioned sections under `README.md -> Release notes`, finds the last published GitHub release, and writes one grouped GitHub release body covering everything newer than that release and up to the current package version.
|
|
381
|
-
|
|
382
|
-
That GitHub release then triggers `.github/workflows/release.yml`, which performs the actual `npm publish --provenance --access public` step.
|
|
383
|
-
|
|
384
|
-
### Prompts for your agents
|
|
385
|
-
|
|
386
|
-
```sh
|
|
387
|
-
gx prompt # full checklist (paste into Codex/Claude)
|
|
388
|
-
gx prompt --exec # commands only
|
|
389
|
-
gx prompt --part task-loop
|
|
390
|
-
gx prompt --exec --part finish --part cleanup
|
|
391
|
-
gx prompt --list-parts
|
|
392
|
-
gx prompt --snippet # AGENTS.md managed-block template
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
### Reports
|
|
396
|
-
|
|
397
|
-
```sh
|
|
398
|
-
gx report scorecard --repo github.com/recodeee/gitguardex
|
|
214
|
+
gx protect reset # back to: dev · main · master
|
|
399
215
|
```
|
|
400
216
|
|
|
401
217
|
---
|
|
402
218
|
|
|
403
|
-
## v6 → v7 migration
|
|
219
|
+
## `08` v6 → v7 migration
|
|
404
220
|
|
|
405
|
-
Five commands were consolidated into flags. Old names still work and
|
|
221
|
+
Five commands were consolidated into flags. Old names still work and
|
|
222
|
+
print a deprecation notice; they'll be removed in v8.
|
|
406
223
|
|
|
407
|
-
| v6
|
|
408
|
-
|
|
|
409
|
-
| `gx init`
|
|
410
|
-
| `gx install`
|
|
411
|
-
| `gx fix`
|
|
412
|
-
| `gx scan`
|
|
413
|
-
| `gx copy-prompt`
|
|
414
|
-
| `gx copy-commands`
|
|
415
|
-
| `gx print-agents-snippet`
|
|
416
|
-
| `gx review`
|
|
224
|
+
| v6 | v7 |
|
|
225
|
+
| --- | --- |
|
|
226
|
+
| `gx init` | `gx setup` |
|
|
227
|
+
| `gx install` | `gx setup --install-only` |
|
|
228
|
+
| `gx fix` | `gx setup --repair` |
|
|
229
|
+
| `gx scan` | `gx status --strict` |
|
|
230
|
+
| `gx copy-prompt` | `gx prompt` |
|
|
231
|
+
| `gx copy-commands` | `gx prompt --exec` |
|
|
232
|
+
| `gx print-agents-snippet` | `gx prompt --snippet` |
|
|
233
|
+
| `gx review` | `gx agents start` |
|
|
417
234
|
|
|
418
235
|
---
|
|
419
236
|
|
|
420
|
-
##
|
|
421
|
-
|
|
422
|
-
A few things worth knowing up front:
|
|
423
|
-
|
|
424
|
-
- Running `gx` with no command opens the status/health view.
|
|
425
|
-
- `gx init` is just an alias for `gx setup`.
|
|
426
|
-
- Setup/doctor can install missing companion tooling (OMC runtime, OpenSpec, cavemem, codex-auth, caveman, cavekit) — but only with explicit Y/N confirmation.
|
|
427
|
-
- Direct commits/pushes to protected branches are **blocked** by default. Agents must use the `agent/*` + PR flow.
|
|
428
|
-
- **Exception:** VS Code Source Control commits are allowed on protected branches that exist only locally (no upstream, no remote branch).
|
|
429
|
-
- On protected `main`, `gx doctor` auto-runs in a sandbox agent branch/worktree so it can't touch your real main.
|
|
430
|
-
- In-place agent branching is disabled. `gx branch start` always creates a separate worktree so your visible local/base branch never changes.
|
|
431
|
-
- Fresh sandbox branches start with no git upstream. Guardex records the protected base in `branch.<name>.guardexBase`, and the first `git push -u` publishes the real upstream.
|
|
432
|
-
- Interactive self-update prompt defaults to **No** (`[y/N]`).
|
|
433
|
-
|
|
434
|
-
Optional override for manual VS Code protected-branch writes:
|
|
435
|
-
|
|
436
|
-
```sh
|
|
437
|
-
git config multiagent.allowVscodeProtectedBranchWrites true
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
---
|
|
441
|
-
|
|
442
|
-
## Companion tools
|
|
443
|
-
|
|
444
|
-
GitGuardex is designed to work alongside these. All optional — but if you're running many agents, you probably want them. `gx status` reports the machine-detectable companion helpers, including local `caveman` / `cavekit` installs when their home-directory footprints are present.
|
|
445
|
-
|
|
446
|
-
```text
|
|
447
|
-
● oh-my-codex: active
|
|
448
|
-
● oh-my-claude-sisyphus: active
|
|
449
|
-
● @fission-ai/openspec: active
|
|
450
|
-
● cavemem: active
|
|
451
|
-
● cavekit: active
|
|
452
|
-
● caveman: active
|
|
453
|
-
● @imdeadpool/codex-account-switcher: active
|
|
454
|
-
● gh: active
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
### oh-my-codex — Codex config + skills framework
|
|
458
|
-
|
|
459
|
-
Loads skills, slash commands, and session defaults into Codex. GitGuardex merges `oh-my-codex` into every agent worktree automatically, so every spawned agent starts with the same tuned config instead of vanilla Codex.
|
|
460
|
-
|
|
461
|
-
```sh
|
|
462
|
-
npm i -g oh-my-codex
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
Repo: <https://github.com/Yeachan-Heo/oh-my-codex>
|
|
466
|
-
[](https://github.com/Yeachan-Heo/oh-my-codex)
|
|
467
|
-
|
|
468
|
-
### oh-my-claudecode — Claude Code equivalent
|
|
469
|
-
|
|
470
|
-
Claude-side mirror of oh-my-codex. Same idea: skills, commands, and defaults loaded into every Claude Code session. GitGuardex merges it into worktrees alongside oh-my-codex so mixed Codex + Claude agent fleets behave consistently. For the npm CLI/runtime path, the published package name is `oh-my-claude-sisyphus`.
|
|
471
|
-
|
|
472
|
-
```sh
|
|
473
|
-
npm i -g oh-my-claude-sisyphus@latest
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
Repo: <https://github.com/Yeachan-Heo/oh-my-claudecode>
|
|
477
|
-
[](https://github.com/Yeachan-Heo/oh-my-claudecode)
|
|
478
|
-
|
|
479
|
-
### GitGuardex skills - install the repo skill catalog through `npx skills`
|
|
480
|
-
|
|
481
|
-
For agents that already support the generic `skills` installer flow, GitGuardex exposes its repo skill catalog directly. Use it as a separate install path after the CLI install. You can start from the broader `recodee` source or jump straight into this repo's catalog.
|
|
482
|
-
|
|
483
|
-
```sh
|
|
484
|
-
npx skills add recodee/
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
```sh
|
|
488
|
-
npx skills add recodee/gitguardex
|
|
489
|
-
```
|
|
490
|
-
|
|
491
|
-
This repo currently exposes `gitguardex` and `guardex-merge-skills-to-dev` through that flow. If the picker does not show a separate `guardex` skill, that is expected: `guardex` remains the legacy CLI alias, while the repo skill itself is named `gitguardex`.
|
|
492
|
-
|
|
493
|
-
Need the Codex/Claude user-home startup files instead? Run `gx install-agent-skills`. Need the generic repo catalog? Run `npx skills add ...`. They solve different setup surfaces.
|
|
494
|
-
|
|
495
|
-
Repo: <https://github.com/recodeee/gitguardex>
|
|
496
|
-
[](https://github.com/recodeee/gitguardex)
|
|
497
|
-
|
|
498
|
-
### Caveman — output compression for long agent runs
|
|
499
|
-
|
|
500
|
-
Ultra-compressed response mode for Claude/Codex-style agents. Useful when you want less output-token churn during long reviews, debug loops, or multi-agent sessions.
|
|
501
|
-
|
|
502
|
-
```sh
|
|
503
|
-
npx skills add JuliusBrussee/caveman
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
Repo: <https://github.com/JuliusBrussee/caveman>
|
|
507
|
-
[](https://github.com/JuliusBrussee/caveman)
|
|
508
|
-
|
|
509
|
-
### Cavemem — local persistent memory for agents
|
|
510
|
-
|
|
511
|
-
Cross-agent memory with local SQLite + MCP. Helpful when you want Codex or Claude sessions to retain compressed history across runs. `gx setup` can install the CLI; you still run the IDE wiring once per machine.
|
|
512
|
-
|
|
513
|
-
```sh
|
|
514
|
-
npm install -g cavemem
|
|
515
|
-
cavemem install --ide codex
|
|
516
|
-
cavemem status
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
Repo: <https://github.com/JuliusBrussee/cavemem>
|
|
520
|
-
[](https://github.com/JuliusBrussee/cavemem)
|
|
521
|
-
|
|
522
|
-
### Cavekit — spec-driven build loop
|
|
523
|
-
|
|
524
|
-
Spec-driven workflow layer for building from durable specs with explicit build/check commands. The current install path also brings in its `spec`, `build`, `check`, `caveman`, and `backprop` skills.
|
|
525
|
-
|
|
526
|
-
```sh
|
|
527
|
-
npx skills add JuliusBrussee/cavekit
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
Repo: <https://github.com/JuliusBrussee/cavekit>
|
|
531
|
-
[](https://github.com/JuliusBrussee/cavekit)
|
|
532
|
-
|
|
533
|
-
### OpenSpec — spec-driven workflows
|
|
534
|
-
|
|
535
|
-
Structured plan/change/apply/archive flow for agents. Prevents them from drifting off-task on long jobs. Full guide: [`docs/openspec-getting-started.md`](./docs/openspec-getting-started.md).
|
|
536
|
-
|
|
537
|
-
```sh
|
|
538
|
-
npm i -g @fission-ai/openspec
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
Repo: <https://github.com/Fission-AI/OpenSpec>
|
|
542
|
-
[](https://github.com/Fission-AI/OpenSpec)
|
|
543
|
-
|
|
544
|
-
### codex-auth — multi-account switcher
|
|
545
|
-
|
|
546
|
-
For multi-identity Codex workflows. I built this because switching accounts manually for 30 agents was impossible. Auto-registers accounts to a dashboard on `codex login` so you can see every account and switch with one command.
|
|
547
|
-
|
|
548
|
-
```sh
|
|
549
|
-
npm i -g @imdeadpool/codex-account-switcher
|
|
550
|
-
|
|
551
|
-
codex-auth save <name>
|
|
552
|
-
codex-auth use <name>
|
|
553
|
-
codex-auth list --details
|
|
554
|
-
codex-auth current
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
Repo: [recodeecom/codex-account-switcher-cli](https://github.com/recodeecom/codex-account-switcher-cli)
|
|
558
|
-
[](https://github.com/recodeecom/codex-account-switcher-cli)
|
|
559
|
-
|
|
560
|
-
### GitHub CLI (`gh`)
|
|
561
|
-
|
|
562
|
-
Required for PR/merge automation. `agent-branch-finish.sh` and `codex-agent.sh` auto-finish both depend on it.
|
|
563
|
-
|
|
564
|
-
```sh
|
|
565
|
-
# https://cli.github.com/
|
|
566
|
-
gh --version
|
|
567
|
-
gh auth status
|
|
568
|
-
```
|
|
569
|
-
|
|
570
|
-
### Pull app — fork auto-sync
|
|
571
|
-
|
|
572
|
-
Guardex installs a starter config at `.github/pull.yml.example`.
|
|
573
|
-
|
|
574
|
-
```sh
|
|
575
|
-
cp .github/pull.yml.example .github/pull.yml
|
|
576
|
-
# edit rules[].base and rules[].upstream
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
Install the app: <https://github.com/apps/pull>
|
|
580
|
-
Validate: `https://pull.git.ci/check/<owner>/<repo>`
|
|
581
|
-
|
|
582
|
-
### CR-GPT — AI PR reviews
|
|
583
|
-
|
|
584
|
-
Install: <https://github.com/apps/cr-gpt>
|
|
585
|
-
|
|
586
|
-
`gx setup` installs `.github/workflows/cr.yml`. Add `OPENAI_API_KEY` under `Settings → Secrets and variables → Actions → Secrets`. After that, new and updated PRs get reviewed automatically.
|
|
587
|
-
|
|
588
|
-
---
|
|
589
|
-
|
|
590
|
-
## OpenSpec integration
|
|
591
|
-
|
|
592
|
-
If you installed OpenSpec during setup (`@fission-ai/openspec`), the full guide is at [`docs/openspec-getting-started.md`](./docs/openspec-getting-started.md).
|
|
593
|
-
|
|
594
|
-
Default flow:
|
|
595
|
-
|
|
596
|
-
```text
|
|
597
|
-
/opsx:propose <change-name> → /opsx:apply → /opsx:archive
|
|
598
|
-
```
|
|
599
|
-
|
|
600
|
-
Expanded flow:
|
|
601
|
-
|
|
602
|
-
```text
|
|
603
|
-
/opsx:new <change-name> → /opsx:ff or /opsx:continue → /opsx:apply → /opsx:verify → /opsx:archive
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
### OpenSpec in agent sub-branches
|
|
607
|
-
|
|
608
|
-
- The Guardex Codex launcher enforces OpenSpec workspaces before launching Codex.
|
|
609
|
-
- `gx branch start` can scaffold both `openspec/changes/<slug>/` and `openspec/plan/<slug>/` when `GUARDEX_OPENSPEC_AUTO_INIT=true`.
|
|
610
|
-
- The collaboration section in `tasks.md` is there for real cleanup handoffs too. If the first Codex/Claude session finishes the implementation work but hits a usage limit before `agent-branch-finish --cleanup`, hand the same sandbox to another agent, let that agent finish cleanup, and record the join/handoff in the change task.
|
|
611
|
-
|
|
612
|
-
Environment variables:
|
|
613
|
-
|
|
614
|
-
| Var | Purpose |
|
|
615
|
-
|---|---|
|
|
616
|
-
| `GUARDEX_OPENSPEC_AUTO_INIT` | `true` to auto-bootstrap on branch start (default `false`) |
|
|
617
|
-
| `GUARDEX_OPENSPEC_PLAN_SLUG` | force a specific plan workspace name |
|
|
618
|
-
| `GUARDEX_OPENSPEC_CHANGE_SLUG` | force a specific change workspace name |
|
|
619
|
-
| `GUARDEX_OPENSPEC_CAPABILITY_SLUG` | override capability folder for `spec.md` scaffolding |
|
|
620
|
-
|
|
621
|
-
---
|
|
622
|
-
|
|
623
|
-
## Files installed by setup
|
|
624
|
-
|
|
625
|
-
```text
|
|
626
|
-
AGENTS.md # managed multi-agent block appended/refreshed in place
|
|
627
|
-
.githooks/pre-commit # shim -> gx hook run pre-commit
|
|
628
|
-
.githooks/pre-push # shim -> gx hook run pre-push
|
|
629
|
-
.githooks/post-merge # shim -> gx hook run post-merge
|
|
630
|
-
.githooks/post-checkout # shim -> gx hook run post-checkout
|
|
631
|
-
scripts/guardex-env.sh # repo toggle + hook/helper env bridge
|
|
632
|
-
scripts/guardex-docker-loader.sh # compose env/loader helper
|
|
633
|
-
scripts/agent-session-state.js # active-session state helper
|
|
634
|
-
scripts/install-vscode-active-agents-extension.js
|
|
635
|
-
.omc/agent-worktrees # Claude sandbox root
|
|
636
|
-
.omx/agent-worktrees # Codex sandbox root
|
|
637
|
-
.omx/state/agent-file-locks.json # file-lock registry
|
|
638
|
-
.github/pull.yml.example
|
|
639
|
-
.github/workflows/cr.yml
|
|
640
|
-
vscode/guardex-active-agents/package.json
|
|
641
|
-
vscode/guardex-active-agents/extension.js
|
|
642
|
-
vscode/guardex-active-agents/session-schema.js
|
|
643
|
-
vscode/guardex-active-agents/README.md
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
Legacy compatibility note: older repos may still contain repo-local workflow scripts under `scripts/`. Direct `gx branch ...`, `gx locks ...`, `gx finish`, `gx cleanup`, `gx merge`, and `gx migrate` do not require them. `gx migrate` removes those leftover workflow shims by default. The CLI still honors repo-local `scripts/review-bot-watch.sh` and `scripts/codex-agent.sh` when they are already present so older repos can keep working during migration.
|
|
647
|
-
|
|
648
|
-
Optional Codex/Claude user-level companions still install with `gx install-agent-skills`; the generic repo skill catalog is available with `npx skills add recodee/` or directly via `npx skills add recodee/gitguardex`. Neither path copies those user-home files into each repo, and the global Guardex npm install does not trigger the `npx skills add ...` path for you.
|
|
649
|
-
|
|
650
|
-
---
|
|
651
|
-
|
|
652
|
-
## Frontend mirror
|
|
653
|
-
|
|
654
|
-
- Standalone frontend repo: <https://github.com/recodeee/gitguardex-frontend>
|
|
655
|
-
- This repo tracks the frontend under `frontend/` and auto-mirrors it via `.github/workflows/sync-frontend-mirror.yml` on changes to `main`.
|
|
656
|
-
|
|
657
|
-
Setup (in this repo):
|
|
658
|
-
|
|
659
|
-
1. `Settings → Secrets and variables → Actions`
|
|
660
|
-
2. Add secret `GUARDEX_FRONTEND_MIRROR_PAT` with `contents:write` on `recodeee/gitguardex-frontend`
|
|
661
|
-
|
|
662
|
-
Optional overrides (Actions Variables):
|
|
663
|
-
|
|
664
|
-
- `GUARDEX_FRONTEND_MIRROR_REPO` (default `recodeee/gitguardex-frontend`)
|
|
665
|
-
- `GUARDEX_FRONTEND_MIRROR_BRANCH` (default `main`)
|
|
666
|
-
|
|
667
|
-
Manual run:
|
|
668
|
-
|
|
669
|
-
```sh
|
|
670
|
-
gh workflow run sync-frontend-mirror.yml
|
|
671
|
-
```
|
|
672
|
-
|
|
673
|
-
---
|
|
674
|
-
|
|
675
|
-
## Known rough edges
|
|
237
|
+
## `09` Known rough edges
|
|
676
238
|
|
|
677
239
|
Being honest about where this still has issues:
|
|
678
240
|
|
|
679
|
-
- **Usage limit mid-task.** When an agent hits its Codex/Claude usage
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
241
|
+
- **Usage limit mid-task.** When an agent hits its Codex / Claude usage
|
|
242
|
+
limit partway through, another agent may need to take over the same
|
|
243
|
+
sandbox and run the remaining finish / cleanup steps.
|
|
244
|
+
- **Conflict-stuck probes.** Fixed in v7.0.2 — earlier versions could
|
|
245
|
+
leak `__source-probe-*` worktrees when the sync-guard rebase hit
|
|
246
|
+
conflicts.
|
|
247
|
+
- **Windows.** Most of the hook surface assumes a POSIX shell. Use WSL
|
|
248
|
+
or symlink-enabled git.
|
|
684
249
|
|
|
685
250
|
---
|
|
686
251
|
|
|
687
|
-
##
|
|
688
|
-
|
|
689
|
-
- CI matrix on Node 18 / 20 / 22 (`npm test`, `node --check`, `npm pack --dry-run`)
|
|
690
|
-
- Trusted publishing with provenance via GitHub Actions
|
|
691
|
-
- OpenSSF Scorecard + Dependabot for Actions
|
|
692
|
-
- Disclosure policy in [`SECURITY.md`](./SECURITY.md)
|
|
693
|
-
|
|
694
|
-
---
|
|
252
|
+
## `10` Companion tools
|
|
695
253
|
|
|
696
|
-
|
|
254
|
+
All optional — but if you're running many agents, you probably want them.
|
|
255
|
+
`gx status` auto-detects each one and reports it in the `Global services`
|
|
256
|
+
block.
|
|
697
257
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
npm
|
|
702
|
-
|
|
258
|
+
| Tool | What it does | Stars |
|
|
259
|
+
| --- | --- | --- |
|
|
260
|
+
| [**oh-my-codex**](https://github.com/Yeachan-Heo/oh-my-codex) — `npm i -g oh-my-codex` | Codex config + skills framework. Merged into every agent worktree so each spawned Codex starts with the same tuned config. | [](https://github.com/Yeachan-Heo/oh-my-codex) |
|
|
261
|
+
| [**oh-my-claudecode**](https://github.com/Yeachan-Heo/oh-my-claudecode) — `npm i -g oh-my-claude-sisyphus@latest` | Claude-side mirror of oh-my-codex. Skills, commands, and defaults for every Claude Code session. | [](https://github.com/Yeachan-Heo/oh-my-claudecode) |
|
|
262
|
+
| [**OpenSpec**](https://github.com/Fission-AI/OpenSpec) — `npm i -g @fission-ai/openspec` | Structured plan / change / apply / archive flow so long agent runs don't drift off-task. | [](https://github.com/Fission-AI/OpenSpec) |
|
|
263
|
+
| [**cavemem**](https://github.com/JuliusBrussee/cavemem) — `npm i -g cavemem` | Local persistent memory for agents via SQLite + MCP. Retains compressed history across runs. | [](https://github.com/JuliusBrussee/cavemem) |
|
|
264
|
+
| [**cavekit**](https://github.com/JuliusBrussee/cavekit) — `npx skills add JuliusBrussee/cavekit` | Spec-driven build loop with `spec`, `build`, `check`, `caveman`, `backprop` skills bundled in. | [](https://github.com/JuliusBrussee/cavekit) |
|
|
265
|
+
| [**caveman**](https://github.com/JuliusBrussee/caveman) — `npx skills add JuliusBrussee/caveman` | Ultra-compressed response mode for Claude / Codex. Less output-token churn on long reviews and debug loops. | [](https://github.com/JuliusBrussee/caveman) |
|
|
266
|
+
| [**codex-account-switcher**](https://github.com/recodeecom/codex-account-switcher-cli) — `npm i -g @imdeadpool/codex-account-switcher` | Multi-identity Codex account switcher. Auto-registers accounts on `codex login`; switch with one command. | [](https://github.com/recodeecom/codex-account-switcher-cli) |
|
|
267
|
+
| [**GitHub CLI (`gh`)**](https://github.com/cli/cli) — see [cli.github.com](https://cli.github.com/) | Required for PR / merge automation. `gx branch finish --via-pr --wait-for-merge` depends on it. | [](https://github.com/cli/cli) |
|
|
703
268
|
|
|
704
269
|
---
|
|
705
270
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
<
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
- Bumped `@imdeadpool/guardex` from `7.0.26` to `7.0.27` so npm can publish a fresh version after `7.0.26` was already taken on the registry.
|
|
713
|
-
- The shipped `agent-branch-start.sh` copies now keep the startup auto-transfer path alive under `set -o pipefail`, so Guardex can still restore moved changes back to the protected checkout when branch startup hits a later failure.
|
|
714
|
-
- The shipped `agent-branch-finish.sh` copies now keep PR-only finish runs from opening temporary integration repos, so maintainers can finish directly through the existing PR lane without extra temp-repo churn.
|
|
715
|
-
- Keep the release scoped to version metadata for the already-merged `main` payload; no additional runtime behavior changes are introduced in this release lane.
|
|
716
|
-
|
|
717
|
-
### v7.0.26
|
|
718
|
-
- Bumped `@imdeadpool/guardex` from `7.0.25` to `7.0.26` so npm can publish a fresh version after `v7.0.25` reached GitHub Releases while the registry stayed on `7.0.24`.
|
|
719
|
-
- README now documents both `npx skills add recodee/` and `npx skills add recodee/gitguardex`, clarifies that the global Guardex npm install does not auto-run the generic skills installer, and explains why the picker shows `gitguardex` instead of a separate `guardex` skill.
|
|
720
|
-
- Keep the release scoped to version metadata plus the already-merged README installer guidance on `main`; no additional CLI/runtime behavior changed in this lane.
|
|
721
|
-
|
|
722
|
-
### v7.0.25
|
|
723
|
-
- Bumped `@imdeadpool/guardex` from `7.0.24` to `7.0.25` so npm and GitHub Releases can ship the current `main` payload.
|
|
724
|
-
- The bundled `GitGuardex Active Agents` VS Code companion now self-heals stale repo-scan ignore settings in older repos, keeps plain managed sandboxes visible in Source Control, and preserves cleanup truth so the tree matches actual sandbox state.
|
|
725
|
-
- Bumped the shipped Active Agents companion manifests from `0.0.8` to `0.0.9` so local VS Code installs can pick up the newer workspace build and show the refreshed extension version from this release.
|
|
726
|
-
|
|
727
|
-
### v7.0.24
|
|
728
|
-
- Bumped `@imdeadpool/guardex` from `7.0.23` to `7.0.24` so GitHub Releases and the npm publish retry can advance together after `v7.0.23` landed on GitHub but not on npm.
|
|
729
|
-
- Release verification no longer loses its base ref on tag-triggered runs, so the publish workflow keeps the history it needs before packing and publish checks.
|
|
730
|
-
- Keep the release scoped to version and release automation metadata only; the packaged Guardex CLI payload stays aligned with the already-verified `main` branch contents.
|
|
731
|
-
|
|
732
|
-
### v7.0.23
|
|
733
|
-
- Bumped `@imdeadpool/guardex` from `7.0.22` to `7.0.23` so GitHub release and npm can advance together after `7.0.22` reached npm without a matching published GitHub release.
|
|
734
|
-
- Active Agents stays easier to scan and more truthful: the package repo remains the canonical source, inspect/install paths stay loadable across VS Code churn, and session rows group under worktrees with clearer merged-cleanup truth.
|
|
735
|
-
- Guardex prompt and finish guidance now pushes faster phase-based execution, keeps helper behavior single-sourced, and avoids fragmented probe loops when cleanup or branch-deletion races appear.
|
|
736
|
-
|
|
737
|
-
### v7.0.22
|
|
738
|
-
- Bumped `@imdeadpool/guardex` from `7.0.21` to `7.0.22` so npm can publish the next release from the current merged mainline.
|
|
739
|
-
- The shipped `main` payload already includes lower-token prompt slices, SCM-selected lane visibility, truthful merged-cleanup evidence, the Active Agents brand/icon refresh, and the remaining CLI extraction cleanups without changing Guardex behavior.
|
|
740
|
-
- Keep the release scoped to version and release metadata only; the package payload stays the same as the verified `main` branch contents.
|
|
741
|
-
|
|
742
|
-
### v7.0.21
|
|
743
|
-
- Bumped `@imdeadpool/guardex` from `7.0.20` to `7.0.21` so npm can publish the next release from the current merged mainline.
|
|
744
|
-
- Keep the release scoped to version and release metadata only; the package payload stays the same as the verified `main` branch contents.
|
|
745
|
-
- Published-release automation will pick up this new package version once the matching GitHub release is created.
|
|
746
|
-
|
|
747
|
-
### v7.0.20
|
|
748
|
-
- The VS Code Active Agents tree now exposes worktree-owned SCM changes and lock ownership directly, so operators can see which sandbox owns a dirty file before they act.
|
|
749
|
-
- Guardex now keeps merged cleanup evidence truthful by recording final cleanup proof only after the merge and cleanup state is actually available.
|
|
750
|
-
- Install-surface verification cleanup on `main` is easier to maintain without changing the shipped CLI surface.
|
|
751
|
-
- Bumped the release from `7.0.19` → `7.0.20` so the shipped Active Agents visibility and cleanup-evidence refinements land on a fresh publishable npm version.
|
|
752
|
-
|
|
753
|
-
### v7.0.19
|
|
754
|
-
- `gx setup` and `gx doctor` now accept targeted managed-file recovery after `--force`, so `gx doctor --force scripts/review-bot-watch.sh` repairs the named managed file instead of failing on an unknown argument.
|
|
755
|
-
- Managed-file conflict output now teaches both recovery forms directly: `--force <managed-path>` for one file and plain `--force` for whole-surface rewrites.
|
|
756
|
-
- GitGuardex now keeps small-task routing caveman-only by default and makes working VS Code agent lanes easier to spot at a glance while keeping the CLI-owned install-surface rollout intact.
|
|
757
|
-
- Bumped the release from `7.0.18` → `7.0.19` so the shipped setup/doctor recovery and UX refinements land on a fresh publishable npm version.
|
|
758
|
-
|
|
759
|
-
### v7.0.18
|
|
760
|
-
- GitGuardex now keeps the install workflow in `gx` itself: `gx branch ...`, `gx locks ...`, `gx worktree prune`, `gx migrate`, and user-level agent-skill install now own the agent lifecycle instead of teaching pasted repo scripts as the primary surface.
|
|
761
|
-
- Fresh installs switch repo hooks to tiny `gx hook run ...` shims, stop copying repo-local workflow implementations and repo-local skills, and stop injecting Guardex-managed `agent:*` package scripts into consumer repos.
|
|
762
|
-
- `gx migrate` can move older repos onto the smaller CLI-owned install surface while preserving the managed AGENTS block, lock registry state, hook shims, required gitignore entries, and the repo-local helper assets that still carry local state.
|
|
763
|
-
- Bumped the release from `7.0.17` → `7.0.18` so the shipped CLI-owned install-surface changes land on a fresh publishable npm version.
|
|
764
|
-
|
|
765
|
-
### v7.0.17
|
|
766
|
-
- Restored the published npm package name to `@imdeadpool/guardex` after the `@imdeadpool/gitguardex` rename only changed the package identity locally and could not rename the existing npm registry entry.
|
|
767
|
-
- README/install/tutorial/self-update surfaces now point back at `@imdeadpool/guardex` while keeping GitGuardex as the product/repo brand and `gitguardex` as the long-form command.
|
|
768
|
-
- Bumped the release from `7.0.16` → `7.0.17` because `@imdeadpool/guardex@7.0.16` is already published on npm.
|
|
769
|
-
|
|
770
|
-
### v7.0.16
|
|
771
|
-
- GitGuardex now publishes under the matching npm package name `@imdeadpool/gitguardex`, and install/help/docs surfaces point at the renamed package instead of the older `@imdeadpool/guardex` scope.
|
|
772
|
-
- `gx doctor` now keeps nested repo repair runs visibly progressing, and overlapping integration work stays off the protected base branch instead of trying to merge back on `main`.
|
|
773
|
-
- Cleanup and finish flows are less brittle: `codex-agent` no longer waits on PRs that can never exist, and prune cleanup now walks both managed worktree roots so stale sandboxes get removed consistently.
|
|
774
|
-
- Mirror-sync diagnostics are quieter: when the mirror PAT is unset, GitGuardex now skips the sync path instead of marking the run red, and shared `ralplan` lanes stay easier to identify during handoff/debugging.
|
|
775
|
-
- Bumped the release from `7.0.15` → `7.0.16` after npm rejected a republish of `7.0.15`.
|
|
776
|
-
|
|
777
|
-
### v7.0.15
|
|
778
|
-
- `gx doctor` no longer blocks recursive nested protected-repo repairs on child PR merge waits; nested sandboxes now force `--no-wait-for-merge` so the parent repair loop can continue.
|
|
779
|
-
- `gx setup` can now refresh managed files from protected `main` through a temporary sandbox branch/worktree, sync the managed outputs back to the visible base checkout, and prune the sandbox afterward.
|
|
780
|
-
- Bumped `@imdeadpool/guardex` from `7.0.14` → `7.0.15` after npm rejected a republish over the already-published `7.0.14`.
|
|
781
|
-
|
|
782
|
-
### v7.0.14
|
|
783
|
-
- Bumped `@imdeadpool/guardex` from `7.0.13` → `7.0.14` after npm rejected a republish over the already-published `7.0.13`.
|
|
784
|
-
- No package payload changes beyond the release metadata bump; this release exists so `npm publish` can proceed with a fresh semver.
|
|
785
|
-
|
|
786
|
-
### v7.0.13
|
|
787
|
-
- `gx status` and `gx setup` now present the Claude companion as `oh-my-claudecode` while still installing the published npm package `oh-my-claude-sisyphus`.
|
|
788
|
-
- When that dependency is inactive or the user declines the optional install, GitGuardex now prints the upstream repo URL so the missing dependency is explicit instead of hidden behind the npm package name.
|
|
789
|
-
- Bumped `@imdeadpool/guardex` from `7.0.12` → `7.0.13` after npm rejected a republish over the already-published `7.0.12`.
|
|
790
|
-
|
|
791
|
-
### v7.0.12
|
|
792
|
-
- Fixed the self-update handoff after `gx` installs a newer global package. When the on-disk install advances, GitGuardex now restarts into the installed CLI instead of continuing in the old process and printing the stale in-memory version.
|
|
793
|
-
- This removes the confusing `Updated to latest published version` followed by `CLI: ...7.0.10` mismatch that happened when `7.0.11` finished installing during the same `gx` invocation.
|
|
794
|
-
- Bumped `@imdeadpool/guardex` from `7.0.11` → `7.0.12`.
|
|
795
|
-
|
|
796
|
-
### v7.0.11
|
|
797
|
-
- Fixed the npm release workflow trigger so publishes run from `release.published` or explicit manual dispatch, instead of double-firing on both the tag push and the release event.
|
|
798
|
-
- This keeps the GitHub `npm` environment from collecting duplicate cancelled deploy cards for the same version and leaves one canonical release deployment to monitor.
|
|
799
|
-
- Bumped `@imdeadpool/guardex` from `7.0.10` → `7.0.11` so the next release can publish cleanly after `7.0.10` was already taken on npm.
|
|
800
|
-
|
|
801
|
-
### v7.0.10
|
|
802
|
-
- Primary user-facing long name is now **GitGuardex**. CLI/help presents `gitguardex` as the long-form command; `gx` stays the preferred short alias; `guardex` remains as legacy compatibility.
|
|
803
|
-
- Installed Codex/Claude startup files now use `gitguardex` paths: `.codex/skills/gitguardex/SKILL.md` and `.claude/commands/gitguardex.md`.
|
|
804
|
-
- Startup context shrunk further. Managed marker block + skill + command compressed from 4340 B → 1930 B across the three always-loaded template files.
|
|
805
|
-
- Bumped `@imdeadpool/guardex` from `7.0.9` → `7.0.10`.
|
|
806
|
-
|
|
807
|
-
### v7.0.9
|
|
808
|
-
- `gx doctor` and `gx setup` now refresh AGENTS with repo-toggle examples. Managed AGENTS block states Guardex is enabled by default and shows exact `.env` lines: `GUARDEX_ON=0` disables per repo, `GUARDEX_ON=1` re-enables.
|
|
809
|
-
- Bumped to `7.0.9`.
|
|
810
|
-
|
|
811
|
-
### v7.0.8
|
|
812
|
-
- Added `REPO TOGGLE` section to `gx` status/help output. Operators see the repo-local switch immediately.
|
|
813
|
-
- Bumped to `7.0.8`.
|
|
814
|
-
|
|
815
|
-
### v7.0.7
|
|
816
|
-
- Advanced next publish target past npm. Bumped to `7.0.7`.
|
|
817
|
-
- Fixed root package metadata drift in `package-lock.json` (root version had fallen behind manifest).
|
|
818
|
-
|
|
819
|
-
### v7.0.6
|
|
820
|
-
- **Fixed: self-updater lied about success.** `gx`'s update prompt runs `npm i -g @imdeadpool/guardex@latest` and previously trusted npm's exit code. When npm's resolution cache reported "changed 1 package" without actually overwriting files (known quirk, triggers when user just bumped N-1 → N in the same session, or with a warm metadata cache), the prompt kept re-firing on every subsequent `gx` invocation because the on-disk `package.json` was stale. `gx` now re-reads the globally installed `package.json` after `@latest` returns, compares its `version` to the advertised latest, and if they don't match runs a pinned retry `npm i -g @imdeadpool/guardex@<latest>` to force past the obstructing cache entry. If the pinned retry also fails, the user gets a clear hint (`npm root -g && npm cache verify`) instead of a silent loop.
|
|
821
|
-
|
|
822
|
-
### v7.0.5
|
|
823
|
-
- Added `oh-my-claude` to `gx status` global-toolchain check. Claude-side mirror of `oh-my-codex` is reported alongside existing services (`oh-my-codex`, `@fission-ai/openspec`, `@imdeadpool/codex-account-switcher`, `gh`).
|
|
824
|
-
- Added `.omc/` to the managed `.gitignore` block so Claude-specific runtime state (notepad, worktrees) stays out of commits, parity with `.omx/`.
|
|
825
|
-
|
|
826
|
-
### v7.0.4
|
|
827
|
-
- Fixed publish collision on npm. Bumped `7.0.3` → `7.0.4`.
|
|
828
|
-
|
|
829
|
-
### v7.0.3
|
|
830
|
-
- **Branch/worktree naming refactor.** `agent-branch-start.sh` now produces `agent/<role>/<task>-<YYYY-MM-DD>-<HH-MM>` instead of `agent/<role+account-email>/<snapshot-slug>-<task>-<cksum6>`. Account names and 6-hex checksums no longer leak into branch/worktree paths.
|
|
831
|
-
- **Role normalization.** `AGENT_NAME` collapses to `{claude, codex, <explicit>}` via (in order) `GUARDEX_AGENT_TYPE` env override, substring match against `claude`/`codex`, `CLAUDECODE=1` sentinel, or fallback to `codex`. Other roles (`integrator`, `executor`, etc.) pass through when set via `GUARDEX_AGENT_TYPE`.
|
|
832
|
-
- New `--print-name-only` flag for deterministic tests; honors `GUARDEX_BRANCH_TIMESTAMP` for reproducible output.
|
|
833
|
-
- `--tier` flag accepted silently for CLAUDE.md compatibility (scaffold sizing not wired through yet).
|
|
834
|
-
|
|
835
|
-
### v7.0.2
|
|
836
|
-
- **Fix: `__source-probe-*` worktree leak on conflict exit.** `agent-branch-finish.sh` was registering its `cleanup()` trap *after* the sync-guard rebase block, so when rebase hit conflicts and the script exited, the throwaway probe worktree was never removed. `gx doctor` sweeps accumulated one new probe per run.
|
|
837
|
-
- Cleanup trap is now installed immediately after probe creation, and aborts any in-progress `rebase`/`merge` before `worktree remove --force`.
|
|
838
|
-
|
|
839
|
-
### v7.0.1
|
|
840
|
-
- Maintenance release.
|
|
841
|
-
|
|
842
|
-
### v7.0.0
|
|
843
|
-
- **Breaking (soft).** Consolidated 17 commands into 12 visible commands with flag-based subcommands. Removed names still work but print a deprecation notice; will be removed in v8.
|
|
844
|
-
- **Token-usage improvements.** Trimmed auto-installed agent templates that live in every consumer repo and get loaded into every session:
|
|
845
|
-
- `templates/AGENTS.multiagent-safety.md`: 6990 B → 1615 B (−77%)
|
|
846
|
-
- `templates/codex/skills/gitguardex/SKILL.md`: 2732 B → 1086 B (−60%)
|
|
847
|
-
- `templates/claude/commands/gitguardex.md`: 472 B → 357 B (−24%)
|
|
848
|
-
- Total: 10194 B → 3058 B per consumer repo (−70%, ~1.5k fewer tokens per agent session).
|
|
849
|
-
- New `gx prompt` command replaces three prompt-emitting commands.
|
|
850
|
-
- New flag surface on `gx setup`: `--install-only`, `--repair`.
|
|
851
|
-
- New `gx status --strict` mirrors old `gx scan`.
|
|
852
|
-
|
|
853
|
-
</details>
|
|
854
|
-
|
|
855
|
-
<details>
|
|
856
|
-
<summary><strong>v6.x</strong></summary>
|
|
857
|
-
|
|
858
|
-
### v6.0.1
|
|
859
|
-
- Preserve existing repo-owned `AGENTS.md` marker content during `gx setup` / `gx doctor` by default; only rewrite marker blocks when `--force` is explicit.
|
|
860
|
-
- Preserve existing `agent:*` package scripts during setup/doctor repairs by default.
|
|
861
|
-
- Forward `--force` through sandboxed doctor execution.
|
|
862
|
-
- Added regression tests for both preservation behaviors.
|
|
863
|
-
|
|
864
|
-
### v6.0.0
|
|
865
|
-
- **Breaking** — removed legacy `musafety` bin alias and all `MUSAFETY_*` environment variables. Callers must migrate to `guardex` / `gx` and `GUARDEX_*`.
|
|
866
|
-
- **Breaking** — bootstrap manifest filename changed from `musafety-bootstrap-manifest.json` to `guardex-bootstrap-manifest.json`; existing sandbox worktrees must be pruned + re-bootstrapped.
|
|
867
|
-
- Rebranded `musafety` → `guardex` across scripts, templates, hooks, tests, docs.
|
|
868
|
-
- The descriptive phrase `multiagent-safety` (including `bin/multiagent-safety.js`) is preserved — only the short codename changed.
|
|
869
|
-
|
|
870
|
-
</details>
|
|
871
|
-
|
|
872
|
-
<details>
|
|
873
|
-
<summary><strong>v5.x</strong></summary>
|
|
874
|
-
|
|
875
|
-
### v5.0.17 – v5.0.10
|
|
876
|
-
Version bumps for npm publish continuity plus incremental fixes: doctor arg-parser restored (5.0.16), parent-workspace view added (5.0.15), OMX completion policy wording (5.0.11), OpenSpec sandbox bootstrap enforced (5.0.9), bin syntax regressions fixed (5.0.8).
|
|
877
|
-
|
|
878
|
-
### v5.0.6
|
|
879
|
-
- `gx cleanup` and auto-finish cleanup now prune clean agent worktrees by default. VS Code Source Control focuses on your local branch + worktrees with active changes.
|
|
880
|
-
- Added `gx cleanup --keep-clean-worktrees` to opt out.
|
|
881
|
-
|
|
882
|
-
### v5.0.2
|
|
883
|
-
- Auto-closes Codex sandbox branches through PR workflow; keeps merged branch/worktree sandboxes for explicit cleanup via `gx cleanup`.
|
|
884
|
-
- Runs `gx doctor` repairs from a sandbox when `main` is protected.
|
|
885
|
-
- Allows tightly guarded Codex-only commits for `AGENTS.md` / `.gitignore` on protected branches.
|
|
886
|
-
|
|
887
|
-
### v5.0.0
|
|
888
|
-
- Rebranded CLI to **GitGuardex** with `gx`-first command UX.
|
|
889
|
-
- Published under scoped package name `@imdeadpool/guardex`.
|
|
890
|
-
- Enforced repeatable per-message agent branch lifecycle in setup/init flows.
|
|
891
|
-
- Added codex-auth-aware sandbox branch naming support.
|
|
892
|
-
|
|
893
|
-
</details>
|
|
894
|
-
|
|
895
|
-
<details>
|
|
896
|
-
<summary><strong>v0.4.x</strong></summary>
|
|
897
|
-
|
|
898
|
-
### v0.4.6
|
|
899
|
-
- Added repository metadata (`repository`, `bugs`, `homepage`, `funding`).
|
|
900
|
-
- Added CI workflow for Node 18/20/22.
|
|
901
|
-
- Added npm provenance release workflow, OpenSSF Scorecard, Dependabot for Actions.
|
|
902
|
-
- Added explicit `SECURITY.md` and `CONTRIBUTING.md`.
|
|
903
|
-
|
|
904
|
-
### v0.4.5
|
|
905
|
-
- Added optional pre-commit behind-threshold sync gate (`multiagent.sync.requireBeforeCommit`, `multiagent.sync.maxBehindCommits`).
|
|
906
|
-
- Added `gx sync` workflow (`--check`, strategies, report mode).
|
|
907
|
-
- `agent-branch-finish.sh` blocks finishing when source is behind `origin/<base>`.
|
|
908
|
-
|
|
909
|
-
### v0.4.4
|
|
910
|
-
- Added `scripts/agent-worktree-prune.sh` to templates/install.
|
|
911
|
-
- `agent-branch-finish.sh` auto-runs prune after merge.
|
|
912
|
-
- Added npm helper: `agent:cleanup`.
|
|
913
|
-
|
|
914
|
-
### v0.4.2
|
|
915
|
-
- Setup detects existing global OMX/OpenSpec installs first; skips global install if tools are present.
|
|
916
|
-
- Interactive approval is strict `[y/n]`.
|
|
917
|
-
- Added setup + workflow screenshots.
|
|
918
|
-
|
|
919
|
-
### v0.4.0
|
|
920
|
-
- Added setup-time Y/N approval for optional global install of `oh-my-codex` and `@fission-ai/openspec`.
|
|
921
|
-
- Added setup flags: `--yes-global-install`, `--no-global-install`.
|
|
922
|
-
|
|
923
|
-
</details>
|
|
271
|
+
<p align="center">
|
|
272
|
+
<sub>
|
|
273
|
+
— PRs and issues welcome ·
|
|
274
|
+
<a href="https://github.com/recodeee/gitguardex">github.com/recodeee/gitguardex</a> —
|
|
275
|
+
</sub>
|
|
276
|
+
</p>
|