allye-opencode 1.2.2 → 1.2.4
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/dist/index.js +75 -58
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -333,9 +333,10 @@ Create the top-level epic first:
|
|
|
333
333
|
|
|
334
334
|
\`\`\`
|
|
335
335
|
work_create(
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
336
|
+
work_title: "User Authentication System",
|
|
337
|
+
work_type: "epic",
|
|
338
|
+
work_category: "product",
|
|
339
|
+
work_description: "## Goal\\n{business goal}\\n\\n## Scope\\n{what's included}\\n\\n## Out of scope\\n{what's excluded}\\n\\n## Success criteria\\n{how we know it's done}"
|
|
339
340
|
)
|
|
340
341
|
\`\`\`
|
|
341
342
|
|
|
@@ -344,12 +345,12 @@ work_create(
|
|
|
344
345
|
Use \`work_bulk_create\` to create the full hierarchy in one call:
|
|
345
346
|
|
|
346
347
|
\`\`\`
|
|
347
|
-
work_bulk_create(
|
|
348
|
+
work_bulk_create(work_items: [
|
|
348
349
|
{
|
|
349
350
|
"temp_id": "feat-1",
|
|
350
351
|
"title": "Email/Password Auth",
|
|
351
352
|
"item_type": "feature",
|
|
352
|
-
"work_category": "
|
|
353
|
+
"work_category": "product",
|
|
353
354
|
"parent_key": "PROJ-100", // existing epic key
|
|
354
355
|
"description": "..."
|
|
355
356
|
},
|
|
@@ -357,7 +358,7 @@ work_bulk_create(items: [
|
|
|
357
358
|
"temp_id": "story-1",
|
|
358
359
|
"title": "User can register with email and password",
|
|
359
360
|
"item_type": "story",
|
|
360
|
-
"work_category": "
|
|
361
|
+
"work_category": "product",
|
|
361
362
|
"parent_temp_id": "feat-1", // references the feature above
|
|
362
363
|
"description": "..."
|
|
363
364
|
},
|
|
@@ -365,7 +366,7 @@ work_bulk_create(items: [
|
|
|
365
366
|
"temp_id": "story-2",
|
|
366
367
|
"title": "User can log in with email and password",
|
|
367
368
|
"item_type": "story",
|
|
368
|
-
"work_category": "
|
|
369
|
+
"work_category": "product",
|
|
369
370
|
"parent_temp_id": "feat-1",
|
|
370
371
|
"description": "..."
|
|
371
372
|
}
|
|
@@ -447,7 +448,7 @@ Before considering product planning complete, verify:
|
|
|
447
448
|
|
|
448
449
|
## What Comes Next
|
|
449
450
|
|
|
450
|
-
After items are approved and created, ask the user whether to generate a **\`planning-to-technical\`** handover (see the \`handover-protocol\` skill) for Technical Planning.
|
|
451
|
+
After items are approved and created, ask the user whether to generate a **\`planning-to-technical\`** handover (see the \`handover-protocol\` skill) for Technical Planning. Fill the template's \`Doc:\` line with the Discovery Doc reference if one exists upstream (or "Nenhum doc adicional" if not), and list every created **and** reused key \u2014 Technical Planning has no other way to know which items are which.`;
|
|
451
452
|
var TECHNICAL_PLANNING = `# Technical Planning Workflow
|
|
452
453
|
|
|
453
454
|
This skill guides you through taking a story and turning it into actionable tasks through a **Discussion Phase** \u2014 identifying gray areas, capturing decisions, and creating tasks with verifiable acceptance criteria.
|
|
@@ -466,18 +467,26 @@ Get story \u2192 Search context \u2192 Discussion Phase \u2192 Create tasks \u21
|
|
|
466
467
|
|
|
467
468
|
---
|
|
468
469
|
|
|
470
|
+
## 0. Scope: one feature, story by story
|
|
471
|
+
|
|
472
|
+
The steps below plan **one story at a time** \u2014 but the unit Technical Planning hands to the Orchestrator is the **feature**. When the target feature has multiple stories (a \`planning-to-technical\` handover usually lists several), work through every story under that feature in sequence, one at a time, running the full workflow (Steps 1\u20136) for each before starting the next.
|
|
473
|
+
|
|
474
|
+
**Emit only ONE \`technical-to-orchestration\` handover, at the very end \u2014 after the last story in the feature is planned, never after each individual story.** That handover must cover every story and every task, grouped by wave, which is only honest once all of the feature's stories have actually been planned. If the session ends before all stories are planned, save session state (Step 6) and resume in a fresh chat \u2014 don't emit a partial feature-level handover.
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
469
478
|
## Step 1: Get the Story
|
|
470
479
|
|
|
471
480
|
Fetch the story the user wants to plan:
|
|
472
481
|
|
|
473
482
|
\`\`\`
|
|
474
|
-
work_get(id: "{story uuid}" or
|
|
483
|
+
work_get(id: "{story uuid}" or work_key: "{PROJ-123}")
|
|
475
484
|
\`\`\`
|
|
476
485
|
|
|
477
486
|
Read the story's description, acceptance criteria, and parent context. If the story is part of a feature/epic, understand the broader scope:
|
|
478
487
|
|
|
479
488
|
\`\`\`
|
|
480
|
-
work_get(
|
|
489
|
+
work_get(work_key: "{parent feature key}")
|
|
481
490
|
\`\`\`
|
|
482
491
|
|
|
483
492
|
---
|
|
@@ -658,12 +667,12 @@ Present the wave structure to the user so they understand the execution order.
|
|
|
658
667
|
### 4.5 Create Tasks via Bulk Create
|
|
659
668
|
|
|
660
669
|
\`\`\`
|
|
661
|
-
work_bulk_create(
|
|
670
|
+
work_bulk_create(work_items: [
|
|
662
671
|
{
|
|
663
672
|
"temp_id": "task-1",
|
|
664
673
|
"title": "Set up database schema for {feature}",
|
|
665
674
|
"item_type": "task",
|
|
666
|
-
"work_category": "
|
|
675
|
+
"work_category": "backend",
|
|
667
676
|
"parent_key": "{STORY-KEY}",
|
|
668
677
|
"description": "{full description with acceptance criteria}"
|
|
669
678
|
},
|
|
@@ -671,7 +680,7 @@ work_bulk_create(items: [
|
|
|
671
680
|
"temp_id": "task-2",
|
|
672
681
|
"title": "Create API route structure for {feature}",
|
|
673
682
|
"item_type": "task",
|
|
674
|
-
"work_category": "
|
|
683
|
+
"work_category": "backend",
|
|
675
684
|
"parent_key": "{STORY-KEY}",
|
|
676
685
|
"description": "{full description with acceptance criteria}"
|
|
677
686
|
}
|
|
@@ -723,12 +732,15 @@ Before considering technical planning complete, verify:
|
|
|
723
732
|
- [ ] Tasks are created in Allye with proper parent relationship
|
|
724
733
|
- [ ] Story is moved to in_progress
|
|
725
734
|
- [ ] Planning summary is saved as memory
|
|
735
|
+
- [ ] All of the feature's stories are planned before the \`technical-to-orchestration\` handover is emitted (see \xA70)
|
|
726
736
|
|
|
727
737
|
---
|
|
728
738
|
|
|
729
739
|
## What Comes Next
|
|
730
740
|
|
|
731
|
-
|
|
741
|
+
**If the feature has more stories still unplanned, go back to Step 1 for the next story \u2014 no handover yet (see \xA70).**
|
|
742
|
+
|
|
743
|
+
Once the last story in the feature is planned, emit a **\`technical-to-orchestration\`** handover (see the \`handover-protocol\` skill) for the Orchestrator. Spell out the full reading list \u2014 doc, epic, feature, every story, every task, grouped by wave \u2014 and every locked architecture decision, across all the stories planned in this cycle. The Orchestrator has no other context; a vague pointer here becomes its problem later.`;
|
|
732
744
|
var ORCHESTRATOR = `# Orchestrator
|
|
733
745
|
|
|
734
746
|
You drive delivery. You don't plan \u2014 that already happened in Technical Planning \u2014 and you don't implement \u2014 that's Executor's job, one fresh chat at a time. You coordinate: who owns what, what's in progress, whether a story is genuinely done, and when to bring in review.
|
|
@@ -755,45 +767,36 @@ Move claimed items to \`in_progress\` (\`work_status_next\`) as work on them act
|
|
|
755
767
|
|
|
756
768
|
## 4. Dispatch Executor \u2014 one story at a time
|
|
757
769
|
|
|
758
|
-
Before dispatching, do a quick completeness check on the story's tasks: does each one have concrete, verifiable acceptance criteria \u2014 something you could actually judge as met or not-met? A task like "data modeling" with no defined schema, or "handle errors" with no defined error cases, is not execution-ready. If a task looks underspecified, say so to the user now and resolve it (or route back to \`technical-planning\`) before dispatching \u2014 don't let an obviously vague task go to Executor and discover that the hard way
|
|
759
|
-
|
|
760
|
-
**Ask the user: automatic or manual?**
|
|
761
|
-
|
|
762
|
-
- **Manual** (the original flow \u2014 default when unsure): emit a \`story-execution\` handover (\`handover-protocol\` \u2192 \`references/story-execution.md\`) scoped to exactly one story and its tasks. The user runs it in a fresh Executor chat.
|
|
763
|
-
- **Automatic**: dispatch the \`executor\` subagent directly via the \`Agent\` tool, in this same conversation. Fill out the exact same fields \`references/story-execution.md\` defines \u2014 story, tasks with acceptance criteria copied in full, locked decisions, applicable code standards, TDD expectation \u2014 and use that filled-out content as the dispatch prompt, instead of a handover the user pastes. **Same information, same template, different transport** \u2014 automatic mode is not a lighter briefing than manual, it's the identical one delivered a different way.
|
|
764
|
-
|
|
765
|
-
Either way, the scope is identical: **exactly one story and its tasks, never a whole feature.** Too much scope in one dispatch means it starts making its own planning decisions, which isn't its job in either mode.
|
|
770
|
+
Before dispatching, do a quick completeness check on the story's tasks: does each one have concrete, verifiable acceptance criteria \u2014 something you could actually judge as met or not-met? A task like "data modeling" with no defined schema, or "handle errors" with no defined error cases, is not execution-ready. If a task looks underspecified, say so to the user now and resolve it (or route back to \`technical-planning\`) before dispatching \u2014 don't let an obviously vague task go to Executor and discover that the hard way.
|
|
766
771
|
|
|
767
|
-
|
|
768
|
-
**Automatic mode's limit \u2014 the reason this is a choice, not a silent default:** the \`executor\` subagent cannot pause and ask a question, unlike the interactive \`execution\` skill. It follows a halt-and-report contract instead of an ask-a-question one: if a task turns out to be underspecified once it's actually being implemented (the pre-flight check above catches the obvious cases, not all of them), it reports that task back as \`\u274C blocked\` with the specific question, rather than guessing a design to fill the gap. When a dispatch comes back with a blocked task:
|
|
772
|
+
- emit a \`story-execution\` handover (\`handover-protocol\` \u2192 \`references/story-execution.md\`) scoped to exactly one story and its tasks. The user runs it in a fresh Executor chat.
|
|
769
773
|
|
|
770
|
-
|
|
771
|
-
2. Once answered, re-dispatch the \`executor\` subagent for just that task with the clarification included, or offer to switch that one story to manual mode if the gap turns out to be bigger than a quick answer.
|
|
774
|
+
**exactly one story and its tasks, never a whole feature.** Too much scope in one dispatch means it starts making its own planning decisions, which isn't its job.
|
|
772
775
|
|
|
773
776
|
## 5. Dispatch Reviewer \u2014 automatic and parallel
|
|
774
777
|
|
|
775
778
|
<!-- adapted from EveryInc/compound-engineering-plugin lfg (MIT) \u2014 verify the previous step's artifact before proceeding -->
|
|
776
|
-
When the execution report comes back
|
|
779
|
+
When the execution report comes back, don't take "done" at face value \u2014 check the report actually contains what it should before acting on it: files changed listed, tasks reported per acceptance criterion, not just a blanket "finished." An incomplete report is itself a signal to ask for more detail, not something to wave through.
|
|
777
780
|
|
|
778
|
-
Once the report is genuinely complete, dispatch the \`reviewer\` subagent
|
|
781
|
+
Once the report is genuinely complete, dispatch the \`reviewer\` subagent \u2014 in parallel, automatically, no need to ask the user first. Review never needs to pause and ask anyone anything, which is what makes it always dispatch-appropriate. Pass it: the active team (id and name), the story key, the task keys, and the files changed from the execution report.
|
|
779
782
|
|
|
780
783
|
## 6. React to review
|
|
781
784
|
|
|
782
785
|
Reviewer returns its standard \u2705/\u26A0\uFE0F/\u274C-per-task output (unchanged from the \`review\` skill \u2014 no new format to learn).
|
|
783
786
|
|
|
784
|
-
- **All \u2705** \u2192 proceed to the status cascade (\xA77).
|
|
785
|
-
- **Any \u274C** \u2192
|
|
787
|
+
- **All \u2705** \u2192 move each approved task the rest of the way to \`done\` yourself \u2014 the Executor only advanced it as far as \`review\` \u2014 then proceed to the status cascade (\xA77).
|
|
788
|
+
- **Any \u274C** \u2192 the failed task simply stays at \`review\` while the correction round runs. No backward move is needed (or possible \u2014 \`work_status_next\` only moves forward, per \`allye-board-progression\`): the task never reached \`done\`, because reaching \`done\` requires your move after Reviewer \u2705. Send corrections back using \`references/correction.md\`'s exact fields (only the failed findings, the correction-round count, the story reference \u2014 never a full re-brief of the story): emit it as a \`correction\` handover. Loop back to \xA75 once the next execution report arrives.
|
|
786
789
|
|
|
787
790
|
<!-- adapted from bmad-code-org/BMAD-METHOD correct-course (MIT) \u2014 structured change-impact analysis for corrections that ripple beyond one task -->
|
|
788
791
|
**Before emitting a routine correction, check whether the finding is actually local.** Most \u274C findings are narrow \u2014 a missed edge case, a broken test. But if a finding suggests something baked into the technical plan itself was wrong (a data model assumption, an architecture choice that doesn't hold), don't just patch around it silently in a correction handover \u2014 that ripples into other tasks and stories that assumed the same thing. Surface it to the user explicitly before continuing; a silent local patch over a wrong foundational assumption just relocates the bug.
|
|
789
792
|
|
|
790
|
-
**Decided (spec review, 2026-07-12):
|
|
793
|
+
**Decided (spec review, 2026-07-12): at most 2 correction handovers are ever emitted for the same task.** Track how many correction handovers this task has already received. If a task that has already received 2 correction handovers comes back \u274C again \u2014 i.e., this is the 3rd review failure on that task \u2014 do not emit a 3rd correction handover: stop and escalate to the user instead. Two correction rounds failing for different specific reasons is normal; a third failure usually means something deeper is being missed, and it's worth a human look before burning another round.
|
|
791
794
|
|
|
792
795
|
## 7. Status cascade \u2014 continuous, not just at the end
|
|
793
796
|
|
|
794
797
|
Apply this at every level, as work actually completes \u2014 not once at the tail end of the whole feature:
|
|
795
798
|
|
|
796
|
-
1.
|
|
799
|
+
1. Reviewer returns \u2705 on a task (criteria met, tests pass) \u2192 **you** move it from \`review\` to \`done\` via \`work_status_done\` (which also records \`completed_at\`) \u2014 the Executor deliberately left it at \`review\`, and this last move is exclusively yours, made only after Reviewer \u2705 \u2192 \`work_children\` on the parent story \u2192 all done? \u2192 \`work_status_done\` the story.
|
|
797
800
|
2. Story done \u2192 \`work_children\` on the parent feature \u2192 all done? \u2192 \`work_status_done\` the feature.
|
|
798
801
|
3. Feature done \u2192 \`work_children\` on the parent epic \u2192 all done? \u2192 \`work_status_done\` the epic.
|
|
799
802
|
|
|
@@ -808,7 +811,7 @@ Unclear assignee, no active sprint to assign into, conflicting or unexpected sta
|
|
|
808
811
|
|
|
809
812
|
## 10. Memory
|
|
810
813
|
|
|
811
|
-
Search at start (\xA71). Save session state before ending \u2014 current position in the feature (which story/wave), what's been dispatched, what's pending review, any escalations raised. If a correction round revealed something worth remembering beyond this session (a wrong assumption, a pattern), save it as its own memory in the appropriate sector, per the \`memory-protocol\` skill \u2014 don't let it live only in this session's state snapshot.`;
|
|
814
|
+
Search at start (\xA71). Save session state before ending \u2014 current position in the feature (which story/wave), what's been dispatched, what's pending review, any escalations raised. If a correction round revealed something worth remembering beyond this session (a wrong assumption, a pattern), save it as its own memory in the appropriate sector, per the \`allye-memory-protocol\` skill \u2014 don't let it live only in this session's state snapshot.`;
|
|
812
815
|
var TECHNICAL_DEVELOPMENT = `# Technical Development Workflow
|
|
813
816
|
|
|
814
817
|
This skill guides you through implementing a task with discipline: read existing code first, write tests, implement, refactor, and track progress in Allye.
|
|
@@ -822,7 +825,7 @@ Use this when the user wants to: write code, implement a task, fix a bug, add fu
|
|
|
822
825
|
## Workflow Overview
|
|
823
826
|
|
|
824
827
|
\`\`\`
|
|
825
|
-
Get task \u2192 Search context \u2192 Move to in_progress \u2192 Read code \u2192 TDD (Red \u2192 Green \u2192 Refactor) \u2192 Verify \u2192 Move to
|
|
828
|
+
Get task \u2192 Search context \u2192 Move to in_progress \u2192 Read code \u2192 TDD (Red \u2192 Green \u2192 Refactor) \u2192 Verify \u2192 Move to review \u2192 Save memory
|
|
826
829
|
\`\`\`
|
|
827
830
|
|
|
828
831
|
---
|
|
@@ -832,7 +835,7 @@ Get task \u2192 Search context \u2192 Move to in_progress \u2192 Read code \u219
|
|
|
832
835
|
Fetch the task you're about to implement:
|
|
833
836
|
|
|
834
837
|
\`\`\`
|
|
835
|
-
work_get(
|
|
838
|
+
work_get(work_key: "{TASK-KEY}")
|
|
836
839
|
\`\`\`
|
|
837
840
|
|
|
838
841
|
Read its description carefully \u2014 it should contain:
|
|
@@ -867,7 +870,7 @@ If the task has dependencies (noted in its description), verify they're complete
|
|
|
867
870
|
work_children(id: "{story uuid}")
|
|
868
871
|
\`\`\`
|
|
869
872
|
|
|
870
|
-
Check that prerequisite tasks are in "done" status. If
|
|
873
|
+
Check that prerequisite tasks are in "review" or "done" status \u2014 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:
|
|
871
874
|
- Pick a different task from the same wave (if available)
|
|
872
875
|
- Inform the user that this task is blocked
|
|
873
876
|
|
|
@@ -1023,18 +1026,18 @@ Examples of things that need human action:
|
|
|
1023
1026
|
|
|
1024
1027
|
---
|
|
1025
1028
|
|
|
1026
|
-
## Step 7:
|
|
1029
|
+
## Step 7: Move Task to Review
|
|
1027
1030
|
|
|
1028
1031
|
<!-- adapted from superpowers:verification-before-completion (MIT) \u2014 evidence before assertions -->
|
|
1029
|
-
**Evidence before assertions.** Don't
|
|
1032
|
+
**Evidence before assertions.** Don't advance a task because it looks right \u2014 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."
|
|
1030
1033
|
|
|
1031
1034
|
Once all acceptance criteria are verifiably met and tests pass:
|
|
1032
1035
|
|
|
1033
1036
|
\`\`\`
|
|
1034
|
-
|
|
1037
|
+
work_status_next(id: "{task uuid}")
|
|
1035
1038
|
\`\`\`
|
|
1036
1039
|
|
|
1037
|
-
This
|
|
1040
|
+
This advances the task forward to the "review" status. **Do NOT call \`work_status_done\` here** \u2014 passing its own tests makes a task ready for review, not done. "Done" only happens after the Reviewer returns \u2705, and that final move (\`review\` \u2192 \`done\`) is the Orchestrator's, not yours (see the \`orchestrator\` skill \xA77).
|
|
1038
1041
|
|
|
1039
1042
|
---
|
|
1040
1043
|
|
|
@@ -1066,7 +1069,7 @@ work_children(id: "{story uuid}")
|
|
|
1066
1069
|
|
|
1067
1070
|
- If there are more tasks in the current wave \u2192 pick one
|
|
1068
1071
|
- If the current wave is done \u2192 move to the next wave
|
|
1069
|
-
- If
|
|
1072
|
+
- If every task in the story has reached \`review\` (implementation complete, awaiting Reviewer) \u2192 emit an **\`execution-report\`** handover (see the \`handover-protocol\` skill) back to the Orchestrator
|
|
1070
1073
|
|
|
1071
1074
|
---
|
|
1072
1075
|
|
|
@@ -1082,7 +1085,7 @@ For each task, verify:
|
|
|
1082
1085
|
- [ ] TDD cycle completed (or tests written after for non-TDD-suitable tasks)
|
|
1083
1086
|
- [ ] All acceptance criteria are met
|
|
1084
1087
|
- [ ] Tests pass
|
|
1085
|
-
- [ ] Task moved to done
|
|
1088
|
+
- [ ] Task moved to review (never directly to done \u2014 that's the Orchestrator's move after Reviewer \u2705)
|
|
1086
1089
|
- [ ] Implementation memory saved (if non-trivial)
|
|
1087
1090
|
|
|
1088
1091
|
---
|
|
@@ -1111,7 +1114,7 @@ Get story context \u2192 Load decisions \u2192 Review each task \u2192 Document
|
|
|
1111
1114
|
### Get the story and its tasks
|
|
1112
1115
|
|
|
1113
1116
|
\`\`\`
|
|
1114
|
-
work_get(
|
|
1117
|
+
work_get(work_key: "{STORY-KEY}")
|
|
1115
1118
|
work_children(id: "{story uuid}")
|
|
1116
1119
|
\`\`\`
|
|
1117
1120
|
|
|
@@ -1219,10 +1222,11 @@ memory_save(
|
|
|
1219
1222
|
)
|
|
1220
1223
|
\`\`\`
|
|
1221
1224
|
|
|
1222
|
-
If tasks need rework, move
|
|
1225
|
+
If tasks need rework, set their status back explicitly. \`work_status_next\` only moves **forward** (there is no \`work_status_prev\`), so a backward move goes through \`work_update\` with an explicit status id:
|
|
1223
1226
|
|
|
1224
1227
|
\`\`\`
|
|
1225
|
-
|
|
1228
|
+
work_statuses() // find the id of the target status (e.g. "In Progress")
|
|
1229
|
+
work_update(id: "{task uuid}", work_status: "{status uuid}")
|
|
1226
1230
|
\`\`\`
|
|
1227
1231
|
|
|
1228
1232
|
---
|
|
@@ -1252,7 +1256,7 @@ If you can run the test suite, do it:
|
|
|
1252
1256
|
|
|
1253
1257
|
## What Comes Next
|
|
1254
1258
|
|
|
1255
|
-
If the review passes, transition to **
|
|
1259
|
+
If the review passes, transition to **Delivery** \u2014 load the \`delivery\` skill (backend slug: \`allye-technical-delivery\`).
|
|
1256
1260
|
|
|
1257
1261
|
If changes are needed, the developer addresses the findings (back to **Technical Development**), then returns here for re-review.`;
|
|
1258
1262
|
var TECHNICAL_DELIVERY = `# Technical Delivery Workflow
|
|
@@ -1371,7 +1375,7 @@ todo_list()
|
|
|
1371
1375
|
\`\`\`
|
|
1372
1376
|
|
|
1373
1377
|
For each TODO related to this story:
|
|
1374
|
-
- If it's done \u2192 mark as complete: \`todo_update(id: "{todo uuid}",
|
|
1378
|
+
- If it's done \u2192 mark as complete: \`todo_update(id: "{todo uuid}", status: "completed")\`
|
|
1375
1379
|
- If it's no longer relevant \u2192 delete: \`todo_delete(id: "{todo uuid}")\`
|
|
1376
1380
|
- If it's a future task \u2192 leave it, but make sure it's not blocking delivery
|
|
1377
1381
|
|
|
@@ -1636,11 +1640,22 @@ This skill defines how to correctly move work items between statuses using Allye
|
|
|
1636
1640
|
|
|
1637
1641
|
---
|
|
1638
1642
|
|
|
1639
|
-
## 1. Status Categories
|
|
1643
|
+
## 1. Status Categories vs. Status Names
|
|
1644
|
+
|
|
1645
|
+
The MCP client can only **confirm** 4 status categories \u2014 \`work_statuses()\` (\`work_items.py\`) groups every status under a hardcoded \`category_order\`:
|
|
1646
|
+
|
|
1647
|
+
| Category (confirmed) | Meaning |
|
|
1648
|
+
|----------|---------|
|
|
1649
|
+
| \`proposed\` | Not yet started (backlog/todo-like) |
|
|
1650
|
+
| \`in_progress\` | Actively being worked on |
|
|
1651
|
+
| \`done\` | Completed and verified |
|
|
1652
|
+
| \`cancelled\` | Will not be done |
|
|
1653
|
+
|
|
1654
|
+
That's the only taxonomy the MCP client source guarantees. Specific status **names** (e.g. "Backlog", "Todo", "In Progress", "Testing", "Review", "Deploying", "Done") are team-configurable \`WorkflowStatus\` records mapped onto those 4 categories via board columns \u2014 they are not enumerable or guaranteed from the client code alone, and a given team's board may use different names or skip some of them.
|
|
1640
1655
|
|
|
1641
|
-
|
|
1656
|
+
With that caveat, the finer-grained progression below is a common, practical convention (not something the client confirms) that this skill assumes as its default working model, because most teams do configure something like it:
|
|
1642
1657
|
|
|
1643
|
-
|
|
|
1658
|
+
| Status name (convention) | Meaning |
|
|
1644
1659
|
|----------|---------|
|
|
1645
1660
|
| \`backlog\` | Not yet planned \u2014 sitting in the backlog |
|
|
1646
1661
|
| \`todo\` | Planned and ready to start |
|
|
@@ -1651,7 +1666,7 @@ Allye uses these status categories, in typical progression order:
|
|
|
1651
1666
|
| \`done\` | Completed and verified |
|
|
1652
1667
|
| \`cancelled\` | Will not be done |
|
|
1653
1668
|
|
|
1654
|
-
Each team can customize their board with different columns and map statuses to columns as they see fit.
|
|
1669
|
+
Each team can customize their board with different columns and map statuses to columns as they see fit. Before relying on any specific status name, check \`work_statuses()\` (categories + actual names for the team) and \`board_columns()\` (which columns exist on the board in question).
|
|
1655
1670
|
|
|
1656
1671
|
---
|
|
1657
1672
|
|
|
@@ -1743,7 +1758,7 @@ Returns all available statuses with their categories and names.
|
|
|
1743
1758
|
board_columns()
|
|
1744
1759
|
\`\`\`
|
|
1745
1760
|
|
|
1746
|
-
Returns the board
|
|
1761
|
+
Returns the board's columns for the given \`board_id\` \u2014 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) \u2014 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.
|
|
1747
1762
|
|
|
1748
1763
|
---
|
|
1749
1764
|
|
|
@@ -1782,10 +1797,11 @@ backlog \u2192 todo \u2192 in_progress \u2192 review \u2192 done
|
|
|
1782
1797
|
|
|
1783
1798
|
Tasks are the most granular:
|
|
1784
1799
|
\`\`\`
|
|
1785
|
-
todo \u2192 in_progress \u2192 done
|
|
1800
|
+
todo \u2192 in_progress \u2192 review \u2192 done
|
|
1786
1801
|
\`\`\`
|
|
1787
1802
|
- \`in_progress\`: actively being implemented
|
|
1788
|
-
- \`
|
|
1803
|
+
- \`review\`: acceptance criteria met, tests pass \u2014 the Executor advances the task here (\`work_status_next\`) and no further; the task now awaits the Reviewer
|
|
1804
|
+
- \`done\`: Reviewer returned \u2705 \u2014 the **Orchestrator** makes this final move (\`work_status_done\`), never the Executor. If the Reviewer returns \u274C, the task simply stays at \`review\` while a correction round runs (no backward move exists or is needed)
|
|
1789
1805
|
|
|
1790
1806
|
### Bug
|
|
1791
1807
|
|
|
@@ -1802,6 +1818,7 @@ todo \u2192 in_progress \u2192 testing \u2192 done
|
|
|
1802
1818
|
| Mistake | Why it's wrong | Do this instead |
|
|
1803
1819
|
|---------|---------------|-----------------|
|
|
1804
1820
|
| Moving story to done before all tasks are done | Misrepresents progress | Check \`work_children\` first \u2014 all tasks must be done |
|
|
1821
|
+
| Marking a task done as soon as its own tests pass | Done requires Reviewer approval, not just green tests | \`work_status_next\` to \`review\`; the Orchestrator moves it to done after Reviewer \u2705 |
|
|
1805
1822
|
| Skipping statuses with repeated \`work_status_next\` | Loses tracking fidelity | Only advance when the work for that status is actually complete |
|
|
1806
1823
|
| Moving to in_progress without planning | No tasks = no accountability | Run Technical Planning first, create tasks, then advance |
|
|
1807
1824
|
| Forgetting to check board structure | Different teams may have different progressions | Always check \`board_columns\` if unsure about available statuses |
|
|
@@ -1986,7 +2003,7 @@ Generate a complete handoff using the shared marker format \u2014 same shape Cla
|
|
|
1986
2003
|
|
|
1987
2004
|
\`\`\`
|
|
1988
2005
|
## \uD83D\uDD04 Allye Handover \u2014 technical-to-orchestration
|
|
1989
|
-
**Skill a carregar:**
|
|
2006
|
+
**Skill a carregar:** orchestrator
|
|
1990
2007
|
|
|
1991
2008
|
### Objetivo
|
|
1992
2009
|
Conduzir a entrega de {FEATURE-KEY} \u2014 {feature title}
|
|
@@ -2070,7 +2087,7 @@ Generate a handoff scoped to exactly ONE story and its tasks \u2014 never a whol
|
|
|
2070
2087
|
|
|
2071
2088
|
\`\`\`
|
|
2072
2089
|
## \uD83D\uDD04 Allye Handover \u2014 story-execution
|
|
2073
|
-
**Skill a carregar:**
|
|
2090
|
+
**Skill a carregar:** execution
|
|
2074
2091
|
|
|
2075
2092
|
### Story
|
|
2076
2093
|
{STORY-KEY} \u2014 {title}, with acceptance criteria copied in full
|
|
@@ -2104,7 +2121,7 @@ Review returns its standard \u2705/\u26A0\uFE0F/\u274C-per-task output.
|
|
|
2104
2121
|
|
|
2105
2122
|
\`\`\`
|
|
2106
2123
|
## \uD83D\uDD04 Allye Handover \u2014 correction
|
|
2107
|
-
**Skill a carregar:**
|
|
2124
|
+
**Skill a carregar:** execution
|
|
2108
2125
|
|
|
2109
2126
|
### Achados a corrigir (\u274C apenas)
|
|
2110
2127
|
- {TASK-KEY}: "{finding, quoted literally}"
|
|
@@ -2205,7 +2222,7 @@ When all tasks in the current story are done \u2014 or you've hit a genuine bloc
|
|
|
2205
2222
|
|
|
2206
2223
|
\`\`\`
|
|
2207
2224
|
## \uD83D\uDD04 Allye Handover \u2014 execution-report
|
|
2208
|
-
**Skill a carregar:**
|
|
2225
|
+
**Skill a carregar:** orchestrator
|
|
2209
2226
|
|
|
2210
2227
|
### Story implementada
|
|
2211
2228
|
{STORY-KEY} \u2014 {title}
|
package/package.json
CHANGED