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.
- package/README.md +321 -565
- package/agents/sleep-product.md +21 -2
- package/agents/sleep-state.md +24 -0
- package/agents/sleep-tasks.md +16 -0
- package/dist/agents/sleep-product.md +21 -2
- package/dist/agents/sleep-state.md +24 -0
- package/dist/agents/sleep-tasks.md +16 -0
- package/dist/dashboard/announcements/dashboard-highlights-0-17-0-18.excalidraw.md +1531 -0
- package/dist/dashboard/announcements/goal-skill-v2.excalidraw.md +1490 -0
- package/dist/dashboard/announcements/task-manager.excalidraw.md +1217 -0
- package/dist/dashboard/announcements/visual-announcements.excalidraw.md +1373 -0
- package/dist/dashboard/announcements.json +38 -0
- package/dist/dashboard/assets/{BrainCanvas3D-DyF_3yYD.js → BrainCanvas3D-D9G3dOLf.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-Do8VMBA0.js → _baseUniq-Cyshlz4Y.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-DmbXDb2R.js → ar-SA-G6X2FPQ2-qj-2Cbgo.js} +1 -1
- package/dist/dashboard/assets/{arc-CwtUBQfU.js → arc-0OnX5WDs.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-O9bOog_f.js → architectureDiagram-Q4EWVU46-Cx3c0nUi.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-c9Zk10vG.js → az-AZ-76LH7QW2-CBuoh6M3.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-uMTg84lX.js → bg-BG-XCXSNQG7-X5QYyZWx.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-BTENXCSO.js → blockDiagram-DXYQGD6D-BwESAg1j.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-DUFKHcua.js → bn-BD-2XOGV67Q-DlodQLNR.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-DMXPWRiQ.js → c4Diagram-AHTNJAMY-CopL0lbP.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-BuYX1q89.js → ca-ES-6MX7JW3Y-DfqF6Yhy.js} +1 -1
- package/dist/dashboard/assets/channel-BLisRbYb.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-DgefvnWS.js → chunk-4BX2VUAB-CRwifLK3.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK-BnFO5G1t.js → chunk-4TB4RGXK-uxJYY_64.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-COm2TYEM.js → chunk-55IACEB6-DhYIp7Oc.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY-CtsGCwZp.js → chunk-EDXVE4YY-CCxfcirt.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-cfSvx35j.js → chunk-FMBD7UC4-D7OC8QFC.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-DAhDKteL.js → chunk-OYMX7WX6-CwHgaUQo.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-B5h4qML3.js → chunk-QZHKN3VN-7Idpf6YJ.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-CGp_NiRg.js → chunk-YZCP3GAM-D4Lh0fgr.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-CgqeQiHi.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-CgqeQiHi.js +1 -0
- package/dist/dashboard/assets/clone-CQXNMCV5.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-Dk7CMFA4.js → cose-bilkent-S5V4N54A-BYcMtJTF.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-zfUTiS_d.js → cs-CZ-2BRQDIVT-rnrpKdSJ.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-CU14f8NA.js → da-DK-5WZEPLOC-D5OGAvk7.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-BiMVxC4Q.js → dagre-KV5264BT-V0f1_b4R.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-CDOHAJGo.js → de-DE-XR44H4JA-CDyb8YfL.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-DfJEsVTA.js → diagram-5BDNPKRD-BmpizoaS.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-CztLHIcY.js → diagram-G4DWMVQ6-ClQg-LTu.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-DqoQLlWK.js → diagram-MMDJMWI5-BkXcDMIV.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-DvyvQBCc.js → diagram-TYMM5635-BbFiiCM2.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-ChUphbcv.js → el-GR-BZB4AONW-Y1YnKZL0.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-D_uSs2_2.js → erDiagram-SMLLAGMA-Dzdv7_l5.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-BNalBEhb.js → es-ES-U4NZUMDT-D0T536hs.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-BMiQyA2y.js → eu-ES-A7QVB2H4-Bfrya0et.js} +1 -1
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-Bd6ZnTSo.js → fa-IR-HGAKTJCU-pYE_hG-L.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-BWAfJadC.js → fi-FI-Z5N7JZ37-D3C-fNyk.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-Bmsp6kyU.js → flowDiagram-DWJPFMVM-CFhyjwKY.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-CspbYzOW.js → fr-FR-RHASNOE6-CgwnG5JW.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-wEdysXo_.js → ganttDiagram-T4ZO3ILL-BRKRiSzf.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-BEiGpPBj.js → gitGraphDiagram-UUTBAWPF-CTqCK49d.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-CV76vsWr.js → gl-ES-HMX3MZ6V-DjJTqTm3.js} +1 -1
- package/dist/dashboard/assets/{graph-CZFIeNHZ.js → graph-D429kSbY.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-Y1VoXJ_H.js → he-IL-6SHJWFNN-C84FlH6r.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-Crh5S49o.js → hi-IN-IWLTKZ5I-Blhkfum2.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-D4I3gCbp.js → hu-HU-A5ZG7DT2-DLC1JfN-.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-Chvzkuvi.js → id-ID-SAP4L64H-C3pB_IWB.js} +1 -1
- package/dist/dashboard/assets/image-FgR93jdt.js +1 -0
- package/dist/dashboard/assets/index-2m8ueOUn.js +1 -0
- package/dist/dashboard/assets/index-CWwjuihq.css +32 -0
- package/dist/dashboard/assets/{index-C7Bo5AQH.js → index-CbOXCDms.js} +1 -1
- package/dist/dashboard/assets/index-SJ64pf-4.js +551 -0
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-BzfuDHl4.js → infoDiagram-42DDH7IO-CIzDShDw.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-BVoNJ9VS.js → ishikawaDiagram-UXIWVN3A-CuasYzdX.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-BH_gN5es.js → it-IT-JPQ66NNP-DGGEoNPu.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-DU_WmLVa.js → ja-JP-DBVTYXUO-CEqP9aps.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-DbwICa_a.js → journeyDiagram-VCZTEJTY-DHiq2OTQ.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-KYU9qowM.js → kaa-6HZHGXH3-GOFmTAXq.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-bjhyiUq5.js → kab-KAB-ZGHBKWFO-B865Wwzu.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-D9XucLs4.js → kanban-definition-6JOO6SKY-BhlTKFbL.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-CYTx_dAZ.js → kk-KZ-P5N5QNE5-CNfuE6b6.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-DqsuY4Lf.js → km-KH-HSX4SM5Z-CsmgRWxu.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-BZe7NywF.js → ko-KR-MTYHY66A-B_02RgEz.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-F5d6HFWt.js → ku-TR-6OUDTVRD-JfQA5u05.js} +1 -1
- package/dist/dashboard/assets/{layout-CotqU0S9.js → layout-DvrQSvOI.js} +1 -1
- package/dist/dashboard/assets/{linear-Dqv87Scf.js → linear-6r0qttLs.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-BCCuaPbS.js → lt-LT-XHIRWOB4-DWFUXEdf.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-NLGi-vJ6.js → lv-LV-5QDEKY6T-C5yAd0n_.js} +1 -1
- package/dist/dashboard/assets/{min-BbJdnc3h.js → min-D_EP9dBf.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-Dk4QySu7.js → mindmap-definition-QFDTVHPH-Col3ao9B.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-BnGDIgVN.js → mr-IN-CRQNXWMA-Dwjz0Xdm.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-CspgYE9_.js → my-MM-5M5IBNSE-EXJDNyjA.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-BeRPw3hu.js → nb-NO-T6EIAALU-BWm2bgLd.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-C-G-bljM.js → nl-NL-IS3SIHDZ-f8nP-yp-.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-Ct7VZY8D.js → nn-NO-6E72VCQL-B0c_gCNR.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-Cv5-C4Qq.js → oc-FR-POXYY2M6-C40PSwAh.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-DAgkIThL.js → pa-IN-N4M65BXN-DDcgXFkB.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-vidRYabK.js → percentages-BXMCSKIN-MHBQP8nI.js} +7 -7
- package/dist/dashboard/assets/{pica-Cy-Xl-mi.js → pica-C5CFA09W.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-BnP4-zwd.js → pieDiagram-DEJITSTG-DFHmB0fL.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-BuJQ3HD-.js → pl-PL-T2D74RX3-yFTBt0Xu.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-BbAqsvD6.js → pt-BR-5N22H2LF-ilAW3Fdv.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-DzFJedU3.js → pt-PT-UZXXM6DQ-CXHFN95K.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-BXN88cHy.js → quadrantDiagram-34T5L4WZ-CR732_oP.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-D34hL42a.js → requirementDiagram-MS252O5E-mKoVG52Z.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-BV2-sOiv.js → ro-RO-JPDTUUEW-BKlWpyF4.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-BCL4N9Ej.js → ru-RU-B4JR7IUQ-BGoxlhJm.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-0mFeok-3.js → sankeyDiagram-XADWPNL6-DXipts7M.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-C-5nW5j6.js → sequenceDiagram-FGHM5R23-DFQhU8q7.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-CNhaw4jx.js → si-LK-N5RQ5JYF-yDbJWFTH.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-mHCphOXu.js → sk-SK-C5VTKIMK-DglyhbNB.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC--lzgHthQ.js → sl-SI-NN7IZMDC-DPfq0s4I.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-C50iDFqe.js → stateDiagram-FHFEXIEX-Dm50jiEh.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-CoSm11sD.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-DNsjL37s.js → subset-shared.chunk-OHz6M6ct.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-BaV3r-bl.js → subset-worker.chunk-BzwrOBtO.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-ckw8jfGN.js → sv-SE-XGPEYMSR-BLHNwr4k.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-CSeNmVhS.js → ta-IN-2NMHFXQM-Dw-6hUpN.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-Cvn1sg_3.js → th-TH-HPSO5L25-DPkcM_k9.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-DRYfuqHT.js → timeline-definition-GMOUNBTQ-BKFNQ_7e.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-CyhY22TB.js → tr-TR-DEFEU3FU-rBVsY5RS.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-BvvAEO6U.js → uk-UA-QMV73CPH-CV6_yTZs.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-Crril7Cj.js → vennDiagram-DHZGUBPP-BZb_r5tY.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-c7AwSUZ8.js → vi-VN-M7AON7JQ-CJMgSsLz.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-Da5AhSWU.js → wardley-RL74JXVD-DgqjmWyN.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-C4GeB_Df.js → wardleyDiagram-NUSXRM2D-BDpniS9m.js} +1 -1
- package/dist/dashboard/assets/webviewWindow-Bwv2421L.js +1 -0
- package/dist/dashboard/assets/window-BObcHN8e.js +1 -0
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-BPCFKXqR.js → xychartDiagram-5P7HB3ND-CCyPcx2A.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-BvNiZwKU.js → zh-CN-LNUGB5OW-9LJLF_AC.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-CCFtoCWb.js → zh-HK-E62DVLB3-IefAiePp.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-bYBr-stu.js → zh-TW-RAJ6MFWO-CHeY9rNZ.js} +1 -1
- package/dist/dashboard/index.html +2 -2
- package/dist/index.js +4099 -1538
- package/dist/skill-packs/agents/goal-implementer.md +42 -1
- package/dist/skill-packs/agents/goal-plan-reviewer.md +7 -0
- package/dist/skill-packs/agents/goal-planner.md +34 -0
- package/dist/skill-packs/catalog.json +31 -21
- package/dist/skill-packs/excalidraw/SKILL.md +244 -13
- package/dist/skill-packs/excalidraw/examples/Chart Kit.excalidraw.md +15740 -0
- package/dist/skill-packs/excalidraw/examples/Wireframe Kit.excalidraw.md +16860 -0
- package/dist/skill-packs/excalidraw/examples/atomic_check.js +99 -0
- package/dist/skill-packs/excalidraw/examples/chart.spec.json +122 -0
- package/dist/skill-packs/excalidraw/examples/chart_board.js +173 -0
- package/dist/skill-packs/excalidraw/examples/hello.spec.json +79 -9
- package/dist/skill-packs/excalidraw/examples/visual_board.js +82 -0
- package/dist/skill-packs/excalidraw/examples/wireframe_board.js +161 -0
- package/dist/skill-packs/excalidraw/scripts/build_excalidraw.js +292 -27
- package/dist/skill-packs/excalidraw/scripts/lib/charts.js +771 -0
- package/dist/skill-packs/excalidraw/scripts/lib/style.js +369 -35
- package/dist/skill-packs/excalidraw/scripts/lib/wireframe.js +406 -0
- package/dist/skill-packs/goal-skill/SKILL.md +369 -100
- package/dist/skill-packs/goal-skill/assets/goal-skill-demo.cjs +51 -0
- package/dist/skill-packs/goal-skill/assets/goal-skill-viewer.cjs +181 -0
- package/package.json +2 -1
- package/skill/references/integrations.md +54 -0
- package/skill/references/knowledge-and-recall.md +3 -1
- package/skill/references/sleep.md +4 -4
- package/skill-packs/agents/goal-implementer.md +42 -1
- package/skill-packs/agents/goal-plan-reviewer.md +7 -0
- package/skill-packs/agents/goal-planner.md +34 -0
- package/skill-packs/catalog.json +31 -21
- package/skill-packs/excalidraw/SKILL.md +244 -13
- package/skill-packs/excalidraw/examples/Chart Kit.excalidraw.md +15740 -0
- package/skill-packs/excalidraw/examples/Wireframe Kit.excalidraw.md +16860 -0
- package/skill-packs/excalidraw/examples/atomic_check.js +99 -0
- package/skill-packs/excalidraw/examples/chart.spec.json +122 -0
- package/skill-packs/excalidraw/examples/chart_board.js +173 -0
- package/skill-packs/excalidraw/examples/hello.spec.json +79 -9
- package/skill-packs/excalidraw/examples/visual_board.js +82 -0
- package/skill-packs/excalidraw/examples/wireframe_board.js +161 -0
- package/skill-packs/excalidraw/scripts/build_excalidraw.js +292 -27
- package/skill-packs/excalidraw/scripts/lib/charts.js +771 -0
- package/skill-packs/excalidraw/scripts/lib/style.js +369 -35
- package/skill-packs/excalidraw/scripts/lib/wireframe.js +406 -0
- package/skill-packs/goal-skill/SKILL.md +369 -100
- package/skill-packs/goal-skill/assets/goal-skill-demo.cjs +51 -0
- package/skill-packs/goal-skill/assets/goal-skill-viewer.cjs +181 -0
- package/skill-task-manager/SKILL.md +93 -0
- package/dist/dashboard/assets/channel-2YfRjala.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-DB_UnN1h.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-DB_UnN1h.js +0 -1
- package/dist/dashboard/assets/clone-DaDvB3N6.js +0 -1
- package/dist/dashboard/assets/index-BIfrbaFS.js +0 -516
- package/dist/dashboard/assets/index-BdZ3tppu.css +0 -32
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-eW9-s0Sm.js +0 -1
- package/dist/dashboard/assets/webviewWindow-BbG9Cr7f.js +0 -1
- 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
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
45
|
-
mechanism — a phase is not done until its exit
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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 —
|
|
57
|
-
|
|
58
|
-
P2
|
|
59
|
-
P2 -->|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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 3 — persist plan + dep map + session registry as a dreamcontext task]
|
|
179
|
+
P3 --> P4[Phase 4 — implementers 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 (
|
|
195
|
+
### Phase 0 — Scope & validation method (ONE batched ask)
|
|
71
196
|
|
|
72
|
-
Before any sub-agent runs,
|
|
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
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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",
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
|
|
102
|
-
data, or migrations.
|
|
231
|
+
`task | files owned | depends on | wave | contract`
|
|
103
232
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
|
241
|
+
### Phase 2 — PLAN REVIEW (judges, clean, parallel)
|
|
110
242
|
|
|
111
|
-
|
|
112
|
-
|
|
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
|
|
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
|
-
|
|
126
|
-
|
|
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
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
153
|
-
|
|
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
|
-
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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." |
|
|
176
|
-
| "One reviewer flagged a minor thing — close enough, proceed." | Not all-SOLID = NEEDS_WORK.
|
|
177
|
-
| "I'll just implement it myself, dispatching is overhead." | The orchestrator never writes production code.
|
|
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
|
|
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
|
|
182
|
-
| "
|
|
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
|
|
191
|
-
| "Escalating
|
|
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
|
|
196
|
-
- **
|
|
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
|
|
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
|
-
- **
|
|
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
|