allye-pi 1.8.0 → 2.1.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.
- package/README.md +77 -271
- package/bootstrap/allye.md +30 -0
- package/docs/install-omp.md +31 -0
- package/docs/install-pi.md +21 -125
- package/package.json +11 -5
- package/packages/allye-pi/src/index.ts +88 -782
- package/skills/bridge/SKILL.md +105 -0
- package/skills/bridge/references/crew.md +20 -0
- package/skills/bridge/references/delegation.md +192 -0
- package/skills/bridge/references/discovery.md +71 -0
- package/skills/bridge/references/publish.md +90 -0
- package/skills/bridge/references/state-contract.md +109 -0
- package/skills/bridge/references/workflow.md +132 -0
- package/skills/bridge-architect/SKILL.md +96 -0
- package/skills/bridge-architect/references/spec-template.md +90 -0
- package/skills/bridge-armorer/SKILL.md +105 -0
- package/skills/bridge-copilot/SKILL.md +74 -0
- package/skills/bridge-dispatcher/SKILL.md +96 -0
- package/skills/bridge-dispatcher/references/spec-template-minimal.md +53 -0
- package/skills/bridge-medic/SKILL.md +81 -0
- package/skills/bridge-optimizer/SKILL.md +68 -0
- package/skills/bridge-pilot/SKILL.md +69 -0
- package/skills/bridge-pilot/references/mocking.md +57 -0
- package/skills/bridge-pilot/references/tdd.md +42 -0
- package/skills/bridge-pilot/references/tests.md +60 -0
- package/skills/bridge-recon/SKILL.md +82 -0
- package/skills/bridge-shield/SKILL.md +73 -0
- package/skills/bridge-strategist/SKILL.md +92 -0
- package/skills/bridge-watcher/SKILL.md +73 -0
- package/skills/agent-runtime/SKILL.md +0 -129
- package/skills/agent-runtime/references/herdr.md +0 -184
- package/skills/board-progression/SKILL.md +0 -214
- package/skills/branch-landing/SKILL.md +0 -88
- package/skills/delivery/SKILL.md +0 -187
- package/skills/execution/SKILL.md +0 -396
- package/skills/handover-protocol/SKILL.md +0 -74
- package/skills/handover-protocol/references/correction.md +0 -32
- package/skills/handover-protocol/references/discovery-to-planning.md +0 -44
- package/skills/handover-protocol/references/execution-report.md +0 -42
- package/skills/handover-protocol/references/planning-to-technical.md +0 -42
- package/skills/handover-protocol/references/story-execution.md +0 -74
- package/skills/handover-protocol/references/technical-to-orchestration.md +0 -45
- package/skills/memory-protocol/SKILL.md +0 -319
- package/skills/orchestrator/SKILL.md +0 -249
- package/skills/product-planning/SKILL.md +0 -257
- package/skills/review/SKILL.md +0 -165
- package/skills/sandbox/SKILL.md +0 -62
- package/skills/setup/SKILL.md +0 -226
- package/skills/tdd-workflow/SKILL.md +0 -144
- package/skills/technical-planning/SKILL.md +0 -354
- package/skills/tools-quickref/SKILL.md +0 -307
- package/skills/using-allye/SKILL.md +0 -171
- 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.
|
package/skills/delivery/SKILL.md
DELETED
|
@@ -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
|