@chorus-aidlc/chorus-pi 0.0.1

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.
@@ -0,0 +1,549 @@
1
+ ---
2
+ name: yolo
3
+ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the entire Idea -> Proposal -> Execute -> Verify lifecycle.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.17.0"
8
+ category: project-management
9
+ mcp_server: chorus
10
+ ---
11
+
12
+ # Yolo Skill
13
+
14
+ Full-auto AI-DLC pipeline. User provides a prompt; agent drives the entire lifecycle: Idea -> Elaboration -> Proposal -> Review -> Execute -> Verify -> Done.
15
+
16
+ ---
17
+
18
+ ## Overview
19
+
20
+ `/yolo` automates the complete AI-DLC workflow. You provide a natural language description of what you want built, and the agent handles everything:
21
+
22
+ 1. **Planning** -- create project, idea, self-elaboration, proposal with docs & tasks
23
+ 2. **Proposal Review** -- proposal-reviewer adversarial loop
24
+ 3. **Execution** -- wave-based Agent Team parallel task dispatch
25
+ 4. **Verification** -- task-reviewer adversarial loop + admin verify
26
+ 4.5. **Code-Review Gateway** -- code-reviewer reviews the Idea's aggregate change before ship (FAIL → add fix tasks → re-run)
27
+ 5. **Report** -- completion summary
28
+
29
+ ```
30
+ /yolo <prompt>
31
+ |
32
+ v
33
+ Project + Idea + Elaboration + Proposal
34
+ |
35
+ v
36
+ Proposal Reviewer (auto, up to maxProposalReviewRounds)
37
+ |
38
+ v
39
+ Admin Approve --> Tasks materialize
40
+ |
41
+ v
42
+ Wave-based Agent Team execution
43
+ | (dev agent + task-reviewer per task)
44
+ v
45
+ Admin Verify each wave --> unblock next
46
+ |
47
+ v
48
+ Code-Review Gateway (auto, up to CHORUS_MAX_CODE_REVIEW_ROUNDS; default 3, 0 = unlimited)
49
+ | PASS --> ship | FAIL --> add fix tasks --> re-run
50
+ v
51
+ Done. Report summary.
52
+ ```
53
+
54
+ **Escape hatch:** Ctrl+C at any time. All created entities (project, idea, proposal, tasks) persist in Chorus. Resume manually via `/develop` or `/review`.
55
+
56
+ ---
57
+
58
+ ## Prerequisites
59
+
60
+ The API key needs write + admin on every resource it touches:
61
+
62
+ | Needs | Why |
63
+ |------|-----|
64
+ | `idea: [write]` | Create ideas, run elaboration |
65
+ | `proposal: [write, admin]` | Create proposals; approve them |
66
+ | `task: [write, admin]` | Create, execute, verify tasks |
67
+ | `project: [write]` | Create the project if none is given |
68
+
69
+ **Check at startup:**
70
+
71
+ ```
72
+ perms = chorus_checkin().agent.permissions
73
+ need = { idea: ["write"], proposal: ["write","admin"],
74
+ task: ["write","admin"], project: ["write"] }
75
+
76
+ for resource, actions in need:
77
+ missing = [a for a in actions if a not in (perms[resource] or [])]
78
+ if missing: ABORT "/yolo needs {resource}: {missing}. Use an Admin-preset API key."
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Input
84
+
85
+ ```
86
+ /yolo <natural language prompt>
87
+ /yolo <prompt> --project <project-uuid>
88
+ ```
89
+
90
+ - `<prompt>` -- what you want built (becomes the Idea content)
91
+ - `--project <uuid>` -- optional; use an existing project instead of creating a new one
92
+
93
+ ---
94
+
95
+ ## Workflow
96
+
97
+ ### Phase 1: Planning
98
+
99
+ #### Step 1.1: Resolve Project
100
+
101
+ Parse the arguments for `--project <uuid>`.
102
+
103
+ **If `--project` is provided:**
104
+ ```
105
+ chorus_get_project({ projectUuid: "<uuid>" })
106
+ ```
107
+ Verify it exists and proceed.
108
+
109
+ **If not provided**, search for a suitable existing project first:
110
+ ```
111
+ # 1. Search for projects matching the prompt topic
112
+ chorus_search({ query: "<key terms from prompt>", entityTypes: ["project"] })
113
+
114
+ # 2. Or list recent projects to find a match
115
+ chorus_list_projects()
116
+ ```
117
+
118
+ Review the results. If a project clearly matches the user's intent (same topic, active, relevant scope), use it. If no suitable project exists, create a new one:
119
+ ```
120
+ chorus_admin_create_project({
121
+ name: "<short title derived from prompt>",
122
+ description: "<1-2 sentence summary of the prompt>"
123
+ })
124
+ ```
125
+
126
+ #### Step 1.2: Create Idea
127
+
128
+ ```
129
+ chorus_pm_create_idea({
130
+ projectUuid: "<project-uuid>",
131
+ title: "<concise title derived from prompt>",
132
+ content: "<full user prompt as-is>"
133
+ })
134
+ ```
135
+
136
+ Then claim it:
137
+ ```
138
+ chorus_claim_idea({ ideaUuid: "<idea-uuid>" })
139
+ ```
140
+
141
+ #### Step 1.3: Self-Elaboration
142
+
143
+ In /yolo mode, the agent generates elaboration questions and answers them itself -- no `AskUserQuestion` calls. This preserves an audit trail without interrupting the user.
144
+
145
+ > **Self-elaboration is still a loop.** If answering your own questions surfaces a **new question, contradiction, or gap**, loop back to `chorus_pm_start_elaboration` for another self-answered round before resolving — don't force a resolve over unresolved ambiguity. There is no human gate in YOLO, so the loop exits on **your** judgment that nothing material is left open (round cap 10). Steps 1–2 are one round; repeat them as needed, then resolve once in Step 3.
146
+
147
+ 1. **Generate and submit questions:**
148
+ ```
149
+ chorus_pm_start_elaboration({
150
+ ideaUuid: "<idea-uuid>",
151
+ depth: "standard",
152
+ questions: [
153
+ {
154
+ id: "q1",
155
+ text: "<question about scope, architecture, etc.>",
156
+ category: "functional",
157
+ options: [
158
+ { id: "a", label: "<option A>" },
159
+ { id: "b", label: "<option B>" }
160
+ ]
161
+ }
162
+ // ... 5-8 questions covering functional, technical, scope aspects
163
+ ]
164
+ })
165
+ ```
166
+
167
+ 2. **Answer immediately** (agent selects best options based on the prompt):
168
+ ```
169
+ chorus_answer_elaboration({
170
+ ideaUuid: "<idea-uuid>",
171
+ roundUuid: "<round-uuid>",
172
+ answers: [
173
+ { questionId: "q1", selectedOptionId: "a", customText: "Rationale: ..." },
174
+ // ...
175
+ ]
176
+ })
177
+ ```
178
+
179
+ 3. **Resolve** — in YOLO mode the agent resolves elaboration **autonomously, with no human-confirmation gate** (the human-confirmation requirement that applies to the interactive `/idea` flow is explicitly waived under `/yolo` automation):
180
+
181
+ ```
182
+ chorus_pm_validate_elaboration({
183
+ ideaUuid: "<idea-uuid>"
184
+ })
185
+ ```
186
+
187
+ > `chorus_pm_validate_elaboration` requires `idea:admin`. `/yolo` already mandates an Admin-preset key in Prerequisites, so this is satisfied. To open another self-elaboration round instead of resolving, just call `chorus_pm_start_elaboration` again.
188
+
189
+ #### Step 1.4: Create Proposal
190
+
191
+ 1. **Detect OpenSpec mode.** Load the `openspec-aware` skill at `skills/openspec-aware/SKILL.md` and run its §1 detection contract. The result determines how the rest of this step authors documents:
192
+
193
+ - `CHORUS_OPENSPEC_ACTIVE=1` → spec-driven branch (sub-step 2a below).
194
+ - `CHORUS_OPENSPEC_ACTIVE=0` → free-form branch (sub-step 2b below).
195
+
196
+ This is mandatory — yolo runs unattended, so silently picking the wrong mode is exactly the failure scenario the detection contract exists to prevent.
197
+
198
+ 2. **Create the empty proposal container.** In OpenSpec mode, the `description` MUST contain the literal line `OpenSpec change slug: <slug>` (use the `$SLUG` you'll pick in 2a); in free-form mode, omit that line.
199
+
200
+ ```
201
+ chorus_pm_create_proposal({
202
+ projectUuid: "<project-uuid>",
203
+ title: "<feature name>",
204
+ description: "<summary>\n\nOpenSpec change slug: <slug>", // OpenSpec mode
205
+ // description: "<summary>", // free-form mode
206
+ inputType: "idea",
207
+ inputUuids: ["<idea-uuid>"]
208
+ })
209
+ ```
210
+
211
+ Then branch:
212
+
213
+ **2a. OpenSpec mode (`CHORUS_OPENSPEC_ACTIVE=1`).** Follow `openspec-aware` §3 end-to-end:
214
+ - Pick `$SLUG`, run `openspec new change "$SLUG"` (§3.1–§3.2).
215
+ - Author `proposal.md`, `design.md`, and one `specs/<capability>/spec.md` per capability locally on disk (§3.3). ADDED Requirements only; per-spec fallback to free-form Markdown if MODIFIED/REMOVED is needed.
216
+ - Define the `chorus_check_response` helper (§6); prefer `chorus mcp call … --arg-file content=<file>` for mirrors (§3.4/§3.6) — the bash-wrapper fallback's `$CHORUS_BIN` + `json_encode_file` are only needed when `chorus` is not on `PATH`.
217
+ - Mirror each local file via `chorus mcp call chorus_pm_add_document_draft … --arg-file content=<file>` (§3.6; fallback = `"$CHORUS_BIN" chorus_pm_add_document_draft "$PAYLOAD"`) — one call per file, with the document type from `openspec-aware` §5.
218
+
219
+ > **⛔ Do not** invoke `chorus_pm_add_document_draft` / `chorus_pm_update_document_draft` / `chorus_pm_update_document` from the MCP harness with a hand-typed `content` field in this branch. Re-typing the markdown body wastes 20k+ tokens per proposal and breaks byte-equality with the local files. See `openspec-aware` §2 Rule 1.
220
+
221
+ Then continue to step 3 (task drafts).
222
+
223
+ **2b. Free-form mode (`CHORUS_OPENSPEC_ACTIVE=0`).** Add a tech design document draft directly via MCP, content authored inline:
224
+
225
+ ```
226
+ chorus_pm_add_document_draft({
227
+ proposalUuid: "<proposal-uuid>",
228
+ type: "tech_design",
229
+ title: "Tech Design: <feature>",
230
+ content: "<markdown tech design covering architecture, data model, API, module contracts>"
231
+ })
232
+ ```
233
+
234
+ 3. **Add task drafts incrementally** (use returned `draftUuid` for dependency chaining). `acceptanceCriteriaItems` is **required** on every draft — at least one non-blank criterion, or the call is rejected:
235
+ ```
236
+ # First task
237
+ result1 = chorus_pm_add_task_draft({
238
+ proposalUuid: "<proposal-uuid>",
239
+ title: "<module name>",
240
+ description: "<what to build, referencing tech design>",
241
+ priority: "high",
242
+ storyPoints: 3,
243
+ acceptanceCriteriaItems: [
244
+ { description: "<testable criterion>", required: true },
245
+ // ...
246
+ ]
247
+ })
248
+
249
+ # Second task, depends on first
250
+ chorus_pm_add_task_draft({
251
+ proposalUuid: "<proposal-uuid>",
252
+ title: "<dependent module>",
253
+ description: "...",
254
+ priority: "medium",
255
+ storyPoints: 2,
256
+ acceptanceCriteriaItems: [...],
257
+ dependsOnDraftUuids: ["<result1.draftUuid>"]
258
+ })
259
+ ```
260
+
261
+ 4. **Validate:**
262
+ ```
263
+ chorus_pm_validate_proposal({ proposalUuid: "<proposal-uuid>" })
264
+ ```
265
+ Fix any errors, then proceed.
266
+
267
+ 5. **Submit:**
268
+ ```
269
+ chorus_pm_submit_proposal({ proposalUuid: "<proposal-uuid>" })
270
+ ```
271
+ After this call, the extension nudges you to spawn `chorus-proposal-reviewer`. You MUST spawn it yourself via the blocking `subagent` tool (it waits for the VERDICT) — it is NOT auto-launched.
272
+
273
+ ---
274
+
275
+ ### Phase 2: Proposal Review Loop
276
+
277
+ After `chorus_pm_submit_proposal`, the extension nudges you to spawn `chorus-proposal-reviewer`. You MUST manually spawn it as a read-only sub-agent via the blocking `subagent` tool (it waits for the VERDICT). Wait for it to complete, then:
278
+
279
+ 1. **Read the reviewer's VERDICT:**
280
+ ```
281
+ chorus_get_comments({ targetType: "proposal", targetUuid: "<proposal-uuid>" })
282
+ ```
283
+ Look for the most recent comment containing `VERDICT:`.
284
+
285
+ 2. **Act on the VERDICT:**
286
+
287
+ - **PASS** or **PASS WITH NOTES** --
288
+ ```
289
+ chorus_admin_approve_proposal({
290
+ proposalUuid: "<proposal-uuid>",
291
+ reviewNote: "PASS from reviewer. <brief summary of notes if any>"
292
+ })
293
+ ```
294
+ Tasks and documents materialize automatically. Proceed to Phase 3.
295
+
296
+ - **FAIL** --
297
+ Read the BLOCKERs from the reviewer comment. Then:
298
+ ```
299
+ chorus_pm_reject_proposal({
300
+ proposalUuid: "<proposal-uuid>",
301
+ reviewNote: "FAIL from reviewer. Fixing BLOCKERs: <list>"
302
+ })
303
+ ```
304
+ Revise the drafts (`chorus_pm_update_document_draft`, `chorus_pm_update_task_draft`) to address each BLOCKER, then resubmit:
305
+ ```
306
+ chorus_pm_submit_proposal({ proposalUuid: "<proposal-uuid>" })
307
+ ```
308
+ After resubmission, the extension nudges you again — spawn the reviewer yourself for Round 2.
309
+
310
+ 3. **Max rounds:** Loop up to `maxProposalReviewRounds` (from plugin config, default 3). If exhausted:
311
+ ```
312
+ STOP: "Proposal review failed after {maxRounds} rounds.
313
+ Remaining BLOCKERs: <list>. Human review needed.
314
+ Proposal UUID: <uuid>"
315
+ ```
316
+
317
+ 4. **No new VERDICT comment after reviewer returns?** The reviewer exhausted its turn budget. Respawn it ONCE with a concise-budget hint: *"Stay within turn budget. Skip deep source verification. Fetch proposal + comments + idea only, skim for obvious BLOCKERs, and post your VERDICT within the first 10 turns."* If the second attempt still produces no VERDICT, treat the proposal as PASS WITH NOTES and proceed — the pipeline cannot loop forever on a silent reviewer.
318
+
319
+ ---
320
+
321
+ ### Phase 3: Task Execution (Wave-Based)
322
+
323
+ After proposal approval, tasks exist in `open` status. Execute them in dependency-ordered waves using subagents. If spawning fails, fall back to main agent execution.
324
+
325
+ #### Primary: Agent Team (parallel)
326
+
327
+ ```
328
+ wave = 1
329
+
330
+ loop:
331
+ # 1. Find ready tasks
332
+ unblocked = chorus_get_unblocked_tasks({ projectUuid: "<project-uuid>" })
333
+
334
+ if no unblocked tasks and all tasks done:
335
+ break # All complete
336
+
337
+ if no unblocked tasks and some tasks not done:
338
+ # Stuck -- tasks failed review and can't proceed
339
+ break with escalation report
340
+
341
+ # 2. Spawn a sub-agent for each unblocked task (async)
342
+ # The chorus-pi extension auto-injects the session UUID + workflow
343
+ # into each worker's task at tool_call time.
344
+ for each task in unblocked:
345
+ subagent_spawn({
346
+ agent: "worker",
347
+ task: "Your Chorus task UUID: {task.uuid}\nProject UUID: {project-uuid}\n\nImplement the task per its description and acceptance criteria. Read the task, proposal, and project documents for context."
348
+ })
349
+ # keep the returned agentId (sa_<uuid>) to close the worker later
350
+
351
+ # 3. Wait for all sub-agents to complete
352
+ # Each sub-agent follows the /skill:develop workflow:
353
+ # claim -> in_progress -> develop -> report -> self-check AC -> submit_for_verify
354
+ # the extension nudges you to spawn chorus-task-reviewer after submit_for_verify
355
+ # (use the blocking `subagent` tool so it waits for the VERDICT)
356
+
357
+ # 4. Proceed to Phase 4 (verification) for this wave
358
+ wave += 1
359
+ ```
360
+
361
+ **What the sub-agent prompt needs:**
362
+ - Task UUID(s)
363
+ - Project UUID
364
+ - NO session UUID, NO workflow boilerplate -- the extension auto-injects via tool_call mutation
365
+
366
+
367
+ #### Fallback: Main Agent (sequential)
368
+
369
+ If `subagent_spawn` fails (e.g., pi-subagents not installed, permission denied, or sub-agents crash repeatedly), fall back to executing tasks sequentially as the main agent:
370
+
371
+ ```
372
+ for each task in unblocked:
373
+ # Follow the /develop workflow directly as main agent
374
+ chorus_claim_task({ taskUuid: "<task-uuid>" })
375
+ chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress" })
376
+
377
+ # ... implement the task: read context, write code, run tests ...
378
+
379
+ chorus_report_work({ taskUuid: "<task-uuid>", report: "..." })
380
+ chorus_report_criteria_self_check({ taskUuid: "<task-uuid>", criteria: [...] })
381
+ chorus_submit_for_verify({ taskUuid: "<task-uuid>", summary: "..." })
382
+
383
+ # the extension injects context — you must spawn task-reviewer yourself
384
+ # Proceed to Phase 4 verification for this task before moving to next
385
+ ```
386
+
387
+ The fallback is slower (sequential, not parallel) but still completes the pipeline. The the extension injects reviewer instructions the same way in both modes — you must always spawn the reviewer manually.
388
+
389
+ ---
390
+
391
+ ### Phase 4: Verification
392
+
393
+ After each wave's sub-agents complete, verify their tasks:
394
+
395
+ ```
396
+ for each task in wave_tasks:
397
+ # 1. Check task status
398
+ task = chorus_get_task({ taskUuid: "<task-uuid>" })
399
+
400
+ if task.status != "to_verify":
401
+ # Sub-agent may have failed; skip or handle
402
+ continue
403
+
404
+ # 2. Spawn chorus-task-reviewer (the extension nudges you; you must spawn it yourself)
405
+ # Use the blocking `subagent` tool (it waits for the VERDICT before returning)
406
+ subagent({ agent: "chorus-task-reviewer", task: "Review task <task-uuid>..." })
407
+
408
+ # 3. Read task-reviewer VERDICT
409
+ comments = chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
410
+ # Find the most recent comment containing "VERDICT:"
411
+
412
+ # 4. Act on VERDICT — three possible outcomes:
413
+ if VERDICT is "PASS":
414
+ # All AC verified, no issues. Mark AC and verify.
415
+ chorus_mark_acceptance_criteria({
416
+ taskUuid: "<task-uuid>",
417
+ criteria: [
418
+ { uuid: "<ac-uuid>", status: "passed", evidence: "<from reviewer>" },
419
+ // ...
420
+ ]
421
+ })
422
+ chorus_admin_verify_task({ taskUuid: "<task-uuid>" })
423
+ # Task is now "done" -- unblocks dependents
424
+
425
+ if VERDICT is "PASS WITH NOTES":
426
+ # All AC verified, minor non-blocking notes. Still mark AC and verify.
427
+ chorus_mark_acceptance_criteria({ ... })
428
+ chorus_admin_verify_task({ taskUuid: "<task-uuid>" })
429
+
430
+ if VERDICT is "FAIL":
431
+ # BLOCKERs found. Do NOT verify. Reopen for rework.
432
+ chorus_admin_reopen_task({ taskUuid: "<task-uuid>" })
433
+ # Task returns to "open", will be picked up in next wave
434
+ ```
435
+
436
+ After verifying all tasks in the wave, return to Phase 3 to check for newly unblocked tasks.
437
+
438
+ **Max rounds per task:** Tracked by `maxTaskReviewRounds` from plugin config (default 3). If a task has been reopened `maxRounds` times, skip it and flag for human escalation:
439
+
440
+ ```
441
+ ESCALATE: "Task '{title}' failed review after {maxRounds} rounds.
442
+ Last BLOCKERs: <list>. Manual intervention needed.
443
+ Task UUID: <uuid>"
444
+ ```
445
+
446
+ Continue with remaining tasks -- do not halt the entire pipeline for one stuck task.
447
+
448
+ **No new VERDICT comment after the task-reviewer returns?** It exhausted its turn budget. Respawn it ONCE with a concise-budget hint: *"Stay within turn budget. Skip deep verification. Fetch task/proposal/comments, run only the core tests, and post your VERDICT within the first 12 turns."* If the second attempt also produces no VERDICT, treat as PASS WITH NOTES and proceed — do not loop indefinitely.
449
+
450
+ ---
451
+
452
+ ### Phase 4.5: Code-Review Gateway (mandatory pre-ship)
453
+
454
+ Once **every** task of the idea's proposal is verified (`done`) — i.e. Phase 3 finds no more unblocked tasks and all are terminal — run the final ship-time code-review gateway **before** declaring the Idea done and **before** the Phase 5b completion report. After the last task is verified, the extension nudges you to spawn the code-reviewer; you MUST spawn it yourself via the blocking `subagent` tool (it waits for the VERDICT).
455
+
456
+ ```
457
+ # Spawn the code-reviewer for the IDEA (not a task). Determine the round
458
+ # number by reading prior code-review VERDICT comments on the idea.
459
+ subagent({ agent: "chorus-code-reviewer",
460
+ task: "Review the aggregate code for idea <idea-uuid>. Round: N." })
461
+
462
+ # Read its VERDICT on the idea
463
+ comments = chorus_get_comments({ targetType: "idea", targetUuid: "<idea-uuid>" })
464
+ # Find the most recent comment containing "VERDICT:"
465
+ ```
466
+
467
+ Act on the VERDICT:
468
+
469
+ - **PASS** / **PASS WITH NOTES** — the feature is cleared to ship. Proceed to Phase 5 / 5b.
470
+ - **FAIL** — do NOT ship. Read the BLOCKERs, then fix them via the **quick-dev** workflow (`/quick-dev`): call `chorus_create_tasks` with `proposalUuid` set to the **current approved proposal** so the fix tasks attach to it — do **not** reopen the already-verified tasks. Group related small BLOCKERs into one cohesive task by default; split only materially large or independently testable fixes. Drive every fix task through Phase 3 → Phase 4, including AC self-check, independent task review, and admin verification. Re-spawn the code-reviewer only after every fix task is successfully `done`; a failed or cancelled fix task, stop the automatic loop and escalate. Loop bounded by the `maxCodeReviewRounds` setting (`CHORUS_MAX_CODE_REVIEW_ROUNDS`, default 3; 0 = unlimited); the injected Quick Reference states the current value.
471
+
472
+ ```
473
+ # Max rounds escalation
474
+ ESCALATE: "Idea '<title>' failed code review after {CHORUS_MAX_CODE_REVIEW_ROUNDS} rounds.
475
+ Last BLOCKERs: <list>. Manual intervention needed. Idea UUID: <uuid>"
476
+ ```
477
+
478
+ **No new VERDICT comment after the code-reviewer returns?** It exhausted its turn budget (the code-reviewer runs with a larger budget than the task-reviewer because it reviews the whole feature). Respawn it ONCE with a concise-budget hint, then if still silent treat as PASS WITH NOTES and proceed — do not loop forever on a silent reviewer.
479
+
480
+ > The code-review gateway is **behavioral**, consistent with the proposal/task reviewers: its verdict is advisory and does not change the Idea's stored status. The /yolo orchestrator honors it — PASS to ship, FAIL to loop. It runs **before** the completion report so the report is never written for a feature with an outstanding FAIL.
481
+
482
+ ---
483
+
484
+ ### Phase 5: Report
485
+
486
+ After all waves complete, output a markdown summary:
487
+
488
+ ```markdown
489
+ ## /yolo Complete
490
+
491
+ **Project:** <project-name> (<project-uuid>)
492
+ **Proposal:** <proposal-title> (<proposal-uuid>)
493
+ **Idea:** <idea-title> (<idea-uuid>)
494
+
495
+ ### Tasks
496
+ | Task | Status | Review Rounds |
497
+ |------|--------|---------------|
498
+ | <title> | done | 1 |
499
+ | <title> | done | 2 |
500
+ | <title> | ESCALATED | 3 (max) |
501
+
502
+ ### Summary
503
+ - Total tasks: N
504
+ - Completed: X / N
505
+ - Escalated: Y (need human review)
506
+ - Waves executed: W
507
+ ```
508
+
509
+ ---
510
+
511
+ ### Phase 5b: Idea Completion Report (mandatory)
512
+
513
+ A successful `/yolo` run always finishes the Idea — call `chorus_create_report` once with `proposalUuid` set to the last verified proposal. The `content` parameter's description carries the section template; follow it. Surface the returned `documentUuid` in the Phase 5 summary. Skipping is a protocol violation.
514
+
515
+ > **Order:** the completion report is written only **after** the Phase 4.5 code-review gateway returns PASS / PASS WITH NOTES. Never write it while a code-review FAIL is outstanding — the report is a ship-time summary, and the gateway is what clears the feature to ship.
516
+
517
+ ---
518
+
519
+ ## Error Handling
520
+
521
+ | Scenario | Action |
522
+ |----------|--------|
523
+ | Missing permissions at startup | Abort with message listing the missing resource/action pairs (see Prerequisites). Recommend an Admin-preset API key. |
524
+ | Project creation fails | Report error, suggest user create project manually and retry with `--project` |
525
+ | Proposal reviewer FAIL after maxRounds | Stop pipeline, report persisting BLOCKERs, suggest manual review |
526
+ | Task reviewer FAIL after maxRounds | Flag task as escalation-needed, continue with other tasks |
527
+ | Code-review gateway FAIL after CHORUS_MAX_CODE_REVIEW_ROUNDS rounds | Stop before ship, escalate the persisting feature-level BLOCKERs to a human (Idea UUID), do not write the completion report |
528
+ | Sub-agent crash / no submit | Log error, skip task, pick it up in next wave if possible |
529
+ | Ctrl+C | All entities persist in Chorus. User can resume via `/develop` or `/review` |
530
+
531
+ ---
532
+
533
+ ## Tips
534
+
535
+ - Keep the initial prompt detailed -- the more context you provide, the better the auto-generated proposal quality
536
+ - The proposal-reviewer is your quality gate -- if it keeps FAILing, the prompt may be too vague
537
+ - Watch the wave count -- if tasks keep getting reopened, consider Ctrl+C and manually reviewing the feedback
538
+ - All audit trail is preserved: elaboration Q&A, reviewer VERDICTs, work reports. Check Chorus UI for full history
539
+ - For small/simple tasks, consider `/quick-dev` instead -- it skips the Idea->Proposal overhead
540
+ - Sub-agents share your API key; ensure it has the permissions listed in Prerequisites before starting
541
+
542
+ ---
543
+
544
+ ## Next
545
+
546
+ - To manually review proposals: `/review`
547
+ - To manually develop tasks: `/develop`
548
+ - To create quick standalone tasks: `/quick-dev`
549
+ - For platform overview: `/chorus`