Pi: The Reusable Team Skill
Encode a multi-step task once as an Agent Skill your whole team installs.
Run this workflow
CI-verified, 4/4 fixtures passing.
Build this with your agent
One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.
Intended Use
Teams who want a repeated task (e.g. triage a failing test) encoded once as a SKILL.md and run the same way every time, then bundled into a Pi package everyone installs with one command.
Not for
- One-off tasks that don't have repeatable steps
- Anyone unwilling to bring their own model key/subscription
The Stack
Tested Against
pi@0.74node@20.xSide effects & data flow
- Network
- your model provider, only in the non-CI run step, git host, only when installing a shared pack
- Writes
- <pi config dir>/skills/triage-failing-test/SKILL.md
- Credentials
- model API key/subscription, for the run step only
Data privacy
- your model provider, only in the non-CI run step ← the test output and code the skill reads (retention: per that provider's API policy)
Prerequisites
- Pi (MIT): `npm install -g --ignore-scripts @earendil-works/pi-coding-agent`
- A model key/subscription (only needed to run the skill)
- A git repo/package to share the skill (for `pi install git:…`)
Steps
- 1
Scaffold the SKILL.md at Pi's skill-discovery path
CI writes the skill to Pi's documented skills directory (`<config>/skills/<name>/SKILL.md`) with its required H1 heading, and confirms Pi's `install` subcommand exists (so the shared-package command is well-formed) — the deterministic half of 'encode once, share with one command.'
export PI_CODING_AGENT_DIR="$PWD/.pi" pi --version >/dev/null || { echo "pi missing"; exit 1; } mkdir -p "$PI_CODING_AGENT_DIR/skills/triage-failing-test" cat > "$PI_CODING_AGENT_DIR/skills/triage-failing-test/SKILL.md" <<'EOF' # Triage Failing Test Use this skill when the user asks to triage a failing test. ## Steps 1. Run the test suite and find the first failing test. 2. Read that test and the code it exercises. 3. Explain the likely root cause and propose the smallest fix. EOF test -s "$PI_CODING_AGENT_DIR/skills/triage-failing-test/SKILL.md" && echo "skill scaffolded: skills/triage-failing-test/SKILL.md" head -1 "$PI_CODING_AGENT_DIR/skills/triage-failing-test/SKILL.md" | grep -q "^# Triage Failing Test" && echo "skill has required H1 heading" pi install --help | grep -qi "Install a package" && echo "pi supports install subcommand (pi install git:github.com/org/pack)" - 2
Run and share it (the model step, not checked by CI)
Invoke with `/skill:triage-failing-test`, or let Pi auto-load it when the task matches. Share by bundling skills/prompts into a package: `pi install git:github.com/your-org/your-pi-pack` then `pi list`. The agent executing the skill calls a model, so CI doesn't run it.
Eval, 4 fixtures
Last passed: verified todayskill-scaffoldedcontainstimeout 60s · max $0Expected:
skill scaffolded: skills/triage-failing-test/SKILL.mdskill-headingcontainstimeout 60s · max $0Expected:
skill has required H1 headingpi-installcontainstimeout 60s · max $0Expected:
pi supports install subcommandclean-exitexit_codetimeout 60s · max $0Expected:
0
Results
Share a playbook your team installs with one command, from the WebAfterAI guide.
Did this work for you?
Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.
Related workflows
- One AGENTS.md, no drift: prove CLAUDE.md is a real symlink and the generated files are in sync
- Self-host CodeWiki on private code: validate the config before you spend tokens
- Run GLM-5.2 for the bulk, escalate the hard turns to Opus 4.8
- codebase-memory-mcp: wire the knowledge graph, stop re-reading files
- OrcaRouter for coding: judge by passing tests, not by vibes
- Kilo Code: add an MCP tool and bind it to one mode
Liked this workflow?
Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).