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.
- package/README.md +75 -271
- package/bootstrap/allye.md +30 -0
- package/docs/install-omp.md +31 -0
- package/docs/install-pi.md +21 -125
- package/package.json +10 -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 +174 -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 +103 -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,396 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: execution
|
|
3
|
-
description: Workflow for implementing tasks with TDD discipline, read-first rule, and wave execution. Use when the user wants to write code, implement a task, or develop features.
|
|
4
|
-
version: "1.5"
|
|
5
|
-
category: methodology
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Technical Development Workflow
|
|
9
|
-
|
|
10
|
-
Implements a scoped change with discipline: read the existing code first, drive it with TDD when applicable,
|
|
11
|
-
verify it actually works, and use Allye task tracking when a task exists or the user approves creating one. A small or explicitly approved no-task change still follows the same read, test, and verification discipline.
|
|
12
|
-
|
|
13
|
-
**Scope, if you arrived via a `story-execution` or `correction` handover (see `handover-protocol`):** read only the one story and its tasks named in the handover — nothing else. A `correction` handover carries only the failed findings, not the whole story again; fix exactly what it lists.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Workflow Overview
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
Get task → Search context → Move to in_progress → Read code → TDD (Red → Green → Refactor) → Verify → Move to review → Save memory
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Step 1: Get the Task and Context
|
|
26
|
-
|
|
27
|
-
If a task or handover exists, fetch it and treat its acceptance criteria and locked decisions as authoritative. If no task exists, confirm that the user approved the no-task path, define the scope and verification command locally, and continue without inventing a work item.
|
|
28
|
-
|
|
29
|
-
Fetch the task you're about to implement:
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
work_get(work_key: "{TASK-KEY}")
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Read its description carefully — it should contain:
|
|
36
|
-
- What to implement
|
|
37
|
-
- Acceptance criteria
|
|
38
|
-
- Files likely involved
|
|
39
|
-
- Dependencies on other tasks
|
|
40
|
-
- Decisions from the discussion phase
|
|
41
|
-
|
|
42
|
-
### Search for relevant memories
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
memory_search(query: "{task key} context")
|
|
46
|
-
memory_search(query: "decision {story key}")
|
|
47
|
-
memory_search(query: "Technical Plan {story key}")
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
If session state or decision memories are found, optionally traverse the graph for richer context:
|
|
51
|
-
```
|
|
52
|
-
memory_graph(memory_id: "{id}", depth: 2)
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Pay special attention to locked decisions** — these were explicitly chosen by the user during the discussion phase and are non-negotiable.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Step 2: Check Dependencies
|
|
60
|
-
|
|
61
|
-
If the task has dependencies (noted in its description), verify they're complete:
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
work_children(id: "{story uuid}")
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Check that prerequisite tasks are in "review" or "done" status — either means their implementation is complete (tasks you finished earlier in this story sit at `review` until the Reviewer approves them). If a prerequisite hasn't reached at least `review`, either:
|
|
68
|
-
- Pick a different task from the same wave (if available)
|
|
69
|
-
- Inform the user that this task is blocked
|
|
70
|
-
|
|
71
|
-
### Wave Execution
|
|
72
|
-
|
|
73
|
-
If there are multiple independent tasks (same wave), they can be done in any order. Tasks with dependencies must follow the sequence defined in the technical plan.
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Step 3: Move Task to In Progress
|
|
78
|
-
|
|
79
|
-
If a task exists, signal that work has started. If no task exists, record the local scope in the implementation plan and do not make a status call.
|
|
80
|
-
|
|
81
|
-
Signal that work has started:
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
work_status_next(id: "{task uuid}")
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Step 4: Read First
|
|
90
|
-
|
|
91
|
-
<EXTREMELY_IMPORTANT>
|
|
92
|
-
Read existing code BEFORE writing any new code.
|
|
93
|
-
The task description lists files likely involved — read them all.
|
|
94
|
-
Understand the current state before changing it.
|
|
95
|
-
|
|
96
|
-
This is not optional. Writing code without reading the context leads to:
|
|
97
|
-
- Duplicating existing functionality
|
|
98
|
-
- Breaking existing patterns
|
|
99
|
-
- Inconsistent code style
|
|
100
|
-
- Missed constraints
|
|
101
|
-
</EXTREMELY_IMPORTANT>
|
|
102
|
-
|
|
103
|
-
### What to read
|
|
104
|
-
|
|
105
|
-
1. **Files listed in the task description** — The planning phase identified these
|
|
106
|
-
2. **Related test files** — Understand existing test patterns
|
|
107
|
-
3. **Shared utilities and helpers** — Don't reinvent what already exists
|
|
108
|
-
4. **Configuration files** — If the task involves config changes
|
|
109
|
-
|
|
110
|
-
### Analysis Paralysis Guard
|
|
111
|
-
|
|
112
|
-
<HARD-GATE>
|
|
113
|
-
This checkpoint applies to exploratory reads beyond what the task already named — reading every file the task itself points you to (see "What to read" above) is still mandatory, not capped by this count.
|
|
114
|
-
|
|
115
|
-
If you have read 5+ files *beyond those named/implied by the task* without writing any code, STOP and ask yourself:
|
|
116
|
-
|
|
117
|
-
1. **Do I have enough context to start?** → If yes, start writing. Perfect understanding is not required.
|
|
118
|
-
2. **Am I blocked by missing information?** → If yes, tell the user what's blocking you.
|
|
119
|
-
|
|
120
|
-
Do not read endlessly in search of additional context. Reading is preparation, not implementation.
|
|
121
|
-
</HARD-GATE>
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Step 4.5: Plan the Implementation
|
|
126
|
-
|
|
127
|
-
You have read the code and written none. This is where you state *how* you will build it,
|
|
128
|
-
and check that statement against what was asked for — while being wrong still costs a
|
|
129
|
-
paragraph rather than a branch.
|
|
130
|
-
|
|
131
|
-
### Write the plan
|
|
132
|
-
|
|
133
|
-
Per task in this story:
|
|
134
|
-
|
|
135
|
-
- **Approach** — the shape of the change, in a sentence or two.
|
|
136
|
-
- **Files** — what you will create or modify. Names, never line numbers; the tree moves.
|
|
137
|
-
- **Interfaces produced** — the names, types, and signatures other tasks in this story will
|
|
138
|
-
call. Whoever implements a neighbouring task sees only their own task description, so
|
|
139
|
-
this is the only place they learn what to call.
|
|
140
|
-
- **How each criterion goes green** — for every acceptance criterion, which step makes its
|
|
141
|
-
`## Verification` command pass. A criterion with no step against it is the finding this
|
|
142
|
-
whole exercise exists to produce.
|
|
143
|
-
|
|
144
|
-
Save it:
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
memory_save(
|
|
148
|
-
title: "Implementation Plan — {STORY-KEY} {story title}",
|
|
149
|
-
content: "## Per task\n{approach, files, interfaces produced, criterion → step}\n\n## Order\n{which task first, and why}\n\n## Open questions\n{anything planning did not settle, or 'None'}",
|
|
150
|
-
tags: ["plan", "implementation", "{story-key}"],
|
|
151
|
-
sector: "plans"
|
|
152
|
-
)
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
It outlives the session. A resumed Executor reads what was intended rather than inferring
|
|
156
|
-
it from half-written code, and `reviewer-spec` can compare the implementation against the
|
|
157
|
-
plan and not only against the criteria.
|
|
158
|
-
|
|
159
|
-
### Validate it
|
|
160
|
-
|
|
161
|
-
<HARD-GATE>
|
|
162
|
-
Three checks, run every time, before writing any code:
|
|
163
|
-
|
|
164
|
-
1. **Coverage** — every acceptance criterion, in every task, has a step that produces it.
|
|
165
|
-
2. **Decisions** — every locked decision from planning is respected. A locked decision was
|
|
166
|
-
chosen by the human. A plan that quietly departs from one is a defect whether or not the
|
|
167
|
-
resulting code works.
|
|
168
|
-
3. **Closure** — no step depends on something the plan never defines. If a type, function,
|
|
169
|
-
file, or value appears as a dependency and never as an output, the plan has a hole in it.
|
|
170
|
-
|
|
171
|
-
A failure is reported as `❌ blocked` **before any code exists**, naming which criterion or
|
|
172
|
-
decision has nothing behind it. This is the same halt-and-report contract you already carry,
|
|
173
|
-
fired at the cheapest possible moment.
|
|
174
|
-
</HARD-GATE>
|
|
175
|
-
|
|
176
|
-
### Whether the approach is right
|
|
177
|
-
|
|
178
|
-
The three checks above are mechanical. Whether the approach is a *good* one is judgement,
|
|
179
|
-
and who supplies it follows the story's dispatch label (see `verification-loop` §4):
|
|
180
|
-
|
|
181
|
-
- **AFK** — self-validation is enough. Run the three checks and proceed.
|
|
182
|
-
- **HITL** — put the plan in front of the user and wait before writing anything.
|
|
183
|
-
- **Either label**, if planning surfaced a decision the discussion phase never covered —
|
|
184
|
-
stop and raise it regardless. A decision discovered while planning is precisely the case
|
|
185
|
-
the label could not have anticipated.
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## Step 5: TDD — Test-Driven Development
|
|
190
|
-
|
|
191
|
-
<!-- full discipline lives in the tdd-workflow skill, aligned with superpowers:test-driven-development (MIT) -->
|
|
192
|
-
|
|
193
|
-
### Should I use TDD for this task?
|
|
194
|
-
|
|
195
|
-
Apply the **TDD Detection Heuristic**:
|
|
196
|
-
|
|
197
|
-
> Can I write `expect(fn(input)).toBe(output)` before writing `fn`?
|
|
198
|
-
|
|
199
|
-
- **Yes** → TDD is mandatory. Follow Red → Green → Refactor.
|
|
200
|
-
- **No** (UI, infrastructure, integration, configuration) → Write tests after implementation, but always write tests.
|
|
201
|
-
|
|
202
|
-
### Red Phase — Write the Failing Test
|
|
203
|
-
|
|
204
|
-
Write a test that describes the expected behavior:
|
|
205
|
-
|
|
206
|
-
```
|
|
207
|
-
// Test describes WHAT, not HOW
|
|
208
|
-
test("should return user by email", () => {
|
|
209
|
-
const user = getUserByEmail("test@example.com");
|
|
210
|
-
expect(user.name).toBe("Test User");
|
|
211
|
-
});
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
Run the test. Confirm it **fails**. If it passes, either:
|
|
215
|
-
- The functionality already exists (check before implementing)
|
|
216
|
-
- The test is wrong (it's not testing what you think)
|
|
217
|
-
|
|
218
|
-
### Green Phase — Make It Pass
|
|
219
|
-
|
|
220
|
-
Write the **minimum code** to make the test pass. No more, no less.
|
|
221
|
-
|
|
222
|
-
Rules:
|
|
223
|
-
- Don't add features the test doesn't require
|
|
224
|
-
- Don't optimize prematurely
|
|
225
|
-
- Don't handle edge cases not covered by tests (write more tests first)
|
|
226
|
-
|
|
227
|
-
Run the test. Confirm it **passes**.
|
|
228
|
-
|
|
229
|
-
### Refactor Phase — Clean Up
|
|
230
|
-
|
|
231
|
-
With green tests as your safety net, improve the code:
|
|
232
|
-
|
|
233
|
-
- Remove duplication
|
|
234
|
-
- Improve naming
|
|
235
|
-
- Simplify logic
|
|
236
|
-
- Extract functions if needed
|
|
237
|
-
|
|
238
|
-
Run tests after every change. If a test fails, you broke something — fix it before continuing.
|
|
239
|
-
|
|
240
|
-
### Verification Phase — run the task's loop
|
|
241
|
-
|
|
242
|
-
TDD proved each behaviour as you built it. This proves the **task's acceptance
|
|
243
|
-
criteria**, which is a different claim.
|
|
244
|
-
|
|
245
|
-
Run the command from the task's `## Verification` block. Read its actual output.
|
|
246
|
-
If it is red, fix and run it again, under the bound in `verification-loop` §3:
|
|
247
|
-
three attempts on one failure, or two byte-identical outputs, whichever comes
|
|
248
|
-
first. On hitting the bound, stop and carry the command and its literal output
|
|
249
|
-
into your report — do not summarise the output.
|
|
250
|
-
|
|
251
|
-
If the task declares `verification: manual`, follow its procedure and record what
|
|
252
|
-
you observed. You have not run a loop; say so plainly in the report rather than
|
|
253
|
-
implying one passed.
|
|
254
|
-
|
|
255
|
-
### Repeat
|
|
256
|
-
|
|
257
|
-
Write the next test for the next behavior. Continue the cycle until all acceptance criteria are met.
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## Step 6: Checkpoints
|
|
262
|
-
|
|
263
|
-
### `human-verify` Checkpoint
|
|
264
|
-
|
|
265
|
-
After completing the task, if it has **visual or behavioral impact** that the user should see:
|
|
266
|
-
|
|
267
|
-
> "I've completed {task description}. Here's what changed:
|
|
268
|
-
> - {change 1}
|
|
269
|
-
> - {change 2}
|
|
270
|
-
>
|
|
271
|
-
> Would you like to verify this before I move on?"
|
|
272
|
-
|
|
273
|
-
### `decision` Checkpoint
|
|
274
|
-
|
|
275
|
-
**If uncertain which path to take, STOP and ask — never proceed on assumption.** If during implementation you encounter a choice not covered by the discussion phase:
|
|
276
|
-
|
|
277
|
-
> "I found a decision point not covered in planning:
|
|
278
|
-
> {describe the options}
|
|
279
|
-
>
|
|
280
|
-
> Which approach do you prefer?"
|
|
281
|
-
|
|
282
|
-
Save the decision as a memory once resolved.
|
|
283
|
-
|
|
284
|
-
### Automation-First Rule
|
|
285
|
-
|
|
286
|
-
<HARD-GATE>
|
|
287
|
-
If you CAN automate something, you MUST automate it.
|
|
288
|
-
Only ask for human intervention when it's genuinely impossible to proceed without it.
|
|
289
|
-
|
|
290
|
-
Examples of things to automate (don't ask):
|
|
291
|
-
- Running tests
|
|
292
|
-
- Formatting code
|
|
293
|
-
- Installing dependencies
|
|
294
|
-
- Creating files and directories
|
|
295
|
-
- Applying migrations
|
|
296
|
-
|
|
297
|
-
Examples of things that need human action:
|
|
298
|
-
- Approving a deployment to production
|
|
299
|
-
- Providing API keys or credentials
|
|
300
|
-
- Verifying visual design matches expectations
|
|
301
|
-
- Confirming business logic interpretation
|
|
302
|
-
</HARD-GATE>
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
## Step 7: Move Task to Review
|
|
307
|
-
|
|
308
|
-
For a tracked task, advance it to review only after the verification evidence is green. For an approved no-task change, report the same evidence directly and do not create or advance a status.
|
|
309
|
-
|
|
310
|
-
<!-- adapted from superpowers:verification-before-completion (MIT) — evidence before assertions -->
|
|
311
|
-
**Evidence before assertions.** Don't advance a task because it looks right — run the tests, read the actual output, and confirm each acceptance criterion against that output before proceeding. "Should work" is not the same as "ran and passed."
|
|
312
|
-
|
|
313
|
-
The task's verification command is what supplies that evidence. Advancing a task to
|
|
314
|
-
`review` without having run it green — or without having recorded a `verification:
|
|
315
|
-
manual` observation — is the assertion this rule exists to forbid.
|
|
316
|
-
|
|
317
|
-
Once all acceptance criteria are verifiably met and tests pass for a tracked task:
|
|
318
|
-
|
|
319
|
-
```
|
|
320
|
-
work_status_next(id: "{task uuid}")
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
This advances the task forward to the "review" status. **Do NOT call `work_status_done` here** — passing its own tests makes a task ready for review, not done. For a no-task change, completion means the agreed scope and verification are reported; no status transition is implied.
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
## Step 8: Save Implementation Memory
|
|
328
|
-
|
|
329
|
-
Save context that would be useful for future tasks or sessions:
|
|
330
|
-
|
|
331
|
-
```
|
|
332
|
-
memory_save(
|
|
333
|
-
title: "Implementation — {TASK-KEY} {short description}",
|
|
334
|
-
content: "## What was done\n{summary of changes}\n\n## Key decisions during implementation\n{any new decisions made}\n\n## Files changed\n- {file 1}\n- {file 2}\n\n## Gotchas\n{anything surprising or non-obvious encountered}\n\n## Tests\n{what was tested, any notable test patterns}",
|
|
335
|
-
tags: ["development", "implementation", "{story-key}", "{task-key}"],
|
|
336
|
-
sector: "knowledge"
|
|
337
|
-
)
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
Only save if there's genuinely useful context. Don't save trivial implementations — the code is its own documentation.
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
## Step 9: Pick Next Task
|
|
345
|
-
|
|
346
|
-
After completing a task, pick the next one from the **handover's own wave-ordered task list** — not from a live API call. The `story-execution` handover already contains every task across every wave for the whole story, so it's the authoritative scope; going back to the API for *new* tasks would risk pulling in tasks added to the story after the handover was dispatched, which are out of scope (see line ~14).
|
|
347
|
-
|
|
348
|
-
- If there are more tasks in the current wave (per the handover's list) → pick one
|
|
349
|
-
- If the current wave is done → move to the next wave (per the handover's list)
|
|
350
|
-
- If every task in the story has reached `review` (implementation complete, awaiting Reviewer) → **run the story loop, then** emit an **`execution-report`** handover (see the `handover-protocol` skill) back to the Orchestrator.
|
|
351
|
-
|
|
352
|
-
The story loop runs the story's own acceptance criteria end to end, under the same
|
|
353
|
-
bound as the task loop. Every task green does not mean the story works — nothing
|
|
354
|
-
else checks this, which is exactly why it runs here.
|
|
355
|
-
|
|
356
|
-
A red story loop is reported as red **even when every task is green**. That
|
|
357
|
-
combination is a finding, not a contradiction to resolve: it usually means the task
|
|
358
|
-
breakdown missed an integration, and the Orchestrator needs to see it rather than
|
|
359
|
-
receive a clean report.
|
|
360
|
-
|
|
361
|
-
Use `work_children(id: "{story uuid}")` only to **verify/check the status** of tasks already in the handover's list (e.g. confirming a dependency reached `review`) — never to discover new tasks to work on. If `work_children` reveals a task under this story that is **not** in the handover's task list, do not execute it — it wasn't in scope when the handover was dispatched. Instead, note it as an open question ("Open questions") in the `execution-report` handover so the Orchestrator can decide whether to bring it into scope.
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
## Workflow Checklist
|
|
366
|
-
|
|
367
|
-
For each task, verify:
|
|
368
|
-
|
|
369
|
-
- [ ] Task was read and understood (description, acceptance criteria, dependencies)
|
|
370
|
-
- [ ] Relevant memories and decisions were searched
|
|
371
|
-
- [ ] Dependencies are complete
|
|
372
|
-
- [ ] Task moved to in_progress
|
|
373
|
-
- [ ] Existing code was read before writing new code
|
|
374
|
-
- [ ] An implementation plan was written and saved to the `plans` sector before any code
|
|
375
|
-
- [ ] Coverage, decisions, and closure all checked against that plan
|
|
376
|
-
- [ ] TDD cycle completed (or tests written after for non-TDD-suitable tasks)
|
|
377
|
-
- [ ] All acceptance criteria are met
|
|
378
|
-
- [ ] Tests pass
|
|
379
|
-
- [ ] The task's verification command ran green, or its manual procedure was observed and recorded
|
|
380
|
-
- [ ] The story loop ran green before the report was emitted
|
|
381
|
-
- [ ] Task moved to review (never directly to done — that's the Orchestrator's move after Reviewer ✅)
|
|
382
|
-
- [ ] Implementation memory saved (if non-trivial)
|
|
383
|
-
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
## What Comes Next
|
|
387
|
-
|
|
388
|
-
Emit the `execution-report` handover: files changed, tests added, status per acceptance criterion (not a blanket "done"), any new decisions made along the way, and any open questions. The Orchestrator decides from there whether to dispatch Reviewer or, if this is a `correction` round, loop back with more specific findings.
|
|
389
|
-
|
|
390
|
-
**If you are working in a git worktree**, the Orchestrator that dispatched you owns landing
|
|
391
|
-
the branch — do not merge, do not remove the worktree, do not close your own pane. Name the
|
|
392
|
-
branch in your `execution-report` so it knows what to land.
|
|
393
|
-
|
|
394
|
-
**If you are working directly in the main checkout** and no Orchestrator is coordinating, the
|
|
395
|
-
branch is yours to finish: load the `branch-landing` skill once the story's tasks are through
|
|
396
|
-
review.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: handover-protocol
|
|
3
|
-
description: The shared contract for handing off context between Allye workflow phases as copy-pasted chat text. Use when a phase skill is ending and needs to brief a fresh chat for the next phase (Planning, Technical Planning, Orchestrator, Executor), or when a fresh chat opens with a pasted handover and needs to detect which skill to load.
|
|
4
|
-
version: "1.3"
|
|
5
|
-
category: methodology
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Handover Protocol
|
|
9
|
-
|
|
10
|
-
A handover is one optional way context moves between Allye playbooks without carrying a chat's full history forward. Use it for meaningful, multi-step, delegated, or cross-session work where a durable briefing adds value. For short local work, stay in the current session rather than manufacturing phase boundaries. When a handover is used, the user reads, approves, and pastes the block as the first message of the next chat; the bootstrap detects the marker and loads the right skill automatically.
|
|
11
|
-
|
|
12
|
-
**A handover is never saved as a memory or a file.** The Allye doc and work items it references are the durable record — the handover text itself is a disposable transport vehicle, copied by hand in both directions (including Orchestrator ↔ Executor's correction loop).
|
|
13
|
-
|
|
14
|
-
<!-- adapted from humanlayer/humanlayer create_handoff/resume_handoff (Apache-2.0) — the discipline that a handoff must be complete enough that the receiving chat needs nothing else -->
|
|
15
|
-
|
|
16
|
-
## 1. The shared marker
|
|
17
|
-
|
|
18
|
-
Every handover starts with the same one-line marker and ends with the same reminder. Everything between them is specific to the handover's type — see §2.
|
|
19
|
-
|
|
20
|
-
```markdown
|
|
21
|
-
## 🔄 Allye Handover — {type}
|
|
22
|
-
**Skill to load:** {skill-slug}
|
|
23
|
-
|
|
24
|
-
...type-specific body — see references/{type}.md...
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
If anything is unclear, STOP and ask — don't proceed on a guess.
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
The bootstrap skill (`using-allye`) scans the first message of every fresh conversation for the `## 🔄 Allye Handover` line. When found, it parses `{type}` and `Skill to load`, loads that skill directly, and skips its own phase-detection heuristic. See `using-allye`'s "Handover detection" step.
|
|
31
|
-
|
|
32
|
-
**Templates in this skill and in `references/` are written in English — that's the source, not the output.** When actually generating a handover for the user, follow the plugin's language principle same as everywhere else: respond in the user's language. Section headers (`### Objective`, `### Required reading`, etc.) and body prose get written in whatever language the conversation is in — a Portuguese-speaking user gets `### Objetivo`, `### Leitura obrigatória`, and so on. **Only two things stay fixed in every language**, because auto-detection parses them literally: the `## 🔄 Allye Handover — {type}` marker line and the `**Skill to load:**` field name. Never translate those two.
|
|
33
|
-
|
|
34
|
-
## 2. The catalog
|
|
35
|
-
|
|
36
|
-
Six types. Each is a distinct handoff with its own objective and field set — not a generic form filled in differently. Full templates live in `references/`.
|
|
37
|
-
|
|
38
|
-
| Type | Transition | Objective | Template |
|
|
39
|
-
|---|---|---|---|
|
|
40
|
-
| `discovery-to-planning` | Sandbox → Planning | Turn the approved direction into a deliverable structure | `references/discovery-to-planning.md` |
|
|
41
|
-
| `planning-to-technical` | Planning → Tech Planning | Technically detail the approved squares | `references/planning-to-technical.md` |
|
|
42
|
-
| `technical-to-orchestration` | Tech Planning → Orchestrator | Drive delivery of the planned scope (feature, or a whole epic) | `references/technical-to-orchestration.md` |
|
|
43
|
-
| `story-execution` | Orchestrator → Executor | Implement exactly one story | `references/story-execution.md` |
|
|
44
|
-
| `execution-report` | Executor → Orchestrator | Return the implementation result | `references/execution-report.md` |
|
|
45
|
-
| `correction` | Orchestrator → Executor | Fix specific review findings | `references/correction.md` |
|
|
46
|
-
|
|
47
|
-
**Neither reviewer axis ever receives a handover.** `reviewer-standards` and `reviewer-spec` are both invoked<!-- opencode-exclude:start --> via the `Agent` tool<!-- opencode-exclude:end --> with a constructed prompt (story + tasks + files changed), dispatched by the Orchestrator — not by a pasted handover.
|
|
48
|
-
|
|
49
|
-
<!-- opencode-exclude:start -->
|
|
50
|
-
**Executor is reachable both ways.** In manual mode it receives `story-execution`/`correction` handovers as documented above. In automatic mode (Orchestrator's choice, offered per story) it's dispatched via the `Agent` tool instead, the same way the reviewer axes are — see `agents/executor.md`. Either way the content is the same; only the transport differs.
|
|
51
|
-
<!-- opencode-exclude:end -->
|
|
52
|
-
|
|
53
|
-
## 3. Writing a good handover checklist
|
|
54
|
-
|
|
55
|
-
<!-- adapted from humanlayer/humanlayer create_handoff (Apache-2.0) and EveryInc/compound-engineering-plugin artifact_readiness contracts (MIT) -->
|
|
56
|
-
|
|
57
|
-
Before emitting a handover, confirm the following when applicable:
|
|
58
|
-
|
|
59
|
-
- **Concrete keys, not vague pointers.** "The story we discussed" is not acceptable — write the actual `STORY-KEY`. The receiving chat has zero memory of this conversation.
|
|
60
|
-
- **References carry an explicit read instruction, not just keys.** The handover must tell the receiver to actually fetch and read what it lists — work items via `work_get`/`work_children` (the entire subtree under the parent, when the handover is scoped to a parent item like a feature or epic), docs via `doc_get`. A key list without a "read all of this" instruction invites skimming, and the receiving chat has no other way to know reading is mandatory.
|
|
61
|
-
- **Locked decisions are carried forward, verbatim.** If a decision was locked in this phase, restate it in the handover — don't make the next chat re-derive or, worse, re-litigate it.
|
|
62
|
-
- **Scope matches the type.** `story-execution` carries exactly one story; `correction` carries only the failed findings, not the whole story again. Padding a handover with everything "just in case" defeats the purpose of a lean next chat.
|
|
63
|
-
- **The reminder line is preserved.** A handover should end with the "stop and ask" line — it prevents guessed decisions in the next session.
|
|
64
|
-
<!-- adapted from mattpocock/skills triage AGENT-BRIEF (MIT) — durability of handoff artifacts -->
|
|
65
|
-
- **Name interfaces and contracts, not file paths and line numbers.** Write "the `SkillConfig`
|
|
66
|
-
type gains an optional `schedule` field", never "open `src/types/skill.ts` and edit line 42."
|
|
67
|
-
A handover can be read hours later, by a different agent, in a worktree where the tree has
|
|
68
|
-
already moved — a line number is wrong by then and a contract is not. The one exception is a
|
|
69
|
-
snippet that encodes a decision more precisely than prose can (a schema, a state machine, a
|
|
70
|
-
type shape); include it, trimmed to the decision.
|
|
71
|
-
|
|
72
|
-
## 4. Auto-detection (implemented in `using-allye`)
|
|
73
|
-
|
|
74
|
-
Detection logic lives in `using-allye`'s bootstrap (checked before its phase-detection table), not duplicated here — see `skills/using-allye/SKILL.md` §2. This skill defines the *contract*; `using-allye` implements the *routing*.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Handover: correction
|
|
2
|
-
|
|
3
|
-
**Emitted by:** `orchestrator`
|
|
4
|
-
**Received by:** `execution` (the same Executor chat/session that produced the original implementation, when possible)
|
|
5
|
-
**Objective:** Fix specific review findings — this handover is deliberately narrow. It never re-briefs the whole story; that would defeat the point of a lean, targeted correction pass.
|
|
6
|
-
|
|
7
|
-
## Before emitting, confirm
|
|
8
|
-
|
|
9
|
-
- Only the ❌ findings are included — ✅ and ⚠️ items are not corrections, don't pad this handover with them.
|
|
10
|
-
- The correction round number is tracked — per spec §6.4, at most **2** correction handovers are ever emitted for the same task. If the 2nd correction round's review also comes back ❌ (i.e., the 3rd review failure on that task), the Orchestrator does not emit a 3rd correction handover — it stops and escalates to the human instead.
|
|
11
|
-
- Each finding is quoted from the Reviewer's actual output, not paraphrased — paraphrasing risks losing precision about what exactly needs to change.
|
|
12
|
-
|
|
13
|
-
## Template
|
|
14
|
-
|
|
15
|
-
```markdown
|
|
16
|
-
## 🔄 Allye Handover — correction
|
|
17
|
-
**Skill to load:** execution
|
|
18
|
-
|
|
19
|
-
### Objective
|
|
20
|
-
Fix the review findings below in {STORY-KEY} — nothing more.
|
|
21
|
-
|
|
22
|
-
### Findings to fix (❌ only)
|
|
23
|
-
- {TASK-KEY}: "{reviewer finding, quoted literally}"
|
|
24
|
-
- {TASK-KEY}: "{reviewer finding, quoted literally}"
|
|
25
|
-
|
|
26
|
-
### Correction round
|
|
27
|
-
This is correction attempt {N} for this story.
|
|
28
|
-
{If N is greater than 2, the Orchestrator shouldn't be emitting this handover — the max is 2 correction handovers per task; a 3rd review failure escalates to the user instead of producing a 3rd handover. See skills/orchestrator.}
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
Fix ONLY what's listed above — don't redo the whole story. If anything is unclear, STOP and ask — don't proceed on a guess.
|
|
32
|
-
```
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Handover: discovery-to-planning
|
|
2
|
-
|
|
3
|
-
**Emitted by:** `sandbox` (once approved by the user)
|
|
4
|
-
**Received by:** `product-planning`
|
|
5
|
-
**Objective:** Turn the direction approved during Sandbox into a deliverable structure (squares/sub-squares → Epic/Feature/Story).
|
|
6
|
-
|
|
7
|
-
## Before emitting, confirm
|
|
8
|
-
|
|
9
|
-
- A Discovery Doc was created in Allye (`doc_create`, location confirmed with the user against `doc_full_tree`) — this handover references it, it does not duplicate its content.
|
|
10
|
-
- Every path that was explored and abandoned is listed with *why* — the next chat should never accidentally re-propose a rejected direction.
|
|
11
|
-
- Research findings (if any) are summarized with enough detail to act on, not just "found some stuff."
|
|
12
|
-
|
|
13
|
-
## Template
|
|
14
|
-
|
|
15
|
-
```markdown
|
|
16
|
-
## 🔄 Allye Handover — discovery-to-planning
|
|
17
|
-
**Skill to load:** product-planning
|
|
18
|
-
|
|
19
|
-
### Objective
|
|
20
|
-
{one sentence: which product/objective is being planned}
|
|
21
|
-
|
|
22
|
-
### Discovery Doc
|
|
23
|
-
- Title: {doc title}
|
|
24
|
-
- Reference in Allye: {doc id or path in the tree}
|
|
25
|
-
|
|
26
|
-
### Approved direction
|
|
27
|
-
{synthesis of what was decided in Sandbox — what and why}
|
|
28
|
-
|
|
29
|
-
### Paths explored and rejected
|
|
30
|
-
- {path A} — rejected because {reason}
|
|
31
|
-
- {path B} — rejected because {reason}
|
|
32
|
-
|
|
33
|
-
### Research findings
|
|
34
|
-
{summary of what deep-search / code-analyzer brought back, with source — "No research was done" if none}
|
|
35
|
-
|
|
36
|
-
### Prototypes
|
|
37
|
-
{reference to generated artifacts, or "No prototype was made"}
|
|
38
|
-
|
|
39
|
-
### Additional context
|
|
40
|
-
{anything else the next chat needs to know}
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
If anything is unclear, STOP and ask — don't proceed on a guess.
|
|
44
|
-
```
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Handover: execution-report
|
|
2
|
-
|
|
3
|
-
**Emitted by:** `execution`
|
|
4
|
-
**Received by:** `orchestrator`
|
|
5
|
-
**Objective:** Return the implementation result — what the Orchestrator uses to decide whether to dispatch the Reviewer or cascade status right away.
|
|
6
|
-
|
|
7
|
-
## Before emitting, confirm
|
|
8
|
-
|
|
9
|
-
- Every task's status is reported per acceptance criterion, not as a blanket "done" — the Orchestrator and the eventual Reviewer both need this granularity.
|
|
10
|
-
- Files changed are listed explicitly (not "various files") — the Reviewer dispatch depends on this list.
|
|
11
|
-
- Open questions are surfaced here rather than silently assumed away — this is the Executor's last chance to flag uncertainty before the chat ends.
|
|
12
|
-
|
|
13
|
-
## Template
|
|
14
|
-
|
|
15
|
-
```markdown
|
|
16
|
-
## 🔄 Allye Handover — execution-report
|
|
17
|
-
**Skill to load:** orchestrator
|
|
18
|
-
|
|
19
|
-
### Story implemented
|
|
20
|
-
{STORY-KEY} — {title}
|
|
21
|
-
|
|
22
|
-
### Tasks and status per acceptance criterion
|
|
23
|
-
- {TASK-KEY}: {✅ done | ⚠️ partial | ❌ blocked}
|
|
24
|
-
- {criterion 1}: {met | not met — why}
|
|
25
|
-
- {criterion 2}: {met | not met — why}
|
|
26
|
-
|
|
27
|
-
### Files changed
|
|
28
|
-
- {path} — {what changed}
|
|
29
|
-
- {path} — {what changed}
|
|
30
|
-
|
|
31
|
-
### Tests added
|
|
32
|
-
{which, what they cover, or "No test was needed — reason"}
|
|
33
|
-
|
|
34
|
-
### New decisions made during implementation
|
|
35
|
-
- {decision} — {rationale}, or "No new decision"
|
|
36
|
-
|
|
37
|
-
### Open questions
|
|
38
|
-
{anything that stayed unanswered and needs a human decision, or "None"}
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
If anything is unclear, STOP and ask — don't proceed on a guess.
|
|
42
|
-
```
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Handover: planning-to-technical
|
|
2
|
-
|
|
3
|
-
**Emitted by:** `product-planning`
|
|
4
|
-
**Received by:** `technical-planning`
|
|
5
|
-
**Objective:** Technically detail the squares (Features) and sub-squares (Stories) approved in the business phase.
|
|
6
|
-
|
|
7
|
-
## Before emitting, confirm
|
|
8
|
-
|
|
9
|
-
- Every Epic/Feature/Story key is real (created via `work_create`/`work_bulk_create` or found via `work_list`) — never a placeholder key.
|
|
10
|
-
- Reused items and newly created items are explicitly distinguished — the next chat should never have to guess which is which.
|
|
11
|
-
- The `Doc:` line is filled in: if a Discovery Doc exists upstream (from a `discovery-to-planning` handover), carry its reference here; if none, write "Nenhum doc adicional" explicitly — don't leave the line out.
|
|
12
|
-
- Any key business decision made during Product Planning (scope cuts, explicit user choices, priorities — the ones saved as planning memories) is restated here, not just implied by the work item descriptions. This section is best-effort and often short or empty: most locked decisions come later, from Technical Planning's own Discussion Phase — don't pad it.
|
|
13
|
-
|
|
14
|
-
## Template
|
|
15
|
-
|
|
16
|
-
```markdown
|
|
17
|
-
## 🔄 Allye Handover — planning-to-technical
|
|
18
|
-
**Skill to load:** technical-planning
|
|
19
|
-
|
|
20
|
-
### Objective
|
|
21
|
-
{which story or set of stories will be technically detailed now}
|
|
22
|
-
|
|
23
|
-
### Required reading
|
|
24
|
-
- Doc: {title and reference of the Discovery Doc, or "No additional doc"}
|
|
25
|
-
- Epic: {KEY} — {title} ({reused | created})
|
|
26
|
-
- Feature(s): {KEY} — {title} ({reused | created})
|
|
27
|
-
- Story(ies) to plan now: {KEY} — {title} ({reused | created})
|
|
28
|
-
|
|
29
|
-
### Locked business decisions
|
|
30
|
-
- {decision 1} — {rationale}
|
|
31
|
-
- {decision 2} — {rationale}
|
|
32
|
-
{or "No locked business decision beyond the item descriptions"}
|
|
33
|
-
|
|
34
|
-
### Prototypes
|
|
35
|
-
{reference, or "No prototype was made"}
|
|
36
|
-
|
|
37
|
-
### Additional context
|
|
38
|
-
{}
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
If anything is unclear, STOP and ask — don't proceed on a guess.
|
|
42
|
-
```
|