You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Re-vendor plugins/allium from juxt/allium@v3.7.0: /allium now drives the whole
loop to convergence (the standalone /allium:loop command folded into the entry
point). Also exclude design/ (internal, non-user-facing notes) from the sync so
they don't ship to the marketplace.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: plugins/allium/README.md
+25-3Lines changed: 25 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,7 +84,7 @@ npx skills add juxt/allium
84
84
85
85
**Other editors:** If your editor doesn't read from `.agents/skills/`, symlink the installed skills into wherever it does look (e.g. `ln -s .agents/skills/allium .continue/rules/allium`, or `mklink /J` on Windows). Use a symlink rather than copying; the skill files contain relative links to reference material that a copy would break.
86
86
87
-
Once installed, type `/allium` to get started. Allium examines your project and guides you toward the right skill, whether that's distilling a spec from existing code or building one through conversation. Once you're familiar with the individual skills, you'll likely invoke them directly.
87
+
Once installed, type `/allium` to get started. Allium examines your project and points you at the best next move — usually driving the whole loop end to end, or a single skill like distilling a spec from existing code or building one through conversation. Once you're familiar with the individual skills, you'll likely invoke them directly.
88
88
89
89
Jump to what [Allium looks like in practice](#what-this-looks-like-in-practice).
90
90
@@ -112,14 +112,14 @@ Allium provides five skills, an entry point and two autonomous agents.
112
112
113
113
| Skill | Purpose |
114
114
|---|---|
115
-
|`/allium <prompt>`| Entry point. Examines your project or the prompt and routes you to the right skill. |
115
+
|`/allium <goal or prompt>`| Entry point. Give it a goal and it drives the whole loop to convergence — gather context, take action, verify, repeat — running the other skills as phases; give it a single task and it routes you to the right skill. |
116
116
|`/elicit <feature idea>` (or `/allium:elicit`) | Build a spec through structured conversation. |
117
117
|`/distill <codebase area>` (or `/allium:distill`) | Extract a spec from existing code. |
118
118
|`/propagate <optional constraints>` (or `/allium:propagate`) | Generate tests from a spec. |
|`/weed <optional constraints>` (or `/allium:weed`) | Find and fix divergences between spec and code. |
121
121
122
-
How skills appear depends on your editor. Some show the fully qualified form (`/allium:weed`), others show the short form (`/weed`), and some support both. If one form isn't recognised, try the other. Skills also auto-trigger when you open or edit `.allium` files.
122
+
How skills appear depends on your editor. Some show the fully qualified form (`/allium:weed`), others show the short form (`/weed`), and some support both. If one form isn't recognised, try the other. The entry point is `/allium` — because its name matches the plugin, its fully qualified form is `/allium:allium` (the same `plugin:skill` rule as every other skill); either invokes it. Skills also auto-trigger when you open or edit `.allium` files.
123
123
124
124
Tend and weed are also available as autonomous **agents** that run in their own context, keeping Allium syntax out of your main session. Claude Code picks up agents from `agents/`, Copilot from `.github/agents/`. How editors discover skills and agents is still settling; we make these available in the most portable formats we can and expect to consolidate as conventions stabilise. If your editor doesn't pick something up, [raise an issue](https://github.com/juxt/allium/issues).
125
125
@@ -260,6 +260,28 @@ A developer starts a new session days later, working on a different feature.
260
260
261
261
The developer never mentioned invoicing or payment method capture. The Allium did, from a session that ended days ago. Without it, the LLM would have implemented the trial with no awareness of these constraints, and the gaps would have surfaced in production.
262
262
263
+
### The loop in motion
264
+
265
+
A developer asks for a feature and lets the loop run to convergence.
266
+
267
+
---
268
+
269
+
> ***> Add gift cards to checkout.***
270
+
>
271
+
> ✻ I'll capture this as a spec first (`/elicit`). One thing to pin down before building: can a gift card be combined with a promo code, or are they mutually exclusive?
272
+
>
273
+
> ***> Mutually exclusive.***
274
+
>
275
+
> ✻ Spec updated. Generated tests with `/propagate` and ran them — 4 new tests, all failing as expected (red). Implementing against them now.
276
+
>
277
+
> ✻ Tests green. `/weed` flagged a divergence: the code lets a gift card pay for shipping, but the spec scopes it to goods only. Fixing the code to match the spec.
278
+
>
279
+
> ✻ Re-ran: tests pass, `/weed` clean, no open questions. Spec, tests and code agree — converged.
280
+
281
+
---
282
+
283
+
The loop did the work: elicitation forced the promo-code decision up front, the red step proved the tests were real, and verification (`/weed`) caught a drift the passing tests didn't. The agent stops when the three artefacts agree, not when the code merely runs.
284
+
263
285
## Verification
264
286
265
287
When the CLI is installed, `.allium` files are validated automatically after every write or edit. Diagnostics appear inline and the model fixes issues in the same turn.
Copy file name to clipboardExpand all lines: plugins/allium/skills/allium/SKILL.md
+15-1Lines changed: 15 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,10 +33,23 @@ Allium does NOT specify programming language or framework choices, database sche
33
33
| Modifying an existing spec |`tend` skill | User wants targeted changes to `.allium` files |
34
34
| Checking spec-to-code alignment |`weed` skill | User wants to find or fix divergences between spec and implementation |
35
35
| Generating tests from a spec |`propagate` skill | User wants to generate tests, PBT properties or state machine tests from a specification |
36
+
| Driving the whole loop to convergence | this skill (see [driving the loop](./references/driving-the-loop.md)) | User wants to build or reconcile a feature end to end — `/allium <goal>` runs the gather→act→verify→repeat loop autonomously until spec, tests and code agree |
37
+
38
+
## Responding to `/allium` (loop-first)
39
+
40
+
`/allium` is the entry point. Bias toward the autonomous path — the whole-loop value is exactly what occasional single-skill use misses:
41
+
42
+
-**Clear single task** → route straight to that skill (per the routing table); don't make the user wade through a menu.
43
+
-**A goal or feature** (e.g. "add gift cards", "get password reset working") → drive the whole loop end to end yourself, rather than running one phase. Follow [driving the loop](./references/driving-the-loop.md).
44
+
-**Bare or ambiguous** → orient the user loop-first: offer to drive the loop as the default, then list the individual skills as the control path with a one-line hint each, and suggest a concrete starting point from the project state (existing `.allium` specs? code but no spec? drift to reconcile?). For example:
45
+
46
+
> Tell me a goal and I'll drive the whole loop — spec → tests → code, until they agree. Or run one step yourself: `elicit` (spec from intent), `distill` (spec from existing code), `propagate` (tests from a spec), `tend` (edit a spec), `weed` (fix spec↔code drift). You have code but no `.allium` yet, so I'd start by distilling — or just give me the goal and I'll take it end to end.
47
+
48
+
Lead with the loop; keep the individual skills one step away for users who want manual control. And once a single skill finishes, proactively suggest the next phase rather than waiting to be asked.
36
49
37
50
## The Allium loop (recommended sequencing)
38
51
39
-
The skills are not one-shot commands; they compose into an autonomous-style loop — **gather context → take action → verify → repeat** — that drives three artefacts to agreement: the **spec** (intent), the **tests** (contract), and the **code** (implementation). Gather context with `/elicit` or `/distill` (the spec is durable context); take action with `/propagate` then implementation (in spec-first work, confirm the new tests fail first — a test already green before you implement is already-covered or vacuous); verify by running the tests, then `/weed`, then CLI structural checks; repeat until converged. Verification is the phase that matters most, and the spec-plus-tests-plus-weed signal is what makes the loop trustworthy. After invoking one skill, proactively suggest the next step rather than waiting to be asked.
52
+
The skills are not one-shot commands; they compose into an autonomous-style loop — **gather context → take action → verify → repeat** — that drives three artefacts to agreement: the **spec** (intent), the **tests** (contract), and the **code** (implementation). Gather context with `/elicit` or `/distill` (the spec is durable context); take action with `/propagate` then implementation (in spec-first work, confirm the new tests fail first — a test already green before you implement is already-covered or vacuous); verify by running the tests, then `/weed`, then CLI structural checks; repeat until converged. Verification is the phase that matters most, and the spec-plus-tests-plus-weed signal is what makes the loop trustworthy. After invoking one skill, proactively suggest the next step rather than waiting to be asked. To run the whole loop to convergence in one go, just give `/allium` a goal — it drives the loop for you, following [driving the loop](./references/driving-the-loop.md).
40
53
41
54
Two entry points, one convergence loop:
42
55
@@ -322,4 +335,5 @@ When the `allium` CLI is installed, a hook validates `.allium` files automatical
322
335
-[Language reference](./references/language-reference.md) — full syntax for entities, rules, expressions, surfaces, contracts, invariants and validation
323
336
-[Test generation](./references/test-generation.md) — generating tests from specifications
324
337
-[Recommended loops](./references/recommended-loops.md) — the gather-context → take-action → verify → repeat loop, with spec-first and code-first walkthroughs
338
+
-[Driving the loop](./references/driving-the-loop.md) — the procedure `/allium` follows to drive a goal to convergence (entry detection, the tick, stop conditions, the ledger)
0 commit comments