turn-limit-repo @ cab445e603
2026-04-23 14:09:44 +01:00
2026-04-22 12:31:55 +01:00
2026-04-22 11:44:43 +01:00
2026-04-22 11:44:43 +01:00
2026-04-22 10:27:30 +00:00
2026-04-23 15:34:19 +01:00
2026-04-22 12:31:55 +01:00
2026-04-23 15:40:52 +01:00
2026-04-22 21:31:58 +01:00

Allium for Pi.dev

Port of Allium (v3) to pi.dev skills.

This README was written by a coding agent. The draft blogpost has a pre-amble with some motivation written by me.

Allium is a formal language for capturing software behaviour at the domain level. It sits between informal feature descriptions and implementation, providing a precise way to specify what software does without prescribing how it's built.

What this is

This repository ports Allium's AI skills from the Claude Code plugin format to pi.dev skills, while keeping upstream content referenced by symlink rather than copied. The goal: stay in sync with upstream Allium without maintaining a full fork.

Skills

Skill Invocation Purpose
allium /skill:allium Root skill — routing table and language reference
elicit /skill:elicit Elicit requirements and design decisions from stakeholders
distill /skill:distill Extract a .allium spec from existing code
propagate /skill:propagate Generate test obligations from a .allium spec
tend /skill:tend Maintain and evolve .allium specs (ported from Claude agent)
weed /skill:weed Check spec-code alignment (ported from Claude agent)

Directory layout

pi-allium-port/
├── allium-main/            ← git clone of juxt/allium (upstream)
├── .pi/
│   └── skills/
│       ├── allium/
│       │   ├── SKILL.md    ← adapted frontmatter + upstream content
│       │   └── references/ → ../../../allium-main/references/
│       ├── elicit/
│       │   ├── SKILL.md
│       │   └── references/ → symlinks to allium-main/
│       ├── distill/
│       │   ├── SKILL.md
│       │   └── references/ → symlinks to allium-main/
│       ├── propagate/
│       │   ├── SKILL.md
│       │   └── references/ → symlinks to allium-main/
│       ├── tend/
│       │   ├── SKILL.md
│       │   └── references/ → symlinks to allium-main/
│       └── weed/
│           ├── SKILL.md
│           └── references/ → symlinks to allium-main/
├── turn-limit/             ← test target (pi-turn-limit extension)
└── README.md               ← this file

Each skill's references/ directory contains symlinks pointing into allium-main/. This means:

  • Upstream updates propagate automatically — when allium-main is updated (e.g., git pull), all referenced content is current.
  • No content duplication — the port maintains only the SKILL.md frontmatter adapters, not copies of reference documents.
  • Relative paths — symlinks use relative paths so the structure is portable (as long as allium-main/ stays in the same relative position).

Staying in sync

cd allium-main
git pull origin main

That's it. The symlinks ensure all skills see the updated content immediately.

Prerequisites

  • pi.dev installed and configured
  • Allium CLI installed (for allium check validation)
  • Clone this repository with allium-main/ present

Usage

  1. Open pi in this directory: pi -p
  2. Invoke skills with /skill:allium, /skill:elicit, /skill:distill, /skill:propagate, /skill:tend, /skill:weed
  3. Skills guide the model through Allium workflows

Known limitations vs Claude Code version

Feature Claude Code Pi.dev port Notes
Model selection Agents run on specific models (e.g., Opus for tend/weed) Runs on default model Pi has no native agent model selection
Tool restrictions Agents have scoped tool permissions No tool scoping Skills can use any tool the model has
Auto-trigger auto_trigger activates skills on file patterns/keywords Manual invocation only Pi uses disable-model-invocation instead
Post-write hooks allium-check.mjs runs automatically after Edit/Write Manual allium check instruction in skills Skills instruct the model to run validation, but it's not automatic
Rules .claude/rules/ with glob-based activation Content folded into SKILL.md or references No glob-based rule activation in pi
Syntax rules Dedicated rules file with anti-patterns Symlinked into references/allium-rules.md Same content, different delivery mechanism

Tested against

The pi-turn-limit extension served as the test target:

  • Distill: Extracted .allium spec from existing code
  • Propagate: Generated 30+ test obligations from the spec
  • Elicit: Explored "disable turn limit" feature requirements
  • TDD cycle: Red → Green using propagate-generated tests

License

Allium is licensed under the MIT License, copyright (c) 2026 JUXT Ltd.

This port adapts the Allium skills for pi.dev. The upstream Allium content (reference documents, skill methodologies) remains the intellectual property of JUXT Ltd under the MIT License. The port adapter files (SKILL.md frontmatter) are also released under MIT.

See LICENSE for full terms.

Attribution

Contributing

If you find issues with the port or have improvements, please open an issue or pull request. For Allium language questions, refer to the upstream repository.

Description
Porting of juxt/allium to Pi.dev. For those who want to be in the intersection of short cycle iterative development (XP) and grounding in formal verification.
Readme MIT 365 KiB
Languages
Shell 100%