@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/.agents/skills/gantry/SKILL.md +15 -1
- package/.agents/skills/gantry/capabilities/codex.json +4 -3
- package/.agents/skills/gantry/dashboard/static/app.js +847 -35
- package/.agents/skills/gantry/dashboard/static/history.html +180 -0
- package/.agents/skills/gantry/dashboard/static/index.html +152 -7
- package/.agents/skills/gantry/dashboard/static/style.css +1177 -36
- package/.agents/skills/gantry/hooks/antigravity.hooks.json +2 -2
- package/.agents/skills/gantry/reference/plan-workflow.md +13 -0
- package/.agents/skills/gantry/reference/round-workflow.md +90 -2
- package/.agents/skills/gantry/scripts/common.py +3 -0
- package/.agents/skills/gantry/scripts/dashboard.py +664 -11
- package/.agents/skills/gantry/scripts/discovery.py +117 -8
- package/.agents/skills/gantry/scripts/execution.py +131 -14
- package/.agents/skills/gantry/scripts/guard.py +6 -0
- package/.agents/skills/gantry/scripts/plan.py +658 -0
- package/.agents/skills/gantry/scripts/result.py +56 -1
- package/.agents/skills/gantry/scripts/runlog.py +2 -1
- package/.agents/skills/gantry/scripts/setup.py +102 -9
- package/.agents/skills/gantry/scripts/wait_gate.py +179 -0
- package/.agents/skills/gantry-dashboard/SKILL.md +21 -2
- package/.agents/skills/gantry-plan/SKILL.md +104 -0
- package/.agents/skills/gantry-setup/SKILL.md +9 -3
- package/README.md +125 -98
- package/package.json +2 -1
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](#
|
|
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
|
|
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` |
|
|
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
|
|
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
|
-
##
|
|
105
|
+
## Usage
|
|
105
106
|
|
|
106
|
-
|
|
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
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
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
|
-
|
|
125
|
-
accept that particular breakdown, send:
|
|
133
|
+
Then start one implementation Run:
|
|
126
134
|
|
|
127
135
|
```text
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
133
|
-
|
|
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,
|
|
140
|
-
|
|
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
|
-
|
|
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
|
-
|
|
169
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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.
|
|
216
|
+
**3. Approve the concrete plan.** After reviewing the Spec and draft Issues:
|
|
189
217
|
|
|
190
218
|
```text
|
|
191
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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;
|
|
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
|
-
|
|
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.
|
|
255
|
-
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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
|
-
|
|
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
|
-
|
|
300
|
+
Then start implementation:
|
|
282
301
|
|
|
283
302
|
```text
|
|
284
|
-
|
|
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
|
-
|
|
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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
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
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
Run to
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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`
|
|
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
|
|
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,
|
|
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
|
|
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",
|