allye-opencode 1.2.3 → 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 +32 -20
- 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
|
}
|
|
@@ -479,13 +480,13 @@ The steps below plan **one story at a time** \u2014 but the unit Technical Plann
|
|
|
479
480
|
Fetch the story the user wants to plan:
|
|
480
481
|
|
|
481
482
|
\`\`\`
|
|
482
|
-
work_get(id: "{story uuid}" or
|
|
483
|
+
work_get(id: "{story uuid}" or work_key: "{PROJ-123}")
|
|
483
484
|
\`\`\`
|
|
484
485
|
|
|
485
486
|
Read the story's description, acceptance criteria, and parent context. If the story is part of a feature/epic, understand the broader scope:
|
|
486
487
|
|
|
487
488
|
\`\`\`
|
|
488
|
-
work_get(
|
|
489
|
+
work_get(work_key: "{parent feature key}")
|
|
489
490
|
\`\`\`
|
|
490
491
|
|
|
491
492
|
---
|
|
@@ -666,12 +667,12 @@ Present the wave structure to the user so they understand the execution order.
|
|
|
666
667
|
### 4.5 Create Tasks via Bulk Create
|
|
667
668
|
|
|
668
669
|
\`\`\`
|
|
669
|
-
work_bulk_create(
|
|
670
|
+
work_bulk_create(work_items: [
|
|
670
671
|
{
|
|
671
672
|
"temp_id": "task-1",
|
|
672
673
|
"title": "Set up database schema for {feature}",
|
|
673
674
|
"item_type": "task",
|
|
674
|
-
"work_category": "
|
|
675
|
+
"work_category": "backend",
|
|
675
676
|
"parent_key": "{STORY-KEY}",
|
|
676
677
|
"description": "{full description with acceptance criteria}"
|
|
677
678
|
},
|
|
@@ -679,7 +680,7 @@ work_bulk_create(items: [
|
|
|
679
680
|
"temp_id": "task-2",
|
|
680
681
|
"title": "Create API route structure for {feature}",
|
|
681
682
|
"item_type": "task",
|
|
682
|
-
"work_category": "
|
|
683
|
+
"work_category": "backend",
|
|
683
684
|
"parent_key": "{STORY-KEY}",
|
|
684
685
|
"description": "{full description with acceptance criteria}"
|
|
685
686
|
}
|
|
@@ -777,7 +778,7 @@ Before dispatching, do a quick completeness check on the story's tasks: does eac
|
|
|
777
778
|
<!-- adapted from EveryInc/compound-engineering-plugin lfg (MIT) \u2014 verify the previous step's artifact before proceeding -->
|
|
778
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.
|
|
779
780
|
|
|
780
|
-
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 story key, the task keys, and the files changed from the execution report.
|
|
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.
|
|
781
782
|
|
|
782
783
|
## 6. React to review
|
|
783
784
|
|
|
@@ -834,7 +835,7 @@ Get task \u2192 Search context \u2192 Move to in_progress \u2192 Read code \u219
|
|
|
834
835
|
Fetch the task you're about to implement:
|
|
835
836
|
|
|
836
837
|
\`\`\`
|
|
837
|
-
work_get(
|
|
838
|
+
work_get(work_key: "{TASK-KEY}")
|
|
838
839
|
\`\`\`
|
|
839
840
|
|
|
840
841
|
Read its description carefully \u2014 it should contain:
|
|
@@ -1113,7 +1114,7 @@ Get story context \u2192 Load decisions \u2192 Review each task \u2192 Document
|
|
|
1113
1114
|
### Get the story and its tasks
|
|
1114
1115
|
|
|
1115
1116
|
\`\`\`
|
|
1116
|
-
work_get(
|
|
1117
|
+
work_get(work_key: "{STORY-KEY}")
|
|
1117
1118
|
work_children(id: "{story uuid}")
|
|
1118
1119
|
\`\`\`
|
|
1119
1120
|
|
|
@@ -1639,11 +1640,22 @@ This skill defines how to correctly move work items between statuses using Allye
|
|
|
1639
1640
|
|
|
1640
1641
|
---
|
|
1641
1642
|
|
|
1642
|
-
## 1. Status Categories
|
|
1643
|
+
## 1. Status Categories vs. Status Names
|
|
1643
1644
|
|
|
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\`:
|
|
1645
1646
|
|
|
1646
|
-
| Category | Meaning |
|
|
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.
|
|
1655
|
+
|
|
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:
|
|
1657
|
+
|
|
1658
|
+
| Status name (convention) | Meaning |
|
|
1647
1659
|
|----------|---------|
|
|
1648
1660
|
| \`backlog\` | Not yet planned \u2014 sitting in the backlog |
|
|
1649
1661
|
| \`todo\` | Planned and ready to start |
|
|
@@ -1654,7 +1666,7 @@ Allye uses these status categories, in typical progression order:
|
|
|
1654
1666
|
| \`done\` | Completed and verified |
|
|
1655
1667
|
| \`cancelled\` | Will not be done |
|
|
1656
1668
|
|
|
1657
|
-
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).
|
|
1658
1670
|
|
|
1659
1671
|
---
|
|
1660
1672
|
|
|
@@ -1746,7 +1758,7 @@ Returns all available statuses with their categories and names.
|
|
|
1746
1758
|
board_columns()
|
|
1747
1759
|
\`\`\`
|
|
1748
1760
|
|
|
1749
|
-
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.
|
|
1750
1762
|
|
|
1751
1763
|
---
|
|
1752
1764
|
|
package/package.json
CHANGED