What this looks like in practice
Type /allium in Claude Code and Allium examines your project, then offers to distill from existing code or build a new spec through conversation. If you already know which mode you want, you can go directly: /allium:elicit builds a spec through structured conversation, /allium:distill extracts one from existing code.
auth/. I can see login, password reset, session management and role-based access. I've drafted an initial spec at auth.allium with 4 entities and 9 rules. A few things I want to flag:
auth/login.py:34 allows unlimited retries for users with an internal role. Is that intentional, or should the lockout policy apply to everyone?
The elicitation guide and distillation guide cover both approaches in detail.
Allium surfaces implications you missed
A booking platform wants to add self-service rescheduling.
CancellationFee rule: cancellations within 24 hours of the appointment incur a charge. A reschedule is functionally a cancellation followed by a new booking, so rescheduling a same-day appointment would trigger the fee.
Without Allium, the LLM would have implemented a straightforward reschedule endpoint. The behavioural model caught that a same-day reschedule triggers the cancellation fee, and then pushed the developer to define “same week” precisely enough to implement.
Knowledge persists across sessions
A developer starts a new session days later, working on a different feature.
SubscriptionCreated ensures a payment is processed and InvoiceGenerated requires invoice.amount > 0. A free first month would need to bypass both.
PaymentMethod still be captured upfront, or only when the trial converts?
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.
Allium grounds a design conversation
A developer asks for a straightforward feature.
LoyaltyDiscount rule that gives returning customers 10% off orders over £100. A 55-unit order from a loyal customer could qualify for both. Your OrderTotal derivation doesn't specify how multiple discounts interact.
Without Allium, the LLM would have added the bulk discount with no awareness of the loyalty programme. The specification surfaced a pricing interaction the developer never mentioned, and the conversation arrived at an explicit discount precedence rule.
Distillation catches drift
A developer asks the LLM to check whether the code still matches the Allium.
ArticlePublished requires article.status = approved, meaning every article goes through editor review before publication. But publishing/views.py line 82 skips the approval check for users with role = senior_author. The Allium has no such exception.
Code and intent diverge silently over time. Allium gives the LLM something to check against, turning “does this look right?” into a concrete comparison with a definitive answer. See the distillation guide for a structured approach to catching drift, and the elicitation guide for building specs from conversations like the ones above.