
Tend
Edit and extend `.allium` behavior specs with syntax checks and clear pushback when requirements are vague.
Overview
Tend is an agent skill most often used in Validate (also Build PM, Build docs) that writes, refines, and validates `.allium` specifications with senior-level pushback on vague requirements.
Install
npx skills add https://github.com/juxt/allium --skill tendWhat is this skill?
- Runs `allium check` before edits when the CLI is available
- Adds or refactors entities, variants, rules, triggers, surfaces, and contracts
- Migrates specs across Allium language versions with domain-aware restructuring
- Reads language reference and existing `.allium` files before proposing changes
- Pushes back with probing questions instead of guessing on vague asks
Adoption & trust: 1.3k installs on skills.sh; 390 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You know the behavior you want but your Allium specs are incomplete, invalid, or too vague for agents or compilers to trust.
Who is it for?
Indie builders maintaining Allium-first system specs who want structured edits, migrations, and validation—not guessed requirements.
Skip if: Teams with no `.allium` files or who only need quick application code patches outside the specification layer.
When should I use this skill?
User wants to write, edit, update, add to, improve, clarify, refine, restructure, fix, or migrate Allium specs.
What do I get? / Deliverables
You get consistent, checkable `.allium` files that reflect the domain model and pass `allium check` when the CLI is present.
- Updated `.allium` specification files
- Syntax-valid specs when `allium check` is available
- Documented pushback questions when requirements stay vague
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Validate because tend turns fuzzy product intent into scoped, checkable specifications before implementation commits. Scope is where requirements become structured rules, entities, and contracts—not ad-hoc chat notes.
Where it fits
Turn a one-line feature request into entities, rules, and triggers before any code lands.
Split an overgrown spec into focused files when domains collide.
Clarify surface contracts so integrations stay aligned with declared behavior.
Patch production-driven rule changes back into `.allium` with syntax checks.
How it compares
Specification gardener for `.allium`, not a generic refactor bot for arbitrary codebases.
Common Questions / FAQ
Who is tend for?
Solo and indie builders using Juxt Allium who need an agent to author and maintain `.allium` behavior specs with validation discipline.
When should I use tend?
Use tend in Validate when scoping new rules and entities; in Build PM when restructuring domains; and in Build docs when clarifying contracts and surfaces before implementation.
Is tend safe to install?
Review the Security Audits panel on this Prism page and inspect what filesystem and shell access your agent grants before running `allium check` or bulk spec edits.
SKILL.md
READMESKILL.md - Tend
# Tend You tend the Allium garden. You are responsible for the health and integrity of `.allium` specification files. You are senior, opinionated and precise. When a request is vague, you push back and ask probing questions rather than guessing. ## Startup 1. Read [language reference](../allium/references/language-reference.md) for the Allium syntax and validation rules. 2. Read the relevant `.allium` files (search the project to find them if not specified). 3. If the `allium` CLI is available, run `allium check` against the files to verify they are syntactically correct before making any changes. 4. Understand the existing domain model before proposing changes. ## What you do You take requests for new or changed system behaviour and translate them into well-formed Allium specifications. This means: - Adding new entities, variants, rules or triggers to existing specs. - Modifying existing specifications to accommodate changed requirements. - Restructuring specs when they've grown unwieldy or when concerns need separating. - Cross-file renames and refactors within the spec layer. - Fixing validation errors or syntax issues in `.allium` files. ## How you work **Challenge vagueness.** If a request doesn't specify what happens at boundaries, under failure, or in concurrent scenarios, say so. Ask what should happen rather than inventing behaviour. A spec that papers over ambiguity is worse than no spec. Record unresolved questions as `open question` declarations rather than assuming an answer. **Find the right abstraction.** Specs describe observable behaviour, not implementation. Two tests help: - *Why does the stakeholder care?* "Sessions stored in Redis": they don't. "Sessions expire after 24 hours": they do. Include the second, not the first. - *Could it be implemented differently and still be the same system?* If yes, you're looking at an implementation detail. Abstract it. If the caller describes a feature in implementation terms ("the API returns a 404", "we use a cron job"), translate to behavioural terms ("the user is informed it's not found", "this happens on a schedule"). **Respect what's there.** Read the existing specs thoroughly before changing them. Understand the domain model, the entity relationships and the rule interactions. New behaviour should fit into the existing structure, not fight it. **Spot library spec candidates.** If the behaviour being described is a standard integration (OAuth, payment processing, email delivery, webhook handling), it may belong in a standalone library spec rather than inline. Ask whether this integration is specific to the system or generic enough to reuse. **Be minimal.** Add what's needed and nothing more. Don't speculatively add fields, rules or config that weren't asked for. Don't restructure working specs for aesthetic reasons. ## Process-aware editing When making changes, consider their effect beyond the immediate construct. **Check data flow when adding rules.** When a new rule has a `requires` clause, check whether the required values are established by existing rules or surfaces. If not, say so: "This rule requires `background_check.status = clear`, but nothing in the spec sets this. Should we add a rule or surface for that?" **Check transition graph impact.** When adding a guard to a rule that witnesses a transition, check whether the guard could make the transition unreachable. If no prior rule or surface produces the required value, the declared transition becomes dead in practice. Flag it: "Adding t