Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f503eb8
Add "driving the loop" prompt template and a loop-in-motion transcript
yavorpanayotov Jun 23, 2026
3b418cd
Add design note for /allium:loop (loop mode)
yavorpanayotov Jun 23, 2026
3fc4538
Record loop-mode design decisions (ledger gitignore, delegation, etc.)
yavorpanayotov Jun 23, 2026
67198b9
Record loop-mode design note lifecycle in its header
yavorpanayotov Jun 23, 2026
fb41dfc
Resolve loop-mode open questions (decomposition, interface, gitignore)
yavorpanayotov Jun 23, 2026
3d8393c
Add /allium:loop skill (Layer 1 MVP) built against the design note
yavorpanayotov Jun 23, 2026
5add819
Record the worker/orchestrator split for interactive phases
yavorpanayotov Jun 23, 2026
41b22ef
Add consistency checks and broaden link coverage in test-skills
yavorpanayotov Jun 23, 2026
eec2cf2
Add loopdocs (constant drift) and hooks integrity checks
yavorpanayotov Jun 23, 2026
a7e9b66
Doc review: list the loop skill in the README
yavorpanayotov Jun 23, 2026
489febd
Make /allium loop-first
yavorpanayotov Jun 23, 2026
fb7b1a9
Bump plugin version to 3.7.0
yavorpanayotov Jun 23, 2026
67250be
Loop entry detection: announce-and-proceed with override (no confirm)
yavorpanayotov Jun 24, 2026
80be547
Loop: add phase-boundary narration
yavorpanayotov Jun 24, 2026
619fe75
Loop: align CLI checking with Allium's continuous-validation guidance
yavorpanayotov Jun 24, 2026
7a1fff1
Loop: add a reviewer recipe for running /allium:loop locally
yavorpanayotov Jun 24, 2026
0008af1
Loop: expose /allium-loop as a GitHub Copilot prompt
yavorpanayotov Jun 29, 2026
faa5ed4
Loop: fold /allium:loop into /allium
yavorpanayotov Jul 3, 2026
7d112d2
Loop: note the /allium entry point's qualified form in the README
yavorpanayotov Jul 3, 2026
f40852d
Loop: remove the obsolete local-testing reviewer note
yavorpanayotov Jul 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "allium",
"version": "3.6.0",
"version": "3.7.0",
"description": "Velocity through clarity.",
"author": {
"name": "JUXT",
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "allium",
"version": "3.6.0",
"version": "3.7.0",
"description": "Velocity through clarity.",
"author": {
"name": "JUXT",
Expand Down
28 changes: 25 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ npx skills add juxt/allium

**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.

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.
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.

Jump to what [Allium looks like in practice](#what-this-looks-like-in-practice).

Expand Down Expand Up @@ -112,14 +112,14 @@ Allium provides five skills, an entry point and two autonomous agents.

| Skill | Purpose |
|---|---|
| `/allium <prompt>` | Entry point. Examines your project or the prompt and routes you to the right skill. |
| `/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. |
| `/elicit <feature idea>` (or `/allium:elicit`) | Build a spec through structured conversation. |
| `/distill <codebase area>` (or `/allium:distill`) | Extract a spec from existing code. |
| `/propagate <optional constraints>` (or `/allium:propagate`) | Generate tests from a spec. |
| `/tend <optional constraints>` (or `/allium:tend`) | Targeted changes to existing specs. |
| `/weed <optional constraints>` (or `/allium:weed`) | Find and fix divergences between spec and code. |

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.
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.

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).

Expand Down Expand Up @@ -260,6 +260,28 @@ A developer starts a new session days later, working on a different feature.

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.

### The loop in motion

A developer asks for a feature and lets the loop run to convergence.

---

> ***> Add gift cards to checkout.***
>
> ✻ 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?
>
> ***> Mutually exclusive.***
>
> ✻ Spec updated. Generated tests with `/propagate` and ran them — 4 new tests, all failing as expected (red). Implementing against them now.
>
> ✻ 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.
>
> ✻ Re-ran: tests pass, `/weed` clean, no open questions. Spec, tests and code agree — converged.

---

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.

## Verification

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.
Expand Down
Loading
Loading