Ponytail
DavidObando/gsharp
Forces the laziest solution that actually works, simplest, shortest, most minimal.
Tend the Allium garden. An agent skill from juxt/allium.
$ npx skills add juxt/allium --skill tend -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install juxt/allium tend --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/juxt/allium.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tend .claude/skills/tend && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "tend" agent skill from https://github.com/juxt/allium/tree/main/skills/tend into .claude/skills/tend/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tend", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/juxt/allium/tree/main/skills/tendType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add juxt/allium --skill tend -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install juxt/allium tend --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juxt/allium.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tend .agents/skills/tend && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tend" agent skill from https://github.com/juxt/allium/tree/main/skills/tend into .agents/skills/tend/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tend", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add juxt/allium --skill tend -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install juxt/allium tend --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juxt/allium.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tend .cursor/skills/tend && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tend" agent skill from https://github.com/juxt/allium/tree/main/skills/tend into .cursor/skills/tend/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tend", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/juxt/allium.git --path skills/tend--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add juxt/allium --skill tend -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install juxt/allium tend --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juxt/allium.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tend .gemini/skills/tend && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tend" agent skill from https://github.com/juxt/allium/tree/main/skills/tend into .gemini/skills/tend/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tend", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install juxt/allium tendInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add juxt/allium --skill tend -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/juxt/allium.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tend .github/skills/tend && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tend" agent skill from https://github.com/juxt/allium/tree/main/skills/tend into .github/skills/tend/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tend", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add juxt/allium --skill tend -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install juxt/allium tend --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juxt/allium.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tend .opencode/skills/tend && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tend" agent skill from https://github.com/juxt/allium/tree/main/skills/tend into .opencode/skills/tend/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tend", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tendTend the Allium garden. An agent skill from juxt/allium.
Tend is an agent skill from juxt/allium. Tend the Allium garden. Use when the user wants to write, edit, update, add to, improve, clarify, refine, restructure, fix or migrate Allium specs. Covers adding entities, rules, triggers, surfaces and contracts, fixing syntax or validation errors, renaming or refactoring within specs, migrating specs to a new language version, and translating requirements into well-formed specifications. Pushes back on vague requirements.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Translation and Refactoring. The repository describes itself as: The specification language that talks back. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 7f7f008. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tend loads about 2.7k tokens when it runs. Until then it costs about 108 tokens; SKILL.md has 1,414 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from juxt/allium at commit 7f7f008, republished under its MIT licence (© juxt). 1,414 words, ~2,664 tokens.
.claude/skills/tend/SKILL.md (or your agent's skills folder).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.
This skill runs in two modes. Every instruction below that asks, prompts or checks with the user follows the mode:
tend subagent (for example inside the Allium loop), where no user is reachable. Do not guess an answer: record each question as an open question declaration in the spec, continue with the work that does not depend on it, and list the parked questions in your final output..allium files (search the project to find them if not specified).allium CLI is available, run allium check against the files to verify they are syntactically correct before making any changes.You take requests for new or changed system behaviour and translate them into well-formed Allium specifications. This means:
.allium files.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:
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.
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 this guard means the screening → interviewing transition depends on a value nothing in the spec provides."
Check surface coverage for external triggers. When adding a rule triggered by an external stimulus, check whether any surface provides that trigger. If not, prompt: "This rule listens for BackgroundCheckResultReceived but no surface provides it. Should we add a surface or contract for the external system?"
Consider invariants for cross-entity constraints. When a rule modifies entities across a relationship (e.g. hiring a candidate also fills the role), consider whether a cross-entity invariant is implied. If the rule's postconditions could produce a state that seems wrong without a guard, suggest an invariant.
Assess the spec before editing. Read assessing specs to understand the spec's maturity. Don't add detailed rules to an entity that doesn't have a transition graph yet — suggest adding the lifecycle first. Don't add surfaces without actors.
.allium files only. You do not modify implementation code.weed skill.distill skill.elicit skill. You handle targeted changes where the caller already knows what they want.skills/allium/references/language-reference.md. The language definition is governed separately.-- allium: N version marker. Do not change the version number.config blocks for variable values. Do not hardcode numbers in rules.requires guards to prevent re-firing.with for relationships, where for projections. Do not swap them.transitions_to fires on field transition only (not creation). becomes fires on both creation and transition. Do not swap them..created() in ensures clauses. Variant instances use the variant name.items.any(i => i.active).@guidance in rules is optional and must be the final clause (after ensures:).contract declarations for obligation blocks. All contracts are module-level declarations referenced from surfaces via contracts: demands Name, fulfils Name.invariant Name { expression } syntax (no @). Prose-only invariants use @invariant Name (with @, no colon). The @ sigil marks annotations whose structure the checker validates but whose prose content it does not evaluate.@guarantee Name in surfaces is the prose counterpart to expression-bearing invariants. Same @ sigil convention.@guidance must appear after all structural clauses and after all other annotations in its containing construct.other/config.param). Expression-form defaults support arithmetic (base_timeout * 2).implies is available in all expression contexts. a implies b is not a or b, with the lowest boolean precedence.Spec evolution can require many edit-validate cycles. When running interactively, if you anticipate a long iterative session, or if the context is growing large, advise the user to open a fresh chat specifically for tending the spec. Provide a copy-paste prompt so they can resume, such as: "Use the tend skill to continue updating the [Spec Name] spec to handle [Remaining Requirements]."
After every edit to a .allium file, run allium check against the modified file if the CLI is installed. Fix any reported issues before presenting the result. If the CLI is not available, verify against the language reference. The first time the CLI is not found, note: "I'll validate against the language reference instead. If you'd like automated checking, the CLI is available via Homebrew or crates.io — see the README for details."
After edits that change rules, surfaces or transition graphs, run allium analyse if available and if the spec meets the criteria in assessing specs (at least one entity has both witnessing rules and surfaces defined). If it produces findings, present the most relevant one as a follow-up question rather than raw output. Consult actioning findings for how to translate findings into domain questions.
When proposing spec changes, explain the behavioural intent first, then show the changes. If you have questions or concerns about the request, raise them before writing anything.
When running as the tend subagent inside the Allium loop, return your result as a single JSON object conforming to tend-result.schema.json, and nothing else: the spec_path, the changes you made (each a short string, not an object), the parked open_questions, and a one-line summary. Emit every field, using [] for empty lists. Running interactively, present the intent-then-changes prose above as usual — the typed record is for the machine hand-off, not the conversation.
{
"phase": "tend",
"spec_path": "shop.allium",
"changes": ["Added expiry field to GiftCard", "Added GiftCardExpires temporal rule"],
"open_questions": ["Expiry period undecided"],
"summary": "Added gift card expiry behaviour"
}© juxt, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/tend of juxt/allium.
Open the folder on GitHubat commit 7f7f008
Tend next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tend this skilljuxt/allium | 506 | — | ~2.7k | Automated safety check: Pass | MIT | |
| PonytailDavidObando/gsharp | 565 | 8 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Ok Script TasksAliceJump/ok-gf2 | 274 | — | ~1k | Automated safety check: Pass | None | |
| Neuron Nki Writinguw-syfi/vibesys | 103 | — | ~5k | Automated safety check: Pass | MIT | |
| Guidelinesakash-network/node | 1.1k | 22 repos | ~577 | Automated safety check: Pass | MIT | |
| Component Refactoringlangflow-ai/langflow | 156k | — | ~3.5k | Automated safety check: Pass | MIT |
DavidObando/gsharp
Forces the laziest solution that actually works, simplest, shortest, most minimal.
AliceJump/ok-gf2
Create and modify automation task classes for the ok-script Python library in ok-gf2, including BaseTask one-time tasks, TriggerTask background tasks, task config UI metadata, registration in…
uw-syfi/vibesys
Guide for writing and modifying NKI kernels. An agent skill from uw-syfi/vibesys.
akash-network/node
Behavioral guidelines to reduce common LLM coding mistakes. An agent skill from akash-network/node.
langflow-ai/langflow
Refactor high-complexity React components in Langflow frontend.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
Categories
Tend the Allium garden. An agent skill from juxt/allium. Tend is an agent skill from juxt/allium. Tend the Allium garden.
Tend fits situations like: the user wants to write; migrate Allium specs.
Run `npx skills add juxt/allium --skill tend -a claude-code`. Or copy the skill folder (skills/tend in juxt/allium) into .claude/skills/tend in your project. Claude Code loads it when a task matches its description.
Run `npx skills add juxt/allium --skill tend -a codex`. Or copy the skill folder (skills/tend in juxt/allium) into .agents/skills/tend in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add juxt/allium --skill tend -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tend, .gemini/skills/tend, .github/skills/tend and .opencode/skills/tend in your project.
SKILL.md names no scripts, command-line tools or credentials: Tend is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Tend is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tend: Ponytail (DavidObando/gsharp, 565 stars), Ok Script Tasks (AliceJump/ok-gf2, 274 stars), Neuron Nki Writing (uw-syfi/vibesys, 103 stars) and Guidelines (akash-network/node, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
juxt (a GitHub organization) maintains it in juxt/allium, which has 506 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 27, 2026.
Source: juxt/allium on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.