dreamcontext 0.17.1 → 0.18.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.
Files changed (181) hide show
  1. package/README.md +321 -565
  2. package/agents/sleep-product.md +21 -2
  3. package/agents/sleep-state.md +24 -0
  4. package/agents/sleep-tasks.md +16 -0
  5. package/dist/agents/sleep-product.md +21 -2
  6. package/dist/agents/sleep-state.md +24 -0
  7. package/dist/agents/sleep-tasks.md +16 -0
  8. package/dist/dashboard/announcements/dashboard-highlights-0-17-0-18.excalidraw.md +1531 -0
  9. package/dist/dashboard/announcements/goal-skill-v2.excalidraw.md +1490 -0
  10. package/dist/dashboard/announcements/task-manager.excalidraw.md +1217 -0
  11. package/dist/dashboard/announcements/visual-announcements.excalidraw.md +1373 -0
  12. package/dist/dashboard/announcements.json +38 -0
  13. package/dist/dashboard/assets/{BrainCanvas3D-DyF_3yYD.js → BrainCanvas3D-D9G3dOLf.js} +1 -1
  14. package/dist/dashboard/assets/{_baseUniq-Do8VMBA0.js → _baseUniq-Cyshlz4Y.js} +1 -1
  15. package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-DmbXDb2R.js → ar-SA-G6X2FPQ2-qj-2Cbgo.js} +1 -1
  16. package/dist/dashboard/assets/{arc-CwtUBQfU.js → arc-0OnX5WDs.js} +1 -1
  17. package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-O9bOog_f.js → architectureDiagram-Q4EWVU46-Cx3c0nUi.js} +1 -1
  18. package/dist/dashboard/assets/{az-AZ-76LH7QW2-c9Zk10vG.js → az-AZ-76LH7QW2-CBuoh6M3.js} +1 -1
  19. package/dist/dashboard/assets/{bg-BG-XCXSNQG7-uMTg84lX.js → bg-BG-XCXSNQG7-X5QYyZWx.js} +1 -1
  20. package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-BTENXCSO.js → blockDiagram-DXYQGD6D-BwESAg1j.js} +1 -1
  21. package/dist/dashboard/assets/{bn-BD-2XOGV67Q-DUFKHcua.js → bn-BD-2XOGV67Q-DlodQLNR.js} +1 -1
  22. package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-DMXPWRiQ.js → c4Diagram-AHTNJAMY-CopL0lbP.js} +1 -1
  23. package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-BuYX1q89.js → ca-ES-6MX7JW3Y-DfqF6Yhy.js} +1 -1
  24. package/dist/dashboard/assets/channel-BLisRbYb.js +1 -0
  25. package/dist/dashboard/assets/{chunk-4BX2VUAB-DgefvnWS.js → chunk-4BX2VUAB-CRwifLK3.js} +1 -1
  26. package/dist/dashboard/assets/{chunk-4TB4RGXK-BnFO5G1t.js → chunk-4TB4RGXK-uxJYY_64.js} +1 -1
  27. package/dist/dashboard/assets/{chunk-55IACEB6-COm2TYEM.js → chunk-55IACEB6-DhYIp7Oc.js} +1 -1
  28. package/dist/dashboard/assets/{chunk-EDXVE4YY-CtsGCwZp.js → chunk-EDXVE4YY-CCxfcirt.js} +1 -1
  29. package/dist/dashboard/assets/{chunk-FMBD7UC4-cfSvx35j.js → chunk-FMBD7UC4-D7OC8QFC.js} +1 -1
  30. package/dist/dashboard/assets/{chunk-OYMX7WX6-DAhDKteL.js → chunk-OYMX7WX6-CwHgaUQo.js} +1 -1
  31. package/dist/dashboard/assets/{chunk-QZHKN3VN-B5h4qML3.js → chunk-QZHKN3VN-7Idpf6YJ.js} +1 -1
  32. package/dist/dashboard/assets/{chunk-YZCP3GAM-CGp_NiRg.js → chunk-YZCP3GAM-D4Lh0fgr.js} +1 -1
  33. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-CgqeQiHi.js +1 -0
  34. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-CgqeQiHi.js +1 -0
  35. package/dist/dashboard/assets/clone-CQXNMCV5.js +1 -0
  36. package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-Dk7CMFA4.js → cose-bilkent-S5V4N54A-BYcMtJTF.js} +1 -1
  37. package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-zfUTiS_d.js → cs-CZ-2BRQDIVT-rnrpKdSJ.js} +1 -1
  38. package/dist/dashboard/assets/{da-DK-5WZEPLOC-CU14f8NA.js → da-DK-5WZEPLOC-D5OGAvk7.js} +1 -1
  39. package/dist/dashboard/assets/{dagre-KV5264BT-BiMVxC4Q.js → dagre-KV5264BT-V0f1_b4R.js} +1 -1
  40. package/dist/dashboard/assets/{de-DE-XR44H4JA-CDOHAJGo.js → de-DE-XR44H4JA-CDyb8YfL.js} +1 -1
  41. package/dist/dashboard/assets/{diagram-5BDNPKRD-DfJEsVTA.js → diagram-5BDNPKRD-BmpizoaS.js} +1 -1
  42. package/dist/dashboard/assets/{diagram-G4DWMVQ6-CztLHIcY.js → diagram-G4DWMVQ6-ClQg-LTu.js} +1 -1
  43. package/dist/dashboard/assets/{diagram-MMDJMWI5-DqoQLlWK.js → diagram-MMDJMWI5-BkXcDMIV.js} +1 -1
  44. package/dist/dashboard/assets/{diagram-TYMM5635-DvyvQBCc.js → diagram-TYMM5635-BbFiiCM2.js} +1 -1
  45. package/dist/dashboard/assets/{el-GR-BZB4AONW-ChUphbcv.js → el-GR-BZB4AONW-Y1YnKZL0.js} +1 -1
  46. package/dist/dashboard/assets/{erDiagram-SMLLAGMA-D_uSs2_2.js → erDiagram-SMLLAGMA-Dzdv7_l5.js} +1 -1
  47. package/dist/dashboard/assets/{es-ES-U4NZUMDT-BNalBEhb.js → es-ES-U4NZUMDT-D0T536hs.js} +1 -1
  48. package/dist/dashboard/assets/{eu-ES-A7QVB2H4-BMiQyA2y.js → eu-ES-A7QVB2H4-Bfrya0et.js} +1 -1
  49. package/dist/dashboard/assets/{fa-IR-HGAKTJCU-Bd6ZnTSo.js → fa-IR-HGAKTJCU-pYE_hG-L.js} +1 -1
  50. package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-BWAfJadC.js → fi-FI-Z5N7JZ37-D3C-fNyk.js} +1 -1
  51. package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-Bmsp6kyU.js → flowDiagram-DWJPFMVM-CFhyjwKY.js} +1 -1
  52. package/dist/dashboard/assets/{fr-FR-RHASNOE6-CspbYzOW.js → fr-FR-RHASNOE6-CgwnG5JW.js} +1 -1
  53. package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-wEdysXo_.js → ganttDiagram-T4ZO3ILL-BRKRiSzf.js} +1 -1
  54. package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-BEiGpPBj.js → gitGraphDiagram-UUTBAWPF-CTqCK49d.js} +1 -1
  55. package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-CV76vsWr.js → gl-ES-HMX3MZ6V-DjJTqTm3.js} +1 -1
  56. package/dist/dashboard/assets/{graph-CZFIeNHZ.js → graph-D429kSbY.js} +1 -1
  57. package/dist/dashboard/assets/{he-IL-6SHJWFNN-Y1VoXJ_H.js → he-IL-6SHJWFNN-C84FlH6r.js} +1 -1
  58. package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-Crh5S49o.js → hi-IN-IWLTKZ5I-Blhkfum2.js} +1 -1
  59. package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-D4I3gCbp.js → hu-HU-A5ZG7DT2-DLC1JfN-.js} +1 -1
  60. package/dist/dashboard/assets/{id-ID-SAP4L64H-Chvzkuvi.js → id-ID-SAP4L64H-C3pB_IWB.js} +1 -1
  61. package/dist/dashboard/assets/image-FgR93jdt.js +1 -0
  62. package/dist/dashboard/assets/index-2m8ueOUn.js +1 -0
  63. package/dist/dashboard/assets/index-CWwjuihq.css +32 -0
  64. package/dist/dashboard/assets/{index-C7Bo5AQH.js → index-CbOXCDms.js} +1 -1
  65. package/dist/dashboard/assets/index-SJ64pf-4.js +551 -0
  66. package/dist/dashboard/assets/{infoDiagram-42DDH7IO-BzfuDHl4.js → infoDiagram-42DDH7IO-CIzDShDw.js} +1 -1
  67. package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-BVoNJ9VS.js → ishikawaDiagram-UXIWVN3A-CuasYzdX.js} +1 -1
  68. package/dist/dashboard/assets/{it-IT-JPQ66NNP-BH_gN5es.js → it-IT-JPQ66NNP-DGGEoNPu.js} +1 -1
  69. package/dist/dashboard/assets/{ja-JP-DBVTYXUO-DU_WmLVa.js → ja-JP-DBVTYXUO-CEqP9aps.js} +1 -1
  70. package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-DbwICa_a.js → journeyDiagram-VCZTEJTY-DHiq2OTQ.js} +1 -1
  71. package/dist/dashboard/assets/{kaa-6HZHGXH3-KYU9qowM.js → kaa-6HZHGXH3-GOFmTAXq.js} +1 -1
  72. package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-bjhyiUq5.js → kab-KAB-ZGHBKWFO-B865Wwzu.js} +1 -1
  73. package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-D9XucLs4.js → kanban-definition-6JOO6SKY-BhlTKFbL.js} +1 -1
  74. package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-CYTx_dAZ.js → kk-KZ-P5N5QNE5-CNfuE6b6.js} +1 -1
  75. package/dist/dashboard/assets/{km-KH-HSX4SM5Z-DqsuY4Lf.js → km-KH-HSX4SM5Z-CsmgRWxu.js} +1 -1
  76. package/dist/dashboard/assets/{ko-KR-MTYHY66A-BZe7NywF.js → ko-KR-MTYHY66A-B_02RgEz.js} +1 -1
  77. package/dist/dashboard/assets/{ku-TR-6OUDTVRD-F5d6HFWt.js → ku-TR-6OUDTVRD-JfQA5u05.js} +1 -1
  78. package/dist/dashboard/assets/{layout-CotqU0S9.js → layout-DvrQSvOI.js} +1 -1
  79. package/dist/dashboard/assets/{linear-Dqv87Scf.js → linear-6r0qttLs.js} +1 -1
  80. package/dist/dashboard/assets/{lt-LT-XHIRWOB4-BCCuaPbS.js → lt-LT-XHIRWOB4-DWFUXEdf.js} +1 -1
  81. package/dist/dashboard/assets/{lv-LV-5QDEKY6T-NLGi-vJ6.js → lv-LV-5QDEKY6T-C5yAd0n_.js} +1 -1
  82. package/dist/dashboard/assets/{min-BbJdnc3h.js → min-D_EP9dBf.js} +1 -1
  83. package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-Dk4QySu7.js → mindmap-definition-QFDTVHPH-Col3ao9B.js} +1 -1
  84. package/dist/dashboard/assets/{mr-IN-CRQNXWMA-BnGDIgVN.js → mr-IN-CRQNXWMA-Dwjz0Xdm.js} +1 -1
  85. package/dist/dashboard/assets/{my-MM-5M5IBNSE-CspgYE9_.js → my-MM-5M5IBNSE-EXJDNyjA.js} +1 -1
  86. package/dist/dashboard/assets/{nb-NO-T6EIAALU-BeRPw3hu.js → nb-NO-T6EIAALU-BWm2bgLd.js} +1 -1
  87. package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-C-G-bljM.js → nl-NL-IS3SIHDZ-f8nP-yp-.js} +1 -1
  88. package/dist/dashboard/assets/{nn-NO-6E72VCQL-Ct7VZY8D.js → nn-NO-6E72VCQL-B0c_gCNR.js} +1 -1
  89. package/dist/dashboard/assets/{oc-FR-POXYY2M6-Cv5-C4Qq.js → oc-FR-POXYY2M6-C40PSwAh.js} +1 -1
  90. package/dist/dashboard/assets/{pa-IN-N4M65BXN-DAgkIThL.js → pa-IN-N4M65BXN-DDcgXFkB.js} +1 -1
  91. package/dist/dashboard/assets/{percentages-BXMCSKIN-vidRYabK.js → percentages-BXMCSKIN-MHBQP8nI.js} +7 -7
  92. package/dist/dashboard/assets/{pica-Cy-Xl-mi.js → pica-C5CFA09W.js} +1 -1
  93. package/dist/dashboard/assets/{pieDiagram-DEJITSTG-BnP4-zwd.js → pieDiagram-DEJITSTG-DFHmB0fL.js} +1 -1
  94. package/dist/dashboard/assets/{pl-PL-T2D74RX3-BuJQ3HD-.js → pl-PL-T2D74RX3-yFTBt0Xu.js} +1 -1
  95. package/dist/dashboard/assets/{pt-BR-5N22H2LF-BbAqsvD6.js → pt-BR-5N22H2LF-ilAW3Fdv.js} +1 -1
  96. package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-DzFJedU3.js → pt-PT-UZXXM6DQ-CXHFN95K.js} +1 -1
  97. package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-BXN88cHy.js → quadrantDiagram-34T5L4WZ-CR732_oP.js} +1 -1
  98. package/dist/dashboard/assets/{requirementDiagram-MS252O5E-D34hL42a.js → requirementDiagram-MS252O5E-mKoVG52Z.js} +1 -1
  99. package/dist/dashboard/assets/{ro-RO-JPDTUUEW-BV2-sOiv.js → ro-RO-JPDTUUEW-BKlWpyF4.js} +1 -1
  100. package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-BCL4N9Ej.js → ru-RU-B4JR7IUQ-BGoxlhJm.js} +1 -1
  101. package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-0mFeok-3.js → sankeyDiagram-XADWPNL6-DXipts7M.js} +1 -1
  102. package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-C-5nW5j6.js → sequenceDiagram-FGHM5R23-DFQhU8q7.js} +1 -1
  103. package/dist/dashboard/assets/{si-LK-N5RQ5JYF-CNhaw4jx.js → si-LK-N5RQ5JYF-yDbJWFTH.js} +1 -1
  104. package/dist/dashboard/assets/{sk-SK-C5VTKIMK-mHCphOXu.js → sk-SK-C5VTKIMK-DglyhbNB.js} +1 -1
  105. package/dist/dashboard/assets/{sl-SI-NN7IZMDC--lzgHthQ.js → sl-SI-NN7IZMDC-DPfq0s4I.js} +1 -1
  106. package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-C50iDFqe.js → stateDiagram-FHFEXIEX-Dm50jiEh.js} +1 -1
  107. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-CoSm11sD.js +1 -0
  108. package/dist/dashboard/assets/{subset-shared.chunk-DNsjL37s.js → subset-shared.chunk-OHz6M6ct.js} +1 -1
  109. package/dist/dashboard/assets/{subset-worker.chunk-BaV3r-bl.js → subset-worker.chunk-BzwrOBtO.js} +1 -1
  110. package/dist/dashboard/assets/{sv-SE-XGPEYMSR-ckw8jfGN.js → sv-SE-XGPEYMSR-BLHNwr4k.js} +1 -1
  111. package/dist/dashboard/assets/{ta-IN-2NMHFXQM-CSeNmVhS.js → ta-IN-2NMHFXQM-Dw-6hUpN.js} +1 -1
  112. package/dist/dashboard/assets/{th-TH-HPSO5L25-Cvn1sg_3.js → th-TH-HPSO5L25-DPkcM_k9.js} +1 -1
  113. package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-DRYfuqHT.js → timeline-definition-GMOUNBTQ-BKFNQ_7e.js} +1 -1
  114. package/dist/dashboard/assets/{tr-TR-DEFEU3FU-CyhY22TB.js → tr-TR-DEFEU3FU-rBVsY5RS.js} +1 -1
  115. package/dist/dashboard/assets/{uk-UA-QMV73CPH-BvvAEO6U.js → uk-UA-QMV73CPH-CV6_yTZs.js} +1 -1
  116. package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-Crril7Cj.js → vennDiagram-DHZGUBPP-BZb_r5tY.js} +1 -1
  117. package/dist/dashboard/assets/{vi-VN-M7AON7JQ-c7AwSUZ8.js → vi-VN-M7AON7JQ-CJMgSsLz.js} +1 -1
  118. package/dist/dashboard/assets/{wardley-RL74JXVD-Da5AhSWU.js → wardley-RL74JXVD-DgqjmWyN.js} +1 -1
  119. package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-C4GeB_Df.js → wardleyDiagram-NUSXRM2D-BDpniS9m.js} +1 -1
  120. package/dist/dashboard/assets/webviewWindow-Bwv2421L.js +1 -0
  121. package/dist/dashboard/assets/window-BObcHN8e.js +1 -0
  122. package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-BPCFKXqR.js → xychartDiagram-5P7HB3ND-CCyPcx2A.js} +1 -1
  123. package/dist/dashboard/assets/{zh-CN-LNUGB5OW-BvNiZwKU.js → zh-CN-LNUGB5OW-9LJLF_AC.js} +1 -1
  124. package/dist/dashboard/assets/{zh-HK-E62DVLB3-CCFtoCWb.js → zh-HK-E62DVLB3-IefAiePp.js} +1 -1
  125. package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-bYBr-stu.js → zh-TW-RAJ6MFWO-CHeY9rNZ.js} +1 -1
  126. package/dist/dashboard/index.html +2 -2
  127. package/dist/index.js +4099 -1538
  128. package/dist/skill-packs/agents/goal-implementer.md +42 -1
  129. package/dist/skill-packs/agents/goal-plan-reviewer.md +7 -0
  130. package/dist/skill-packs/agents/goal-planner.md +34 -0
  131. package/dist/skill-packs/catalog.json +31 -21
  132. package/dist/skill-packs/excalidraw/SKILL.md +244 -13
  133. package/dist/skill-packs/excalidraw/examples/Chart Kit.excalidraw.md +15740 -0
  134. package/dist/skill-packs/excalidraw/examples/Wireframe Kit.excalidraw.md +16860 -0
  135. package/dist/skill-packs/excalidraw/examples/atomic_check.js +99 -0
  136. package/dist/skill-packs/excalidraw/examples/chart.spec.json +122 -0
  137. package/dist/skill-packs/excalidraw/examples/chart_board.js +173 -0
  138. package/dist/skill-packs/excalidraw/examples/hello.spec.json +79 -9
  139. package/dist/skill-packs/excalidraw/examples/visual_board.js +82 -0
  140. package/dist/skill-packs/excalidraw/examples/wireframe_board.js +161 -0
  141. package/dist/skill-packs/excalidraw/scripts/build_excalidraw.js +292 -27
  142. package/dist/skill-packs/excalidraw/scripts/lib/charts.js +771 -0
  143. package/dist/skill-packs/excalidraw/scripts/lib/style.js +369 -35
  144. package/dist/skill-packs/excalidraw/scripts/lib/wireframe.js +406 -0
  145. package/dist/skill-packs/goal-skill/SKILL.md +369 -100
  146. package/dist/skill-packs/goal-skill/assets/goal-skill-demo.cjs +51 -0
  147. package/dist/skill-packs/goal-skill/assets/goal-skill-viewer.cjs +181 -0
  148. package/package.json +2 -1
  149. package/skill/references/integrations.md +54 -0
  150. package/skill/references/knowledge-and-recall.md +3 -1
  151. package/skill/references/sleep.md +4 -4
  152. package/skill-packs/agents/goal-implementer.md +42 -1
  153. package/skill-packs/agents/goal-plan-reviewer.md +7 -0
  154. package/skill-packs/agents/goal-planner.md +34 -0
  155. package/skill-packs/catalog.json +31 -21
  156. package/skill-packs/excalidraw/SKILL.md +244 -13
  157. package/skill-packs/excalidraw/examples/Chart Kit.excalidraw.md +15740 -0
  158. package/skill-packs/excalidraw/examples/Wireframe Kit.excalidraw.md +16860 -0
  159. package/skill-packs/excalidraw/examples/atomic_check.js +99 -0
  160. package/skill-packs/excalidraw/examples/chart.spec.json +122 -0
  161. package/skill-packs/excalidraw/examples/chart_board.js +173 -0
  162. package/skill-packs/excalidraw/examples/hello.spec.json +79 -9
  163. package/skill-packs/excalidraw/examples/visual_board.js +82 -0
  164. package/skill-packs/excalidraw/examples/wireframe_board.js +161 -0
  165. package/skill-packs/excalidraw/scripts/build_excalidraw.js +292 -27
  166. package/skill-packs/excalidraw/scripts/lib/charts.js +771 -0
  167. package/skill-packs/excalidraw/scripts/lib/style.js +369 -35
  168. package/skill-packs/excalidraw/scripts/lib/wireframe.js +406 -0
  169. package/skill-packs/goal-skill/SKILL.md +369 -100
  170. package/skill-packs/goal-skill/assets/goal-skill-demo.cjs +51 -0
  171. package/skill-packs/goal-skill/assets/goal-skill-viewer.cjs +181 -0
  172. package/skill-task-manager/SKILL.md +93 -0
  173. package/dist/dashboard/assets/channel-2YfRjala.js +0 -1
  174. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-DB_UnN1h.js +0 -1
  175. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-DB_UnN1h.js +0 -1
  176. package/dist/dashboard/assets/clone-DaDvB3N6.js +0 -1
  177. package/dist/dashboard/assets/index-BIfrbaFS.js +0 -516
  178. package/dist/dashboard/assets/index-BdZ3tppu.css +0 -32
  179. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-eW9-s0Sm.js +0 -1
  180. package/dist/dashboard/assets/webviewWindow-BbG9Cr7f.js +0 -1
  181. package/dist/dashboard/assets/window-DmNpeJAL.js +0 -1
@@ -12,13 +12,16 @@ tags: [goal, orchestration, sdd, sub-agents, planning, review, validation]
12
12
  alwaysApply: false
13
13
  ---
14
14
 
15
- # Goal-Skill — subagent-driven goal completion
15
+ # Goal-Skill v2 — subagent-driven goal completion, fork the builders, keep the judges clean
16
16
 
17
17
  You are the **orchestrator**. Like `multi-review` and `council`, **you do not write
18
18
  production code yourself** — you dispatch sub-agents, read their results, gate the
19
19
  transitions between phases, and drive convergence loops until the goal is genuinely
20
20
  reached. Your value is judgment at the gates, not typing in the editor.
21
21
 
22
+ You are also the **single writer** of the task doc and its dependency map. Sub-agents
23
+ report back to you; they never write the map or the session registry themselves.
24
+
22
25
  A "goal" is reached when **validation passes against criteria the user agreed to** —
23
26
  not when the code looks done, not when tests you invented pass, not when you're tired
24
27
  of iterating.
@@ -31,155 +34,407 @@ of iterating.
31
34
  - A non-trivial feature or fix the user wants executed with planning + review + validation rigor.
32
35
 
33
36
  **Do NOT use it for**: trivial one-file edits, quick questions, or work where a single
34
- implementer pass is obviously enough. Orchestration spends real tokens (an opus planner,
35
- parallel reviewers, an implementer, a validator, times the iteration count). Match the
36
- machinery to the size of the goal. If the goal is small, say so and just do it.
37
+ implementer pass is obviously enough. Orchestration spends real tokens. Match the
38
+ machinery to the size of the goal the tier router below exists precisely so a small
39
+ goal doesn't pay large-goal ceremony. If the goal is small, say so and just do it.
40
+
41
+ ## The two-lane model (read this before dispatching anything)
42
+
43
+ v2's core idea: **one base session accumulates all goal context. Builders fork from it
44
+ once and are resumed on every loop round — only the delta is new tokens. Judges stay
45
+ clean and fresh every round, meeting the work only through the task doc.**
46
+
47
+ | Lane | Who | Context | Rule |
48
+ |---|---|---|---|
49
+ | **Builders** | `goal-planner`, `goal-implementer` ×N | CLI sessions, forked once, resumed per round | Fork inherits full context at cache-read price (~10%); resume pays only the delta |
50
+ | **Judges** | `goal-plan-reviewer` ×N, `reviewer`, `goal-validator` | Claude Code Agent-tool subagents | Always clean and fresh; fed only the task doc / diff — **never forked, never resumed** |
51
+
52
+ The **task doc is the only channel between lanes** — persistent, auditable, and
53
+ resumable across sessions.
54
+
55
+ **Never fork a judge.** Inherited framing anchors the verdict toward rubber-stamping.
56
+ A judge that only ever meets the work through the artifact stays independent.
57
+
58
+ ### Builder session mechanics (proven — use these exact flags)
59
+
60
+ Builders are spawned and driven via the `claude` CLI, not the Agent tool:
61
+
62
+ 1. **Spawn the planner** (once, at Phase 1):
63
+ ```
64
+ claude -p "<goal + context>" --output-format json --model <tier-model> < /dev/null
65
+ ```
66
+ `< /dev/null` matters: a headless `-p` invocation with no stdin redirect can hang
67
+ waiting for input. Always redirect stdin explicitly. Parse the JSON response for
68
+ `session_id` and record it in the **Session registry** (below).
69
+
70
+ 2. **Resume the same builder** for a revision round (only the delta is new tokens):
71
+ ```
72
+ claude -p --resume <session_id> "<the delta — new findings only>" --output-format json < /dev/null
73
+ ```
74
+
75
+ 3. **Fork an implementer from the planner session** (Phase 4, once per task in a wave):
76
+ ```
77
+ claude -p --resume <plannerId> --fork-session "<task Tn from the dep map>" \
78
+ --permission-mode acceptEdits --allowedTools "Write" "Edit" "Bash" \
79
+ --output-format json --model sonnet < /dev/null
80
+ ```
81
+ `--fork-session` mints a **new** session id that inherits the planner's full context;
82
+ the planner's original session is untouched and stays resumable. Capture the new id
83
+ into the registry under `impl-<taskId>`.
84
+
85
+ **The permission flags are not optional.** A headless `-p` session has no interactive
86
+ permission prompt: an implementer forked without them stalls at its first Write with a
87
+ "please approve" final message and ZERO files changed (observed 2026-07-18 calendar
88
+ run — cost a wasted spawn + an extra resume round). Builders that must write always
89
+ get `--permission-mode acceptEdits --allowedTools "Write" "Edit" "Bash"` at fork time.
90
+ The planner and its revision resumes stay read-only — never give them write flags.
91
+
92
+ 4. **Re-fork on repeated failure** (same finding twice): fork fresh from the planner
93
+ again rather than continuing to resume a session that is arguing with itself.
94
+
95
+ 5. **Verify on disk before trusting any builder report.** After every implementer
96
+ run/resume returns, check `git status --porcelain` on its owned files BEFORE gating,
97
+ reviewing, or updating the registry. A confident report plus an empty diff means the
98
+ session never actually built — permission stall, role drift back to planner, or a
99
+ silent error. Resume or re-fork it; never let the report stand in for the work.
100
+ (Both failure modes are real: the 2026-07-18 permission stall and the earlier 7-lane
101
+ role-binding drift were each caught exactly this way.)
102
+
103
+ **Fork base = the PLANNER session, never the orchestrator's own chat.** The
104
+ orchestrator's Claude Code conversation is not CLI-resumable — builders always branch
105
+ from the planner's CLI session, not from you.
106
+
107
+ **Keep the base lean.** Messy exploration (grepping around, reading half-relevant
108
+ files) happens in throwaway `Explore` agents dispatched *before* the fork point. A fat
109
+ base session taxes every fork that inherits it.
110
+
111
+ ### Session registry (pinned format — write exactly this block into the task doc)
112
+
113
+ The orchestrator writes this block into the task's `technical_details` in Phase 3 and
114
+ keeps it updated as builders are spawned/forked. This is the literal format — do not
115
+ improvise a different shape:
116
+
117
+ ```
118
+ ## Session registry
119
+ planner: <session_id> # from claude -p --output-format json
120
+ planner-refork: <session_id | —> # set only if a fresh re-fork happened
121
+ impl-<taskId>: <session_id> # one line per implementer, forked from planner
122
+ e.g. impl-T4: abcd1234
123
+ ```
124
+
125
+ Any later session can resume a builder by looking up its id here — this is what makes
126
+ a v2 goal recoverable across separate orchestrator sessions.
37
127
 
38
128
  ## Commitment ritual (do this FIRST — non-negotiable)
39
129
 
40
130
  Before dispatching anything, **YOU MUST**:
41
131
 
42
132
  1. **Announce**: restate the goal back to the user in one sentence, and say "I'm running
43
- the goal-skill orchestration."
44
- 2. **Create a TodoWrite list** with the six phases as items. This is your accountability
45
- mechanism — a phase is not done until its exit gate passes.
46
- 3. **Track iteration counts in TodoWrite.** For each convergence loop, the todo text
47
- carries the live count, e.g. `Phase 2: plan review (iteration 2/3)`. This makes the
48
- count externally observable so you cannot silently loop forever or stop early.
133
+ the goal-skill v2 orchestration."
134
+ 2. **Create a TodoWrite list** with the phases (tier-appropriate see router below) as
135
+ items. This is your accountability mechanism — a phase is not done until its exit
136
+ gate passes.
137
+ 3. **Track convergence rounds in TodoWrite**, not a fixed cap. For each loop, the todo
138
+ text carries the live state, e.g. `Phase 2: plan review (round 2 — new findings,
139
+ resuming planner)`. This makes the loop externally observable so you cannot silently
140
+ loop forever or stop early.
49
141
 
50
142
  Skipping the ritual is the first step toward abandoning the loops. Don't.
51
143
 
144
+ ## Tier router (inline, before Phase 1)
145
+
146
+ Classify the goal S / M / L using the same thresholds `multi-review`'s router uses for
147
+ diff size/domain (see that skill for the exact bands) applied to the *estimated* scope
148
+ of the goal rather than an existing diff:
149
+
150
+ | Tier | Ceremony |
151
+ |---|---|
152
+ | **S** — trivial/small, single file or two | Skip plan review entirely. No dependency map. One serial implementer. |
153
+ | **M** — moderate, several files, one clear owner per file | 1 plan-review lens. Dependency map only if more than one file-owning task exists. |
154
+ | **L** — large, cross-cutting, or many files | 2–3 plan-review lenses in parallel. Full dependency map required. |
155
+
156
+ **Hot-path override:** if the goal touches **auth, crypto, env/secrets, or database
157
+ migrations**, force tier **L** regardless of estimated size. These surfaces don't get
158
+ to skip rigor because the diff looked small.
159
+
160
+ **Model/effort by tier:**
161
+ - Planner model: **L → opus, M/S → sonnet** (set via `--model` at spawn).
162
+ - Planner always thinks **xhigh** — the dependency map must be right, or the whole wave
163
+ structure is unsafe.
164
+ - Implementers always think **high**.
165
+
52
166
  ## Orchestration flow
53
167
 
54
168
  ```mermaid
55
169
  flowchart TD
56
- P0[Phase 0 — confirm goal + choose validation method WITH the user] --> P1[Phase 1 goal-planner opus produces a file-by-file plan]
57
- P1 --> P2{Phase 22 goal-plan-reviewers in parallel: all SOLID?}
58
- P2 -->|NEEDS_WORK and iter < 3| P1
59
- P2 -->|cap reached| ESC1[ESCALATE to user do NOT proceed]
60
- P2 -->|all SOLID| P3[Phase 3 — persist validated plan as a dreamcontext task]
61
- P3 --> P4[Phase 4 — goal-implementer builds strictly to acceptance criteria]
62
- P4 --> P5{Phase 5 — reviewer agent: PASS?}
63
- P5 -->|FAIL and iter < 3| P4
64
- P5 -->|cap reached| ESC2[ESCALATE to user do NOT proceed]
65
- P5 -->|PASS| P6{Phase 6goal-validator runs the chosen method: PASS?}
66
- P6 -->|FAIL| P4
170
+ P0[Phase 0 — one batched ask to the user] --> PT[Tier router: S / M / L, hot-path override]
171
+ PT --> P1[Phase 1 — goal-planner: FORK once, plan + dep map, xhigh]
172
+ P1 --> P2{Phase 2 plan-reviewers, clean, parallel: all SOLID?}
173
+ P2 -->|new blocking findings| R1[RESUME planner with the delta]
174
+ R1 --> P1
175
+ P2 -->|same findings repeat| RF1[one fresh RE-FORK of the planner]
176
+ RF1 --> P1
177
+ P2 -->|still stuck after re-fork, or valve at 8 rounds| ESC1[ESCALATE to user — do NOT proceed]
178
+ P2 -->|all SOLID| P3[Phase 3persist plan + dep map + session registry as a dreamcontext task]
179
+ P3 --> P4[Phase 4implementers FORK per task, parallel waves, high]
180
+ P4 --> GATE{build + test gate between waves}
181
+ GATE -->|FAIL| R2[RESUME the owning implementer]
182
+ R2 --> P4
183
+ GATE -->|pass, last wave done| P5{Phase 5 — reviewer, clean, once: PASS?}
184
+ P5 -->|FAIL, new findings| R3[RESUME the owning implementer]
185
+ R3 --> P4
186
+ P5 -->|FAIL, same findings repeat| RF2[re-fork the implementer fresh]
187
+ RF2 --> P4
188
+ P5 -->|still stuck, or valve at 8 rounds| ESC2[ESCALATE to user — do NOT proceed]
189
+ P5 -->|PASS| P6{Phase 6 — goal-validator, clean, evidence: PASS?}
190
+ P6 -->|FAIL| R4[RESUME the owning implementer]
191
+ R4 --> P4
67
192
  P6 -->|PASS| DONE[Goal reached — validation passed, mark task completed + tell the user]
68
193
  ```
69
194
 
70
- ### Phase 0 — Scope & validation method (ask the user)
195
+ ### Phase 0 — Scope & validation method (ONE batched ask)
71
196
 
72
- Before any sub-agent runs, **ASK THE USER two things and wait for the answer**:
197
+ Before any sub-agent runs, ask the user **one batched message** covering everything you
198
+ need up front, then go hands-off until the final report:
73
199
 
74
200
  1. Confirm the goal in one sentence ("Is this the goal: …?").
75
201
  2. **"How should this goal be validated — unit/integration tests, or a manual
76
- checklist?"** (Playwright/browser E2E is not supported in v1; if the user needs it,
77
- tell them so and agree on the closest supported method.)
78
-
79
- Capture both answers in TodoWrite they are written into the task in Phase 3 and become
80
- the validator's contract in Phase 6. **Never skip this question.** A goal with no agreed
81
- validation method cannot be "reached" you'd be grading your own homework.
202
+ checklist?"** (Playwright/browser E2E is not supported; if the user needs it, tell
203
+ them so and agree on the closest supported method.)
204
+ 3. If the project declares **custom task fields** (`_dream_context/overrides/task.md`)
205
+ with `ask: true`, ask for those values now (human judgment, not something to
206
+ fabricate).
207
+ 4. If the project has **roadmap objectives** (`_dream_context/core/objectives/`
208
+ non-empty), ask which objective(s) this goal serves, unless it's obvious.
209
+
210
+ Capture all answers in TodoWrite — they are written into the task in Phase 3. **Never
211
+ skip this question.** A goal with no agreed validation method cannot be "reached" —
212
+ you'd be grading your own homework.
82
213
 
83
214
  If you are running fully autonomously with no user available, default the validation
84
- method to "the project's existing test suite must pass (`npm test`) plus a build", record
85
- that you chose it, and surface it for confirmation.
215
+ method to "the project's existing test suite must pass (`npm test`) plus a build",
216
+ record that you chose it, and surface it for confirmation.
86
217
 
87
- ### Phase 1 — PLAN
218
+ ### Phase 1 — PLAN (builder, fork once)
88
219
 
89
- Dispatch **one** `goal-planner` (opus). Give it the confirmed goal + the relevant skills
90
- to load (use the skills surfaced by the Related-skills recall line, or name the obviously
91
- relevant ones). It returns a **file-by-file plan**; it does NOT write code or the task
92
- doc. A plan that says "update the relevant files" is rejected — send it back.
220
+ Do any messy pre-fork exploration in throwaway `Explore` agents first keep the
221
+ planner's base lean. Then spawn **one** `goal-planner` CLI session per the mechanics
222
+ above, at the tier-appropriate model, thinking xhigh. Give it the confirmed goal + the
223
+ relevant skills to load. Record its `session_id` in the Session registry.
93
224
 
94
- ### Phase 2 PLAN REVIEW (parallel, iterate to convergence)
225
+ It returns a **file-by-file plan**; it does NOT write code or the task doc. A plan that
226
+ says "update the relevant files" is rejected — resume it with that feedback.
95
227
 
96
- In a **single message**, dispatch **2** `goal-plan-reviewer` sub-agents in parallel, each
97
- with a different lens passed in its prompt:
98
- - **pragmatist** — scope/YAGNI: is anything over-built or missing for the goal?
99
- - **critic** — correctness/assumptions: are integration claims verified, acceptance criteria testable, steps grounded?
228
+ For **M** and **L** tiers, the plan must also include a **dependency-map table** with
229
+ exactly these columns:
100
230
 
101
- Add a **third `security` lens** only if the plan touches auth, secrets, payments, user
102
- data, or migrations.
231
+ `task | files owned | depends on | wave | contract`
103
232
 
104
- Each reviewer returns a verdict `SOLID | NEEDS_WORK` + blocking findings. **Convergence
105
- rule:** iterate planner reviewers until **all** reviewers return `SOLID` with no
106
- blocking findings, OR you hit **iteration cap = 3**. At the cap, **ESCALATE to the user**
107
- with the unresolved findings do NOT silently proceed on a plan that didn't converge.
233
+ Safety rules the planner must apply when building the map:
234
+ - **Same file same lane.** Tasks that touch the same file are auto-dependent — never
235
+ scheduled in the same wave.
236
+ - **Contracts pinned.** Exact signatures/types for every cross-task interface, so
237
+ parallel tasks can't diverge.
238
+ - **Bounded.** Max ~3 concurrent implementers per wave. The map exists only for M/L
239
+ tiers — S is one serial implement, no map.
108
240
 
109
- ### Phase 3TASK DOC (the validated plan becomes the source of truth)
241
+ ### Phase 2PLAN REVIEW (judges, clean, parallel)
110
242
 
111
- Once the plan is `SOLID`, persist it as a dreamcontext task — the existing task system is
112
- the single source of truth from here on (no parallel doc):
243
+ Dispatch `goal-plan-reviewer` Agent-tool subagents in parallel, in a single message,
244
+ lens count per tier (S: skip this phase entirely; M: 1 lens; L: 2–3 lenses):
245
+ - **pragmatist** — scope/YAGNI.
246
+ - **critic** — correctness/assumptions, and (when a dep map exists) whether the map
247
+ itself is safe: contracts pinned, no same-file tasks in the same wave, waves acyclic.
248
+ - **security** — only when the goal is hot-path (auth/crypto/env/migrations).
249
+
250
+ Each reviewer is fed **only the plan text from the task doc** — never the planner's
251
+ session. Each returns `SOLID | NEEDS_WORK` + blocking findings.
252
+
253
+ **Convergence by signal, not a counter:**
254
+ - All reviewers `SOLID` → proceed to Phase 3.
255
+ - **New** blocking findings → `--resume` the same planner session with the delta.
256
+ - The **same** findings repeat after a resume → do **one** fresh re-fork of the planner
257
+ from its original session, and try again.
258
+ - Still stuck after the re-fork → **ESCALATE to the user** with the unresolved
259
+ findings — do NOT silently proceed.
260
+ - **Safety valve: 8 rounds total.** This is spend protection, not a definition of
261
+ done — hitting it means escalate, same as a genuine stuck loop. It does not mean
262
+ "good enough, proceed."
263
+
264
+ ### Phase 3 — TASK DOC + SESSION REGISTRY (the validated plan becomes the source of truth)
265
+
266
+ Once the plan is `SOLID`, persist it as a dreamcontext task — the existing task system
267
+ is the single source of truth from here on (no parallel doc), and **you are its single
268
+ writer**:
113
269
 
114
270
  ```bash
115
271
  dreamcontext tasks create <slug> -p high -w "<why>"
116
272
  dreamcontext tasks insert <slug> acceptance_criteria "<criterion>" # one per criterion
117
273
  dreamcontext tasks insert <slug> acceptance_criteria "Validation method: <user choice>"
118
- dreamcontext tasks insert <slug> technical_details "<file-by-file from the plan>"
274
+ dreamcontext tasks insert <slug> technical_details "<file-by-file plan + dependency-map table>"
275
+ dreamcontext tasks insert <slug> technical_details "<the Session registry block, pinned format above>"
119
276
  dreamcontext tasks insert <slug> constraints "<decisions, out-of-scope>"
120
277
  dreamcontext tasks status <slug> in_progress "plan validated; implementing"
121
278
  ```
122
279
 
123
280
  If `<slug>` already exists, de-collide (append a short suffix) rather than clobbering.
124
281
 
125
- If the project has **roadmap objectives** (`_dream_context/core/objectives/` non-empty they appear
126
- in your snapshot), link the task to the objective(s) this goal serves: `tasks create --objectives a,b`
127
- (or `dreamcontext tasks objectives <slug> a,b` after). One goal often serves several objectives —
128
- that's expected. If unsure which, ask the user in Phase 0; never leave an obviously-serving task
282
+ Link the task to any confirmed roadmap objectives (`tasks create --objectives a,b` or
283
+ `dreamcontext tasks objectives <slug> a,b`). Never leave an obviously-serving task
129
284
  unlinked, and never overwrite an existing non-empty `objectives:` list.
130
285
 
131
- If the project declares **custom task fields** (`_dream_context/overrides/task.md`), `tasks create`
132
- hard-fails (exit 1) on an unset `required` field — set each with `--field key=value` on create. For
133
- any field marked `ask: true`, ask the user for the value back in Phase 0 (it's a human judgment) rather
134
- than fabricating it. The SubagentStart briefing lists the active fields and their prompts.
135
-
136
- ### Phase 4 IMPLEMENT
137
-
138
- Dispatch **one** `goal-implementer` (sonnet; escalate to opus for genuinely hard goals)
139
- with the task slug. It reads the task doc and builds **strictly to the acceptance
140
- criteria** it does not expand scope, and if it discovers the plan is wrong it STOPS and
141
- reports back rather than silently redesigning. It logs progress via `dreamcontext tasks log`.
286
+ If the project declares custom required task fields, set each with `--field
287
+ key=value` on create `tasks create` hard-fails otherwise.
288
+
289
+ **Log a phase timestamp** (`dreamcontext tasks log <slug> "PHASE TIMESTAMPS P3 task
290
+ doc <time>"`) — do this at every phase transition from here on, so the final report
291
+ gets a timing breakdown for free.
292
+
293
+ ### Phase 4 IMPLEMENT (builders, parallel waves, fork + resume)
294
+
295
+ For each task in the current wave, fork an implementer from the **planner** session per
296
+ the mechanics above (`--resume <plannerId> --fork-session`), at sonnet, thinking high.
297
+ Capture each fork's `session_id` into the registry under `impl-<taskId>`. **Every
298
+ implementer must load the engineering skill** — non-negotiable.
299
+
300
+ Wave execution rules (mirrors the dependency map exactly):
301
+ - **Max 3 concurrent implementers.**
302
+ - Implementers only touch the files listed as `files owned` for their task — this is
303
+ what makes the parallel waves safe.
304
+ - **Build + test gate between waves.** A gate FAIL routes back to `--resume` on the
305
+ **specific owning implementer** for that file — not a broader re-implement.
306
+ - **Report ≠ work.** Before running the gate, verify each implementer's owned files
307
+ actually changed on disk (`git status --porcelain` — mechanics rule 5). Empty diff +
308
+ confident report = the fork stalled or drifted; resume/re-fork before anything else.
309
+ - **You are the single writer of the task doc and dependency map.** Implementers report
310
+ progress and status back to you; they never edit the map or registry directly, and
311
+ never write to the task doc concurrently with each other.
312
+ - The dependency map (and this wave discipline) exists only for M/L tiers; S tier is
313
+ one serial implement with no map.
314
+
315
+ On a re-implement after a FAIL, `--resume` the owning implementer's session with the
316
+ **specific** failure — don't churn unrelated code, and don't re-explain what it already
317
+ knows from its own context.
318
+
319
+ Log a phase timestamp at the start and end of each wave.
320
+
321
+ ### Phase 5 — CODE REVIEW (judge, clean, once)
322
+
323
+ **Full code review runs once, after the last wave** — per-wave gates are build+test
324
+ only, not a full review. Dispatch the existing **`reviewer`** agent (do NOT create a new
325
+ one), clean context. Tell it the base ref/branch so it runs `git diff` **itself** — do
326
+ not paste a raw diff into its prompt.
327
+
328
+ **Convergence by signal:**
329
+ - `PASS` → proceed to Phase 6.
330
+ - **New** findings → `--resume` the specific owning implementer with the failure.
331
+ - The **same** findings repeat → re-fork that implementer fresh from the planner and
332
+ retry.
333
+ - Still stuck → **ESCALATE to the user** with the unresolved findings.
334
+ - **Safety valve: 8 rounds.** Spend protection only, same as Phase 2 — never a
335
+ "proceed anyway" signal.
336
+
337
+ ### Phase 6 — VALIDATE (judge, clean, evidence — the real gate)
338
+
339
+ Dispatch **one** `goal-validator` (sonnet, clean context). It runs the **user-chosen
340
+ validation method** recorded in the task and returns `PASS | FAIL` with evidence (exact
341
+ command + output).
142
342
 
143
- ### Phase 5 CODE REVIEW (iterate to PASS)
144
-
145
- Dispatch the existing **`reviewer`** agent (do NOT create a new one). Tell it the base
146
- ref / branch so it runs `git diff` **itself** do not paste a raw diff into its prompt;
147
- it reads the real files. **Convergence rule:** iterate implementer reviewer until
148
- `reviewer` returns `PASS`, OR iteration cap = 3 ESCALATE to the user.
149
-
150
- ### Phase 6 VALIDATE (the real gate)
343
+ - **FAIL** append the failure report to the task (`dreamcontext tasks log`), and route
344
+ back to Phase 4 — `--resume` the owning implementer with the specific failure. Loop
345
+ IMPLEMENT REVIEW VALIDATE until validation PASSES.
346
+ - **PASS** the goal is reached. Close it:
347
+ `dreamcontext tasks status <slug> completed "all criteria met; validation passed via
348
+ <method>"`, log the final phase timestamp, then **tell the user it's done** — what
349
+ shipped, the evidence, and the phase-timing report assembled from your logged
350
+ timestamps. Only leave it in `in_review` instead if the validation surfaced something
351
+ a human should still eyeball before closing.
352
+
353
+ ## Live run state + viewer
354
+
355
+ The goal-skill pack maintains one live state file that two surfaces render:
356
+
357
+ - `.claude/goal-skill-viewer.cjs` — the rich Excalidraw-style browser graph
358
+ (installed by `dreamcontext setup`/`update`).
359
+ - The dreamcontext app's native live panel above the composer + dock badge
360
+ (reads the same file via the dashboard server; nothing to install).
361
+
362
+ **At run start (right after the goal is confirmed, before Phase 1):**
363
+
364
+ 1. Write the initial live file (snippet below) with `"phase":"plan"`.
365
+ 2. **Start the viewer in the background** — do not skip this; the visual IS the
366
+ product surface for a run:
367
+ ```bash
368
+ curl -s -o /dev/null --max-time 1 http://127.0.0.1:4747 \
369
+ || (node .claude/goal-skill-viewer.cjs >/dev/null 2>&1 &)
370
+ ```
371
+ (the `curl` probe keeps it idempotent — an already-running viewer is reused)
372
+ 3. Tell the user: `Canlı takip: http://localhost:4747` (in their language).
373
+
374
+ You (the orchestrator, single writer) then maintain
375
+ `_dream_context/tmp/.goal-skill-live.json` at **every** phase transition, loop-back,
376
+ and implementer state change:
151
377
 
152
- Dispatch **one** `goal-validator` (sonnet). It runs the **user-chosen validation method**
153
- recorded in the task and returns `PASS | FAIL` with evidence (exact command + output).
378
+ ```bash
379
+ mkdir -p _dream_context/tmp && cat > _dream_context/tmp/.goal-skill-live.json <<EOF
380
+ {"goal":"<slug>","session":"${CLAUDE_CODE_SESSION_ID:-}",
381
+ "started":"<run-start ISO8601>","updated":"<now ISO8601>",
382
+ "phase":"impl","iters":{"plan":2,"review":2},
383
+ "impl":{"wave":1,"waves":3,"forks":[{"s":"done"},{"s":"run"},{"s":"wait"}]}}
384
+ EOF
385
+ ```
154
386
 
155
- - **FAIL** append the failure report to the task (`dreamcontext tasks log`), and route
156
- **back to Phase 4** (IMPLEMENT). Loop IMPLEMENT REVIEW VALIDATE until validation PASSES.
157
- - **PASS** the goal is reached. The user-chosen validation method *is* the definition of
158
- done, and it passed with evidence — so close it: `dreamcontext tasks status <slug> completed
159
- "all criteria met; validation passed via <method>"`, then **tell the user it's done** (what
160
- shipped + the evidence). Only leave it in `in_review` instead if the validation surfaced
161
- something a human should still eyeball before closing.
387
+ - `session`: ALWAYS include it exactly as above (the shell expands
388
+ `$CLAUDE_CODE_SESSION_ID`). It scopes the live surfaces to YOUR session — other
389
+ Claude Code sessions open on the same project stay clean. Without it the run state
390
+ leaks into every session of the project.
391
+
392
+ - `phase`: `plan | review | task | impl | codereview | validate | done`.
393
+ - `iters.<phase>`: loop count for that phase — the renderers glow hotter the more it
394
+ looped (×2 yellow, ×3 bright, ≥4 red).
395
+ - `impl.forks[].s`: `run | done | wait | fail` — one dot per implementer fork;
396
+ `wave`/`waves` show wave progress.
397
+ - Set `"phase":"done"` on Phase-6 PASS, then **delete the file** (`rm -f`) after the
398
+ final report (also delete on escalation). A file older than 3h is treated as
399
+ abandoned and ignored by the renderers.
400
+ - Viewer helper missing (older install) → these writes are harmless no-ops, but tell
401
+ the user once: `dreamcontext update` will install the viewer. Never let live-state
402
+ upkeep block a phase; it is telemetry, not a gate.
403
+ - The viewer serves `http://localhost:4747` — phase nodes with arrows, loop-back arcs
404
+ that glow hotter per iteration, implementer forks as satellite dots around IMPL, wave
405
+ counter. Same JSON, no extra upkeep. It shows "waiting" when no run is active.
406
+ - `node .claude/goal-skill-demo.cjs` drives a fake run through every phase — useful to
407
+ demo the viewer without spawning agents.
162
408
 
163
409
  ## Convergence rules (how the loops end)
164
410
 
165
- - Every loop has a hard **iteration cap of 3**. Hitting the cap means **ESCALATE to the
166
- user** it never means "good enough, proceed."
167
- - Before each loop-back, update the TodoWrite iteration count. If the count would exceed
168
- the cap, stop and escalate.
411
+ - **Loops converge on a signal, never a fixed round count.** All judges SOLID/PASS
412
+ proceed. New blocking findings resume the builder with the delta. The same findings
413
+ repeating after a resume one fresh re-fork, then retry. Still stuck after the
414
+ re-fork escalate.
415
+ - The **safety valve is 8 rounds**, and it exists purely to protect spend — hitting it
416
+ means escalate, exactly like a genuine stuck loop means escalate. It is never license
417
+ to declare "good enough" and proceed.
418
+ - Before each loop-back, update the TodoWrite round state so the loop stays externally
419
+ observable.
169
420
  - "Reached the goal" is defined by Phase 6 validation passing — nothing else.
170
421
 
171
422
  ## Red Flags — STOP, you're about to break the loop
172
423
 
173
424
  | Thought | Reality |
174
425
  |---|---|
175
- | "The plan looks fine, I'll skip plan review." | Phase 2 is mandatory. You are not the reviewer. Dispatch them. |
176
- | "One reviewer flagged a minor thing — close enough, proceed." | Not all-SOLID = NEEDS_WORK. Iterate or escalate. |
177
- | "I'll just implement it myself, dispatching is overhead." | The orchestrator never writes production code. Dispatch the implementer. |
426
+ | "The plan looks fine, I'll skip plan review." | Plan review is mandatory for M/L tiers. You are not the reviewer. Dispatch them. |
427
+ | "One reviewer flagged a minor thing — close enough, proceed." | Not all-SOLID = NEEDS_WORK. Resume, re-fork, or escalate — never skip. |
428
+ | "I'll just implement it myself, dispatching is overhead." | The orchestrator never writes production code. Fork an implementer. |
178
429
  | "Validation is flaky, I'll mark it passed." | A flaky or skipped validation is a FAIL. No PASS without evidence. |
179
- | "I'll let the implementer review its own work." | Self-review is not review. Use a clean-context `reviewer`. |
430
+ | "I'll let the implementer review its own work." | Self-review is not review. Use the clean-context `reviewer`. |
180
431
  | "I'll skip asking the user how to validate, tests are obviously the way." | Phase 0 is non-negotiable. Validation criteria are the user's call. |
181
- | "We've looped 4 times, but I think this next one fixes it." | Cap is 3. Escalate. The user decides whether to keep going. |
182
- | "I'll mark it complete because I *think* it's done." | Done is defined by Phase 6 validation passing with evidence — not by your hunch. Complete only after PASS. |
432
+ | "We've resumed this planner 6 times, but I think the next round fixes it." | Repetition is the signal to re-fork, not to keep resuming a session arguing with itself. |
433
+ | "We hit the safety valve 8 rounds is a lot, let's just ship it." | The valve protects spend; it does not define done. Escalate, don't proceed. |
434
+ | "I'll fork a judge so it doesn't have to re-read the diff." | Never fork a judge — inherited framing produces a rubber stamp, not a verdict. |
435
+ | "Two implementers can both touch the task doc, I'll sort it out after." | You are the single writer. Implementers report to you; they never write the map/registry. |
436
+ | "I'll mark it complete because I *think* it's done." | Done is defined by Phase 6 validation passing with evidence — not by your hunch. |
437
+ | "The implementer's report says it built everything — on to review." | Reports lie when forks stall (permission gate) or drift (role-binding). `git status` its owned files first; empty diff = nothing happened. |
183
438
 
184
439
  ## Rationalization table
185
440
 
@@ -187,17 +442,31 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
187
442
  |---|---|---|
188
443
  | "Reviewers will just rubber-stamp, so why iterate?" | Reviewers that rubber-stamp are mis-prompted. Give them a lens and demand a verdict. | Dispatch with distinct lenses; treat NEEDS_WORK as binding. |
189
444
  | "The validation method doesn't matter much." | It's the entire definition of done. Get it wrong and you ship the wrong thing. | Ask in Phase 0; write it into the task. |
190
- | "Re-implementing after a validation FAIL wastes the work." | Shipping unvalidated work wastes more — it fails in production instead. | Route back to Phase 4 and fix the actual failure. |
191
- | "Escalating at the cap looks like I failed." | Escalating at the cap is the disciplined outcome. Silently proceeding is the failure. | Escalate with the specific unresolved findings. |
445
+ | "Re-implementing after a validation FAIL wastes the work." | Shipping unvalidated work wastes more — it fails in production instead. | Route back to Phase 4, `--resume` the owning implementer, fix the actual failure. |
446
+ | "Escalating after the safety valve looks like I failed." | Escalating at the valve is the disciplined outcome. Silently proceeding is the failure. | Escalate with the specific unresolved findings. |
447
+ | "Resuming keeps failing, but forking fresh feels wasteful." | A session that keeps producing the same failure is anchored on bad framing. | Re-fork once from the planner; that's the designed escape hatch, not waste. |
192
448
 
193
449
  ## Hard rules
194
450
 
195
- - **Orchestrator never writes production code.** Dispatch sub-agents.
196
- - **Plan reviewers run in parallel**, in one message. Sequential dispatch defeats the design.
451
+ - **Orchestrator never writes production code.** Dispatch builders.
452
+ - **Orchestrator is the single writer of the task doc, the dependency map, and the
453
+ session registry.** Sub-agents report back; they never write these directly.
454
+ - **Builders (planner, implementers) are CLI sessions**, forked once from the planner
455
+ and resumed per round via `--resume`/`--fork-session`. **Judges (plan-reviewers,
456
+ reviewer, validator) are Agent-tool subagents, always clean and fresh, never forked
457
+ or resumed.**
458
+ - **Plan reviewers run in parallel**, in one message, when the tier calls for review.
197
459
  - **Never skip Phase 0's validation-method question.**
198
- - **`complete` only after Phase 6 PASS** — validation passing with evidence is the definition of done; never complete on a hunch, and never before validation.
460
+ - **`complete` only after Phase 6 PASS** — validation passing with evidence is the
461
+ definition of done; never complete on a hunch, and never before validation.
199
462
  - **Tell `reviewer` to run `git diff` itself**; don't paste diffs into prompts.
200
- - **Caps are hard** (3 per loop). At the cap, escalate never declare done.
463
+ - **Convergence is by signal, not a fixed round count.** New findings resume;
464
+ repeated → one re-fork → escalate. This is backstopped by an 8-round safety valve
465
+ that protects spend and never defines done.
466
+ - **Same file → same lane.** Wave-parallel implementers never share a file.
467
+ - **Full code review runs once**, after the last wave — per-wave gates are build+test
468
+ only.
469
+ - **Every implementer loads the engineering skill.** Non-negotiable.
201
470
  - **Use the `dreamcontext` skill** throughout — the task doc is the source of truth.
202
471
 
203
472
  ## Relationship to other orchestration surfaces
@@ -206,7 +475,7 @@ recorded in the task and returns `PASS | FAIL` with evidence (exact command + ou
206
475
  |---|---|---|
207
476
  | `goal-skill` (this) | End-to-end build of a goal | Owns the full plan→implement→validate lifecycle. |
208
477
  | `council` | Decide between options | Use *before* a goal if the approach is contested; goal-skill then executes the decision. |
209
- | `multi-review` | Post-implementation review of a multi-domain diff | goal-skill's Phase 5 uses the single `reviewer`; for large multi-domain diffs, the orchestrator may swap in `multi-review` instead. |
478
+ | `multi-review` | Post-implementation review of a multi-domain diff | goal-skill's Phase 5 uses the single `reviewer`; for large multi-domain diffs, the orchestrator may swap in `multi-review` instead. Its router thresholds also back the tier router above. |
210
479
  | `reviewer` agent | Final code gate | Reused directly as Phase 5. |
211
480
 
212
481
  ## Slash command wiring