allye-pi 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +363 -0
- package/docs/install-pi.md +174 -0
- package/package.json +50 -0
- package/packages/allye-pi/src/index.ts +911 -0
- package/packages/allye-pi/tsconfig.json +13 -0
- package/skills/agent-runtime/SKILL.md +124 -0
- package/skills/agent-runtime/references/herdr.md +154 -0
- package/skills/board-progression/SKILL.md +214 -0
- package/skills/branch-landing/SKILL.md +88 -0
- package/skills/delivery/SKILL.md +187 -0
- package/skills/execution/SKILL.md +390 -0
- package/skills/handover-protocol/SKILL.md +74 -0
- package/skills/handover-protocol/references/correction.md +32 -0
- package/skills/handover-protocol/references/discovery-to-planning.md +44 -0
- package/skills/handover-protocol/references/execution-report.md +42 -0
- package/skills/handover-protocol/references/planning-to-technical.md +42 -0
- package/skills/handover-protocol/references/story-execution.md +74 -0
- package/skills/handover-protocol/references/technical-to-orchestration.md +45 -0
- package/skills/memory-protocol/SKILL.md +323 -0
- package/skills/orchestrator/SKILL.md +247 -0
- package/skills/product-planning/SKILL.md +255 -0
- package/skills/review/SKILL.md +165 -0
- package/skills/sandbox/SKILL.md +62 -0
- package/skills/setup/SKILL.md +225 -0
- package/skills/tdd-workflow/SKILL.md +144 -0
- package/skills/technical-planning/SKILL.md +352 -0
- package/skills/tools-quickref/SKILL.md +303 -0
- package/skills/using-allye/SKILL.md +191 -0
- package/skills/verification-loop/SKILL.md +93 -0
package/README.md
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>Allye Agent Plugin</strong><br>
|
|
3
|
+
<em>Structured workflows and specialized agents for AI coding tools</em>
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="https://github.com/allye-app/allye-plugin/releases"><img src="https://img.shields.io/github/v/release/allye-app/allye-plugin" alt="Release"></a>
|
|
8
|
+
<a href="https://github.com/allye-app/allye-plugin/blob/main/LICENSE"><img src="https://img.shields.io/github/license/allye-app/allye-plugin" alt="License"></a>
|
|
9
|
+
<a href="https://www.npmjs.com/package/allye-opencode"><img src="https://img.shields.io/npm/v/allye-opencode" alt="npm"></a>
|
|
10
|
+
<a href="https://www.npmjs.com/package/allye-pi"><img src="https://img.shields.io/npm/v/allye-pi" alt="npm"></a>
|
|
11
|
+
<img src="https://img.shields.io/badge/Claude_Code-supported-blue" alt="Claude Code">
|
|
12
|
+
<img src="https://img.shields.io/badge/OpenCode-supported-green" alt="OpenCode">
|
|
13
|
+
<img src="https://img.shields.io/badge/Cursor-supported-purple" alt="Cursor">
|
|
14
|
+
<img src="https://img.shields.io/badge/Codex-supported-orange" alt="Codex">
|
|
15
|
+
<img src="https://img.shields.io/badge/Gemini_CLI-supported-red" alt="Gemini CLI">
|
|
16
|
+
<img src="https://img.shields.io/badge/Hermes_Agent-supported-yellow" alt="Hermes Agent">
|
|
17
|
+
<img src="https://img.shields.io/badge/Pi-supported-cyan" alt="Pi">
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
Your AI agent has **68+ tools** but no idea when to use them. Allye adds the methodology layer — structured workflows, specialized agents, cross-session memory, and team-specific skills — so your agent plans before coding, tests before shipping, and remembers what happened yesterday.
|
|
23
|
+
|
|
24
|
+
**[Create a free Allye account →](https://allye.app/)**
|
|
25
|
+
|
|
26
|
+
**Authentication is handled via OAuth 2.1** — on every supported platform, since the MCP connection itself is OAuth-gated. Your browser opens once for login, and tokens are managed automatically.
|
|
27
|
+
|
|
28
|
+
## What you get
|
|
29
|
+
|
|
30
|
+
| | Feature | Description |
|
|
31
|
+
|---|---------|-------------|
|
|
32
|
+
| **Workflow** | Guided delivery | Sandbox → Product Planning → Technical Planning → Orchestrator → Executor → Reviewer (Standards + Spec axes), connected by handovers between fresh, lean-context chats |
|
|
33
|
+
| **Planning** | Discussion phase | Gray areas identified, options presented with trade-offs, decisions captured |
|
|
34
|
+
| **Memory** | Cross-session continuity | Agent searches past context at start, saves session state at end |
|
|
35
|
+
| **TDD** | Test-driven development | Red-Green-Refactor with automatic detection of when TDD applies |
|
|
36
|
+
| **Skills** | Dynamic discovery | Agents find and follow your team's standards automatically — no manual config |
|
|
37
|
+
| **Standards** | Guided creation | No team standards? Agent suggests creating them with your chosen scope |
|
|
38
|
+
| **Boards** | Status progression | Correct transitions: backlog → todo → in_progress → review → done |
|
|
39
|
+
| **Context** | Auto-loaded profile | User context, team info, and preferences injected before first message |
|
|
40
|
+
| **Language** | Multi-language | Agent responds in your language — configs are English, conversations are yours |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Installation
|
|
45
|
+
|
|
46
|
+
### Unified installer (all agents)
|
|
47
|
+
|
|
48
|
+
The fastest path if you have a terminal — one script detects every supported agent on your machine and configures each by the path it actually uses (MCP for agents that fetch it, skills-on-disk for agents that read them from a directory):
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
git clone https://github.com/allye-app/allye-plugin.git
|
|
52
|
+
cd allye-plugin
|
|
53
|
+
./install.sh # every detected agent
|
|
54
|
+
./install.sh status # what is installed, and at which version
|
|
55
|
+
./install.sh install hermes
|
|
56
|
+
./install.sh install pi
|
|
57
|
+
./install.sh uninstall hermes
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Every write is additive and idempotent — your own MCP servers, plugins, and settings in each agent's config survive untouched. See [`docs/install-hermes.md`](docs/install-hermes.md) for Hermes Agent specifically (its OAuth step needs a terminal either way).
|
|
61
|
+
|
|
62
|
+
Prefer the paste-into-agent or marketplace routes below? They still work — the unified installer doesn't replace them for Claude Code, OpenCode, Cursor, Codex, or Gemini CLI.
|
|
63
|
+
|
|
64
|
+
### Claude Code
|
|
65
|
+
|
|
66
|
+
**Step 1 — Install the plugin:**
|
|
67
|
+
```
|
|
68
|
+
/plugin marketplace add allye-app/allye-plugin
|
|
69
|
+
/plugin install allye
|
|
70
|
+
/reload-plugins
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Step 2 — Authenticate:**
|
|
74
|
+
1. Run `/plugin` to open the plugin panel
|
|
75
|
+
2. Find **Allye MCP Server** and click **Connect**
|
|
76
|
+
3. Your browser opens for OAuth login — sign in with your Allye account, select a team, and approve
|
|
77
|
+
4. Done! The MCP server connects automatically
|
|
78
|
+
|
|
79
|
+
> Authentication is handled via OAuth 2.1 — your browser opens once, and tokens are cached automatically.
|
|
80
|
+
|
|
81
|
+
After installing, you get:
|
|
82
|
+
- **OAuth authentication** — browser-based login, no tokens to manage
|
|
83
|
+
- **Bootstrap hook** — injects workflow methodology at session start
|
|
84
|
+
- **5 dispatched subagents** — reviewer-standards, reviewer-spec, deep-search, code-analyzer, executor, delegated via the Agent tool for phases that don't need to pause and ask you anything (executor only runs this way if you opt into automatic mode — manual is the default)
|
|
85
|
+
- **17 skills** — Sandbox, Planning, Technical Planning, Orchestrator, and Delivery run as skills loaded directly into your conversation, loaded on-demand by the bootstrap, so they can ask you questions when something's ambiguous
|
|
86
|
+
- **Parallel delivery, when a runtime is detected** — the Orchestrator can drive several independent stories at once, each in its own git worktree and its own watchable agent process; without a detected runtime, delivery degrades to the existing manual and automatic-subagent modes
|
|
87
|
+
|
|
88
|
+
#### Multiple Allye accounts (multi-tenant)
|
|
89
|
+
|
|
90
|
+
If you use different Allye accounts in different projects (e.g., personal account in `~/dev/myproject` and work account in `~/dev/company`), install the plugin with the **"local" scope** (per-project). Each project directory automatically gets its own OAuth session — no extra configuration needed.
|
|
91
|
+
|
|
92
|
+
1. Open Claude Code in each project directory
|
|
93
|
+
2. Install with local scope: `/plugin install allye` (select "local" when prompted)
|
|
94
|
+
3. Run `/reload-plugins`
|
|
95
|
+
4. Go to `/plugin` → **Connect** on the Allye MCP Server
|
|
96
|
+
5. Log in with the Allye account you want for that project
|
|
97
|
+
|
|
98
|
+
The plugin automatically generates a unique identifier per project directory, so each project authenticates independently. You can use a different Allye account in each project without conflicts.
|
|
99
|
+
|
|
100
|
+
> **Single account users don't need this.** If you only use one Allye account, just install and authenticate — it works out of the box.
|
|
101
|
+
|
|
102
|
+
**To update:** `/plugin update allye` then `/reload-plugins`
|
|
103
|
+
|
|
104
|
+
### OpenCode
|
|
105
|
+
|
|
106
|
+
Paste this into your agent:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Install allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/install-opencode.md
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The agent will configure the MCP server via OAuth and install the `allye-opencode` plugin.
|
|
113
|
+
|
|
114
|
+
After installing, you get:
|
|
115
|
+
- **6 agents in the picker** — Allye, Allye Plan, Allye Orchestrator, Allye Build, Allye Review, Allye Deliver (Ctrl+T to switch)
|
|
116
|
+
- **Auto-loaded context** — your profile and team info injected before every conversation
|
|
117
|
+
- **Dynamic skill discovery** — agents search for your team's standards via MCP
|
|
118
|
+
|
|
119
|
+
**To update:** Paste this into your agent:
|
|
120
|
+
```
|
|
121
|
+
Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-opencode.md
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Cursor
|
|
125
|
+
|
|
126
|
+
Paste this into Cursor's agent chat:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Install allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/install-cursor.md
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
After installing:
|
|
133
|
+
- **MCP server** configured in `~/.cursor/mcp.json`
|
|
134
|
+
- **`.cursorrules`** installed with workflow routing and non-negotiable rules
|
|
135
|
+
|
|
136
|
+
**To update:** Paste this into your agent:
|
|
137
|
+
```
|
|
138
|
+
Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-cursor.md
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Codex (OpenAI)
|
|
142
|
+
|
|
143
|
+
Paste this into Codex:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
Install allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/install-codex.md
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
After installing:
|
|
150
|
+
- **MCP server** configured in `~/.codex/config.toml`
|
|
151
|
+
- **`AGENTS.md`** installed with workflow instructions
|
|
152
|
+
|
|
153
|
+
**To update:** Paste this into your agent:
|
|
154
|
+
```
|
|
155
|
+
Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-codex.md
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Gemini CLI
|
|
159
|
+
|
|
160
|
+
Paste this into Gemini:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
Install allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/install-gemini.md
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
After installing:
|
|
167
|
+
- **MCP server** configured in `~/.gemini/settings.json`
|
|
168
|
+
- **`GEMINI.md`** installed with workflow instructions
|
|
169
|
+
|
|
170
|
+
**To update:** Paste this into your agent:
|
|
171
|
+
```
|
|
172
|
+
Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-gemini.md
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Pi
|
|
176
|
+
|
|
177
|
+
Pi uses the published native package `allye-pi`, while keeping
|
|
178
|
+
`skills/*/SKILL.md` as the only canonical skill source. The installer delegates
|
|
179
|
+
installation to Pi's official package manager and does not edit Pi's
|
|
180
|
+
`settings.json` or MCP configuration:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
./install.sh install pi # production: npm:allye-pi
|
|
184
|
+
./install.sh uninstall pi # removes npm:allye-pi
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Other official Pi sources are available when you choose them explicitly:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
pi install npm:allye-pi
|
|
191
|
+
pi install git:github.com/allye-app/allye-plugin
|
|
192
|
+
ALLYE_PI_INSTALL_SOURCE=local ./install.sh install pi # checkout development only
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
The installer defaults to npm. Use the Git command for a tagged repository
|
|
196
|
+
checkout, and the `local` opt-in only while developing this repository. See
|
|
197
|
+
[`docs/install-pi.md`](docs/install-pi.md) for MCP setup, mode selection, and
|
|
198
|
+
Herdr integration.
|
|
199
|
+
|
|
200
|
+
### Hermes Agent
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
git clone https://github.com/allye-app/allye-plugin.git
|
|
204
|
+
cd allye-plugin
|
|
205
|
+
./install.sh install hermes
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
After installing:
|
|
209
|
+
- **MCP server** configured in `~/.hermes/config.yaml` (OAuth needs a terminal — see [`docs/install-hermes.md`](docs/install-hermes.md))
|
|
210
|
+
- **16 skills** exported to `~/.hermes/skills/allye/` — Hermes reads skills from disk, not over MCP
|
|
211
|
+
- **`allye-bootstrap` plugin** installed and enabled — injects `using-allye` at session start
|
|
212
|
+
|
|
213
|
+
**To update:** `cd allye-plugin && git pull && ./install.sh install hermes`
|
|
214
|
+
|
|
215
|
+
### Manual (all agents)
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
git clone https://github.com/allye-app/allye-plugin.git
|
|
219
|
+
cd allye-plugin
|
|
220
|
+
./install.sh
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Auto-detects every installed agent and configures each one — MCP for agents that fetch skills over it, skills-on-disk for Hermes.
|
|
224
|
+
|
|
225
|
+
**To update:** `cd allye-plugin && git pull && ./install.sh`
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Updating
|
|
230
|
+
|
|
231
|
+
### Claude Code
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
/plugin update allye
|
|
235
|
+
/reload-plugins
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Other agents (agent-assisted)
|
|
239
|
+
|
|
240
|
+
Paste this into your agent's chat:
|
|
241
|
+
|
|
242
|
+
| Agent | Paste this |
|
|
243
|
+
|-------|-----------|
|
|
244
|
+
| OpenCode | `Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-opencode.md` |
|
|
245
|
+
| Cursor | `Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-cursor.md` |
|
|
246
|
+
| Codex | `Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-codex.md` |
|
|
247
|
+
| Gemini CLI | `Update allye-plugin following: https://raw.githubusercontent.com/allye-app/allye-plugin/main/docs/update-gemini.md` |
|
|
248
|
+
| Hermes Agent | see [`docs/update-hermes.md`](docs/update-hermes.md) — run `./install.sh install hermes` after `git pull` |
|
|
249
|
+
|
|
250
|
+
### Manual
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
cd allye-plugin && git pull && ./install.sh
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Agents
|
|
259
|
+
|
|
260
|
+
How multi-phase workflow support is implemented differs by platform, because not every platform lets a dispatched agent pause mid-task to ask you a question:
|
|
261
|
+
|
|
262
|
+
- **Claude Code** ships five dispatched subagents — **Reviewer-Standards**, **Reviewer-Spec**, **Deep Search**, **Code Analyzer**, and **Executor** — for phases that never need to interrupt you (Executor only runs this way if the Orchestrator's automatic mode is chosen for a story; its default is manual). Sandbox, Product Planning, Technical Planning, Orchestrator, and manual-mode Executor run as skills loaded directly into your conversation instead, precisely so they *can* stop and ask when something's ambiguous.
|
|
263
|
+
- **OpenCode** ships 6 agent-picker personas (Ctrl+T to switch) — Allye, Allye Plan, Allye Orchestrator, Allye Build, Allye Review, Allye Deliver — OpenCode's agent model supports switching personas interactively within a session, so all 6 can be full agents. The automatic-Executor dispatch mode is Claude-Code-only for now; OpenCode always runs Executor (Allye Build) as an interactive agent.
|
|
264
|
+
- **Cursor, Codex, Gemini CLI** — a single agent handles all phases with the same workflow knowledge (no multi-agent picker on these platforms).
|
|
265
|
+
- **Hermes Agent** reads skills from a directory (`~/.hermes/skills/allye/`) rather than fetching them over MCP, and gets the `using-allye` bootstrap injected by a small Python plugin at session start instead of a hook — otherwise the same single-agent, same-workflow-knowledge shape as Cursor/Codex/Gemini CLI.
|
|
266
|
+
- **Pi** loads the canonical repository skills through a native Pi package, injects Allye context through the configured MCP adapter, and supports explicit executor or orchestrator mode. Executor mode is the safe default for Hermes-led work; orchestrator mode can drive Herdr through the five-primitive runtime contract.
|
|
267
|
+
|
|
268
|
+
Every phase, on every platform:
|
|
269
|
+
- Responds in **your language** (detected from your messages, falling back to your profile only before you've said anything)
|
|
270
|
+
- Calls `initialize` to load your profile and team context
|
|
271
|
+
- **Discovers team skills** before starting — coding standards, templates, checklists
|
|
272
|
+
- If no standards found → **suggests creating them** with your chosen scope (personal/team/org/marketplace)
|
|
273
|
+
- Searches memories for past decisions and session state
|
|
274
|
+
- Saves session state before ending
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Workflow
|
|
279
|
+
|
|
280
|
+
Each phase runs in its own fresh, lean-context chat. When one finishes, it emits a **handover** — a block of chat text you review and paste as the first message of the next chat, which auto-detects it and loads the right skill.
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
Sandbox → Product Planning → Technical Planning → Orchestrator ⇄ Executor → Reviewer (Standards + Spec)
|
|
284
|
+
↑ |
|
|
285
|
+
└──── next story ───────┘
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Sandbox
|
|
289
|
+
Explore ideas, research before committing to scope, think out loud — no work items created here. Dispatches Deep Search / Code Analyzer subagents for research. Exits with a Discovery Doc once a direction is approved.
|
|
290
|
+
|
|
291
|
+
### Product Planning
|
|
292
|
+
Understand business context → discover team templates → define hierarchy (Epic → Feature → Story) → create work items with acceptance criteria.
|
|
293
|
+
|
|
294
|
+
### Technical Planning
|
|
295
|
+
Get story → **discussion phase** (identify gray areas, present options with trade-offs, capture locked decisions) → create tasks with dependency waves.
|
|
296
|
+
|
|
297
|
+
### Orchestrator
|
|
298
|
+
Coordinates delivery of an already-planned feature: manages assignee and status, dispatches **Executor**, dispatches **Reviewer-Standards** and **Reviewer-Spec** in parallel once a report comes back, runs the correction loop, and cascades status up the work-item hierarchy. With a detected agent runtime (Herdr), it can dispatch several independent stories at once, each in its own git worktree and its own watchable agent process; without one, it falls back to one story at a time (manual handover, or automatic subagent dispatch — your choice per story).
|
|
299
|
+
|
|
300
|
+
### Executor
|
|
301
|
+
Implements exactly one story's tasks with TDD (Red → Green → Refactor). Runs either as an interactive skill (manual mode, can ask you questions) or as a dispatched subagent (automatic mode — halts and reports back instead of guessing when a task is underspecified).
|
|
302
|
+
|
|
303
|
+
### Reviewer — two axes
|
|
304
|
+
Two independent passes, dispatched together and never merged: **reviewer-standards** checks how the code is written (conventions, security, test quality), **reviewer-spec** checks whether it's what was asked for (acceptance criteria against the verification evidence, locked decisions, unrequested scope). Always dispatched automatically in parallel, since review never needs to pause and ask anyone anything. A ❌ on either axis triggers a correction round — one axis passing never offsets the other failing.
|
|
305
|
+
|
|
306
|
+
### Delivery
|
|
307
|
+
Once an epic's whole status cascade completes, the Orchestrator offers — never forces — a close-out: verify all tasks done, update documentation, clean up TODOs, save a delivery memory. A deliberate step, not an automatic one.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Skills
|
|
312
|
+
|
|
313
|
+
Skills are the knowledge base that powers the agents. 16 workflow skills are published in the **Allye marketplace** — available to all users without setup (`setup` itself is Claude Code's local install-time skill and isn't marketplace-published).
|
|
314
|
+
|
|
315
|
+
| Skill | What it teaches |
|
|
316
|
+
|-------|----------------|
|
|
317
|
+
| `using-allye` | Bootstrap — memory protocol, skill routing, handover detection, workflow gates |
|
|
318
|
+
| `sandbox` | Explore ideas, research a direction, exit with a Discovery Doc — no work items created |
|
|
319
|
+
| `product-planning` | Business requirements → Epics → Features → Stories |
|
|
320
|
+
| `technical-planning` | Story → Discussion Phase → Tasks with acceptance criteria |
|
|
321
|
+
| `orchestrator` | Coordinate delivery — assignee, dispatch Executor/Reviewer (both axes), correction loop, status cascade |
|
|
322
|
+
| `execution` | Task → TDD → Implementation with wave execution |
|
|
323
|
+
| `review` | Code review with decision context from planning |
|
|
324
|
+
| `delivery` | Verify → Close story → Update docs → Save memory |
|
|
325
|
+
| `handover-protocol` | The shared contract for handing off context between phases as chat text |
|
|
326
|
+
| `memory-protocol` | When and how to search/save memories across sessions |
|
|
327
|
+
| `tdd-workflow` | Red-Green-Refactor cycle with detection heuristic |
|
|
328
|
+
| `board-progression` | Status transitions and board mechanics |
|
|
329
|
+
| `tools-quickref` | Complete reference for all 12 MCP tools and 68+ actions |
|
|
330
|
+
| `verification-loop` | Deriving the AFK/HITL label from whether every task has a runnable verification command |
|
|
331
|
+
| `agent-runtime` | The five-primitive contract for driving an external agent runtime (Herdr), for parallel dispatch |
|
|
332
|
+
| `branch-landing` | Decide how a finished branch lands — merge, PR, or leave it — and tear down without losing work |
|
|
333
|
+
|
|
334
|
+
### Custom team skills
|
|
335
|
+
|
|
336
|
+
Your team can create custom skills in Allye — agents discover and follow them automatically:
|
|
337
|
+
|
|
338
|
+
- **Code review checklist** → Allye Review follows it
|
|
339
|
+
- **Backend story standard** → Allye Plan uses it as template
|
|
340
|
+
- **Deploy checklist** → Allye Deliver follows it
|
|
341
|
+
- **Coding conventions** → Allye Build applies them
|
|
342
|
+
|
|
343
|
+
No team skills yet? Each agent will suggest creating them when it doesn't find standards for its domain.
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## Prerequisites
|
|
348
|
+
|
|
349
|
+
- An [Allye](https://allye.app/) account — authentication is OAuth 2.1 on every platform (the MCP connection itself is OAuth-gated)
|
|
350
|
+
- At least one supported AI coding agent installed
|
|
351
|
+
- `jq` and `curl` (used by the installer and Claude Code hook)
|
|
352
|
+
|
|
353
|
+
## Contributing
|
|
354
|
+
|
|
355
|
+
Issues and PRs are welcome. Open an issue first for anything beyond a small fix, so the approach can be agreed on before you write code. PRs are reviewed before merge — expect feedback, and please keep unrelated changes out of a single PR.
|
|
356
|
+
|
|
357
|
+
## Roadmap
|
|
358
|
+
|
|
359
|
+
Today, Allye Agent Plugin is built around the Allye workspace. The long-term direction is to make the workflow layer (planning, orchestration, TDD, memory) work with other backends too — issue trackers like Jira and Linear, and memory stores like Obsidian or other local options — so teams can keep their existing tools and still get the methodology layer on top. Nothing here is scheduled yet; treat it as direction, not a commitment.
|
|
360
|
+
|
|
361
|
+
## License
|
|
362
|
+
|
|
363
|
+
MIT
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Install Allye for Pi
|
|
2
|
+
|
|
3
|
+
The Pi adapter is a thin native Pi package. It does not copy workflow skills or
|
|
4
|
+
replace Pi's MCP configuration:
|
|
5
|
+
|
|
6
|
+
- `skills/*/SKILL.md` in this repository remains the canonical skill source;
|
|
7
|
+
- the adapter exposes that directory through Pi's `resources_discover` event;
|
|
8
|
+
- Allye context and memory are loaded through the already configured `allye`
|
|
9
|
+
MCP server via `pi-mcp-adapter`;
|
|
10
|
+
- Herdr is exposed only in explicit Pi orchestrator mode.
|
|
11
|
+
|
|
12
|
+
## Official package sources
|
|
13
|
+
|
|
14
|
+
### npm (default production install)
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
./install.sh install pi
|
|
18
|
+
# equivalent to:
|
|
19
|
+
pi install npm:allye-pi
|
|
20
|
+
|
|
21
|
+
./install.sh uninstall pi
|
|
22
|
+
# equivalent to:
|
|
23
|
+
pi remove npm:allye-pi
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The installer delegates installation and persistence to Pi's official package
|
|
27
|
+
manager. It never edits `~/.pi/agent/settings.json` manually and the default
|
|
28
|
+
source is always the published npm package. Restart Pi (or run `/reload`) after
|
|
29
|
+
installation.
|
|
30
|
+
|
|
31
|
+
### Git
|
|
32
|
+
|
|
33
|
+
Use Git when you want Pi to install the repository package directly, preferably
|
|
34
|
+
at a tag for reproducibility:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
pi install git:github.com/allye-app/allye-plugin
|
|
38
|
+
pi remove git:github.com/allye-app/allye-plugin
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This is separate from `./install.sh install pi`, which intentionally remains an
|
|
42
|
+
npm install.
|
|
43
|
+
|
|
44
|
+
### Local checkout (development only)
|
|
45
|
+
|
|
46
|
+
A checkout path is supported, but only through an explicit opt-in so a normal
|
|
47
|
+
production install cannot accidentally load uncommitted code:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
cd /path/to/allye-plugin
|
|
51
|
+
ALLYE_PI_INSTALL_SOURCE=local ./install.sh install pi
|
|
52
|
+
ALLYE_PI_INSTALL_SOURCE=local ./install.sh uninstall pi
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
That delegates to `pi install /absolute/path/to/allye-plugin` and
|
|
56
|
+
`pi remove /absolute/path/to/allye-plugin`. Pi manages the package settings and
|
|
57
|
+
runtime dependencies in every case; `skills/*/SKILL.md` remains the single
|
|
58
|
+
canonical skill tree.
|
|
59
|
+
|
|
60
|
+
The installer deliberately does **not** edit any MCP file. Relative project
|
|
61
|
+
paths are resolved from the installer `PWD`, or from `ALLYE_PI_PROJECT_DIR` when
|
|
62
|
+
installing for a different project. Configure Allye in
|
|
63
|
+
one of the sources supported by `pi-mcp-adapter`: project `.mcp.json` or
|
|
64
|
+
`.pi/mcp.json`, `~/.config/mcp/mcp.json`, `~/.agents/mcp.json`, `~/.agents/mcp/mcp.json`, or
|
|
65
|
+
`~/.pi/agent/mcp.json` (or `$PI_CODING_AGENT_DIR/mcp.json` when that Pi
|
|
66
|
+
override is set). For example, use an
|
|
67
|
+
`allye` server pointing to `https://mcp.allye.app/mcp/<tenant-slug>`.
|
|
68
|
+
Authenticate with `/mcp-auth allye` when required. Existing MCP servers are
|
|
69
|
+
preserved. `./install.sh install pi` reports the first supported source that
|
|
70
|
+
already contains Allye and warns only when none does.
|
|
71
|
+
|
|
72
|
+
Both npm and Git packages use the root Pi manifest and let Pi install
|
|
73
|
+
`pi-mcp-adapter` as a runtime dependency. The npm tarball contains the adapter
|
|
74
|
+
source, canonical `skills/` directory, and Pi documentation; it is not the full
|
|
75
|
+
plugin checkout and is not the installer input.
|
|
76
|
+
|
|
77
|
+
## Modes
|
|
78
|
+
|
|
79
|
+
Pi is an executor by default, which is the safe mode when Hermes is the master.
|
|
80
|
+
The mode can be selected before starting a session:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
ALLYE_PI_MODE=executor pi
|
|
84
|
+
ALLYE_PI_MODE=orchestrator pi
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`ALLYE_ORCHESTRATOR=hermes` always forces executor mode. Pi orchestrator mode
|
|
88
|
+
also requires both `ALLYE_ORCHESTRATION_RUN_ID` and `ALLYE_WORK_ITEM_KEY`; an
|
|
89
|
+
explicit local lock is acquired before `allye_runtime` becomes active. The claim
|
|
90
|
+
contains run/work-item identity, PID, session identity when available, a nonce,
|
|
91
|
+
and a 30-minute lease. Normal `session_shutdown` aborts waits and removes only
|
|
92
|
+
the exact claim owned by that instance. If a process crashes, recovery is
|
|
93
|
+
disabled by default; after confirming the recorded local PID is gone and the
|
|
94
|
+
lease expired, set `ALLYE_PI_RECOVER_STALE_LOCK=1` to quarantine and replace the
|
|
95
|
+
lock. Active, unreadable, changed, or inconclusive locks fail closed. In a
|
|
96
|
+
session, `/allye-mode executor` and `/allye-mode orchestrator` change the active
|
|
97
|
+
mode only when the same guard succeeds. Only orchestrator mode enables the
|
|
98
|
+
`allye_runtime` tool.
|
|
99
|
+
|
|
100
|
+
### Pi orchestrator
|
|
101
|
+
|
|
102
|
+
With `ALLYE_PI_MODE=orchestrator`, Pi coordinates the canonical workflow and may
|
|
103
|
+
use `allye_runtime` for Herdr's `detect`, `spawn`, `dispatch`, `wait`, and
|
|
104
|
+
Allye-backed `collect` operations. Parallel stories require separate worktrees;
|
|
105
|
+
the pane cwd remains the plugin-enabled repository root and absolute worktree
|
|
106
|
+
paths are placed in each briefing. The adapter does not create work items or change statuses automatically.
|
|
107
|
+
Status updates by an assigned executor remain allowed through the canonical
|
|
108
|
+
`execution` skill; pane/dispatch ownership is separate from status ownership.
|
|
109
|
+
|
|
110
|
+
### Pi executor / Hermes master
|
|
111
|
+
|
|
112
|
+
In executor mode, Pi reads the handed-over story/tasks, implements only that
|
|
113
|
+
scope, follows the canonical `execution` skill, and may advance its assigned
|
|
114
|
+
tasks to `in_progress` and `review` when the work and verification are complete.
|
|
115
|
+
It does not create or dispatch panes, assume orchestration, or change scope.
|
|
116
|
+
Hermes can remain the master and dispatch Pi or another agent through Herdr; Pi
|
|
117
|
+
and Hermes must not orchestrate the same work item simultaneously.
|
|
118
|
+
|
|
119
|
+
## Existing Pi startup extension
|
|
120
|
+
|
|
121
|
+
This package includes its own Allye bootstrap. If a user already has a separate
|
|
122
|
+
`allye-memory-startup.ts`, both can be loaded without changing global files, but
|
|
123
|
+
startup context may be fetched twice. To keep the existing global bootstrap as
|
|
124
|
+
the only startup fetcher, set `ALLYE_PI_NATIVE_BOOTSTRAP=0`; canonical skill
|
|
125
|
+
loading, mode handling, team-selection guidance, and the Herdr guard remain
|
|
126
|
+
available.
|
|
127
|
+
|
|
128
|
+
When `initialize` reports multiple teams without an active team, the adapter does
|
|
129
|
+
not choose one silently and skips team-scoped memory search. If initialization
|
|
130
|
+
fails or its payload is unreadable, the bootstrap is also fail-closed and marks
|
|
131
|
+
Allye as unavailable rather than pretending a team is resolved. It injects the
|
|
132
|
+
team list or connectivity error and instructs the agent to use `allye_team` with
|
|
133
|
+
`team_switch` first. In an interactive session, `/allye-team <name|prefix|id>`
|
|
134
|
+
is available; in headless mode the same instruction is injected for the
|
|
135
|
+
model/user to follow.
|
|
136
|
+
|
|
137
|
+
## Local development
|
|
138
|
+
|
|
139
|
+
From the repository root:
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
npm install
|
|
143
|
+
npm run typecheck
|
|
144
|
+
npm run test:pi
|
|
145
|
+
./install.sh status
|
|
146
|
+
jq -e '.pi.extensions and (.pi.skills == ["./skills"])' package.json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
The extension is at `packages/allye-pi/src/index.ts`. Test it without changing
|
|
150
|
+
Pi's global settings with:
|
|
151
|
+
|
|
152
|
+
```text
|
|
153
|
+
pi -e ./packages/allye-pi/src/index.ts -p "Report the active Allye mode"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
When `allye_runtime dispatch` registers a wait, the wait runs inside the Pi
|
|
157
|
+
process through managed `pi.exec`. On settlement it persists a durable session
|
|
158
|
+
entry, shows a UI notification/message when available, and queues a follow-up
|
|
159
|
+
turn to the Pi orchestrator. That message is evidence only and explicitly tells
|
|
160
|
+
the orchestrator to run `allye_runtime collect` and inspect Allye
|
|
161
|
+
`work_children`, Review memories, and Implementation memories before declaring
|
|
162
|
+
completion. Normal completion, timeout, error, and abort are distinguished.
|
|
163
|
+
Manual `herdr agent wait` commands started outside this Pi session (for example
|
|
164
|
+
with `nohup` or Bash) do not wake Pi and do not generate this notification.
|
|
165
|
+
|
|
166
|
+
A real Herdr dispatch still requires `HERDR_ENV=1`, a compatible Herdr session,
|
|
167
|
+
an existing isolated worktree, explicit orchestrator mode, and an orchestration
|
|
168
|
+
run/work-item claim. Pi records workspace/tab/pane/agent ownership in memory for
|
|
169
|
+
future safe teardown; it never adopts foreign panes, stops Herdr, closes panes,
|
|
170
|
+
merges, pushes, or publishes. The lock is local to the Pi checkout/agent
|
|
171
|
+
configuration and is **not** a distributed Allye lock: Hermes and Pi must still
|
|
172
|
+
coordinate the run externally when operating on different machines/process
|
|
173
|
+
homes. A stale lock can be manually investigated using its PID, lease, and owner
|
|
174
|
+
token; automatic recovery is intentionally opt-in.
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "allye-pi",
|
|
3
|
+
"version": "1.5.1",
|
|
4
|
+
"description": "Pi package adapter for the canonical Allye workflow",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"pi-package",
|
|
8
|
+
"allye",
|
|
9
|
+
"workflow"
|
|
10
|
+
],
|
|
11
|
+
"files": [
|
|
12
|
+
"packages/allye-pi/src/index.ts",
|
|
13
|
+
"packages/allye-pi/tsconfig.json",
|
|
14
|
+
"skills",
|
|
15
|
+
"docs/install-pi.md",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"pi": {
|
|
19
|
+
"extensions": [
|
|
20
|
+
"./packages/allye-pi/src/index.ts"
|
|
21
|
+
],
|
|
22
|
+
"skills": [
|
|
23
|
+
"./skills"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"pi-mcp-adapter": "^2.23.0"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@earendil-works/pi-coding-agent": ">=0.84.0",
|
|
31
|
+
"typebox": "*"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@earendil-works/pi-coding-agent": "^0.84.1",
|
|
35
|
+
"@types/node": "^22.0.0",
|
|
36
|
+
"typebox": "^1.3.3",
|
|
37
|
+
"typescript": "^5.9.0"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"typecheck": "tsc --noEmit -p packages/allye-pi/tsconfig.json",
|
|
41
|
+
"test:pi": "node --experimental-strip-types --test packages/allye-pi/src/index.test.ts",
|
|
42
|
+
"test:installer": "bash install/test-pi.sh"
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/allye-app/allye-plugin",
|
|
47
|
+
"directory": "."
|
|
48
|
+
},
|
|
49
|
+
"license": "MIT"
|
|
50
|
+
}
|