allye-pi 1.8.0 → 2.0.0

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.
Files changed (53) hide show
  1. package/README.md +75 -271
  2. package/bootstrap/allye.md +30 -0
  3. package/docs/install-omp.md +31 -0
  4. package/docs/install-pi.md +21 -125
  5. package/package.json +10 -5
  6. package/packages/allye-pi/src/index.ts +88 -782
  7. package/skills/bridge/SKILL.md +105 -0
  8. package/skills/bridge/references/crew.md +20 -0
  9. package/skills/bridge/references/delegation.md +174 -0
  10. package/skills/bridge/references/discovery.md +71 -0
  11. package/skills/bridge/references/publish.md +90 -0
  12. package/skills/bridge/references/state-contract.md +109 -0
  13. package/skills/bridge/references/workflow.md +132 -0
  14. package/skills/bridge-architect/SKILL.md +96 -0
  15. package/skills/bridge-architect/references/spec-template.md +90 -0
  16. package/skills/bridge-armorer/SKILL.md +103 -0
  17. package/skills/bridge-copilot/SKILL.md +74 -0
  18. package/skills/bridge-dispatcher/SKILL.md +96 -0
  19. package/skills/bridge-dispatcher/references/spec-template-minimal.md +53 -0
  20. package/skills/bridge-medic/SKILL.md +81 -0
  21. package/skills/bridge-optimizer/SKILL.md +68 -0
  22. package/skills/bridge-pilot/SKILL.md +69 -0
  23. package/skills/bridge-pilot/references/mocking.md +57 -0
  24. package/skills/bridge-pilot/references/tdd.md +42 -0
  25. package/skills/bridge-pilot/references/tests.md +60 -0
  26. package/skills/bridge-recon/SKILL.md +82 -0
  27. package/skills/bridge-shield/SKILL.md +73 -0
  28. package/skills/bridge-strategist/SKILL.md +92 -0
  29. package/skills/bridge-watcher/SKILL.md +73 -0
  30. package/skills/agent-runtime/SKILL.md +0 -129
  31. package/skills/agent-runtime/references/herdr.md +0 -184
  32. package/skills/board-progression/SKILL.md +0 -214
  33. package/skills/branch-landing/SKILL.md +0 -88
  34. package/skills/delivery/SKILL.md +0 -187
  35. package/skills/execution/SKILL.md +0 -396
  36. package/skills/handover-protocol/SKILL.md +0 -74
  37. package/skills/handover-protocol/references/correction.md +0 -32
  38. package/skills/handover-protocol/references/discovery-to-planning.md +0 -44
  39. package/skills/handover-protocol/references/execution-report.md +0 -42
  40. package/skills/handover-protocol/references/planning-to-technical.md +0 -42
  41. package/skills/handover-protocol/references/story-execution.md +0 -74
  42. package/skills/handover-protocol/references/technical-to-orchestration.md +0 -45
  43. package/skills/memory-protocol/SKILL.md +0 -319
  44. package/skills/orchestrator/SKILL.md +0 -249
  45. package/skills/product-planning/SKILL.md +0 -257
  46. package/skills/review/SKILL.md +0 -165
  47. package/skills/sandbox/SKILL.md +0 -62
  48. package/skills/setup/SKILL.md +0 -226
  49. package/skills/tdd-workflow/SKILL.md +0 -144
  50. package/skills/technical-planning/SKILL.md +0 -354
  51. package/skills/tools-quickref/SKILL.md +0 -307
  52. package/skills/using-allye/SKILL.md +0 -171
  53. package/skills/verification-loop/SKILL.md +0 -93
@@ -1,214 +0,0 @@
1
- ---
2
- name: board-progression
3
- description: Rules for moving work items between statuses in Allye boards. Covers work_status_next, work_status_done, and status categories.
4
- version: "1.2"
5
- category: methodology
6
- ---
7
-
8
- # Board Progression
9
-
10
- How to move work items between statuses on Allye boards, correctly.
11
-
12
- ---
13
-
14
- ## 1. Status Categories vs. Status Names
15
-
16
- The MCP client can only **confirm** 4 status categories — `work_statuses()` (`work_items.py`) groups every status under a hardcoded `category_order`:
17
-
18
- | Category (confirmed) | Meaning |
19
- |----------|---------|
20
- | `proposed` | Not yet started (backlog/todo-like) |
21
- | `in_progress` | Actively being worked on |
22
- | `done` | Completed and verified |
23
- | `cancelled` | Will not be done |
24
-
25
- That's the only taxonomy the MCP client source guarantees. Specific status **names** are team-configurable `WorkflowStatus` records mapped onto those 4 categories via board columns — not enumerable or guaranteed from the client code alone, and a given team's board may use different names or skip some of them.
26
-
27
- ### The team's pipeline is data. Read it.
28
-
29
- Allye is multi-tenant. Four presets ship — Solo, Startup, Standard, Enterprise — and every
30
- team customises from there, so **there is no status list to memorise and no ordering to
31
- assume.** A skill that names a status has guessed about somebody else's board.
32
-
33
- Only three things are stable enough to build a rule on:
34
-
35
- | Stable | Why |
36
- |---|---|
37
- | The four categories: `proposed`, `in_progress`, `done`, `cancelled` | A schema enum. Every status maps to exactly one. |
38
- | The three pipelines: `product`, `engineering`, `shared` | A schema enum. `product` carries epics and features; `engineering` carries stories and below; `shared` holds the terminal states. |
39
- | The board's own ordering | Whatever it is, it is what `work_status_next` walks. |
40
-
41
- Discover the rest:
42
-
43
- ```
44
- work_statuses() → every status the team has, grouped by category, in position order
45
- board_columns() → the columns of a specific board
46
- ```
47
-
48
- **Two things `work_statuses()` does not tell you today**, and planning around them is the
49
- difference between a working transition and a surprised one:
50
-
51
- - **`position`, `pipeline`, and `description` are not returned.** They exist on the record —
52
- the seed writes all three — but the MCP formatter emits only name, key, id, and colour.
53
- - **`board_columns()` returns names and ids only** — no status-to-column mapping and no
54
- ordering. The visible subset a given board shows cannot be reconstructed from it.
55
-
56
- Together these mean **you cannot reliably predict the next status.** So do not:
57
-
58
- <HARD-GATE>
59
- Move one status at a time, then **read back** the status you actually landed on. Never
60
- assume a transition took you where you expected, and never chain several moves on a
61
- prediction. One extra read per transition costs nothing next to a cascade that silently
62
- skipped four gates.
63
- </HARD-GATE>
64
-
65
- For reference only, these are the eighteen statuses the presets seed — **an example of one
66
- tenant's configuration, not a list to code against**: `idea`, `researching`, `designing`,
67
- `specifying`, `backlog`, `todo`, `in_progress`, `code_review`, `security_scan`, `qa_testing`,
68
- `doc_review`, `deploy_staging`, `qa_staging`, `deploy_preprod`, `qa_preprod`, `deploy_prod`,
69
- `done`, `cancelled`.
70
-
71
- ---
72
-
73
- ## 2. How `work_status_next` Works
74
-
75
- `work_status_next` moves a work item to the **next logical status** in the board progression.
76
-
77
- ### Resolution logic
78
-
79
- 1. Collects all visible statuses from non-archived boards
80
- 2. Orders them by: `board.position → column.position → BoardColumnStatus.position`
81
- 3. Deduplicates: first occurrence wins
82
- 4. Finds the current status in this ordered list
83
- 5. Moves to the next status in the list
84
-
85
- ### Edge cases
86
-
87
- | Situation | Behavior |
88
- |-----------|----------|
89
- | Current status is NOT in any visible board | Moves to the **first** status in the list |
90
- | Current status is the **last** in the list | Returns an **error** — cannot move forward |
91
- | Item has no status set | Moves to the **first** status in the list |
92
-
93
- ### When to use
94
-
95
- ```
96
- work_status_next(id: "{work item uuid}")
97
- ```
98
-
99
- Use it for **forward progression**, one status at a time, as each step's work actually finishes — how progression differs by pipeline and item type is in §5.
100
-
101
- ### When NOT to use
102
-
103
- - Don't use to skip statuses (e.g., backlog → done)
104
- - Don't use to go backward — there is no `work_status_prev`
105
- - Don't call repeatedly to "fast forward" through multiple statuses without doing the actual work
106
-
107
- ---
108
-
109
- ## 3. How `work_status_done` Works
110
-
111
- `work_status_done` moves a work item directly to the "done" status, regardless of its current position.
112
-
113
- ### Resolution logic
114
-
115
- 1. Looks for a status mapped to a column with `is_done_column = true`
116
- 2. Fallback: picks the first status with `category === "done"`
117
- 3. Sets `completed_at = now()` on the work item
118
-
119
- ### When to use
120
-
121
- ```
122
- work_status_done(id: "{work item uuid}")
123
- ```
124
-
125
- Use this when work is **fully complete and verified**:
126
- - All acceptance criteria are met
127
- - Tests pass
128
- - Review is approved (if applicable)
129
-
130
- <HARD-GATE>
131
- Do NOT call work_status_done unless the work is genuinely complete.
132
- "Almost done" is not done. "Tests are mostly passing" is not done.
133
- Verify all acceptance criteria before marking an item as done.
134
- </HARD-GATE>
135
-
136
- ---
137
-
138
- ## 3.1 Where an agent's authority ends
139
-
140
- > **An agent drives everything that is verification. It stops at the first gate that changes
141
- > the world outside the repository.**
142
-
143
- Deploying does that. Verifying does not. The rule survives renaming because it describes what
144
- a gate *is*, not what it is called — which is the only kind of rule that works when every
145
- team configures its own statuses.
146
-
147
- In practice, on the seeded presets: reviewing, scanning, testing, and updating docs are all
148
- verification and all satisfiable by an agent. Every deploy stage, and any validation
149
- performed in a deployed environment, is not.
150
-
151
- <HARD-GATE>
152
- `work_status_done` is **not** the exit from a pipeline an agent cannot finish. Calling it
153
- from four statuses away records "done" for work that never passed the gates in between.
154
-
155
- Use it only when the item's next status **is** the done status. Otherwise stop at the last
156
- gate you satisfied and say plainly which gate is next and who owns it.
157
- </HARD-GATE>
158
-
159
- An unrecognised status is treated as a stop, not a pass. Ask once who satisfies it, record
160
- the answer in the team's delivery configuration, and never ask again.
161
-
162
- ---
163
-
164
- ## 4. Checking Available Statuses
165
-
166
- Before moving items, understand what statuses exist:
167
-
168
- ### List all statuses
169
-
170
- ```
171
- work_statuses()
172
- ```
173
-
174
- Returns all available statuses with their categories and names.
175
-
176
- ### View board columns
177
-
178
- ```
179
- board_columns()
180
- ```
181
-
182
- Returns the board's columns for the given `board_id` — each rendered as `- {column name} (ID: {column id})`. Note: this tool's text output does not surface which statuses map to which column, nor an explicit ordering field (`boards.py`'s `board_columns` action only formats `name` and `id` per column) — that richer structure may exist in the underlying API but isn't exposed here. Use it to confirm which columns exist on a board; pair it with `work_statuses()` for status names/categories.
183
-
184
- ---
185
-
186
- ## 5. Progression Patterns by Item Type
187
-
188
- Progression differs by pipeline, not only by type. **Epics and features live on the `product`
189
- pipeline; stories, bugs, hotfixes, tasks, spikes, and subtasks live on `engineering`.** A
190
- cascade from task to epic therefore crosses pipelines, and the statuses available on each side
191
- are different sets.
192
-
193
- What holds regardless of the team's configuration:
194
-
195
- - **Parents move because children moved.** A story advances when its tasks do; a feature when
196
- its stories do; an epic when its features do. Never the other way round.
197
- - **A parent never reaches the done category while any child is outside it.** This is the one
198
- rule that failed in practice: a story closed with seven of fifteen tasks still mid-pipeline,
199
- because closing it was the only exit the flow offered. Stopping is the exit.
200
- - **The Executor advances a task only to the first review gate.** The move past that is the
201
- Orchestrator's, after review clears — see `orchestrator` §6.
202
-
203
- ---
204
-
205
- ## 6. Common Mistakes
206
-
207
- | Mistake | Why it's wrong | Do this instead |
208
- |---------|---------------|-----------------|
209
- | Moving story to done before all tasks are done | Misrepresents progress | Check `work_children` first — all tasks must be done |
210
- | Marking a task done as soon as its own tests pass | Done requires review approval, not just green tests | `work_status_next` once, to the first review gate, and stop; the Orchestrator carries it from there — see §3.1 |
211
- | Skipping statuses with repeated `work_status_next` | Loses tracking fidelity | Only advance when the work for that status is actually complete |
212
- | Moving to in_progress without planning | No tasks = no accountability | Run Technical Planning first, create tasks, then advance |
213
- | Forgetting to check board structure | Different teams may have different progressions | Always check `board_columns` if unsure about available statuses |
214
- | Moving a cancelled item to done | Contradictory | Cancelled items stay cancelled |
@@ -1,88 +0,0 @@
1
- ---
2
- name: branch-landing
3
- description: Decide and execute what happens to a branch once its work is done — merge, open a pull request, or leave it — then tear down the worktree and pane without losing anything. Use when a story's implementation is complete, or when another skill needs the teardown sequence.
4
- version: "1.0"
5
- category: methodology
6
- ---
7
-
8
- # Branch Landing
9
-
10
- Code that is written and reviewed is not yet delivered. It sits on a branch, and something has to decide what happens to it. This skill is that decision and the sequence that carries it out.
11
-
12
- ## 1. A branch does not land ahead of its story
13
-
14
- <HARD-GATE>
15
- Before anything else, check where the story actually is.
16
-
17
- If the story is parked at a pipeline gate — waiting on QA, a scan, a deploy, anything the team satisfies outside this session (see `board-progression` §3.1) — **the branch waits with it.** Do not merge, do not open a pull request, do not remove the worktree.
18
-
19
- Landing code whose story never passed its gates is the same defect as closing a story to tidy the board, one layer down. Say which gate the story waits at, and stop.
20
- </HARD-GATE>
21
-
22
- The work item is the authority on whether the work is done. The branch follows it; it never leads.
23
-
24
- ## 2. Ask how the work should land
25
-
26
- Teams integrate differently and the plugin has no basis to guess. Ask once, with a recommendation so accepting takes a word:
27
-
28
- | Option | What happens | When it fits |
29
- |---|---|---|
30
- | **Pull request** | Push the branch, open a PR against the base, leave everything standing | Any team that reviews before merging, or where CI runs on the PR |
31
- | **Merge locally** | Merge into the base in the main checkout, then tear down | Solo work, or a change already reviewed by the two axes |
32
- | **Leave it** | Push for safety, change nothing else | The human wants to look first, or the work is paused |
33
-
34
- The base branch is per-repo and comes from the `Allye Delivery Configuration` Core Document — **never assumed.** Repos with a git-flow layout branch from `develop`; repos releasing from trunk branch from `main`.
35
-
36
- **Nothing merges into the base branch without the human choosing it in this conversation.** A merge is not reversible in the way an unmerged branch is, and no amount of green review substitutes for being asked.
37
-
38
- ## 3. The sequence, when merging locally
39
-
40
- Every step is a gate. One story at a time; do not batch.
41
-
42
- ```
43
- 1. GATE: git -C <worktree> status --porcelain must be EMPTY
44
- dirty → STOP, escalate. Do not merge, do not remove.
45
- 2. git push -u origin <branch>
46
- 3. In the MAIN checkout, on the base: git merge --no-ff <branch>
47
- 4. Conflicts in shared wiring files are expected when parallel work
48
- touched the same composition root. Resolve by CONSOLIDATING into one
49
- instance — never by picking a side.
50
- 5. Rebuild, typecheck, run tests BEFORE committing the merge
51
- 6. git worktree remove <path> ← without --force
52
- 7. Close the runtime pane ← only after step 6
53
- ```
54
-
55
- ### The three locks
56
-
57
- Each exists because it prevents one specific way work disappears. They look skippable right up until they are not.
58
-
59
- | Lock | What it prevents |
60
- |---|---|
61
- | **Push before removal** (2) | The branch exists on the remote before anything is destroyed. After this, no local accident loses the work. |
62
- | **`worktree remove` without `--force`** (6) | Git refuses a dirty worktree. That refusal is the last safety net; bypassing it by reflex is how uncommitted work vanishes. |
63
- | **Pane closes last** (7) | While the pane lives, the session's reasoning is inspectable. Close it before a validated merge and the *why* is gone, even though the *what* survives in the diff. |
64
-
65
- ### When merging is not the choice
66
-
67
- **Pull request:** push, open the PR against the base, and stop. Worktree and pane stay — review feedback arrives there. Record the PR reference on the story so the next session finds it.
68
-
69
- **Leave it:** push, and change nothing else. Say plainly what is standing: branch, worktree, pane.
70
-
71
- ## 4. Never
72
-
73
- - **Never merge into the base branch unasked.** §2.
74
- - **Never force-push.** A force-push rewrites what step 2 exists to protect.
75
- - **Never delete a branch.** Merged branches are cheap and are the record of how something was built. Removing a worktree is not deleting its branch, and should not become it.
76
- - **Never destroy what you did not create.** A worktree or pane that predates this session belongs to someone else.
77
-
78
- ## 5. Abandoned work
79
-
80
- A story that failed, was cancelled, or stalled gets **no cleanup at all**. Worktree, branch, and pane all stay.
81
-
82
- Visible litter costs far less than deleted work, and an abandoned branch is often the only record of an approach that was tried and rejected — which is worth more than the disk it occupies.
83
-
84
- ## 6. Record where it landed
85
-
86
- Once the work has landed, the branch may be the only durable trace outside the diff. Carry the reference into the delivery memory (`memory_save`, `sector: "knowledge"`): the branch name, the merge commit or PR reference, and the base it landed on.
87
-
88
- A memory that says a story was delivered, without saying where the code went, is a memory that sends the next reader searching.
@@ -1,187 +0,0 @@
1
- ---
2
- name: delivery
3
- description: Workflow for finalizing a story after all tasks pass review. Verifies completeness, closes the story, updates documentation, and cleans up. Use when all tasks are done and reviewed.
4
- version: "1.4"
5
- category: methodology
6
- ---
7
-
8
- # Technical Delivery Workflow
9
-
10
- This skill finalizes a story after every task has passed review — closing it out, documenting what shipped, and clearing loose ends.
11
-
12
- Use this when: all tasks for a story are implemented and reviewed, and the user is ready to finalize delivery.
13
-
14
- ---
15
-
16
- ## Workflow Overview
17
-
18
- ```
19
- Verify all tasks done → Close story → Update documentation → Clean up TODOs → Save delivery memory
20
- ```
21
-
22
- ---
23
-
24
- ## Step 1: Verify All Tasks Are Complete
25
-
26
- Check that every task under the story is done:
27
-
28
- ```
29
- work_children(id: "{story uuid}")
30
- ```
31
-
32
- <HARD-GATE>
33
- Close the story only once every task is completed, verified, and in "done" status.
34
- If any task is incomplete, route back to Technical Development or Technical Review instead of closing.
35
-
36
- "Done" means the **done category**, not the last status an agent could reach. On a pipeline
37
- with stages after review, a task parked at a gate the team satisfies by hand is not done — it
38
- is waiting, and the story waits with it.
39
-
40
- If tasks are parked, close-out is not blocked by an oversight. It is **not yet due**. Say which
41
- gate they are waiting at and stop; do not close the story to tidy the board.
42
- </HARD-GATE>
43
-
44
- ### Verification checklist
45
-
46
- For each task, confirm:
47
- - [ ] Status is "done"
48
- - [ ] Acceptance criteria are met
49
- - [ ] Tests pass
50
- - [ ] Review is approved (no outstanding change requests)
51
-
52
- ---
53
-
54
- ## Step 2: Close the Story
55
-
56
- Move the story to done:
57
-
58
- ```
59
- work_status_done(id: "{story uuid}")
60
- ```
61
-
62
- This sets the story's status to the "done" category and records `completed_at`.
63
-
64
- If the story is part of a feature, check if the feature is now complete:
65
-
66
- ```
67
- work_children(id: "{feature uuid}")
68
- ```
69
-
70
- If all stories under the feature are done, close the feature too:
71
-
72
- ```
73
- work_status_done(id: "{feature uuid}")
74
- ```
75
-
76
- ---
77
-
78
- ## Step 2.5: Land the Code
79
-
80
- The story is closed in Allye. The code is still on a branch.
81
-
82
- Load the `branch-landing` skill and follow it. It asks how the work should land — pull
83
- request, local merge, or left alone — and carries the sequence that gets it there without
84
- losing anything.
85
-
86
- <HARD-GATE>
87
- Do not skip this because the story is already closed. Closing the item and landing the code
88
- are different acts, and doing the first without the second produces the worst available
89
- state: a board that says delivered and a base branch that does not have the work.
90
-
91
- If the story reached this skill while still parked at a pipeline gate, it should not have —
92
- see Step 1. The branch stays where it is.
93
- </HARD-GATE>
94
-
95
- ---
96
-
97
- ## Step 3: Update Documentation
98
-
99
- If the delivered work introduced or changed functionality that should be documented:
100
-
101
- ### Check existing docs
102
-
103
- ```
104
- memory_search(query: "documentation {feature/story key}")
105
- doc_full_tree()
106
- ```
107
-
108
- ### Create or update documentation
109
-
110
- **For new functionality:**
111
-
112
- ```
113
- doc_create(
114
- doc_title: "{Feature Name}",
115
- doc_type: "page",
116
- doc_emoji: "📄",
117
- doc_content: "## Overview\n{what this feature does}\n\n## Usage\n{how to use it}\n\n## Technical Details\n{relevant implementation details}\n\n## API Reference\n{endpoints, parameters, responses — if applicable}",
118
- doc_parent_id: "{parent folder uuid if applicable}"
119
- )
120
- ```
121
-
122
- **For updates to existing functionality:**
123
-
124
- ```
125
- doc_update(
126
- id: "{doc uuid}",
127
- doc_content: "{updated content}"
128
- )
129
- ```
130
-
131
- ### When to skip documentation
132
-
133
- Not everything needs docs. Skip if:
134
- - The change is purely internal (refactoring, performance, tests)
135
- - The change is self-evident from the code
136
- - Documentation would duplicate what's in the code
137
-
138
- ---
139
-
140
- ## Step 4: Clean Up TODOs
141
-
142
- Check for any TODOs that were created during development:
143
-
144
- ```
145
- todo_list()
146
- ```
147
-
148
- For each TODO related to this story:
149
- - If it's done → mark as complete: `todo_update(id: "{todo uuid}", status: "completed")`
150
- - If it's no longer relevant → delete: `todo_delete(id: "{todo uuid}")`
151
- - If it's a future task → leave it, but make sure it's not blocking delivery
152
-
153
- ---
154
-
155
- ## Step 5: Save Delivery Memory
156
-
157
- Save a final summary of what was delivered:
158
-
159
- ```
160
- memory_save(
161
- title: "Delivered — {STORY-KEY} {story title}",
162
- content: "## What was delivered\n{summary of the feature/change}\n\n## Tasks completed\n- {TASK-1}: {title}\n- {TASK-2}: {title}\n- {TASK-3}: {title}\n\n## Key decisions\n{important decisions from planning and implementation}\n\n## Documentation\n{what was documented, or 'No documentation needed'}\n\n## Where the code landed\n{branch name, and the merge commit or PR reference, and the base it landed on — or \"not yet landed: {reason}\"}\n\n## Lessons learned\n{anything worth remembering for similar work in the future}",
163
- tags: ["delivery", "completed", "{story-key}", "{feature-key}"],
164
- sector: "knowledge"
165
- )
166
- ```
167
-
168
- ---
169
-
170
- ## Workflow Checklist
171
-
172
- - [ ] All tasks verified as done
173
- - [ ] Story moved to done
174
- - [ ] The code landed, or the reason it has not is recorded
175
- - [ ] Feature moved to done (if all stories complete)
176
- - [ ] Documentation created or updated (if applicable)
177
- - [ ] Related TODOs cleaned up
178
- - [ ] Delivery memory saved
179
-
180
- ---
181
-
182
- ## What Comes Next
183
-
184
- The story is delivered. The user can:
185
- - **Pick another story** → Back to Technical Planning (`allye-technical-planning`)
186
- - **Plan more features** → Back to Product Planning (`allye-product-planning`)
187
- - **Start a new initiative** → Back to Product Planning from scratch