allium
Allium
Opinionated integration between juxt/allium and the /core:agent-loop workflow. Allium captures observable behavior in .allium files using entity, rule, and config blocks — implementation-agnostic, co-located with code.
When to Use
- Epic author is attaching a formal behavioral spec to a new epic
- Worker needs to seed failing TDD tests from a spec before implementing
- Validator has passed CI and needs to confirm the code matches the spec semantically
- Refactor epic requires a behavioral baseline before decomposition
Prerequisites
Upstream Allium Claude plugin must be installed separately:
/plugin install allium@juxt
The CLI (allium-tools binary) installs via mise — see references/installation.md.
Spec Location Convention
Recommended convention for projects adopting this skill: specs live at docs/specs/<epic-slug>.allium with shared specs in docs/specs/shared/. A project-root allium.config.json declares specPaths: ["docs/specs"] so the CLI and LSP resolve them. Copy templates/allium.config.json into the project root to bootstrap this layout.
Integration Points by Tier
See references/agent-loop-integration.md for the complete 6-tier breakdown. Summary:
| Tier | Allium action |
|---|---|
| Epic Author | Run /allium:elicit or copy a template from templates/; set spec: field in epic markdown |
| Team Leader | If refactor label and no spec: run /allium:distill for baseline |
| Worker | If spec attached: run /allium:propagate to seed failing tests BEFORE implementing |
| Validator | After CI passes: run /allium:weed; divergences route to fix-agent same as CI failures |
Spec Syntax (v3)
entity Order {
status: pending | confirmed | shipped | delivered | cancelled
tracking_number: String when status = shipped | delivered
transitions status {
pending -> confirmed
confirmed -> shipped
terminal: delivered, cancelled
}
invariant NonNegativeTotal { this.total >= 0 }
}
rule ShipOrder {
when: ShipOrder(order, tracking)
requires: order.status = confirmed
ensures:
order.status = shipped
order.tracking_number = tracking
}
Key constructs:
entity— domain object with typed fields, conditional attributes (when), state transitions, and invariantsrule— behavioral rule withwhen(trigger),requires(preconditions),ensures(postconditions)config— project-level settings (thresholds, retry counts, timeout values)use— import another spec:use "./shared/oauth.allium" as oauth
Templates
Copy-pasteable specs in templates/:
oauth-pkce-flow.allium— OAuth2 PKCE flow matching the agent-loop epic-authoring examplecircuit-breaker.allium— infrastructure contract withentity+config+rulerunex-workflow.allium— spec for a Runex workflow stepepic-with-spec.md— VantageEx epic showing thespec:field in use
See references/epic-spec-template.md for a guided walkthrough.
Anti-Fabrication
All claims about spec content must derive from reading actual .allium files with Read tool. Never assert that a spec covers a behavior without verifying the ensures or invariant blocks. See /core:anti-fabrication.
References
references/installation.md— mise backend details and upstream plugin installreferences/agent-loop-integration.md— 6-tier integration procedurereferences/epic-spec-template.md— template walkthroughreferences/distilling-legacy-code.md—/allium:distillprocedure for existing modules
More from vinnie357/claude-skills
material-design
Guide for implementing Material Design 3 (Material You). Use when designing Android apps, implementing dynamic theming, or following Material component patterns.
18elixir-testing
Guide for Elixir testing with ExUnit. Use when writing unit tests, implementing property-based tests, setting up mocks, or organizing test suites.
16elixir-anti-patterns
Identify and refactor Elixir anti-patterns. Use when reviewing Elixir code for smells, refactoring problematic patterns, or improving code quality.
15phoenix-framework
Guide for Phoenix web applications. Use when building Phoenix apps, implementing LiveView, designing contexts, setting up channels, or integrating Tidewave MCP dev tools.
14nushell
Guide for using Nushell for structured data pipelines and scripting. Use when writing shell scripts, processing structured data, or working with cross-platform automation.
14documentation-writing
Guide for writing technical documentation. Use when creating README files, API documentation, guides, or inline code documentation.
12