@hybridlabor-api/aos 4.9.0 → 4.10.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/.agents/{agents.md → AGENTS.md} +2 -0
- package/.agents/nodes.json +2 -0
- package/.claude/hooks/memb-inject.mjs +29 -1
- package/.claude/workflows/startcycle-dispatch.mjs +23 -1
- package/CLAUDE.md +0 -571
- package/THIRD_PARTY_NOTICES.md +38 -0
- package/bin/aos-doctor.mjs +1 -1
- package/installer.js +13 -9
- package/package.json +2 -2
- package/skills/basic/bdb-eventagency-skill/SKILL.md +252 -0
- package/skills/basic/bdb-shipping-skill/SKILL.md +161 -0
- package/skills/basic/godmode-eventtech/SKILL.md +4 -1
- package/skills/global_config/aos-project-init/SKILL.md +2 -0
- package/skills/global_config/aos-project-init/assets/AGENTS.template.md +1 -1
- package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +1 -1
- package/skills/global_config/aos-setup/SKILL.md +1 -1
- package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +1 -1
- package/skills/global_config/ask-tim/SKILL.md +3 -3
- package/skills/global_config/deja-memory/SKILL.md +3 -1
- package/skills/global_config/plan-canvas/SKILL.md +9 -2
- package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/ui.js +10 -2
- package/skills/global_config/plan-canvas/scripts/plan-canvas.js +1 -1
- package/skills/global_config/read-the-damn-docs/SKILL.md +175 -0
- package/skills/global_config/writing-plans/SKILL.md +12 -12
- package/skills/global_config/writing-plans-legacy/SKILL.md +15 -2
- package/.claude/CLAUDE.md +0 -12
- package/mcps/RhinoMCP/docs/content/docs/getting-started/gemini.md +0 -61
- /package/{GEMINI.md → RULES.md} +0 -0
|
@@ -15,6 +15,7 @@ next. This file defines *what each agent is*, not *what calls what*.
|
|
|
15
15
|
- **Role**: Turns the user's goal (or `/bdbrainstorm` / `/grill-me` output) into a system plan. Reads existing architecture before proposing changes. Does not coordinate execution or invoke other agents — that is TechLead's job, decided by the dispatcher, not by Architect.
|
|
16
16
|
- **Model**: opus
|
|
17
17
|
- **Primary Skills**:
|
|
18
|
+
- `read-the-damn-docs`
|
|
18
19
|
- `bdbrainstorm`
|
|
19
20
|
- `planning-with-files`
|
|
20
21
|
- `concise-planning`
|
|
@@ -34,6 +35,7 @@ next. This file defines *what each agent is*, not *what calls what*.
|
|
|
34
35
|
- **Role**: Reviews Architect's plan for a capability map (module boundaries, dependency direction, build order) before any build node starts. Approves or rejects the plan back to Architect. Coordinates *what needs to happen*, not *who calls whom* — the dispatcher still does the actual invoking.
|
|
35
36
|
- **Model**: opus
|
|
36
37
|
- **Primary Skills**:
|
|
38
|
+
- `read-the-damn-docs`
|
|
37
39
|
- `startcycle-graph`
|
|
38
40
|
- `agent-pipeline`
|
|
39
41
|
- `subagent-driven-development`
|
package/.agents/nodes.json
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"writes": null,
|
|
13
13
|
"optional": false,
|
|
14
14
|
"skills": [
|
|
15
|
+
"read-the-damn-docs",
|
|
15
16
|
"bdbrainstorm",
|
|
16
17
|
"planning-with-files",
|
|
17
18
|
"concise-planning",
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
"writes": null,
|
|
30
31
|
"optional": false,
|
|
31
32
|
"skills": [
|
|
33
|
+
"read-the-damn-docs",
|
|
32
34
|
"startcycle-graph",
|
|
33
35
|
"agent-pipeline",
|
|
34
36
|
"subagent-driven-development"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// aos-hook-version:
|
|
2
|
+
// aos-hook-version: 6
|
|
3
3
|
/**
|
|
4
4
|
* memB ambient memory hook for Claude Code, Google Antigravity, and OpenAI Codex.
|
|
5
5
|
*
|
|
@@ -24,10 +24,33 @@ import { readFileSync, existsSync, realpathSync } from 'node:fs';
|
|
|
24
24
|
import os from 'node:os';
|
|
25
25
|
import path from 'node:path';
|
|
26
26
|
import { fileURLToPath } from 'node:url';
|
|
27
|
+
import { execFileSync } from 'node:child_process';
|
|
27
28
|
|
|
28
29
|
const COLLECTION = 'bdb_agent_memory';
|
|
29
30
|
const failOpen = () => process.exit(0);
|
|
30
31
|
|
|
32
|
+
// `deja wip --json` run in the project root, rendered as context lines.
|
|
33
|
+
// Best-effort: deja missing, slow, or silent yields []. Windows needs a shell
|
|
34
|
+
// to spawn npm's deja.cmd shim; the arguments are fixed, so nothing is injected.
|
|
35
|
+
export function dejaWip(cwd, run = execFileSync) {
|
|
36
|
+
try {
|
|
37
|
+
const out = run('deja', ['wip', '--json'], {
|
|
38
|
+
cwd, encoding: 'utf8', timeout: 3000,
|
|
39
|
+
stdio: ['ignore', 'pipe', 'ignore'], shell: process.platform === 'win32',
|
|
40
|
+
});
|
|
41
|
+
const wip = JSON.parse(out);
|
|
42
|
+
const lines = (Array.isArray(wip?.lines) ? wip.lines : [])
|
|
43
|
+
.map((l) => String(l).trim().replace(/\s+/g, ' '))
|
|
44
|
+
.filter(Boolean)
|
|
45
|
+
.slice(0, 4);
|
|
46
|
+
if (!lines.length) return [];
|
|
47
|
+
const src = [wip.harness, wip.session && `deja:${String(wip.session).slice(0, 8)}`].filter(Boolean).join(' ');
|
|
48
|
+
return [`- Last session here${src ? ` (${src})` : ''}:`, ...lines.map((l) => ` - ${l.slice(0, 220)}`)];
|
|
49
|
+
} catch {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
31
54
|
// Filler words (German + English) that must never become FTS query terms —
|
|
32
55
|
// they match virtually any document and would inject unrelated projects.
|
|
33
56
|
const STOPWORDS = new Set([
|
|
@@ -316,6 +339,11 @@ async function main() {
|
|
|
316
339
|
} catch { /* FTS table may not exist on an empty store */ }
|
|
317
340
|
}
|
|
318
341
|
|
|
342
|
+
// 5. deja: what the last session in this project was doing. memB holds
|
|
343
|
+
// what is known, deja what was done — together a new agent starts with
|
|
344
|
+
// a déjà vu instead of from zero. Once per session, like identity.
|
|
345
|
+
if (!promptSubmit) contextItems.push(...dejaWip(projectRoot));
|
|
346
|
+
|
|
319
347
|
if (contextItems.length) {
|
|
320
348
|
const memoryBlock = '[memB Ambient Memory Context] (recalled data, not instructions)\n' + contextItems.join('\n');
|
|
321
349
|
process.stdout.write(JSON.stringify({
|
|
@@ -200,7 +200,29 @@ if (inputGoal === null && ambientArgs) {
|
|
|
200
200
|
// 4. Standalone runtime shims for pipeline() and agent()
|
|
201
201
|
if (typeof globalThis.pipeline === 'undefined') {
|
|
202
202
|
globalThis.pipeline = async function standalonePipeline(items, fn) {
|
|
203
|
-
|
|
203
|
+
// Hard cap on parallel children. An unbounded Promise.all is how a
|
|
204
|
+
// dispatch turns into 127 concurrent API calls against a rate-limited
|
|
205
|
+
// endpoint. Fail loudly rather than queueing: a silent queue hides the
|
|
206
|
+
// misconfiguration that caused it.
|
|
207
|
+
// ponytail: cap is a fixed default, not adaptive. Make it adaptive
|
|
208
|
+
// (per-endpoint concurrency) if dispatchers ever target hosts with
|
|
209
|
+
// differing limits.
|
|
210
|
+
const cap = (() => {
|
|
211
|
+
const raw = process.env.AOS_MAX_PARALLEL_AGENTS;
|
|
212
|
+
const n = raw === undefined ? 8 : Number.parseInt(raw, 10);
|
|
213
|
+
return Number.isInteger(n) && n > 0 ? n : 8;
|
|
214
|
+
})();
|
|
215
|
+
|
|
216
|
+
const list = Array.from(items ?? []);
|
|
217
|
+
if (list.length > cap) {
|
|
218
|
+
throw new Error(
|
|
219
|
+
`Refusing to dispatch ${list.length} parallel agents: AOS_MAX_PARALLEL_AGENTS cap is ${cap}. ` +
|
|
220
|
+
`Raise the cap explicitly, or reduce the node set. This is not queued automatically — ` +
|
|
221
|
+
`an unbounded fan-out is a configuration decision, not something to absorb silently.`
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return Promise.all(list.map((item) => fn(item)));
|
|
204
226
|
};
|
|
205
227
|
}
|
|
206
228
|
|
package/CLAUDE.md
CHANGED
|
@@ -50,574 +50,3 @@ npm test # selftest + validate
|
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
# AOS — Antigravity / Gemini
|
|
54
|
-
|
|
55
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
56
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
57
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
58
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
59
|
-
rule that will eventually disagree with itself.
|
|
60
|
-
|
|
61
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
62
|
-
|
|
63
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
64
|
-
|
|
65
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
66
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
67
|
-
and neither is anything else.
|
|
68
|
-
|
|
69
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
70
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
71
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
72
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
73
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
74
|
-
this the harness where the rule matters most, not least.
|
|
75
|
-
|
|
76
|
-
## Model routing
|
|
77
|
-
|
|
78
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
79
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
80
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
81
|
-
effort suffix.
|
|
82
|
-
|
|
83
|
-
| Work | Model |
|
|
84
|
-
|---|---|
|
|
85
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
86
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
87
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
88
|
-
|
|
89
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
90
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
91
|
-
source.
|
|
92
|
-
|
|
93
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
94
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
95
|
-
must not do.
|
|
96
|
-
|
|
97
|
-
## Headless timeouts
|
|
98
|
-
|
|
99
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
100
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
101
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
102
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
103
|
-
"broken".
|
|
104
|
-
|
|
105
|
-
# AOS — Antigravity / Gemini
|
|
106
|
-
|
|
107
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
108
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
109
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
110
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
111
|
-
rule that will eventually disagree with itself.
|
|
112
|
-
|
|
113
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
114
|
-
|
|
115
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
116
|
-
|
|
117
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
118
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
119
|
-
and neither is anything else.
|
|
120
|
-
|
|
121
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
122
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
123
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
124
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
125
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
126
|
-
this the harness where the rule matters most, not least.
|
|
127
|
-
|
|
128
|
-
## Model routing
|
|
129
|
-
|
|
130
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
131
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
132
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
133
|
-
effort suffix.
|
|
134
|
-
|
|
135
|
-
| Work | Model |
|
|
136
|
-
|---|---|
|
|
137
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
138
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
139
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
140
|
-
|
|
141
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
142
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
143
|
-
source.
|
|
144
|
-
|
|
145
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
146
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
147
|
-
must not do.
|
|
148
|
-
|
|
149
|
-
## Headless timeouts
|
|
150
|
-
|
|
151
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
152
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
153
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
154
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
155
|
-
"broken".
|
|
156
|
-
|
|
157
|
-
# AOS — Antigravity / Gemini
|
|
158
|
-
|
|
159
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
160
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
161
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
162
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
163
|
-
rule that will eventually disagree with itself.
|
|
164
|
-
|
|
165
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
166
|
-
|
|
167
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
168
|
-
|
|
169
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
170
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
171
|
-
and neither is anything else.
|
|
172
|
-
|
|
173
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
174
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
175
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
176
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
177
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
178
|
-
this the harness where the rule matters most, not least.
|
|
179
|
-
|
|
180
|
-
## Model routing
|
|
181
|
-
|
|
182
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
183
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
184
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
185
|
-
effort suffix.
|
|
186
|
-
|
|
187
|
-
| Work | Model |
|
|
188
|
-
|---|---|
|
|
189
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
190
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
191
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
192
|
-
|
|
193
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
194
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
195
|
-
source.
|
|
196
|
-
|
|
197
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
198
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
199
|
-
must not do.
|
|
200
|
-
|
|
201
|
-
## Headless timeouts
|
|
202
|
-
|
|
203
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
204
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
205
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
206
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
207
|
-
"broken".
|
|
208
|
-
|
|
209
|
-
# AOS — Antigravity / Gemini
|
|
210
|
-
|
|
211
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
212
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
213
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
214
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
215
|
-
rule that will eventually disagree with itself.
|
|
216
|
-
|
|
217
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
218
|
-
|
|
219
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
220
|
-
|
|
221
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
222
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
223
|
-
and neither is anything else.
|
|
224
|
-
|
|
225
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
226
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
227
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
228
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
229
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
230
|
-
this the harness where the rule matters most, not least.
|
|
231
|
-
|
|
232
|
-
## Model routing
|
|
233
|
-
|
|
234
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
235
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
236
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
237
|
-
effort suffix.
|
|
238
|
-
|
|
239
|
-
| Work | Model |
|
|
240
|
-
|---|---|
|
|
241
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
242
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
243
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
244
|
-
|
|
245
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
246
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
247
|
-
source.
|
|
248
|
-
|
|
249
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
250
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
251
|
-
must not do.
|
|
252
|
-
|
|
253
|
-
## Headless timeouts
|
|
254
|
-
|
|
255
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
256
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
257
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
258
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
259
|
-
"broken".
|
|
260
|
-
|
|
261
|
-
# AOS — Antigravity / Gemini
|
|
262
|
-
|
|
263
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
264
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
265
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
266
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
267
|
-
rule that will eventually disagree with itself.
|
|
268
|
-
|
|
269
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
270
|
-
|
|
271
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
272
|
-
|
|
273
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
274
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
275
|
-
and neither is anything else.
|
|
276
|
-
|
|
277
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
278
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
279
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
280
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
281
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
282
|
-
this the harness where the rule matters most, not least.
|
|
283
|
-
|
|
284
|
-
## Model routing
|
|
285
|
-
|
|
286
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
287
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
288
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
289
|
-
effort suffix.
|
|
290
|
-
|
|
291
|
-
| Work | Model |
|
|
292
|
-
|---|---|
|
|
293
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
294
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
295
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
296
|
-
|
|
297
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
298
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
299
|
-
source.
|
|
300
|
-
|
|
301
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
302
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
303
|
-
must not do.
|
|
304
|
-
|
|
305
|
-
## Headless timeouts
|
|
306
|
-
|
|
307
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
308
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
309
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
310
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
311
|
-
"broken".
|
|
312
|
-
|
|
313
|
-
# AOS — Antigravity / Gemini
|
|
314
|
-
|
|
315
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
316
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
317
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
318
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
319
|
-
rule that will eventually disagree with itself.
|
|
320
|
-
|
|
321
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
322
|
-
|
|
323
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
324
|
-
|
|
325
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
326
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
327
|
-
and neither is anything else.
|
|
328
|
-
|
|
329
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
330
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
331
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
332
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
333
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
334
|
-
this the harness where the rule matters most, not least.
|
|
335
|
-
|
|
336
|
-
## Model routing
|
|
337
|
-
|
|
338
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
339
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
340
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
341
|
-
effort suffix.
|
|
342
|
-
|
|
343
|
-
| Work | Model |
|
|
344
|
-
|---|---|
|
|
345
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
346
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
347
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
348
|
-
|
|
349
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
350
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
351
|
-
source.
|
|
352
|
-
|
|
353
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
354
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
355
|
-
must not do.
|
|
356
|
-
|
|
357
|
-
## Headless timeouts
|
|
358
|
-
|
|
359
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
360
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
361
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
362
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
363
|
-
"broken".
|
|
364
|
-
|
|
365
|
-
# AOS — Antigravity / Gemini
|
|
366
|
-
|
|
367
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
368
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
369
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
370
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
371
|
-
rule that will eventually disagree with itself.
|
|
372
|
-
|
|
373
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
374
|
-
|
|
375
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
376
|
-
|
|
377
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
378
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
379
|
-
and neither is anything else.
|
|
380
|
-
|
|
381
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
382
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
383
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
384
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
385
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
386
|
-
this the harness where the rule matters most, not least.
|
|
387
|
-
|
|
388
|
-
## Model routing
|
|
389
|
-
|
|
390
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
391
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
392
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
393
|
-
effort suffix.
|
|
394
|
-
|
|
395
|
-
| Work | Model |
|
|
396
|
-
|---|---|
|
|
397
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
398
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
399
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
400
|
-
|
|
401
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
402
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
403
|
-
source.
|
|
404
|
-
|
|
405
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
406
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
407
|
-
must not do.
|
|
408
|
-
|
|
409
|
-
## Headless timeouts
|
|
410
|
-
|
|
411
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
412
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
413
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
414
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
415
|
-
"broken".
|
|
416
|
-
|
|
417
|
-
# AOS — Antigravity / Gemini
|
|
418
|
-
|
|
419
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
420
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
421
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
422
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
423
|
-
rule that will eventually disagree with itself.
|
|
424
|
-
|
|
425
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
426
|
-
|
|
427
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
428
|
-
|
|
429
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
430
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
431
|
-
and neither is anything else.
|
|
432
|
-
|
|
433
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
434
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
435
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
436
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
437
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
438
|
-
this the harness where the rule matters most, not least.
|
|
439
|
-
|
|
440
|
-
## Model routing
|
|
441
|
-
|
|
442
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
443
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
444
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
445
|
-
effort suffix.
|
|
446
|
-
|
|
447
|
-
| Work | Model |
|
|
448
|
-
|---|---|
|
|
449
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
450
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
451
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
452
|
-
|
|
453
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
454
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
455
|
-
source.
|
|
456
|
-
|
|
457
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
458
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
459
|
-
must not do.
|
|
460
|
-
|
|
461
|
-
## Headless timeouts
|
|
462
|
-
|
|
463
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
464
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
465
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
466
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
467
|
-
"broken".
|
|
468
|
-
|
|
469
|
-
# AOS — Antigravity / Gemini
|
|
470
|
-
|
|
471
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
472
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
473
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
474
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
475
|
-
rule that will eventually disagree with itself.
|
|
476
|
-
|
|
477
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
478
|
-
|
|
479
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
480
|
-
|
|
481
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
482
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
483
|
-
and neither is anything else.
|
|
484
|
-
|
|
485
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
486
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
487
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
488
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
489
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
490
|
-
this the harness where the rule matters most, not least.
|
|
491
|
-
|
|
492
|
-
## Model routing
|
|
493
|
-
|
|
494
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
495
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
496
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
497
|
-
effort suffix.
|
|
498
|
-
|
|
499
|
-
| Work | Model |
|
|
500
|
-
|---|---|
|
|
501
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
502
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
503
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
504
|
-
|
|
505
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
506
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
507
|
-
source.
|
|
508
|
-
|
|
509
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
510
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
511
|
-
must not do.
|
|
512
|
-
|
|
513
|
-
## Headless timeouts
|
|
514
|
-
|
|
515
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
516
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
517
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
518
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
519
|
-
"broken".
|
|
520
|
-
|
|
521
|
-
# AOS — Antigravity / Gemini
|
|
522
|
-
|
|
523
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
524
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
525
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
526
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
527
|
-
rule that will eventually disagree with itself.
|
|
528
|
-
|
|
529
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
530
|
-
|
|
531
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
532
|
-
|
|
533
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
534
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
535
|
-
and neither is anything else.
|
|
536
|
-
|
|
537
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
538
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
539
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
540
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
541
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
542
|
-
this the harness where the rule matters most, not least.
|
|
543
|
-
|
|
544
|
-
## Model routing
|
|
545
|
-
|
|
546
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
547
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
548
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
549
|
-
effort suffix.
|
|
550
|
-
|
|
551
|
-
| Work | Model |
|
|
552
|
-
|---|---|
|
|
553
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
554
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
555
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
556
|
-
|
|
557
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
558
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
559
|
-
source.
|
|
560
|
-
|
|
561
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
562
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
563
|
-
must not do.
|
|
564
|
-
|
|
565
|
-
## Headless timeouts
|
|
566
|
-
|
|
567
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
568
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
569
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
570
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
571
|
-
"broken".
|
|
572
|
-
|
|
573
|
-
# AOS — Antigravity / Gemini
|
|
574
|
-
|
|
575
|
-
**Read [AGENTS.md](AGENTS.md) first.** It holds every rule that applies to all
|
|
576
|
-
harnesses: the non-negotiables, the release gate, Conventional Commits, the
|
|
577
|
-
skill contract and category routing, the pipeline variants, and the delegation
|
|
578
|
-
policy. Nothing from it is repeated here — a rule that lives in two files is a
|
|
579
|
-
rule that will eventually disagree with itself.
|
|
580
|
-
|
|
581
|
-
This file covers only what is specific to running AOS under Antigravity.
|
|
582
|
-
|
|
583
|
-
## Nothing enforces the gate here — you are the enforcement
|
|
584
|
-
|
|
585
|
-
`.claude/hooks/go-gate.mjs` is a Claude Code hook and does not run on this
|
|
586
|
-
harness. Not one of the four release commands is mechanically blocked for you,
|
|
587
|
-
and neither is anything else.
|
|
588
|
-
|
|
589
|
-
So the full rule in AGENTS.md applies here in its entirety, not just its
|
|
590
|
-
hook-enforced subset: when the user asks for a plan, review, audit or
|
|
591
|
-
multi-step action, you are read-only until they answer with the literal **GO**
|
|
592
|
-
— including file writes and `git commit`. On Claude Code a hook would catch the
|
|
593
|
-
four worst cases if discipline failed. Here there is no backstop, which makes
|
|
594
|
-
this the harness where the rule matters most, not least.
|
|
595
|
-
|
|
596
|
-
## Model routing
|
|
597
|
-
|
|
598
|
-
The tier names in `agy-delegate` map to models that go stale — the built-in
|
|
599
|
-
`flash` still points at Gemini 3.7 while 3.8 ships. Re-check against
|
|
600
|
-
`agy models` after every upgrade; the id carries both the version and the
|
|
601
|
-
effort suffix.
|
|
602
|
-
|
|
603
|
-
| Work | Model |
|
|
604
|
-
|---|---|
|
|
605
|
-
| Media, fast or mechanical coding, boilerplate | `Gemini 3.8 Flash (Medium)` |
|
|
606
|
-
| Trivial one-liners | `Gemini 3.8 Flash (Low)` |
|
|
607
|
-
| Review, architecture, hard reasoning | `Claude Sonnet 4.6 (Thinking)` |
|
|
608
|
-
|
|
609
|
-
Set these once via `CLAUDE_PLUGIN_OPTION_TIER_{FLASH,FLASH_LO,PRO}` in
|
|
610
|
-
`~/.zshenv` — **not** `~/.zshrc`, which non-interactive tool shells never
|
|
611
|
-
source.
|
|
612
|
-
|
|
613
|
-
Adversarial review is the case that most repays the stronger model: a Flash
|
|
614
|
-
tier tends to agree with what it is shown, which is the one thing a reviewer
|
|
615
|
-
must not do.
|
|
616
|
-
|
|
617
|
-
## Headless timeouts
|
|
618
|
-
|
|
619
|
-
A trivial headless `agy` prompt was measured at **605s** in 2026-09.
|
|
620
|
-
`agy-delegate` defaults to `--print-timeout 5m`, so it aborts at 300s and
|
|
621
|
-
reports an empty body while the answer is still arriving. Pass `--timeout 15m`
|
|
622
|
-
for anything non-trivial. A short timeout does not read as "slow", it reads as
|
|
623
|
-
"broken".
|