@julioborges/gantry 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,7 +19,7 @@ development. Deterministic scripts decide which Issues are ready and whether
19
19
  checks pass. Fresh agents implement, review, and challenge each delivery. You
20
20
  approve the plan and decide how the resulting Run is handed off.
21
21
 
22
- [Get started](#quick-start) · [Greenfield example](#greenfield-build-a-new-project) ·
22
+ [Get started](#usage) · [Greenfield example](#greenfield-build-a-new-project) ·
23
23
  [Brownfield example](#brownfield-extend-an-existing-project) ·
24
24
  [Contribute](#contributing)
25
25
 
@@ -77,15 +77,16 @@ Run this in the project where you want to use Gantry:
77
77
  npx skills add JulioBorges/gantry
78
78
  ```
79
79
 
80
- Select all three skills and your harness in the installer:
80
+ Select all four skills and your harness in the installer:
81
81
 
82
82
  | Skill | Purpose |
83
83
  |---|---|
84
84
  | `gantry-setup` | Configure artifact locations, templates, checks, Git policy, and hooks |
85
- | `gantry` | Plan and execute verified Issues |
85
+ | `gantry-plan` | Turn a goal or existing Spec into an approved Spec and vertical Issues |
86
+ | `gantry` | Execute an approved Spec through implementation, verification, and handoff |
86
87
  | `gantry-dashboard` | Open the read-only kanban for recorded Runs |
87
88
 
88
- You can also copy or symlink the three directories into
89
+ You can also copy or symlink the four directories into
89
90
  `<repo>/.agents/skills/` or `~/.agents/skills/`. The repository copy wins.
90
91
 
91
92
  The npm package includes a bundled installer:
@@ -101,44 +102,69 @@ npx @julioborges/gantry add --list
101
102
  using the bundled files. Agent selection and global installation options pass
102
103
  through unchanged. The npm command installs skills; it does not execute a Run.
103
104
 
104
- ## Quick start
105
+ ## Usage
105
106
 
106
- After installation, open your coding harness in the repository and send:
107
+ ### Via skills (recommended)
108
+
109
+ Run setup once when adopting Gantry in a repository:
110
+
111
+ ```text
112
+ /gantry-setup
113
+ ```
114
+
115
+ Review and approve the proposed artifact locations, templates, checks, Git
116
+ policy, role defaults, and hooks. This repository setup is not repeated for
117
+ every feature.
118
+
119
+ For a new goal, ask the standalone planning skill to discover the requirements,
120
+ write the Spec, and propose vertical Issues:
107
121
 
108
122
  ```text
109
- Use gantry-setup to configure this repository. Present the proposed artifact
110
- locations, templates, check commands, Git target, and hook settings for approval
111
- before applying the policy.
123
+ /gantry-plan Add login via OTP
112
124
  ```
113
125
 
114
- Approve the reviewed setup, prepare a Spec using the
115
- [default template](.agents/skills/gantry/templates/spec.md) or your repository's
116
- configured equivalent, and commit the setup and Spec. Start from a clean Git
117
- working tree, then send:
126
+ Review the generated `login-otp` Spec, acceptance criteria, Issue breakdown,
127
+ dependencies, and Plan Critic result. Approve that exact plan explicitly:
118
128
 
119
129
  ```text
120
- Use gantry for Spec delivery-api. Validate the Spec and prepare the Issue
121
- breakdown. Stop for my planning approval before implementation.
130
+ I approve the login-otp Spec and the proposed Issues.
122
131
  ```
123
132
 
124
- Review the resulting Issues, criteria, dependencies, and plan critique. If you
125
- accept that particular breakdown, send:
133
+ Then start one implementation Run:
126
134
 
127
135
  ```text
128
- I approve the delivery-api Spec and the Issue breakdown just presented.
129
- Use gantry delivery-api --limit 4 --budget 2 to execute all approved Issues.
136
+ /gantry Implement the login-otp Spec
137
+ ```
138
+
139
+ From that point, Gantry automatically coordinates dependency rounds, TDD
140
+ implementation, Review, fresh Critic verification, deterministic gates, serial
141
+ integration, roadmap updates, and final handoff. It pauses only when a human
142
+ gate or recovery decision is required. Run `/gantry-dashboard` at any time for
143
+ read-only visibility.
144
+
145
+ These are **skill invocations in your coding harness**, not shell commands.
146
+
147
+ ### Via the Python CLI (advanced/manual)
148
+
149
+ The Python scripts are the low-level deterministic interface used by the
150
+ skills. Use them directly for diagnostics, CI, or manual integration—not as a
151
+ replacement for the agent roles, operator approvals, and orchestration supplied
152
+ by the skills.
153
+
154
+ ```bash
155
+ python3 .agents/skills/gantry/scripts/spec.py --check .scratch/delivery-api/spec.md
156
+ python3 .agents/skills/gantry/scripts/frontier.py --scope delivery-api --json
157
+ python3 .agents/skills/gantry/scripts/gates.py --run --json
158
+ python3 .agents/skills/gantry/scripts/roadmap.py check
130
159
  ```
131
160
 
132
- These are **prompts in your coding harness**, not terminal commands. Use its
133
- skill invocation syntax when available, or explicitly name the skill in prose.
134
- `delivery-api` identifies your Spec scope, normally
135
- `.scratch/delivery-api/spec.md`; it is not a filename to copy verbatim.
161
+ See [Using Gantry](docs/usage.md) for the complete skill-first flow, the Python
162
+ CLI responsibilities, and the boundary between them.
136
163
 
137
164
  ## Complete execution examples
138
165
 
139
- The examples below cover setup, Spec preparation, planning approval,
140
- implementation, and handoff. Spec authoring happens before the Gantry Run;
141
- Gantry reads and critiques the Spec rather than rewriting it.
166
+ The examples below cover one-time setup, planning with `/gantry-plan`, explicit
167
+ approval, implementation with `/gantry`, and handoff.
142
168
 
143
169
  ### Greenfield: build a new project
144
170
 
@@ -158,19 +184,20 @@ npx skills add JulioBorges/gantry
158
184
  **1. Configure the repository.** Open your harness in `task-cli` and send:
159
185
 
160
186
  ```text
161
- Use gantry-setup for this new Python project. Propose main as the Git target,
162
- .scratch/<slug>/ for Specs and Issues, and unittest discovery as the test gate.
163
- There is no test suite yet: identify the bootstrap requirement, and do not
164
- accept no_gates or an empty test run as proof of completion. Present the full
165
- policy and hook choices before writing them.
187
+ /gantry-setup
166
188
  ```
167
189
 
168
- Review and approve the proposed policy. The bootstrap Issue must establish and
169
- exercise meaningful tests before it can complete.
190
+ Tell the setup conversation to use `main` as the Git target,
191
+ `.scratch/<slug>/` for Specs and Issues, and unittest discovery as the test
192
+ gate. Review and approve the complete proposed policy.
193
+
194
+ **2. Plan the goal.** Send a free-text goal through the planning skill:
170
195
 
171
- **2. Prepare the Spec outside the Run.** Create
172
- `.scratch/task-cli/spec.md` from the effective template and fill every required
173
- section. Define these outcomes and boundaries:
196
+ ```text
197
+ /gantry-plan Build a Python CLI that adds and lists tasks in a local JSON file
198
+ ```
199
+
200
+ During discovery, confirm these outcomes and boundaries:
174
201
 
175
202
  - `python3 -m task_cli add "Buy milk" --file tasks.json` creates a stored task
176
203
  with a unique ID and reports it to the user.
@@ -181,35 +208,28 @@ section. Define these outcomes and boundaries:
181
208
  - Tests exercise the CLI with temporary files. No network, accounts, task
182
209
  deletion, or UI is included.
183
210
 
184
- Include observable Given/When/Then scenarios and regression guardrails in the
185
- Spec. Commit the installation files, approved setup, and completed Spec before
186
- starting the Run.
211
+ `/gantry-plan` writes `.scratch/task-cli/spec.md`, proposes vertical Issues,
212
+ checks their budgets and dependencies, runs Plan Critic, and stops. Review the
213
+ actual Spec and Issue files rather than assuming any example breakdown is
214
+ authoritative.
187
215
 
188
- **3. Request and review the plan.** Send:
216
+ **3. Approve the concrete plan.** After reviewing the Spec and draft Issues:
189
217
 
190
218
  ```text
191
- Use gantry task-cli --limit 2 --budget 2. Validate the Spec and prepare vertical
192
- slices covering every outcome, including bootstrap tests. Show the dependencies
193
- and plan critique, then stop for my approval.
219
+ I approve the task-cli Spec and the exact Issue breakdown just presented.
194
220
  ```
195
221
 
196
- A possible breakdown is an add-and-persist slice with real tests, followed by a
197
- list-and-error-handling slice. Review the actual generated plan rather than
198
- assuming these example slices are authoritative. Amend the Spec if Requirement
199
- Review finds a blocker, then request planning again.
200
-
201
- **4. Approve the concrete plan and execute.** After reviewing the draft Issues:
222
+ **4. Execute the approved Spec.** Send:
202
223
 
203
224
  ```text
204
- I approve the task-cli Spec and the exact Issue breakdown just presented.
205
- Use gantry task-cli --limit 2 --budget 2 to execute the approved scope in a
206
- dedicated Run worktree. Keep the bootstrap test gate meaningful.
225
+ /gantry Implement the task-cli Spec
207
226
  ```
208
227
 
209
- Answer the preflight worktree and model choices. Gantry schedules ready Issues,
228
+ Answer any preflight choices. Gantry schedules ready Issues,
210
229
  implements each with TDD, reviews it, runs independent Critic verification, and
211
230
  integrates accepted work into the Run branch. Successful rounds advance until
212
- the scope completes; a failed round stops with evidence and preserved work.
231
+ the scope completes; no separate command is required for Review, Critic, gates,
232
+ or the next dependency round.
213
233
 
214
234
  **5. Review the handoff.** Expect criterion evidence, integration gate results,
215
235
  updated Issues and roadmap, the declared support tier, remaining frontier,
@@ -239,20 +259,24 @@ npx skills add JulioBorges/gantry
239
259
  **2. Adapt setup to existing conventions.** Open your harness and send:
240
260
 
241
261
  ```text
242
- Use gantry-setup for this existing repository. Inspect AGENTS.md, the canonical
243
- Specs and Issues, ADRs, test commands, and target branch. Reuse those locations
244
- and templates; propose equivalent heading mappings where needed. Preserve
245
- existing hooks and present any conflicts. Show the full proposed policy before
246
- writing it. Keep tests absolute; offer differential checks only where real
247
- structured output supports comparison.
262
+ /gantry-setup
248
263
  ```
249
264
 
265
+ In the setup conversation, ask it to inspect and reuse the existing
266
+ `AGENTS.md`, Specs, Issues, ADRs, test commands, target branch, templates, and
267
+ hooks. Review the complete proposed policy before approving it.
268
+
250
269
  Approve the concrete settings. Existing debt in a differential check remains
251
270
  visible; new or aggravated findings block. An absolute check still has to pass.
252
271
  Setup does not waive a failing baseline or approve the feature plan.
253
272
 
254
- **3. Prepare or adapt the canonical Spec.** Use the agreed location and template
255
- for the `orders-pagination` scope. Include these explicit behaviors:
273
+ **3. Plan the change.** Send:
274
+
275
+ ```text
276
+ /gantry-plan Add pagination to GET /orders while preserving existing clients
277
+ ```
278
+
279
+ During discovery, confirm these explicit behaviors:
256
280
 
257
281
  - Requests without pagination parameters keep the existing response shape,
258
282
  ordering, and authorization behavior.
@@ -265,25 +289,18 @@ for the `orders-pagination` scope. Include these explicit behaviors:
265
289
  - No schema migration, authorization redesign, or unrelated refactoring is
266
290
  included.
267
291
 
268
- Replace every undecided detail with an agreed value before planning. If an
269
- existing Spec is missing required content, review and amend it in its canonical
270
- format. Commit the installation, approved setup, and Spec so preflight sees a
271
- clean working tree.
272
-
273
- **4. Plan, approve, and execute.** Send:
292
+ `/gantry-plan` writes or adapts the canonical `orders-pagination` Spec and
293
+ proposes compatibility-focused vertical Issues. After reviewing that exact
294
+ Spec and breakdown, send:
274
295
 
275
296
  ```text
276
- Use gantry orders-pagination --limit 2 --budget 2. Validate the canonical Spec,
277
- inspect existing endpoint and integration tests, and propose vertical slices
278
- with compatibility criteria. Stop after the plan critique for my approval.
297
+ I approve the orders-pagination Spec and the Issue breakdown just presented.
279
298
  ```
280
299
 
281
- After reviewing that exact breakdown, send:
300
+ Then start implementation:
282
301
 
283
302
  ```text
284
- I approve the orders-pagination Spec and the Issue breakdown just presented.
285
- Use gantry orders-pagination --limit 2 --budget 2 in a dedicated Run worktree.
286
- Execute the approved scope with the configured gates and regression checks.
303
+ /gantry Implement the orders-pagination Spec
287
304
  ```
288
305
 
289
306
  Answer the worktree and model choices. Each accepted Issue integrates into the
@@ -294,9 +311,7 @@ the Run. Changes to approved behavior or dependencies require a plan amendment.
294
311
  handoff described in the greenfield example. To revisit an interrupted scope:
295
312
 
296
313
  ```text
297
- Use gantry orders-pagination. Report remaining ready and blocked Issues and
298
- any in-flight worktrees. Offer continuation in the preserved worktree before
299
- starting new work, retaining correction attempts already spent.
314
+ /gantry Resume the orders-pagination Spec
300
315
  ```
301
316
 
302
317
  Continuation is an operator choice, not an automatic budget reset. Once the
@@ -306,22 +321,23 @@ review it under the repository's normal process, and approve cleanup separately.
306
321
  ## How a Run works
307
322
 
308
323
  ```text
309
- Preflight Spec validation → Requirement Review → Plan → Plan critique
310
-
311
- Operator approval
312
-
313
- Ready Issues Implement (TDD) Review → Critic → Serial integration
314
- ↑ │ + gates
315
- └── bounded corrections ┘ ↓
316
- Roadmap update
317
-
318
- Next round or final report + PR offer
324
+ /gantry-setup one-time repository adaptation
325
+
326
+ /gantry-plan <goal> Spec + vertical Issues + Plan Critic
327
+
328
+ Operator approves Spec and Issues mandatory human gate
329
+
330
+ /gantry Implement the <slug> Spec one implementation invocation
331
+
332
+ Preflight → Implement (TDD) → Review → Critic → Serial integration + gates
333
+ ↑ │ ↓
334
+ └─ bounded fixes ────┘ Next round or handoff
319
335
  ```
320
336
 
321
- Already planned scopes skip planning. `--limit` caps Issues per round (default
322
- 4); `--budget` caps Critic correction attempts per Issue (default 2). The single
323
- review fix pass is separate. These limits do not approve a plan or restrict a
324
- Run to a single round.
337
+ After `/gantry` starts an approved Spec, dependency rounds advance automatically.
338
+ `--limit` caps Issues per round (default 4); `--budget` caps Critic correction
339
+ attempts per Issue (default 2). The single review fix pass is separate. These
340
+ limits never approve a plan or restrict a Run to one round.
325
341
 
326
342
  | Scope | Meaning |
327
343
  |---|---|
@@ -330,7 +346,10 @@ Run to a single round.
330
346
  | `wave:1` | A roadmap wave |
331
347
  | `frontier` | Currently ready work |
332
348
  | `all` | All discovered Issues |
333
- | `"free-text goal"` | Unplanned scope; draft planning stops for approval |
349
+
350
+ For a new or unplanned goal, use `/gantry-plan <goal>`. After approving the
351
+ generated Spec and Issues, start implementation with `/gantry Implement the
352
+ <slug> Spec`.
334
353
 
335
354
  Workflow scripts own readiness (`frontier.py`), criteria (`acceptance.py`),
336
355
  gates (`gates.py`), Spec structure (`spec.py`), context estimates (`budget.py`),
@@ -349,8 +368,15 @@ The current [capability files](.agents/skills/gantry/capabilities/) declare:
349
368
  | Tier | Harness | Declared capabilities |
350
369
  |---|---|---|
351
370
  | Reference | Claude Code | Parallel rounds, native structured output, worktree isolation, per-role models, hooks |
371
+ | Supported | Codex | Hybrid process runner (`codex exec`), per-role model selection, independent Critic verification, defense-in-depth git hooks |
352
372
  | Supported | OpenCode | Per-role models and plugin hooks; script-validated results; manually managed isolation |
353
- | Compatible | Codex | Manually driven chain and script-validated results; no hooks or native parallel rounds declared |
373
+
374
+ ### Codex setup and capabilities
375
+
376
+ - **Installation**: Ensure the Codex CLI is available on `PATH` (`npm install -g @openai/codex`), authenticated via `codex login` (verified with `codex login status`), meeting the minimum version requirement (`0.1.0`).
377
+ - **Recommended setup**: Run `/gantry-setup`, select Codex as the Host Harness, and review the proposed policy before it is written. Setup records `execution.hostHarness: "codex"` in `.gantry/config.json`, selects verified default models, and injects Codex host orchestration and defense-in-depth git hooks into `AGENTS.md`.
378
+ - **Advanced/manual setup**: Use `python3 .agents/skills/gantry/scripts/setup.py --harness codex --verify-auth` when you specifically need the low-level config writer. `npx @julioborges/gantry add --agent codex --yes` installs the skills; it does not configure a repository Run.
379
+ - **Supported Capabilities**: Supported tier with bounded subprocess execution (`codex exec`), per-role model and effort configuration (`low`, `medium`, `high`), Result Contract verification (`result.py`), independent adversarial Critic verification (`acceptance.py`, `gates.py`), and defense-in-depth git hooks.
354
380
 
355
381
  Use the host's available features without assuming parity. Every final Run
356
382
  report states its declared tier. Gantry does not provide session security or
@@ -358,7 +384,7 @@ output redaction; apply your harness's policy layer for those concerns.
358
384
 
359
385
  ## Dashboard and artifacts
360
386
 
361
- Ask your harness to `use gantry-dashboard` to open the read-only local kanban.
387
+ Run `/gantry-dashboard` to open the read-only local kanban.
362
388
  It displays recorded Runs and operator waits; decisions remain in the harness.
363
389
 
364
390
  | Artifact | Default location |
@@ -382,6 +408,7 @@ worktrees.
382
408
  - [Agent contribution rules](AGENTS.md): repository instructions.
383
409
  - [Delivery roadmap](ROADMAP.md): implementation progress and dependencies.
384
410
  - [Workflow skill](.agents/skills/gantry/SKILL.md): execution protocol and references.
411
+ - [Usage guide](docs/usage.md): recommended skill flow and advanced Python CLI usage.
385
412
 
386
413
  ## Contributing
387
414
 
@@ -390,9 +417,9 @@ Use [GitHub Issues](https://github.com/JulioBorges/gantry/issues) to describe a
390
417
  reproducible problem or propose a change. Delivery Issues used by Gantry itself
391
418
  remain local Markdown artifacts.
392
419
 
393
- All changes go through a PR; `main` requires passing CI and maintainer review.
420
+ All changes go through a PR; direct commits to `main` are not accepted.
394
421
  Only [JulioBorges](https://github.com/JulioBorges) reviews and merges contributions.
395
- See [CONTRIBUTING.md](CONTRIBUTING.md) for the fork workflow, required gates,
422
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the workflow, branching model, required gates,
396
423
  and the documented self-review exception for maintainer PRs.
397
424
 
398
425
  Before changing the pack, read `PRD.md`, `CONTEXT.md`, `docs/adr/`, and `AGENTS.md`.
@@ -431,7 +458,7 @@ provenance, verifies registry integrity, and creates the GitHub Release for the
431
458
 
432
459
  See the [maintainer release runbook](docs/maintainers/releases.md) for versioning,
433
460
  authorization, npm trusted publisher setup, and recovery after partial failures.
434
- The package includes only the installer, three skill directories, README and
461
+ The package includes only the installer, four skill directories, README and
435
462
  license; project Issues, fixtures, caches, local configuration and runtime state
436
463
  are excluded. Local `make release` retains its npm account check, but GitHub
437
464
  Actions is the normal publication path.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@julioborges/gantry",
3
- "version": "1.0.5",
3
+ "version": "1.1.0",
4
4
  "description": "Install the Gantry harness-neutral agentic SDLC skill pack.",
5
5
  "type": "commonjs",
6
6
  "license": "Apache-2.0",
@@ -30,6 +30,7 @@
30
30
  ".agents/skills/gantry",
31
31
  ".agents/skills/gantry-setup",
32
32
  ".agents/skills/gantry-dashboard",
33
+ ".agents/skills/gantry-plan",
33
34
  "assets/gantry.png",
34
35
  "README.md",
35
36
  "LICENSE",