# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Port of [allium](https://github.com/juxt/allium) (a Claude Code plugin by JUXT) to [pi.dev](https://pi.dev), keeping upstream files by reference (symlinks) rather than forking. Test target: the [turn-limit extension](https://gitea.apps.sustainabledelivery.com/QWAN/monotonic-pi-extensions). See `allium-port-plan.md` for the full phased plan and task checklist. ## Architecture ``` pi-allium-port/ ├── allium-main/ ← git clone of juxt/allium (upstream, read-only) ├── turn-limit/ ← symlink to turn-limit-repo/packages/pi-turn-limit ├── .pi/skills/ ← pi.dev skill definitions (the port output) │ ├── allium/SKILL.md ← root skill, routing table │ ├── elicit/SKILL.md ← elicitation sub-skill │ ├── distill/SKILL.md ← distillation sub-skill │ └── propagate/SKILL.md ← propagation sub-skill └── allium-port-plan.md ← plan and checklist ``` Each skill's `references/` directory symlinks to the corresponding upstream directory in `allium-main/`. ## Key platform differences (Claude Code → Pi.dev) - Skill location: `.pi/skills/{name}/SKILL.md` (not `.claude-plugin/`) - Invocation: `/skill:name` (not `/name` or `/name:sub`) - Frontmatter: uses `disable-model-invocation`, `license`, `metadata` (not `auto_trigger`, `version`) - No native agent or hook support in pi.dev — workarounds needed for tend/weed agents and allium-check validation - Rules content must be inlined into SKILL.md or references (no glob-triggered rules) ## Commands Pi.dev is invoked with `pi -p` to load project skills from `.pi/skills/`. Default model: `Qwen3.6-35B-A3B-MXFP4_MOE.gguf` via llama.cpp at `http://127.0.0.1:8000/v1`. ## Conventions - Symlinks must use relative paths so they resolve on any machine with `allium-main/` cloned in the same position - Allium language version is 3 (check `allium-main/VERSION`) - When adapting upstream SKILL.md files, preserve the body content and only change frontmatter and invocation references