allye-opencode 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +28 -0
  2. package/dist/index.js +18 -15
  3. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # allye-opencode
2
+
3
+ An [OpenCode](https://opencode.ai) plugin that registers 6 specialized Allye agents for the guided delivery workflow:
4
+
5
+ - **Allye — Router** — initializes context, detects the workflow phase, and delegates to the agent below
6
+ - **Allye Plan** — product planning (epics/features/stories) and technical planning (discussion phase, trade-offs, tasks)
7
+ - **Allye Orchestrator** — coordinates delivery of an already-planned feature: assigns work, tracks status, drives review
8
+ - **Allye Build** — TDD implementation of tasks
9
+ - **Allye Review** — code review with full context
10
+ - **Allye Deliver** — finalizes delivery, closes stories, updates docs
11
+
12
+ It also injects live Allye account/session context into every conversation via a system-prompt transform hook.
13
+
14
+ ## Installation
15
+
16
+ This package is not typically installed standalone. It's installed automatically as part of the main [`allye-plugin`](https://github.com/allye-app/allye-plugin) install flow (`install.sh`), which detects OpenCode and adds `allye-opencode` to the `plugin` array in your `opencode.json` alongside the Allye MCP server configuration.
17
+
18
+ If you do need to add it manually, add it to the `plugin` array in your OpenCode config:
19
+
20
+ ```json
21
+ {
22
+ "plugin": ["allye-opencode"]
23
+ }
24
+ ```
25
+
26
+ ## Documentation
27
+
28
+ For full workflow documentation — the guided delivery methodology, the phase skills, and the handover protocol this plugin implements — see the main repo: [github.com/allye-app/allye-plugin](https://github.com/allye-app/allye-plugin).
package/dist/index.js CHANGED
@@ -149,6 +149,7 @@ Detect what the user needs and delegate to the right agent using the \`task\` to
149
149
 
150
150
  | User intent | Delegate to |
151
151
  |-------------|-------------|
152
+ | Explore ideas, research before committing to scope, think out loud | **allye-plan** (exploration only \u2014 do NOT create work items yet) |
152
153
  | Define requirements, plan features, create epics/stories, break stories into tasks | **allye-plan** |
153
154
  | Coordinate delivery of an already-planned feature \u2014 assign work, track status, drive review | **allye-orchestrator** |
154
155
  | Implement code, write tests, fix bugs, develop features | **allye-build** |
@@ -157,6 +158,7 @@ Detect what the user needs and delegate to the right agent using the \`task\` to
157
158
 
158
159
  ### How to detect the phase
159
160
 
161
+ - **Exploring** \u2014 User wants to: think out loud, explore ideas, research a problem space, weigh directions before committing to scope. Nothing should be created yet \u2014 no epics, features, or stories. Delegate to allye-plan but tell it explicitly this is open-ended exploration, not work-item creation.
160
162
  - **Planning** \u2014 User talks about: requirements, business needs, features, epics, user stories, scope, MVP, tasks, approach, options, trade-offs
161
163
  - **Orchestrating** \u2014 User wants to: coordinate delivery, assign work items, track story/task status, drive review for an already-planned feature
162
164
  - **Building** \u2014 User wants to: write code, implement a task, fix a bug, add functionality, write tests
@@ -179,8 +181,8 @@ If the user's request is simple and doesn't match any phase (general questions,
179
181
  `.trim();
180
182
  var allyeAgent = {
181
183
  ...SHARED_CONFIG,
182
- description: "Allye orchestrator \u2014 initializes context, detects workflow phase, and delegates to specialized Allye agents (Plan, Build, Review, Deliver)",
183
- prompt: buildPrompt("Allye \u2014 Orchestrator", [
184
+ description: "Allye router \u2014 initializes context, detects workflow phase, and delegates to specialized Allye agents (Plan, Orchestrator, Build, Review, Deliver)",
185
+ prompt: buildPrompt("Allye \u2014 Router", [
184
186
  LANGUAGE_DETECTION,
185
187
  ALLYE_INIT_PROTOCOL,
186
188
  MEMORY_SEARCH_PROTOCOL,
@@ -785,6 +787,7 @@ Once the report is genuinely complete, dispatch the \`reviewer\` subagent \u2014
785
787
  Reviewer returns its standard \u2705/\u26A0\uFE0F/\u274C-per-task output (unchanged from the \`review\` skill \u2014 no new format to learn).
786
788
 
787
789
  - **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).
790
+ - **\u26A0\uFE0F warnings only, no \u274C** \u2192 a warning isn't a blocker: proceed to the status cascade (\xA77) the same as All \u2705. Don't silently discard the warnings and don't force an unnecessary correction round either \u2014 record them as a note (in the task's context, or as a memory) so they're not lost.
788
791
  - **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.
789
792
 
790
793
  <!-- adapted from bmad-code-org/BMAD-METHOD correct-course (MIT) \u2014 structured change-impact analysis for corrections that ripple beyond one task -->
@@ -811,7 +814,7 @@ Unclear assignee, no active sprint to assign into, conflicting or unexpected sta
811
814
 
812
815
  ## 10. Memory
813
816
 
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.`;
817
+ 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, correction-round count per task (so the 2-correction-max escalation rule survives a resumed session). 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.`;
815
818
  var TECHNICAL_DEVELOPMENT = `# Technical Development Workflow
816
819
 
817
820
  This skill guides you through implementing a task with discipline: read existing code first, write tests, implement, refactor, and track progress in Allye.
@@ -914,12 +917,14 @@ This is not optional. Writing code without reading the context leads to:
914
917
  ### Analysis Paralysis Guard
915
918
 
916
919
  <HARD-GATE>
917
- If you have read 5+ files without writing any code, STOP and ask yourself:
920
+ This checkpoint applies to exploratory reads beyond what the task already named \u2014 reading every file the task itself points you to (see "What to read" above) is still mandatory, not capped by this count.
921
+
922
+ If you have read 5+ files *beyond those named/implied by the task* without writing any code, STOP and ask yourself:
918
923
 
919
924
  1. **Do I have enough context to start?** \u2192 If yes, start writing. Perfect understanding is not required.
920
925
  2. **Am I blocked by missing information?** \u2192 If yes, tell the user what's blocking you.
921
926
 
922
- Do not read endlessly. Reading is preparation, not implementation.
927
+ Do not read endlessly in search of additional context. Reading is preparation, not implementation.
923
928
  </HARD-GATE>
924
929
 
925
930
  ---
@@ -1061,16 +1066,14 @@ Only save if there's genuinely useful context. Don't save trivial implementation
1061
1066
 
1062
1067
  ## Step 9: Pick Next Task
1063
1068
 
1064
- After completing a task, check what's next:
1065
-
1066
- \`\`\`
1067
- work_children(id: "{story uuid}")
1068
- \`\`\`
1069
+ After completing a task, pick the next one from the **handover's own wave-ordered task list** \u2014 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).
1069
1070
 
1070
- - If there are more tasks in the current wave \u2192 pick one
1071
- - If the current wave is done \u2192 move to the next wave
1071
+ - If there are more tasks in the current wave (per the handover's list) \u2192 pick one
1072
+ - If the current wave is done \u2192 move to the next wave (per the handover's list)
1072
1073
  - 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
1073
1074
 
1075
+ 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\`) \u2014 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 \u2014 it wasn't in scope when the handover was dispatched. Instead, note it as an open question ("D\xFAvidas em aberto") in the \`execution-report\` handover so the Orchestrator can decide whether to bring it into scope.
1076
+
1074
1077
  ---
1075
1078
 
1076
1079
  ## Workflow Checklist
@@ -2038,9 +2041,9 @@ After generating the handoff, say:
2038
2041
  > 3. The Orchestrator will coordinate implementation and review from here"
2039
2042
 
2040
2043
  ### Important:
2041
- - ALWAYS generate the handoff prompt \u2014 don't just say "switch to Build"
2042
- - The prompt must be COMPLETE \u2014 the Build agent starts from zero, it has no memory of this conversation
2043
- - Include ALL locked decisions \u2014 Build must respect them
2044
+ - ALWAYS generate the handoff prompt \u2014 don't just say "switch to Orchestrator"
2045
+ - The prompt must be COMPLETE \u2014 the Orchestrator agent starts from zero, it has no memory of this conversation
2046
+ - Include ALL locked decisions \u2014 Orchestrator must respect them
2044
2047
  - Include the specific task key to start with \u2014 don't leave it vague
2045
2048
  `.trim();
2046
2049
  var allyePlanAgent = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allye-opencode",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "Allye multi-agent plugin for OpenCode — planning, building, reviewing, and delivering with structured workflows",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",