dreamcontext 0.9.1 → 0.10.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 +61 -19
- package/agents/curator-auditor.md +6 -1
- package/agents/curator-worker.md +1 -1
- package/agents/dreamcontext-explore.md +10 -0
- package/agents/sleep-product.md +15 -6
- package/agents/sleep-state.md +2 -0
- package/agents/sleep-tasks.md +11 -0
- package/dist/agents/curator-auditor.md +6 -1
- package/dist/agents/curator-worker.md +1 -1
- package/dist/agents/dreamcontext-explore.md +10 -0
- package/dist/agents/sleep-product.md +15 -6
- package/dist/agents/sleep-state.md +2 -0
- package/dist/agents/sleep-tasks.md +11 -0
- package/dist/dashboard/assets/{BrainCanvas3D-BvuUW-Ij.js → BrainCanvas3D-DPHKVW49.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-BNAWiBFl.js → _baseUniq-CHd2laKt.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-rNEb6-jN.js → ar-SA-G6X2FPQ2-CJm41yHw.js} +1 -1
- package/dist/dashboard/assets/{arc-DDLjNpXk.js → arc-DUqUK5I0.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-P208qO4N.js → architectureDiagram-Q4EWVU46-CRDXKDvE.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-Dwql62JX.js → az-AZ-76LH7QW2-BvugTMBT.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-BgteTNp8.js → bg-BG-XCXSNQG7-CLr0Fn-e.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-BDSceoPt.js → blockDiagram-DXYQGD6D-B8exO_lL.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-BYJ6_efF.js → bn-BD-2XOGV67Q-D0vwADrS.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-CRbiwdrM.js → c4Diagram-AHTNJAMY-Cejeoprm.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-CtFrXfas.js → ca-ES-6MX7JW3Y-CxqyG_0S.js} +1 -1
- package/dist/dashboard/assets/channel-44TauaoC.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-kqN0Cg_r.js → chunk-4BX2VUAB-BKe2HbO0.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK-CpwYPUdR.js → chunk-4TB4RGXK-BYd5xUfH.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-CQ_4M3g4.js → chunk-55IACEB6-BRmdVuF4.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY--HdVil0f.js → chunk-EDXVE4YY-B-pwoibO.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-CrbfOH-q.js → chunk-FMBD7UC4-LC1eQ6Bn.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-BrcCZnqx.js → chunk-OYMX7WX6-w2Fbw2qj.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-Cby58gGN.js → chunk-QZHKN3VN-BCWG4fy9.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-tvOjDART.js → chunk-YZCP3GAM-CrKe7Bc4.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-DvAbYAqz.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-DvAbYAqz.js +1 -0
- package/dist/dashboard/assets/clone-C56fm_aT.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-CuwbWQzD.js → cose-bilkent-S5V4N54A-Csw9QUYq.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-DfVAwqqU.js → cs-CZ-2BRQDIVT-CogQs_1l.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-D1QJqNxG.js → da-DK-5WZEPLOC-CLE1k6n-.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-Bbf-wMho.js → dagre-KV5264BT-CYO4L2oQ.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-CbCdH8Mp.js → de-DE-XR44H4JA-Cyk4pAkD.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-CvMJJUvv.js → diagram-5BDNPKRD-_l3m-Gzf.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-BBz7ebE8.js → diagram-G4DWMVQ6-ComC4npi.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-U7IcL5ZQ.js → diagram-MMDJMWI5-xZ9cT0uu.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-BfTLwlSm.js → diagram-TYMM5635-Dnq3s1v5.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-DvGrscY6.js → el-GR-BZB4AONW-BFImbdQn.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-C1ncTn9B.js → erDiagram-SMLLAGMA-kcbabKJD.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-BlawPkmw.js → es-ES-U4NZUMDT-jGtxZhYt.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-p5lXDFKY.js → eu-ES-A7QVB2H4-Bzz2d8CD.js} +1 -1
- package/dist/dashboard/assets/event-BbvoZQ5o.js +1 -0
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-DbY6Wzu9.js → fa-IR-HGAKTJCU-63k-G3tN.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-HyRJneut.js → fi-FI-Z5N7JZ37-ezHcIK6s.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-tySa4G4z.js → flowDiagram-DWJPFMVM-B1Uy8SMX.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-C0ElnhzM.js → fr-FR-RHASNOE6-C6Pe7vKj.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-BQsJPxAU.js → ganttDiagram-T4ZO3ILL-CABaaerr.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-B2jHjMzI.js → gitGraphDiagram-UUTBAWPF-CcyLIbFK.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-D5qSPU7d.js → gl-ES-HMX3MZ6V-sdrg75Ty.js} +1 -1
- package/dist/dashboard/assets/{graph-deVQIt7H.js → graph-XfL-ygDi.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-CNsRxzJL.js → he-IL-6SHJWFNN-C9y7ygPP.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-CCLXIBWK.js → hi-IN-IWLTKZ5I-Bf7GXs-7.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-Dq17BfYB.js → hu-HU-A5ZG7DT2-SU6SehRg.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-CRL19WJa.js → id-ID-SAP4L64H-DVtmANJA.js} +1 -1
- package/dist/dashboard/assets/{index-BO_pjfQA.js → index-C64a-kHY.js} +1 -1
- package/dist/dashboard/assets/index-CC4bLFLV.js +579 -0
- package/dist/dashboard/assets/index-DZ3FBso3.css +32 -0
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-DKXhFQx1.js → infoDiagram-42DDH7IO-DfBeu9Gz.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-ixuXBV9q.js → ishikawaDiagram-UXIWVN3A-CbBN1lYP.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-B-3gnXYZ.js → it-IT-JPQ66NNP-BbmyFH6C.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-GCqLTdC-.js → ja-JP-DBVTYXUO-Cbhk39-5.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-Cda6rfE1.js → journeyDiagram-VCZTEJTY-BW4WNn5U.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-DUr4YiJc.js → kaa-6HZHGXH3-Cm-Swgc1.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-DGcoDq7_.js → kab-KAB-ZGHBKWFO-BX9BAQyv.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-8II0TptL.js → kanban-definition-6JOO6SKY-D6dnUpyA.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-OnQ3fZQr.js → kk-KZ-P5N5QNE5-MHpPSoz0.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-BgLH2RAX.js → km-KH-HSX4SM5Z-BU3ECFbO.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-BFRlVzp3.js → ko-KR-MTYHY66A-DqT3JGwF.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-KXxCpHg7.js → ku-TR-6OUDTVRD-DN2-3fDm.js} +1 -1
- package/dist/dashboard/assets/{layout-Bk1_SQxF.js → layout-BZ4MGsUu.js} +1 -1
- package/dist/dashboard/assets/{linear-NBVeSfQr.js → linear-C0etayOa.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-zYih94tH.js → lt-LT-XHIRWOB4-DQVwHiLl.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-BfR2lGJU.js → lv-LV-5QDEKY6T-Dad8CoSF.js} +1 -1
- package/dist/dashboard/assets/{min-Czsp1-lf.js → min-Bl_tJyDg.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-B7iHNGK3.js → mindmap-definition-QFDTVHPH-BNw0aQbU.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-CbecgcF-.js → mr-IN-CRQNXWMA-BbxiQT_Z.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-CsdHXw4v.js → my-MM-5M5IBNSE-UoAgrIPq.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-r8FpCRvQ.js → nb-NO-T6EIAALU-CImkOb7l.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-Dp3Z4P6_.js → nl-NL-IS3SIHDZ-vfeVTewJ.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-CQcuUlUa.js → nn-NO-6E72VCQL-DUCB91yA.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-Dz9rwf28.js → oc-FR-POXYY2M6-BkXl0YMF.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-AuAonL3w.js → pa-IN-N4M65BXN-CWiVQtSk.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-D9EnbREi.js → percentages-BXMCSKIN-BGA-Ex2O.js} +31 -31
- package/dist/dashboard/assets/{pica---loOZLP.js → pica-B8XEUChK.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-CiDTXifX.js → pieDiagram-DEJITSTG-Dic1EjdC.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-4k9qJgDf.js → pl-PL-T2D74RX3-g55_1Rbd.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-DvKuT6kK.js → pt-BR-5N22H2LF-DQeCXlLm.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-ijbr_1VI.js → pt-PT-UZXXM6DQ-CHvZqZyF.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-Bu9Comci.js → quadrantDiagram-34T5L4WZ-CP7lQiIi.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-D62TW6xA.js → requirementDiagram-MS252O5E-BWtUEAf6.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-C0llzWmG.js → ro-RO-JPDTUUEW-EwDfeMZo.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-BeSwVB2r.js → ru-RU-B4JR7IUQ-CD2Zj2l8.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-TlSEi12K.js → sankeyDiagram-XADWPNL6-DwvQDD5y.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-ScKG2Xsm.js → sequenceDiagram-FGHM5R23-BRglyRtb.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-DWeue3dw.js → si-LK-N5RQ5JYF-BY5MM9Vd.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-C2sh3w4f.js → sk-SK-C5VTKIMK-5GG4lqoV.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC-CeXk9ucf.js → sl-SI-NN7IZMDC-DX6b0Bj8.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-BB1JoyXM.js → stateDiagram-FHFEXIEX-Dl3yCEGL.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-Q3JaGk-b.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-CWvpWWsn.js → subset-shared.chunk-CmSgs0wP.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-D7Ec71V-.js → subset-worker.chunk-gyKmbtyq.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-8YPrynz7.js → sv-SE-XGPEYMSR-Cf_qIZ2K.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-CmMKeEZv.js → ta-IN-2NMHFXQM-zwatd37w.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-BIxym374.js → th-TH-HPSO5L25-Cw3uejzD.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-Cx1z6jhx.js → timeline-definition-GMOUNBTQ-C7YbVDU1.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-BZUk--nT.js → tr-TR-DEFEU3FU-C15eSVKk.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-DKP6R9nZ.js → uk-UA-QMV73CPH-DtjXD0R5.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-CHrTxlSz.js → vennDiagram-DHZGUBPP-CM3qRaPy.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-D1tkx3Op.js → vi-VN-M7AON7JQ-TYc9r2ul.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-DuzpwUu5.js → wardley-RL74JXVD-hKHpsv-V.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-x03tOVd0.js → wardleyDiagram-NUSXRM2D-By2VWEm6.js} +1 -1
- package/dist/dashboard/assets/webviewWindow-BbG9Cr7f.js +1 -0
- package/dist/dashboard/assets/window-DmNpeJAL.js +1 -0
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-CufD9zuW.js → xychartDiagram-5P7HB3ND-B_jwEdiv.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-CpicUYEV.js → zh-CN-LNUGB5OW-BMLBhdOl.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-DyNkpg-N.js → zh-HK-E62DVLB3-B3F6zPCV.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-Cg30MEjI.js → zh-TW-RAJ6MFWO-BtvvFKFv.js} +1 -1
- package/dist/dashboard/favicon.svg +14 -9
- package/dist/dashboard/index.html +5 -4
- package/dist/dashboard/logo.png +0 -0
- package/dist/index.js +7470 -1411
- package/dist/skill-packs/goal-skill/SKILL.md +5 -0
- package/package.json +8 -2
- package/skill/SKILL.md +10 -4
- package/skill/references/cli-reference.md +10 -6
- package/skill/references/integrations.md +17 -8
- package/skill/references/knowledge-and-recall.md +8 -0
- package/skill/references/sleep.md +1 -1
- package/skill/references/tasks-and-features.md +60 -4
- package/skill-deep-research/SKILL.md +179 -0
- package/skill-packs/goal-skill/SKILL.md +5 -0
- package/dist/dashboard/assets/channel-CJWWthUO.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-D8yKg5c-.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-D8yKg5c-.js +0 -1
- package/dist/dashboard/assets/clone-DkTWs9rv.js +0 -1
- package/dist/dashboard/assets/index-CQkBs_Vm.js +0 -484
- package/dist/dashboard/assets/index-aCkhI_aO.css +0 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BqR3Ofhf.js +0 -1
- package/dist/dashboard/assets/webviewWindow-Dlc9MvRw.js +0 -1
- package/dist/dashboard/assets/window-D0tFurhp.js +0 -1
|
@@ -122,6 +122,11 @@ dreamcontext tasks status <slug> in_progress "plan validated; implementing"
|
|
|
122
122
|
|
|
123
123
|
If `<slug>` already exists, de-collide (append a short suffix) rather than clobbering.
|
|
124
124
|
|
|
125
|
+
If the project declares **custom task fields** (`_dream_context/overrides/task.md`), `tasks create`
|
|
126
|
+
hard-fails (exit 1) on an unset `required` field — set each with `--field key=value` on create. For
|
|
127
|
+
any field marked `ask: true`, ask the user for the value back in Phase 0 (it's a human judgment) rather
|
|
128
|
+
than fabricating it. The SubagentStart briefing lists the active fields and their prompts.
|
|
129
|
+
|
|
125
130
|
### Phase 4 — IMPLEMENT
|
|
126
131
|
|
|
127
132
|
Dispatch **one** `goal-implementer` (sonnet; escalate to opus for genuinely hard goals)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dreamcontext",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "dreamcontext — the persistent brain for your AI agents. Remembers what you built, knows how your project works.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"skill",
|
|
12
12
|
"skill-initializer",
|
|
13
13
|
"skill-curator",
|
|
14
|
+
"skill-deep-research",
|
|
14
15
|
"skill-packs",
|
|
15
16
|
"agents",
|
|
16
17
|
"README.md",
|
|
@@ -51,14 +52,19 @@
|
|
|
51
52
|
"commander": "^13.1.0",
|
|
52
53
|
"fast-glob": "^3.3.3",
|
|
53
54
|
"gray-matter": "^4.0.3",
|
|
54
|
-
"nanoid": "^5.1.2"
|
|
55
|
+
"nanoid": "^5.1.2",
|
|
56
|
+
"ws": "^8.21.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
59
|
"@playwright/test": "^1.60.0",
|
|
58
60
|
"@types/node": "^22.13.4",
|
|
61
|
+
"@types/ws": "^8.18.1",
|
|
59
62
|
"sharp": "^0.34.5",
|
|
60
63
|
"tsup": "^8.4.0",
|
|
61
64
|
"typescript": "^5.7.3",
|
|
62
65
|
"vitest": "^3.0.6"
|
|
66
|
+
},
|
|
67
|
+
"optionalDependencies": {
|
|
68
|
+
"node-pty": "^1.1.0"
|
|
63
69
|
}
|
|
64
70
|
}
|
package/skill/SKILL.md
CHANGED
|
@@ -75,7 +75,7 @@ dreamcontext is **more than memory files**. Every capability below is real and s
|
|
|
75
75
|
| Capability | What it is | Reference |
|
|
76
76
|
|---|---|---|
|
|
77
77
|
| **Structured memory** | soul/user/memory + knowledge + tasks, auto-loaded each session | this file |
|
|
78
|
-
| **Tasks** | Working documents with changelog, RICE,
|
|
78
|
+
| **Tasks** | Working documents with changelog, RICE, status lifecycle, start/due date ranges, resolved assignees, and project-declared custom fields (`overrides/task.md`) | [tasks-and-features.md](references/tasks-and-features.md) |
|
|
79
79
|
| **Features (PRDs)** | Retrospective product docs, updated only during sleep | [tasks-and-features.md](references/tasks-and-features.md) |
|
|
80
80
|
| **Knowledge** | Tagged deep docs, pinning, staleness, Excalidraw diagrams | [knowledge-and-recall.md](references/knowledge-and-recall.md) |
|
|
81
81
|
| **Memory recall** | Haiku/BM25 search over the whole corpus; auto-injected on prompts | [knowledge-and-recall.md](references/knowledge-and-recall.md) |
|
|
@@ -196,7 +196,7 @@ When in doubt about a command or flag, open [cli-reference.md](references/cli-re
|
|
|
196
196
|
|
|
197
197
|
10. **Use `dreamcontext-explore`, not `Explore`.** The default Explore agent is blocked via a PreToolUse hook. `dreamcontext-explore` checks curated context first, saving thousands of tokens.
|
|
198
198
|
|
|
199
|
-
11. **Tag before you create.** Before tagging a task/feature/knowledge, consult `dreamcontext taxonomy vocab` and reuse canonical faceted tags (`topic:recall`, `domain:security`) before inventing new ones. Fragmenting tags degrades recall.
|
|
199
|
+
11. **Tag before you create.** Before tagging a task/feature/knowledge, consult `dreamcontext taxonomy vocab` and reuse canonical faceted tags (`topic:recall`, `domain:security`) before inventing new ones. Fragmenting tags degrades recall. To heal accumulated drift in one shot, run `dreamcontext taxonomy audit --fix` (bulk-normalizes alias/normalizable tags to canonical across the corpus — safe, idempotent, `--dry-run` to preview; orphans are reported, never guessed).
|
|
200
200
|
|
|
201
201
|
12. **Be surgical.** Only touch what changed. ~150-line soft limit on context files — extract detail to knowledge, keep a summary + reference. LIFO inserts go at the top (CHANGELOG, task changelog, constraint sections).
|
|
202
202
|
|
|
@@ -280,6 +280,8 @@ dreamcontext tasks complete <name> "summary" # done
|
|
|
280
280
|
|
|
281
281
|
Status: `todo → in_progress → in_review → completed`. Sections: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technical_details`, `notes`, `changelog`.
|
|
282
282
|
|
|
283
|
+
**Custom fields (if this project declares them).** When `_dream_context/overrides/task.md` exists, every task carries project-defined custom fields. Their **values are surfaced to you inline** — in the snapshot's Active Tasks block and in `dreamcontext tasks list --long` — so you can see them without opening the file; unset **required** fields show as `⚠ UNSET (required)`. When you create or reconcile a task, **set every declared field** (`dreamcontext tasks field <slug> <key> <value>` or `tasks create --field key=value`). **REQUIRED fields are mandatory — never create or complete a task with a required field left empty.** Fields marked **[ASK THE USER]** (`ask: true`) capture a human judgment (e.g. a time estimate) — **ask the user for the value when creating the task instead of guessing it.** The full schema + sync behavior → [tasks-and-features.md](references/tasks-and-features.md).
|
|
284
|
+
|
|
283
285
|
**RICE, due dates, tags/people, the Workflow flowchart, versioning, and multi-product** → [tasks-and-features.md](references/tasks-and-features.md).
|
|
284
286
|
**Syncing tasks to a cloud backend (ClickUp _or_ GitHub — one at a time)** → [integrations.md](references/integrations.md).
|
|
285
287
|
|
|
@@ -299,7 +301,8 @@ Status: `todo → in_progress → in_review → completed`. Sections: `why`, `us
|
|
|
299
301
|
|
|
300
302
|
## Sub-Agents
|
|
301
303
|
|
|
302
|
-
- **`dreamcontext-explore`** — context-accelerated codebase exploration. Use for ALL exploration (default Explore is blocked). Uses the SubagentStart briefing to narrow searches.
|
|
304
|
+
- **`dreamcontext-explore`** — context-accelerated codebase exploration. Use for ALL exploration (default Explore is blocked). Uses the SubagentStart briefing to narrow searches. It is the **fast, single-pass** searcher — one agent, tight budget, one answer.
|
|
305
|
+
- **`dreamcontext-deep-research` skill** — the **iterative, sub-agent-driven corpus-synthesis** orchestrator: the heavy counterpart to `dreamcontext-explore`. Invoke it via the `Skill` tool (or `/dreamcontext-deep-research`) when a question needs **synthesis across a large or multi-project / federated corpus** and one explore pass comes back thin or fragmented — "synthesize/reconcile everything we know about X across my vaults", "deep dive and cite it", "explore is too shallow for this". It fans out parallel `dreamcontext-explore` searchers over the whole curated corpus **and connected peer vaults**, adversarially verifies the load-bearing claims, and returns a **synthesized, cited** report — not raw hits. Read-only. **Escalation rule:** start with `dreamcontext-explore`; escalate to deep-research when one pass and one answer leave a cross-corpus question half-answered. Don't fan out a 10-agent research run at a tiny single-project brain.
|
|
303
306
|
- **`initializer` skill** — the **interactive, sub-agent-driven brain bootstrap**. Invoke it via the `Skill` tool when this project has **no `_dream_context/`** or a **sparse** one (empty `knowledge/`, zero features, untouched template stubs). It orchestrates scout → confirm-hierarchy → progressive ingest → verify, migrating whatever material the user has into the proper knowledge/feature/task hierarchy. It drives its own sub-agents (`initializer-scout`, `initializer-ingestor`, `initializer-verifier`) and handles codebase-only repos too (a light scout + ingest pass) — there is no separate bootstrap agent.
|
|
304
307
|
- **Sleep specialists** (`sleep-tasks`, `sleep-state`, `sleep-product`, `sleep-migration`) — dispatched by the main agent during the sleep flow only.
|
|
305
308
|
|
|
@@ -343,9 +346,12 @@ _dream_context/
|
|
|
343
346
|
│ │ └── <title>/<title>.excalidraw.md ← diagrams live INSIDE their context folder
|
|
344
347
|
│ ├── data-structures/{default,<product>}.md ← schemas (recall-indexed; ```sql body)
|
|
345
348
|
│ └── products/<product>.md ← per-product knowledge (multi-product)
|
|
349
|
+
├── overrides/
|
|
350
|
+
│ └── task.md ← OPTIONAL: project task template + custom_fields schema (briefed to agents)
|
|
346
351
|
├── state/
|
|
347
|
-
│ ├── <task>.md ← Active tasks (frontmatter may include product
|
|
352
|
+
│ ├── <task>.md ← Active tasks (frontmatter may include product:, start_date, due_date, custom_fields)
|
|
348
353
|
│ ├── .config.json ← platforms, packs, multiProduct, taskBackend, people…
|
|
354
|
+
│ ├── .active-version.json ← current sprint (active planning version)
|
|
349
355
|
│ ├── .sleep.json .secrets.json (gitignored) .active-task
|
|
350
356
|
```
|
|
351
357
|
|
|
@@ -36,19 +36,22 @@ Every command and flag, grouped. All commands are prefixed with `dreamcontext`.
|
|
|
36
36
|
|---|---|
|
|
37
37
|
| `tasks list` | List/filter/group tasks (excludes completed by default). Flags: `-s/--status`, `-a/--all`, `--tag <t>` (repeatable, AND), `--any-tag <t>` (repeatable, OR), `--version <id>`, `--priority <level>`, `--feature <slug>`, `-g/--group-by tag\|version\|priority\|status`, `--long`, `--tags`, `--json`. Filters compose (AND), case-insensitive. |
|
|
38
38
|
| `tasks tags` | Distinct task tags with counts. `-a/--all`, `--json`. |
|
|
39
|
-
| `tasks create <name>` | Create a task. Flags: `-d/--description`, `-p/--priority critical\|high\|medium\|low`, `-u/--urgency …`, `-s/--status`, `-t/--tags <csv>`, `-w/--why`, `-v/--version`, `--person <name>`, `--reach <1-10>`, `--impact <1-5>`, `--confidence 25\|50\|75\|100`, `--effort <weeks>`, `--due YYYY-MM-DD
|
|
39
|
+
| `tasks create <name>` | Create a task. Flags: `-d/--description`, `-p/--priority critical\|high\|medium\|low`, `-u/--urgency …`, `-s/--status`, `-t/--tags <csv>`, `-w/--why`, `-v/--version`, `--person <name>`, `--reach <1-10>`, `--impact <1-5>`, `--confidence 25\|50\|75\|100`, `--effort <weeks>`, `--start YYYY-MM-DD`, `--due YYYY-MM-DD`, `--field <key=value>` (repeatable; sets declared custom fields), `--allow-missing-required` (create a draft even when a required custom field is unset). **Fails** if a required custom field is unset and `--allow-missing-required` is not given. |
|
|
40
40
|
| `tasks rice <name>` | Print or update RICE values. `--reach`/`--impact`/`--confidence`/`--effort`, `--clear`. |
|
|
41
|
-
| `tasks
|
|
41
|
+
| `tasks start <name> <YYYY-MM-DD\|clear>` | Set or clear a planned start date (range start). Must be ≤ the due date; setting it removes the `backlog` tag. |
|
|
42
|
+
| `tasks due <name> <YYYY-MM-DD\|clear>` | Set or clear a due/end date (range end). |
|
|
42
43
|
| `tasks tag <name> <tags...>` | Add (or `--remove`) tags. `person:<slug>` assigns a person. |
|
|
44
|
+
| `tasks field <name> <key> [value\|clear]` | Set or clear a user-defined custom field declared in `overrides/task.md` (synced to ClickUp/GitHub). Validates select options + number types. |
|
|
43
45
|
| `tasks insert <name> <section> <content...>` | Insert into a section: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technical_details`, `notes`, `changelog`. |
|
|
44
46
|
| `tasks log <name> [content...]` | Add a changelog entry (cross-session continuity). **Use every session.** |
|
|
45
|
-
| `tasks status <name> <todo\|in_progress\|in_review\|completed> [reason...]` | Change status (logs to changelog). |
|
|
47
|
+
| `tasks status <name> <todo\|in_progress\|in_review\|completed> [reason...]` | Change status (logs to changelog). On the first move to `in_progress`, stamps `start_date` with today if it is unset (a planned start is never overwritten). |
|
|
46
48
|
| `tasks complete <name> [summary...]` | Mark completed (convenience). |
|
|
47
49
|
| `tasks delete <name>` | Delete a task (propagates to remote backend on sync). `--yes`. |
|
|
48
|
-
| `tasks
|
|
49
|
-
| `tasks
|
|
50
|
+
| `tasks rename <name> <new-name>` | Rename a task: rewrites the name, moves the file to the new slug, and re-keys the sync mapping by the stable dcId so the **same** remote task/issue is updated on next sync — never duplicated. Use this instead of hand-editing `name:` + renaming the file. |
|
|
51
|
+
| `tasks doctor [name]` | Validate the Workflow flowchart is in sync with Acceptance Criteria (all tasks if name omitted). `--remote` also checks the remote backend for assignee drift (needs a token). |
|
|
52
|
+
| `tasks sync [push\|pull\|both]` | Sync with the remote backend (no-op on local). `--hook`, `--reconcile` (heal pre-existing assignee drift below the watermark — #78), `--json`. |
|
|
50
53
|
| `tasks members` | People with access to the remote list (assignee candidates). `--json`. |
|
|
51
|
-
| `tasks provision` | Create recommended custom fields on the remote list. |
|
|
54
|
+
| `tasks provision` | Create recommended + override-declared custom fields on the remote backend (ClickUp list fields / GitHub labels). Reuses any that already exist by name. |
|
|
52
55
|
| `tasks sync-hooks install\|uninstall` | Manage best-effort git sync triggers (post-commit, pre-push). |
|
|
53
56
|
|
|
54
57
|
Sections for `tasks insert`: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technical_details`, `notes`, `changelog`. See [tasks-and-features.md](tasks-and-features.md) for the full protocol.
|
|
@@ -140,6 +143,7 @@ See [sleep.md](sleep.md) for the full flow.
|
|
|
140
143
|
|---|---|
|
|
141
144
|
| `taxonomy vocab` | Show the resolved vocabulary (defaults + `core/taxonomy.json`). `--json`, `--facet <facet>`. |
|
|
142
145
|
| `taxonomy audit` | Audit corpus tags against the vocabulary (read-only). `--json`. |
|
|
146
|
+
| `taxonomy audit --fix` | **Bulk-normalize** alias/normalizable tags → canonical faceted form across every knowledge/feature/task file. Safe + idempotent: already-canonical tags are untouched; orphan tags with no alias/canonical target are reported, never guessed. `--dry-run` previews the rewrite plan and writes nothing; `--json` for automation. Workflow is alias-then-fix: teach a mapping with `taxonomy alias`, then `audit --fix`. |
|
|
143
147
|
| `taxonomy init` | Scaffold `core/taxonomy.json` (idempotent). |
|
|
144
148
|
| `taxonomy add <tag>` | Add a tag to the vocabulary. |
|
|
145
149
|
| `taxonomy alias <alias> <canonical>` | Add an alias→canonical mapping. |
|
|
@@ -15,8 +15,9 @@ This reference covers everything beyond the local markdown brain. **If a user as
|
|
|
15
15
|
#### What it does
|
|
16
16
|
- **Bidirectional sync** (`push`, `pull`, or `both`) between local task files and a ClickUp list.
|
|
17
17
|
- **Status mapping** between dreamcontext statuses (`todo/in_progress/in_review/completed`) and ClickUp statuses.
|
|
18
|
-
- **RICE + custom fields**: provisions recommended ClickUp custom fields (urgency, summary, RICE reach/impact/confidence/effort, …) and round-trips them.
|
|
19
|
-
- **
|
|
18
|
+
- **RICE + custom fields**: provisions recommended ClickUp custom fields (urgency, summary, RICE reach/impact/confidence/effort, …) and round-trips them. **User-declared custom fields** (from `overrides/task.md`) also round-trip — `select` → native drop_down, others → native list field. See "Task format & custom-field overrides" in [tasks-and-features.md](tasks-and-features.md).
|
|
19
|
+
- **Date ranges**: a task's planned `start` and `due`/end both map to ClickUp's native start/due fields (push, pull, LWW-merge, and clear all symmetric).
|
|
20
|
+
- **Assignees**: `person:<slug>` tags map to ClickUp members bidirectionally (multi-assignee; the full `assignees[]` set survives push/pull). Names **resolve against the live roster** — exact/fuzzy match canonicalizes to the member's slug, an ambiguous name aborts, an unmatched name warns (recorded but won't sync, never silently reassigned to the token owner). See "People & assignees" in [tasks-and-features.md](tasks-and-features.md).
|
|
20
21
|
- **Changelog as comments**: task changelog entries post as ClickUp comments (`changelogTarget: 'comments'`).
|
|
21
22
|
- **Conflict safety**: conflicting edits are preserved as conflict files rather than silently overwritten; a sync ledger tracks a watermark, pending pushes, and an op queue.
|
|
22
23
|
- **Rate-limit hardened**: throttles at 90 req/min (under ClickUp's 100/min cap), retries with Retry-After backoff, and a partial push can never look like success — `sleep done` auto-retries once on failed pushes, then errors loudly with the failed slugs.
|
|
@@ -53,7 +54,7 @@ dreamcontext tasks sync [push|pull|both] # default: both; no-op on the local b
|
|
|
53
54
|
dreamcontext tasks sync --hook # best-effort mode for git hooks (never fails, exit 0)
|
|
54
55
|
dreamcontext tasks sync --json # machine-readable sync report
|
|
55
56
|
dreamcontext tasks members [--json] # people with access to the remote list (assignee candidates)
|
|
56
|
-
dreamcontext tasks provision # create
|
|
57
|
+
dreamcontext tasks provision # create recommended + override-declared custom fields (reuses existing ones by name)
|
|
57
58
|
dreamcontext tasks sync-hooks install|uninstall # manage the git sync triggers
|
|
58
59
|
```
|
|
59
60
|
|
|
@@ -71,8 +72,9 @@ The same backend interface, talking **plain GitHub Issues over REST** (no GraphQ
|
|
|
71
72
|
- **Bidirectional sync** (`push`/`pull`/`both`) between local task files and a repo's Issues.
|
|
72
73
|
- **Status mapping:** `completed` → issue **closed** `state_reason: completed`; `todo`/`in_progress`/`in_review` → **open** + a `dc:*` sub-status label (`dc:in-progress`, `dc:in-review`; `todo` = no label); reopen → **open** `state_reason: reopened`.
|
|
73
74
|
- **Soft-delete (the one divergence from ClickUp):** `tasks delete` **closes** the issue as `state_reason: not_planned` — it NEVER hard-deletes (GitHub REST can't, and issue history is preserved). Inbound, a `not_planned` close removes the local mirror (any unsaved local edits are preserved to `.conflicts/` first).
|
|
74
|
-
- **Fields as labels:** priority/urgency/tags/version ride as labels (`priority:*`, `urgency:*`, `version:*`, plus your plain tags). RICE stays local-only (no custom fields on plain issues — see Tier-2).
|
|
75
|
-
- **
|
|
75
|
+
- **Fields as labels:** priority/urgency/tags/version ride as labels (`priority:*`, `urgency:*`, `version:*`, plus your plain tags). RICE stays local-only (no native custom fields on plain issues — see Tier-2).
|
|
76
|
+
- **User custom fields + dates in the body:** override-declared `select` fields become `<key>:<value>` labels; other custom fields land in a `<!-- dc:fields -->` block, and a task's start/due dates in a `<!-- dc:dates -->` block — both composed above the prose and stripped before the 3-way merge so they never pollute the body diff.
|
|
77
|
+
- **Assignees:** `person:<slug>` tags ↔ issue assignees (must be repo collaborators); a non-collaborator assignee is skipped gracefully, never a 4xx that aborts the sync. Names **resolve against the live roster** (same matcher as ClickUp: exact/fuzzy → canonical slug, ambiguous → abort, unmatched → warn, never silently dropped). See "People & assignees" in [tasks-and-features.md](tasks-and-features.md).
|
|
76
78
|
- **Changelog as comments:** task changelog entries post as issue comments (union-merged, deduped — same pattern as ClickUp).
|
|
77
79
|
- **Conflict safety + watermark:** reuses the SAME generic sync engine (ledger / watermark / op-queue / 3-way merge) as ClickUp, unchanged. Watermark is the issue `updated_at` (server time). Delta fetch is `GET /repos/{o}/{r}/issues?state=all&since=<ISO>` with **page-number pagination** (pull-requests filtered out).
|
|
78
80
|
- **Rate-limit hardened:** paces under GitHub's 5000 req/hr cap with Retry-After backoff; a partial push can never look like success.
|
|
@@ -113,14 +115,21 @@ dreamcontext dashboard --launcher # vault-agnostic launcher mode (resolves
|
|
|
113
115
|
```
|
|
114
116
|
A SessionStart hook auto-opens it when a session starts and no server is running (opt out with `DREAMCONTEXT_AUTO_DASHBOARD=0`).
|
|
115
117
|
|
|
118
|
+
The sidebar is grouped into **Workspace** (Sleepy, Tasks, Council), **Memory** (Core, Knowledge, Features, Taxonomy), **Brain** (Map, Sleep Cycle), and **Control** (Packs, Settings), plus a "What is this?" page.
|
|
119
|
+
|
|
116
120
|
**What's in it:**
|
|
117
|
-
- **
|
|
121
|
+
- **Sleepy** (Workspace) — the dashboard's Search + Ask surface: a scoped recall widget that runs the same engine as the CLI (empty query = browse; typing = live debounced BM25; "Intelligent" = a Haiku intent pass), plus an in-app **interactive Claude Code** agent (multi-session tabs, split panes; desktop-gated, read-only by default). This is the dashboard twin of the desktop Sleepy notch.
|
|
122
|
+
- **Tasks board** — drag-and-drop Kanban with **saved views** (each carrying its own persisted filter/sort/grouping), a two-pane **include/exclude** filter (status/priority/tags/version/assignee) with type-ahead, a **Versions** popover, toggleable card **Properties** badges, and an **At-Risk alert**; view prefs persist shared (`overrides/board.json`) or local (`state/board.local.json`). Notion-style task detail panel to create tasks, change status, edit start/due dates and custom fields, add changelog entries. The **version filter is sprint-aware** — current / planning / released sprints with set-current + mark-complete actions (backed by `state/.active-version.json`).
|
|
118
123
|
- **Eisenhower matrix** — priority×urgency quadrant planning; **Scatter view** uses RICE scores.
|
|
124
|
+
- **Time-axis task views** — **Timeline (Gantt)** rendering each task's start→due range, a **Calendar**, and an **Activity heatmap** of completion cadence (all driven by the same `start_date`/`due_date` range).
|
|
119
125
|
- **Core editor** — split-pane markdown editing + live preview for soul/user/memory/etc.
|
|
120
126
|
- **Knowledge manager** — search, pin/unpin; **Feature PRD viewer**; **SQL ER diagram** preview for data-structures.
|
|
127
|
+
- **Taxonomy** (Memory) — view and edit the tag vocabulary (facets, aliases) from the UI; mirrors `dreamcontext taxonomy`.
|
|
128
|
+
- **Packs** (Control) — browse and install/refresh skill packs from the UI.
|
|
121
129
|
- **Version manager** — plan and release versions.
|
|
122
|
-
- **
|
|
123
|
-
- **
|
|
130
|
+
- **Settings — cloud tasks** — enter the ClickUp/GitHub API token from the UI (written to gitignored `state/.secrets.json`, masked, never echoed), Test Connection, and **preview-then-provision** custom fields (a dry run lists what would be created vs. already exists); plus a **Task Format & Custom Fields** editor for `overrides/task.md` (raw template + structured field schema).
|
|
131
|
+
- **Sleep Cycle** (sleep tracker) — debt gauge, session-history timeline, and a list of every manual change made through the dashboard (recorded to `.sleep.json` so the agent consolidates your edits during sleep).
|
|
132
|
+
- **Map** (brain graph) — interactive network of memory/knowledge/features/decisions with explicit + inferred edges.
|
|
124
133
|
- **Council Hall** — every debate as a searchable card grid; detail view with Overview / Agents / Matrix tabs.
|
|
125
134
|
- **"What is this?"** explainer page with live faculty diagrams.
|
|
126
135
|
|
|
@@ -102,6 +102,11 @@ Writes a CHANGELOG entry (`type=note`, `scope=quick`); the sleep cycle reconcile
|
|
|
102
102
|
- BM25 is keyword/stemming-based, not semantic — "ML practitioner" won't match "data scientist" (haiku mode mitigates this).
|
|
103
103
|
- Recall does **not** replace the SessionStart snapshot (soul/user/memory/active-tasks/knowledge-index are always pre-loaded). It is not a vector DB or mem0; the corpus is the same set the sleep agents curate.
|
|
104
104
|
|
|
105
|
+
### Two depths of search: explore vs deep-research
|
|
106
|
+
Recall feeds two read surfaces — pick by how much synthesis the question needs:
|
|
107
|
+
- **`dreamcontext-explore`** (fast, single-pass): one sub-agent, recall-then-grep, one answer. Use for "where is X?" / "how does Y work?" on one project. This is the default and handles the vast majority of lookups.
|
|
108
|
+
- **`dreamcontext-deep-research` skill** (iterative, multi-agent): when a question needs **synthesis across a large or multi-project / federated corpus** and one explore pass comes back thin. The main agent decomposes the question, fans out parallel `dreamcontext-explore` searchers across the corpus **and connected peer vaults**, loops to close gaps, **adversarially verifies** the load-bearing claims, then writes a **synthesized, cited** report. Invoke via `/dreamcontext-deep-research`. **Escalation rule:** start with explore; escalate only when one pass and one answer leave a cross-corpus question half-answered. It is read-only — synthesis, not mutation.
|
|
109
|
+
|
|
105
110
|
---
|
|
106
111
|
|
|
107
112
|
## Root-cause analysis pattern
|
|
@@ -123,12 +128,15 @@ Consistent tags make recall sharp; fragmented near-duplicate tags degrade it. Be
|
|
|
123
128
|
dreamcontext taxonomy vocab [--facet <facet>] [--json] # resolved vocabulary (defaults + core/taxonomy.json)
|
|
124
129
|
dreamcontext taxonomy resolve <tag> # normalized form, classification, canonical
|
|
125
130
|
dreamcontext taxonomy audit [--json] # surface non-canonical / orphan tags (read-only)
|
|
131
|
+
dreamcontext taxonomy audit --fix [--dry-run] [--json] # BULK-normalize alias/normalizable tags → canonical
|
|
126
132
|
dreamcontext taxonomy init # scaffold core/taxonomy.json (idempotent)
|
|
127
133
|
dreamcontext taxonomy add <facet:value> # add a new vocabulary tag
|
|
128
134
|
dreamcontext taxonomy alias <alias> <canonical> # merge a shorthand into a canonical tag
|
|
129
135
|
```
|
|
130
136
|
Standard bare tags: `architecture`, `api`, `frontend`, `backend`, `database`, `devops`, `security`, `testing`, `design`, `decisions`, `onboarding`, `domain`. **Never hand-edit `core/taxonomy.json`** — mutate via the CLI. `sleep-product` runs taxonomy maintenance during consolidation.
|
|
131
137
|
|
|
138
|
+
**Bulk-healing tag drift (`audit --fix`).** `taxonomy audit` only *reports* drift; `taxonomy audit --fix` *fixes* it in one shot across every knowledge/feature/task file. For each frontmatter tag it computes `normalizeTag → resolveAlias`; if that yields a **different tag that is canonical** in the vocabulary it rewrites it (e.g. `search → topic:recall`, `excalidraw → topic:excalidraw` once you've added that alias, `Architecture → architecture`). It is **safe by construction**: already-canonical tags are never touched (so `decisions` is not churned to `decision`), and orphan tags with no alias/canonical target are left untouched and reported as *"needs a vocab decision"* — resolve those first with `taxonomy add`/`taxonomy alias`, then re-run. The workflow is **alias-then-fix**: `taxonomy alias <orphan> <canonical>` teaches the mapping once, `audit --fix` applies it everywhere. Preview with `--fix --dry-run` (writes nothing), apply with `--fix`, automate with `--fix --json`. Idempotent — a second run is a no-op.
|
|
139
|
+
|
|
132
140
|
---
|
|
133
141
|
|
|
134
142
|
## Excalidraw boards (diagrams)
|
|
@@ -63,7 +63,7 @@ For non-file-change work (architecture discussion, a decision with no edits): `d
|
|
|
63
63
|
|
|
64
64
|
| Specialist | Owns | Notes |
|
|
65
65
|
|---|---|---|
|
|
66
|
-
| `sleep-tasks` | Task files (`state/*.md`) | Reconciles task bodies to truth, bumps statuses, creates tasks for untracked work, attaches to the planning version. |
|
|
66
|
+
| `sleep-tasks` | Task files (`state/*.md`) | Reconciles task bodies to truth, bumps statuses, creates tasks for untracked work, attaches to the planning version, sets the start/due range, and keeps declared custom fields current (never fabricating `ask` fields in the no-user sleep context). |
|
|
67
67
|
| `sleep-state` | Core identity (soul, user, memory, core 3–6), CHANGELOG, RELEASES | Records patterns/decisions/preferences, writes a changelog entry per meaningful change since the epoch, surfaces release readiness, enforces anti-bloat ceilings, flags stale knowledge for `sleep-product`. |
|
|
68
68
|
| `sleep-product` | Knowledge files + feature PRDs | Creates/reconciles `knowledge/*.md` and `core/features/*.md`, processes staleness flags, maintains the knowledge index + taxonomy. |
|
|
69
69
|
| `sleep-migration` | Structure only | Moves/renames folders, normalizes frontmatter, wraps fences. Never alters body prose. |
|
|
@@ -34,6 +34,7 @@ Sections: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technica
|
|
|
34
34
|
### Lifecycle commands
|
|
35
35
|
```bash
|
|
36
36
|
dreamcontext tasks log <name> "what was done" # changelog entry — MANDATORY each session
|
|
37
|
+
dreamcontext tasks status <name> in_progress "reason" # bump status; first in_progress auto-stamps start_date if unset
|
|
37
38
|
dreamcontext tasks status <name> in_review "reason" # bump status (logs automatically)
|
|
38
39
|
dreamcontext tasks complete <name> "summary" # mark complete
|
|
39
40
|
dreamcontext tasks delete <name> --yes # delete (propagates to remote on sync)
|
|
@@ -66,11 +67,19 @@ dreamcontext tasks rice <name> --clear # remove all RICE values
|
|
|
66
67
|
- `--reach` integer 1–10 · `--impact` integer 1–5 · `--confidence` one of 25/50/75/100 (%) · `--effort` person-weeks (>0, ≤52, 0.5 steps).
|
|
67
68
|
- Score = `(reach × impact × confidence/100) / effort`, computed server-side, stored in frontmatter.
|
|
68
69
|
|
|
69
|
-
##
|
|
70
|
+
## Dates & urgency
|
|
71
|
+
A task has an optional **date range** — a planned `start` and a `due`/end. Either end is independently settable or clearable, and both sync to the remote backend.
|
|
70
72
|
```bash
|
|
71
|
-
dreamcontext tasks
|
|
72
|
-
dreamcontext tasks due <name>
|
|
73
|
+
dreamcontext tasks start <name> 2026-06-25 # set planned start (range start)
|
|
74
|
+
dreamcontext tasks due <name> 2026-07-01 # set due/end (range end)
|
|
75
|
+
dreamcontext tasks start <name> clear # clear the start
|
|
76
|
+
dreamcontext tasks due <name> clear # clear the due
|
|
77
|
+
dreamcontext tasks create <name> --start 2026-06-25 --due 2026-07-01
|
|
73
78
|
```
|
|
79
|
+
- `start` must be **on or before** `due` — an inverted range is rejected (clear one end first).
|
|
80
|
+
- Setting either date on a `backlog`-tagged task **removes the `backlog` tag** (a dated task is planned, not backlog).
|
|
81
|
+
- Both dates render in the dashboard timeline (Gantt) and calendar views.
|
|
82
|
+
|
|
74
83
|
`urgency` (critical/high/medium/low) is the second Eisenhower axis (priority × urgency) for the dashboard matrix.
|
|
75
84
|
|
|
76
85
|
---
|
|
@@ -85,6 +94,7 @@ dreamcontext tasks tag <name> person:mehmet # add another assignee
|
|
|
85
94
|
dreamcontext tasks tag <name> person:ada --remove # unassign
|
|
86
95
|
```
|
|
87
96
|
- `person:<slug>` tags are the source of truth for assignment and support **multiple assignees**. The legacy scalar `assignee` field is deprecated (still read, not written).
|
|
97
|
+
- When a cloud backend is active, `--person`/`tag person:<slug>` **resolves the name against the real member roster** (`tasks members`): an exact or fuzzy match is canonicalized to the member's slug, an **ambiguous** match aborts (be more specific), and an unmatched name is recorded but **warns** that it won't sync until that person is a member. Assignments are never silently dropped.
|
|
88
98
|
- With ClickUp enabled, the full assignee set round-trips to ClickUp's native `assignees[]` bidirectionally; map each person to a member with `dreamcontext config clickup-member <person> <memberId>`. With **GitHub** enabled, `person:<slug>` tags round-trip to issue assignees (repo collaborators; a non-collaborator is skipped, never a sync error). (see [integrations.md](integrations.md)).
|
|
89
99
|
- `DREAMCONTEXT_PERSON` env names the current person for attribution.
|
|
90
100
|
|
|
@@ -118,14 +128,60 @@ version: "v0.9.0" # planning-version association (auto-set to active pla
|
|
|
118
128
|
parent_task: null
|
|
119
129
|
related_feature: null # feature slug for cross-link
|
|
120
130
|
product: null # multi-product scoping (optional)
|
|
121
|
-
|
|
131
|
+
start_date: null # YYYY-MM-DD or null — planned start (range start)
|
|
132
|
+
due_date: null # YYYY-MM-DD or null — due / planned end (range end)
|
|
122
133
|
rice: { reach: 5, impact: 3, confidence: 75, effort: 2, score: 5.625 }
|
|
134
|
+
custom_fields: {} # project-declared fields (only when overrides/task.md exists)
|
|
123
135
|
---
|
|
124
136
|
```
|
|
125
137
|
Files live at `_dream_context/state/<slug>.md`. Lookup is fuzzy: exact slug → prefix → substring.
|
|
126
138
|
|
|
127
139
|
---
|
|
128
140
|
|
|
141
|
+
## Task format & custom-field overrides (optional)
|
|
142
|
+
|
|
143
|
+
A project can override the default task shape AND declare its own custom fields by adding **`_dream_context/overrides/task.md`**. Absent this file, everything behaves exactly as the defaults above (zero regression).
|
|
144
|
+
|
|
145
|
+
The file carries two things:
|
|
146
|
+
|
|
147
|
+
- **Frontmatter `custom_fields:`** — a user-defined field schema. Each field: `name`, `type` (`text` | `number` | `select` | `date`), optional `key` (the stable field id / `custom_fields:` map key — defaults to the snake_cased `name`, so a rename keeps the same id), `required` (`true` ⇒ the agent MUST set it on every task; default optional), `ask` (`true` ⇒ the field is a HUMAN judgment the agent must NOT guess — it asks you for the value at task-creation time; default false), `options` (for `select`), `sync` (`[clickup, github]`, default both), and optional `prompt` (a system instruction telling the agent HOW to fill the field — surfaced in your snapshot + every sub-agent briefing).
|
|
148
|
+
- **Body** — the task TEMPLATE the CLI scaffolds from, plus an optional `## Agent Instructions` section that sub-agents read at runtime (it is stripped from scaffolded tasks).
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
---
|
|
152
|
+
custom_fields:
|
|
153
|
+
- { name: "Team", type: select, required: true, options: [platform, growth, infra], sync: [clickup, github], prompt: "The squad that owns the touched files." }
|
|
154
|
+
- { name: "Story Points", key: story_points, type: number, sync: [clickup, github] }
|
|
155
|
+
- { name: "Time estimate", key: time_estimate, type: text, required: true, ask: true, prompt: "How long will this take? Answer in ClickUp shorthand, e.g. 45m, 2h 30m, 1w 2d." }
|
|
156
|
+
- { name: "Sprint", type: text }
|
|
157
|
+
---
|
|
158
|
+
## Why
|
|
159
|
+
{{WHY}}
|
|
160
|
+
|
|
161
|
+
## Acceptance Criteria
|
|
162
|
+
- [ ] First criterion
|
|
163
|
+
|
|
164
|
+
## Agent Instructions
|
|
165
|
+
Set Team to the owning squad before starting work.
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
When an override is active its briefing (the field list, each field's `required` + `ask` flags + `prompt`, and the Agent Instructions) is injected into your SessionStart snapshot and into every sub-agent. **Each active task's custom-field VALUES are also surfaced inline** — in the snapshot's Active Tasks block and in `dreamcontext tasks list --long` — with any unset **required** field flagged `⚠ UNSET (required)`. So you always see a task's fields without opening it: follow `overrides/task.md`'s layout and **set every declared custom field** when you create or reconcile a task — REQUIRED fields are mandatory, so never create or complete a task with a required field left empty. As a hard backstop, `dreamcontext tasks create` / `complete` / `status … completed|in_review` **fail (non-zero exit) and refuse the action** when a required field is unset — naming the field plus the exact fix command. Pass `--allow-missing-required` (or set `DREAMCONTEXT_ALLOW_MISSING_REQUIRED=1`) only for an intentional draft, which downgrades the failure to a warning.
|
|
169
|
+
|
|
170
|
+
**`ask: true` fields — don't fabricate, ask.** Some fields capture a judgment only the user can make (a time estimate, a business-impact call). A field marked `ask` is flagged **[ASK THE USER]** in the briefing: when you create a task on the user's request, **ask the user for that value first** — one concise question per field, using the field's `prompt` as the framing (the `AskUserQuestion` tool if you have it, else just ask in chat) — and wait for the answer **before** creating the task. Never invent the value to satisfy a `required` gate. The one exception is a no-user context (an autonomous reconcile or a sleep cycle): there, leave the field unset and note it rather than guessing.
|
|
171
|
+
|
|
172
|
+
**Setting values:** `dreamcontext tasks create … --field team=platform --field story_points=8`, or on an existing task `dreamcontext tasks field <slug> team platform` (`clear`/omit value to clear). Values are validated against the schema (select options, number coercion) and stored under a `custom_fields:` map in the task frontmatter.
|
|
173
|
+
|
|
174
|
+
**Sync — values flow to both backends, reusing remote fields that already exist:**
|
|
175
|
+
|
|
176
|
+
| Field type | ClickUp | GitHub |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| `select` | native list custom field (drop_down) | `<key>:<value>` **label** |
|
|
179
|
+
| `text` / `number` / `date` | native list custom field | `<!-- dc:fields -->` **body block** in the issue |
|
|
180
|
+
|
|
181
|
+
`dreamcontext tasks provision` creates any missing custom fields/labels on the remote and **reuses (never duplicates) ones that already exist by name**. `dreamcontext doctor` validates the override and warns (never silently ignores) on a malformed one.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
129
185
|
## Features (PRDs)
|
|
130
186
|
|
|
131
187
|
Retrospective product documentation, **created and updated exclusively by the sleep agent**. During active work, everything goes in the task; sleep consolidates task content into the matching feature.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dreamcontext-deep-research
|
|
3
|
+
description: >
|
|
4
|
+
Load when a question needs synthesis across a LARGE or MULTI-PROJECT dreamcontext corpus —
|
|
5
|
+
more than `dreamcontext-explore` can answer in a single fast pass — or the user invokes
|
|
6
|
+
`/dreamcontext-deep-research`. Triggers: "deep research the brain", "research this across my
|
|
7
|
+
projects", "synthesize what we know about X across everything", "deep dive across the
|
|
8
|
+
connected vaults", "explore is too shallow for this", "pull together everything on X and
|
|
9
|
+
cite it", "cross-project / cross-corpus question", or any "tons of data, federated/tagged
|
|
10
|
+
vault" question where one explore agent and one answer under-serves. This is the heavy,
|
|
11
|
+
iterative, sub-agent-driven counterpart to `dreamcontext-explore`: it fans out searchers over
|
|
12
|
+
the whole curated corpus (knowledge + features + tasks + memory + CHANGELOG) AND connected
|
|
13
|
+
peer vaults, adversarially verifies the load-bearing claims, and returns a SYNTHESIZED, CITED
|
|
14
|
+
report — not raw hits.
|
|
15
|
+
user-invocable: true
|
|
16
|
+
alwaysApply: false
|
|
17
|
+
tags: [deep-research, recall, synthesis, federation, cross-project, orchestration, sub-agents, dreamcontext]
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Deep Research — iterative, sub-agent-driven corpus synthesis
|
|
21
|
+
|
|
22
|
+
You are the **orchestrator**. Like `curator`, `initializer`, `multi-review`, and `council`,
|
|
23
|
+
**you do not do the bulk of the searching yourself** — you decompose the question, fan out
|
|
24
|
+
`dreamcontext-explore` searchers in parallel, read their cited findings, loop to close gaps,
|
|
25
|
+
adversarially verify the claims that matter, and then **you** write the synthesized report. Your
|
|
26
|
+
value is the decomposition, the gap loop, the verification gate, and the final synthesis — not
|
|
27
|
+
running every `recall` and `grep` by hand.
|
|
28
|
+
|
|
29
|
+
**Why this exists, vs `dreamcontext-explore`.** Explore is tuned for **speed and a single
|
|
30
|
+
answer**: one Haiku agent, a tight tool-call budget, recall-then-grep, return the best hit. That
|
|
31
|
+
is the right tool for "where is X?" / "how does Y work?" on one project. It **under-serves** the
|
|
32
|
+
question that needs *synthesis across many files and many projects*: "what have we decided about
|
|
33
|
+
recall across all my vaults?", "reconcile everything we know about federation", "pull the whole
|
|
34
|
+
history of how the sleep cycle evolved and cite it". For those, a single fast pass returns a
|
|
35
|
+
fragment and stops. Deep research is the escalation: **iterative fan-out → verify → synthesize a
|
|
36
|
+
cited answer**.
|
|
37
|
+
|
|
38
|
+
| | `dreamcontext-explore` | `dreamcontext-deep-research` (this) |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Shape | one sub-agent, one pass | main agent orchestrates many searchers + verifiers, looped |
|
|
41
|
+
| Budget | tight (1–20 tool calls) | scaled to the corpus; multiple waves |
|
|
42
|
+
| Scope | one project, narrow | whole corpus + **connected peer vaults** |
|
|
43
|
+
| Output | the best hit, fast | a **synthesized, cited** report reconciling sources |
|
|
44
|
+
| Verify | none | adversarial pass on load-bearing claims |
|
|
45
|
+
| Use when | "where / how is X?" | "synthesize / reconcile / research X across everything" |
|
|
46
|
+
|
|
47
|
+
**It is read-only.** Deep research never mutates the corpus. It may *recommend* capturing a
|
|
48
|
+
finding (a knowledge file, a feedback item) at the end — but only with the user's say-so, via the
|
|
49
|
+
normal CLI. It is not a writer.
|
|
50
|
+
|
|
51
|
+
**Recall is the engine; the corpus index + peer connections are the substrate.** Every wave starts
|
|
52
|
+
from `dreamcontext memory recall` (BM25 + Haiku intent extraction over the curated corpus), which
|
|
53
|
+
already spans readable peers and namespaces cross-vault hits `<vault>::<type>/<slug>`. You are not
|
|
54
|
+
grepping a blind filesystem — you are mining a pre-indexed, cross-project brain.
|
|
55
|
+
|
|
56
|
+
## When to invoke
|
|
57
|
+
|
|
58
|
+
- `/dreamcontext-deep-research` (primary entry).
|
|
59
|
+
- A `dreamcontext-explore` pass came back thin, fragmented, or "found a piece but not the whole
|
|
60
|
+
picture", and the real question spans many files.
|
|
61
|
+
- The question is explicitly **cross-project / federated**: "across my vaults", "everything we
|
|
62
|
+
know about X", "reconcile what project A and project B decided".
|
|
63
|
+
- "Synthesize", "reconcile", "pull together and cite", "deep dive", "research" over the brain.
|
|
64
|
+
|
|
65
|
+
**Scale the machinery to the corpus.** A small single-project brain rarely needs this — say so and
|
|
66
|
+
just run one `dreamcontext-explore`. Reserve the full fan-out for a genuinely large or multi-project
|
|
67
|
+
tagged corpus where one agent and one answer leave the question half-answered.
|
|
68
|
+
|
|
69
|
+
## Commitment ritual (do this FIRST)
|
|
70
|
+
|
|
71
|
+
1. **Announce**: tell the user you're running deep research — that it fans out read-only searchers
|
|
72
|
+
across the whole corpus and any connected peer vaults, verifies the key claims, and ends in a
|
|
73
|
+
cited synthesis. Confirm the question and its scope (which vaults, which time range if any).
|
|
74
|
+
2. **TodoWrite** the phases (1–6) so the gates are visible. A phase isn't done until its gate passes.
|
|
75
|
+
3. **Sharpen the question.** If it's underspecified ("research recall"), narrow it with the user
|
|
76
|
+
first (recall *precision*? recall *architecture*? across *which* projects?) — a vague question
|
|
77
|
+
fans out into vague reports. One or two clarifying questions beat a 10-agent wild goose chase.
|
|
78
|
+
|
|
79
|
+
## The flow (the main agent runs this directly — sub-agents can't nest)
|
|
80
|
+
|
|
81
|
+
In this harness a sub-agent cannot dispatch sub-agents, so **you** own the loop and the fan-out —
|
|
82
|
+
exactly like the sleep cycle. `dreamcontext-explore` is your searcher *and* your verifier; you are
|
|
83
|
+
the planner and the synthesizer.
|
|
84
|
+
|
|
85
|
+
### Phase 1 — Scope & seed (recall-driven)
|
|
86
|
+
|
|
87
|
+
- Establish the corpus surface: read the **Connected projects** section of the snapshot, or run
|
|
88
|
+
`dreamcontext connections list` / `dreamcontext vaults list`. Decide the span:
|
|
89
|
+
- current vault only → recall as-is (already spans eligible peers by default),
|
|
90
|
+
- specific peers → `--vault <name>` (repeatable),
|
|
91
|
+
- everything readable → `--connected` (out/both peers) or `--all-vaults`.
|
|
92
|
+
- **Seed with recall, in JSON, scoped by type:**
|
|
93
|
+
```bash
|
|
94
|
+
dreamcontext memory recall "<facet>" --json --top 15 --types knowledge,feature,task,memory,changelog --connected
|
|
95
|
+
```
|
|
96
|
+
Run it for **2–4 different phrasings/facets** of the question — recall is cheap (<100ms, zero
|
|
97
|
+
token overhead) and different keywords surface different docs. Collect the union of hits.
|
|
98
|
+
- **Decompose** the question into 3–6 sub-questions / facets / per-project slices. This decomposition
|
|
99
|
+
is the fan-out plan. Write it into the Todo.
|
|
100
|
+
|
|
101
|
+
### Phase 2 — Fan-out search (parallel `dreamcontext-explore`)
|
|
102
|
+
|
|
103
|
+
- Dispatch **one `dreamcontext-explore` per sub-question / corpus slice / project, in parallel**
|
|
104
|
+
(one message, multiple `Agent` calls). Each searcher gets:
|
|
105
|
+
- its narrow sub-question,
|
|
106
|
+
- the seed hits relevant to it (file paths / `<vault>::<slug>` from Phase 1 — so it doesn't
|
|
107
|
+
re-discover them),
|
|
108
|
+
- an explicit instruction: **return findings WITH citations** (absolute path or
|
|
109
|
+
`<vault>::<type>/<slug>`), and flag anything that looks contradictory or stale.
|
|
110
|
+
- Searchers are read-only and recall-first by design — that's the whole point of using them. Scope a
|
|
111
|
+
searcher to a peer when a specific sibling project owns that slice (it can `recall --vault`,
|
|
112
|
+
`snapshot --vault`, or read the peer's files directly).
|
|
113
|
+
|
|
114
|
+
### Phase 3 — Gap loop (loop-until-dry)
|
|
115
|
+
|
|
116
|
+
- Read every searcher's report. Build a running map: **claim → source(s)**.
|
|
117
|
+
- Identify **gaps** (a facet nobody answered), **contradictions** (two sources disagree), and
|
|
118
|
+
**dangling references** (a doc cites another you haven't read). Dispatch a **second wave** of
|
|
119
|
+
`dreamcontext-explore` aimed only at those.
|
|
120
|
+
- Stop when a wave returns nothing materially new (two dry waves) or the picture is complete enough
|
|
121
|
+
to answer. **Log what you chose not to chase** — silent truncation reads as "covered everything".
|
|
122
|
+
|
|
123
|
+
### Phase 4 — Adversarial verification (the gate)
|
|
124
|
+
|
|
125
|
+
- For each **load-bearing claim** (the ones the answer actually rests on), dispatch a
|
|
126
|
+
`dreamcontext-explore` **verifier** whose job is to *check the claim against its cited source* —
|
|
127
|
+
open the file, confirm the source says what the claim says, and look for a more recent doc that
|
|
128
|
+
supersedes it. Default to **"unverified"** when the source doesn't actually support the claim.
|
|
129
|
+
- Drop or downgrade claims that don't survive. A plausible-but-uncited assertion does not enter the
|
|
130
|
+
report. This is what separates deep research from a confident hallucination.
|
|
131
|
+
|
|
132
|
+
### Phase 5 — Synthesize (you write this — not a sub-agent)
|
|
133
|
+
|
|
134
|
+
- **You** write the report from the verified claim→source map. It must be a *synthesis*, not a
|
|
135
|
+
concatenation of searcher outputs:
|
|
136
|
+
- **Answer** — the reconciled conclusion, organized by the question's structure.
|
|
137
|
+
- **Every claim carries a citation** — absolute path or `<vault>::<type>/<slug>`. No citation ⇒
|
|
138
|
+
it doesn't go in (or it's explicitly marked as inference).
|
|
139
|
+
- **Cross-project provenance** — when projects agree, say so; when they diverge, surface the
|
|
140
|
+
divergence with both sources rather than silently picking one.
|
|
141
|
+
- **Contradictions & open questions** — name them; don't paper over them.
|
|
142
|
+
- **Confidence** — note where evidence is thin or a source looked stale.
|
|
143
|
+
|
|
144
|
+
### Phase 6 — Persist (optional, only on consent)
|
|
145
|
+
|
|
146
|
+
- If durable findings emerged ("we actually decided X across A and B" / "these three docs are
|
|
147
|
+
near-duplicates"), **offer** to capture them — a `dreamcontext knowledge create`, or a
|
|
148
|
+
`dreamcontext feedback` if deep research exposed a recall/structure gap. Never auto-write; the
|
|
149
|
+
user confirms. Deep research is a reader.
|
|
150
|
+
|
|
151
|
+
## Output contract
|
|
152
|
+
|
|
153
|
+
A **synthesized, cited report** — never a raw hit dump. The minimum bar:
|
|
154
|
+
- Citations are **mandatory** for every load-bearing claim (path or `<vault>::<type>/<slug>`).
|
|
155
|
+
- Cross-vault hits are first-class, not noise — provenance is the point on a multi-project corpus.
|
|
156
|
+
- Contradictions and gaps are surfaced, not hidden.
|
|
157
|
+
- Any coverage you deliberately capped is stated.
|
|
158
|
+
|
|
159
|
+
## Boundaries
|
|
160
|
+
|
|
161
|
+
- **Read-only.** No writes except the optional, consent-gated Phase 6 capture via the normal CLI.
|
|
162
|
+
- **Reuse `dreamcontext-explore`.** Don't reinvent a searcher — it's the tested, recall-accelerated,
|
|
163
|
+
read-only explorer. This skill is the *orchestration* around it.
|
|
164
|
+
- **Stay in the decisions/knowledge lane.** For raw code *structure* ("who calls this function?")
|
|
165
|
+
the code-graph lane (graphify) owns it — deep research synthesizes curated decisions/knowledge, it
|
|
166
|
+
is not an AST indexer.
|
|
167
|
+
- **Scale to the corpus.** Don't fan out 10 agents at a 12-file single-project brain. Match the
|
|
168
|
+
machinery to the data.
|
|
169
|
+
|
|
170
|
+
## Relationship to the rest of dreamcontext
|
|
171
|
+
|
|
172
|
+
- **vs `dreamcontext-explore`** — explore is the fast single-pass searcher; this is the iterative
|
|
173
|
+
multi-agent synthesizer that *uses* explore. Escalate from explore → deep-research when one pass
|
|
174
|
+
and one answer leave a cross-corpus question half-answered.
|
|
175
|
+
- **vs `sleep`** — sleep *writes* (consolidates experience into memory); deep research *reads*
|
|
176
|
+
(synthesizes existing memory into an answer). Same fan-out shape, opposite direction.
|
|
177
|
+
- **vs `curator`** — curator refactors the corpus's *shape*; deep research mines its *content*.
|
|
178
|
+
- **vs the generic `deep-research` web skill** — that one researches the open web; this one researches
|
|
179
|
+
*your brain* (the curated corpus + connected vaults). Same harness shape, different substrate.
|
|
@@ -122,6 +122,11 @@ dreamcontext tasks status <slug> in_progress "plan validated; implementing"
|
|
|
122
122
|
|
|
123
123
|
If `<slug>` already exists, de-collide (append a short suffix) rather than clobbering.
|
|
124
124
|
|
|
125
|
+
If the project declares **custom task fields** (`_dream_context/overrides/task.md`), `tasks create`
|
|
126
|
+
hard-fails (exit 1) on an unset `required` field — set each with `--field key=value` on create. For
|
|
127
|
+
any field marked `ask: true`, ask the user for the value back in Phase 0 (it's a human judgment) rather
|
|
128
|
+
than fabricating it. The SubagentStart briefing lists the active fields and their prompts.
|
|
129
|
+
|
|
125
130
|
### Phase 4 — IMPLEMENT
|
|
126
131
|
|
|
127
132
|
Dispatch **one** `goal-implementer` (sonnet; escalate to opus for genuinely hard goals)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aq as o,ar as n}from"./index-CQkBs_Vm.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-CpwYPUdR.js";import{_ as i}from"./index-CQkBs_Vm.js";import"./chunk-FMBD7UC4-CrbfOH-q.js";import"./chunk-YZCP3GAM-tvOjDART.js";import"./chunk-55IACEB6-CQ_4M3g4.js";import"./chunk-EDXVE4YY--HdVil0f.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-CpwYPUdR.js";import{_ as i}from"./index-CQkBs_Vm.js";import"./chunk-FMBD7UC4-CrbfOH-q.js";import"./chunk-YZCP3GAM-tvOjDART.js";import"./chunk-55IACEB6-CQ_4M3g4.js";import"./chunk-EDXVE4YY--HdVil0f.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./graph-deVQIt7H.js";var e=4;function a(o){return r(o,e)}export{a as c};
|