dreamcontext 0.8.7 → 0.9.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 +31 -7
- package/agents/curator-auditor.md +114 -0
- package/agents/curator-verifier.md +86 -0
- package/agents/curator-worker.md +81 -0
- package/agents/dreamcontext-explore.md +7 -3
- package/agents/initializer-ingestor.md +84 -0
- package/agents/initializer-scout.md +87 -0
- package/agents/initializer-verifier.md +75 -0
- package/agents/sleep-migration.md +18 -10
- package/agents/sleep-product.md +7 -7
- package/agents/sleep-state.md +3 -3
- package/agents/sleep-tasks.md +4 -3
- package/dist/agents/curator-auditor.md +114 -0
- package/dist/agents/curator-verifier.md +86 -0
- package/dist/agents/curator-worker.md +81 -0
- package/dist/agents/dreamcontext-explore.md +7 -3
- package/dist/agents/initializer-ingestor.md +84 -0
- package/dist/agents/initializer-scout.md +87 -0
- package/dist/agents/initializer-verifier.md +75 -0
- package/dist/agents/sleep-migration.md +18 -10
- package/dist/agents/sleep-product.md +7 -7
- package/dist/agents/sleep-state.md +3 -3
- package/dist/agents/sleep-tasks.md +4 -3
- package/dist/dashboard/assets/{BrainCanvas3D-CyuMh6vC.js → BrainCanvas3D-hy-bJKIJ.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-TeXEp9Tn.js → _baseUniq-DduL-UlQ.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-Da5wNUeW.js → ar-SA-G6X2FPQ2-CrmB7xfA.js} +1 -1
- package/dist/dashboard/assets/{arc-NQuoeYrp.js → arc-sHUGY_nD.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-B108azq_.js → architectureDiagram-Q4EWVU46-DgYle1Hc.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-cJYSsraO.js → az-AZ-76LH7QW2-xoplM1zS.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-Dt4_IvAk.js → bg-BG-XCXSNQG7-BF4iIrZQ.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-HAo6Tqxd.js → blockDiagram-DXYQGD6D-YPBR1t-F.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-DE20hZpG.js → bn-BD-2XOGV67Q-KGLt7gMU.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-SHRA5Nk_.js → c4Diagram-AHTNJAMY-B1KEuF7Q.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-9ZUzuDs-.js → ca-ES-6MX7JW3Y-BYuoubhq.js} +1 -1
- package/dist/dashboard/assets/channel-BvyIgIvU.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-BlLy4y9z.js → chunk-4BX2VUAB-BALrhoW_.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK-cDLog-pk.js → chunk-4TB4RGXK-8uLOmmU8.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-BfLlL9Jv.js → chunk-55IACEB6-D2hViX7K.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY-BjKTlHye.js → chunk-EDXVE4YY-C9foqo-F.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-CoMoOB69.js → chunk-FMBD7UC4-D1G0o3Ow.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-DSYZ4BzO.js → chunk-OYMX7WX6-CiVziVyS.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-hsCUyt37.js → chunk-QZHKN3VN-DE5GBsSY.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-CMBEUThQ.js → chunk-YZCP3GAM-BpQQIx3b.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-B2f-mNIc.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-B2f-mNIc.js +1 -0
- package/dist/dashboard/assets/clone-BOZwMwp7.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-Ds3A4r-y.js → cose-bilkent-S5V4N54A-KvwZaKE7.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-WgNPbRaT.js → cs-CZ-2BRQDIVT-xYBULEJ9.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-BQPVoqBy.js → da-DK-5WZEPLOC-DF2tyJRb.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-D3AamC0s.js → dagre-KV5264BT-Du_qjhF2.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-FOMlLeg-.js → de-DE-XR44H4JA-DlmZt5e9.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-DeAuY_LW.js → diagram-5BDNPKRD-D7slatQr.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-CsPuBl6m.js → diagram-G4DWMVQ6-DiCZYy5B.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-Celrp7iZ.js → diagram-MMDJMWI5-BxckEUHv.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-D-Y8kdqj.js → diagram-TYMM5635-BGh7adH7.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-DdhrZvUu.js → el-GR-BZB4AONW-3_nYTnDJ.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-CyPB81Ul.js → erDiagram-SMLLAGMA-Bgu7PR3l.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-B-Hbpc6c.js → es-ES-U4NZUMDT-Blp-jVT8.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-CIeXN6PD.js → eu-ES-A7QVB2H4-DksJfC54.js} +1 -1
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-BojqXzkR.js → fa-IR-HGAKTJCU-DgwscI8H.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-Dix2X0V9.js → fi-FI-Z5N7JZ37-D5xWl1j1.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-D7IX0DxI.js → flowDiagram-DWJPFMVM-DRYxEOwt.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-B-jqOA6L.js → fr-FR-RHASNOE6-C5ic6hfW.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-CbK6p7_G.js → ganttDiagram-T4ZO3ILL-CNf0-tRS.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-DWDwNpLK.js → gitGraphDiagram-UUTBAWPF-B-fWXvro.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-B6zmZpsw.js → gl-ES-HMX3MZ6V-CYsGLfzn.js} +1 -1
- package/dist/dashboard/assets/{graph-CrDZc6w0.js → graph-CqM3kXVs.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-CaSPpOxb.js → he-IL-6SHJWFNN-DZp7dZBD.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-n86mXoF4.js → hi-IN-IWLTKZ5I-DZ-8BLt8.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-MqIG43UE.js → hu-HU-A5ZG7DT2-cIzehzha.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-DbrGiOFJ.js → id-ID-SAP4L64H-CHmT4Y6G.js} +1 -1
- package/dist/dashboard/assets/index-B_cYqPxr.js +482 -0
- package/dist/dashboard/assets/{index-zJ2-S49k.js → index-WuRpIREk.js} +1 -1
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-CpAQyAyt.js → infoDiagram-42DDH7IO-zeTnmz1D.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-DXIwINgb.js → ishikawaDiagram-UXIWVN3A-Bb756K5U.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-IX1Td9Wl.js → it-IT-JPQ66NNP-D6lXGD0z.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-Bd8nX8VR.js → ja-JP-DBVTYXUO-DyuGqonM.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-DZlgujgy.js → journeyDiagram-VCZTEJTY-DFWvXLzk.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-D5xD9fsf.js → kaa-6HZHGXH3-oNCeqt-A.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-xBaAbT-9.js → kab-KAB-ZGHBKWFO-DfP6kptf.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-0klC865z.js → kanban-definition-6JOO6SKY-DhKLuu7C.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-CboXRRre.js → kk-KZ-P5N5QNE5-B63w7yii.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-Clsilmtp.js → km-KH-HSX4SM5Z-C8nYbGAM.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-CIjzZcRO.js → ko-KR-MTYHY66A-D3wzPaIE.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-Bs1RU4e9.js → ku-TR-6OUDTVRD-C59UaChS.js} +1 -1
- package/dist/dashboard/assets/{layout-fipBctpD.js → layout-CtFtUFag.js} +1 -1
- package/dist/dashboard/assets/{linear-DVXXJr0u.js → linear-DubzSxx7.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-CQ-xLU_o.js → lt-LT-XHIRWOB4-C_buJu91.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-C0inT4d9.js → lv-LV-5QDEKY6T-BhQWVAR-.js} +1 -1
- package/dist/dashboard/assets/{min-B_cNy5kS.js → min-DcWdHBie.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-Cioz1NOY.js → mindmap-definition-QFDTVHPH-BSWtNXnF.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-DhEHYUYK.js → mr-IN-CRQNXWMA-DEac6VeJ.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-Dj4Iwdrf.js → my-MM-5M5IBNSE-DcSFgD6q.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-CvAPy7iN.js → nb-NO-T6EIAALU-CMd5OV1y.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-DgQc3gPO.js → nl-NL-IS3SIHDZ-CX2kfxhY.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-DORPUv8K.js → nn-NO-6E72VCQL-MpSm1-uc.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-Cym9O8Me.js → oc-FR-POXYY2M6-Nso9HjoJ.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-BiE5SCOy.js → pa-IN-N4M65BXN-Bc_09DWN.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-B-_e8Y6s.js → percentages-BXMCSKIN-DP6uG13u.js} +7 -7
- package/dist/dashboard/assets/{pica-C5ISA_oR.js → pica-CMpqUhac.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-CD7iu1Mo.js → pieDiagram-DEJITSTG-BNsvSiV8.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-C-29ZIfD.js → pl-PL-T2D74RX3-CJWz-KGN.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-CIQq615m.js → pt-BR-5N22H2LF-DHX3cV6G.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-CN7xbXrH.js → pt-PT-UZXXM6DQ-CU_RnGju.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-DEPkZ_lv.js → quadrantDiagram-34T5L4WZ-CnG8TUp0.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-BpAjr03x.js → requirementDiagram-MS252O5E-CVzV4vf5.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-DBtenXzw.js → ro-RO-JPDTUUEW-aYl76VP7.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-CA_iHOeh.js → ru-RU-B4JR7IUQ-B_y9bRe1.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-B1zLPVle.js → sankeyDiagram-XADWPNL6-CZLhklJg.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-pEX8i9B5.js → sequenceDiagram-FGHM5R23-DjCIzK1N.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-BTsFn4Rn.js → si-LK-N5RQ5JYF-DYVfARgr.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-DGoN-I5B.js → sk-SK-C5VTKIMK-B6Mg_bJ9.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC-CwiRr92B.js → sl-SI-NN7IZMDC-Ck2a-g0A.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-W_EdYNVF.js → stateDiagram-FHFEXIEX-D9Z-sJAh.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-nhVyYoyX.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-CAlKIepB.js → subset-shared.chunk-CE199FVY.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-YIXEPnjQ.js → subset-worker.chunk-DKgKGIuW.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-7SNur8Fe.js → sv-SE-XGPEYMSR-C9Hkuq3i.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-DqQBCB2J.js → ta-IN-2NMHFXQM-IEhskXEC.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-ClwEsAak.js → th-TH-HPSO5L25-DTb8f2Te.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-uPtwwnY7.js → timeline-definition-GMOUNBTQ-n1YhmZQ4.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-DmCg5qbG.js → tr-TR-DEFEU3FU-CnEnSvd1.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-DixKG8eB.js → uk-UA-QMV73CPH-CV5yaOns.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-CAggDlIj.js → vennDiagram-DHZGUBPP-EZuBw-Y1.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-C15Za2rn.js → vi-VN-M7AON7JQ-C_pZqaaY.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-D5C_gWsf.js → wardley-RL74JXVD-CEAA3DK-.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-tqYHOmfO.js → wardleyDiagram-NUSXRM2D-DhmpY-nw.js} +1 -1
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-CsxZKm-V.js → xychartDiagram-5P7HB3ND-BCfqQ3yb.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-BhlF39b5.js → zh-CN-LNUGB5OW-C9EPIaEx.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-P2FWmB4w.js → zh-HK-E62DVLB3-RZGyfbKw.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-B0yB1dNp.js → zh-TW-RAJ6MFWO-CfQ4KbkI.js} +1 -1
- package/dist/dashboard/index.html +1 -1
- package/dist/index.js +4142 -1919
- package/dist/skill-packs/council/SKILL.md +3 -2
- package/dist/skill-packs/council/debate-protocol.md +1 -1
- package/dist/skill-packs/excalidraw/SKILL.md +38 -28
- package/dist/templates/AGENTS.md +1 -1
- package/dist/templates/CLAUDE.md +1 -1
- package/package.json +3 -1
- package/skill/SKILL.md +206 -498
- package/skill/references/cli-reference.md +203 -0
- package/skill/references/improving-dreamcontext.md +39 -0
- package/skill/references/integrations.md +236 -0
- package/skill/references/knowledge-and-recall.md +157 -0
- package/skill/references/sleep.md +88 -0
- package/skill/references/tasks-and-features.md +170 -0
- package/skill-curator/SKILL.md +234 -0
- package/skill-initializer/SKILL.md +243 -0
- package/skill-packs/council/SKILL.md +3 -2
- package/skill-packs/council/debate-protocol.md +1 -1
- package/skill-packs/excalidraw/SKILL.md +38 -28
- package/agents/dreamcontext-initializer.md +0 -308
- package/dist/agents/dreamcontext-initializer.md +0 -308
- package/dist/dashboard/assets/channel-CIQg6WkP.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-kJkUaIqm.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-kJkUaIqm.js +0 -1
- package/dist/dashboard/assets/clone-COSoK5_M.js +0 -1
- package/dist/dashboard/assets/index-DjaqCcd7.js +0 -482
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BsdphuJ6.js +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# dreamcontext CLI — Complete Command Reference
|
|
2
|
+
|
|
3
|
+
Every command and flag, grouped. All commands are prefixed with `dreamcontext`. For reading/searching context files use native tools; use the CLI for everything structured. Run `dreamcontext <command> --help` for live details. Running `dreamcontext` with no args opens an interactive menu.
|
|
4
|
+
|
|
5
|
+
> Conventions: `<required>`, `[optional]`, `a|b` = choices, `…` = repeatable/multi-word.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Setup & maintenance
|
|
10
|
+
|
|
11
|
+
| Command | Description |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `setup` | **Front door.** One-shot: init + install-skill + install-instructions, and on macOS offers to install the desktop app. Flags: `--defaults` (claude, no packs, single-product, no prompts), `-y/--yes`, `--platforms <list>`, `--packs <list>`, `--multi-product <list>`, `--keep-native-memory`, `--install-app` (force desktop app), `--skip-app`. (`DREAMCONTEXT_INSTALL_NO_APP=1` also skips the app.) |
|
|
14
|
+
| `init` | *(deprecated standalone)* Scaffold `_dream_context/` only. Flags: `-y/--yes`, `--name`, `--description`, `--user`, `--stack`, `--priority`, `--platforms <list>`, `--multi-product <list>`. |
|
|
15
|
+
| `install-skill` | *(deprecated standalone)* Install skill + agents + hooks. Flags: `--platforms <list>`, `--packs [names...]` (interactive if none), `--skill <name>` (one sub-skill), `--list`. |
|
|
16
|
+
| `install-instructions` | *(deprecated standalone)* Install managed root instructions (CLAUDE.md / AGENTS.md). Flags: `--platforms <list>`, `--mode append\|replace\|skip`. (`install-claude-md` is a legacy alias.) |
|
|
17
|
+
| `update` | Refresh THIS project's installed skill, agents, hooks, packs, references, and root instructions to the latest shipped version. Flags: `--packs-only`, `--core-only`, `-y/--yes`. |
|
|
18
|
+
| `upgrade` | Upgrade the CLI, then update the desktop app (if installed) and offer to refresh **every registered project** — one command brings the whole machine current. Flags: `--check` (print current vs latest, don't install), `-y/--yes` (refresh app + all projects non-interactively). |
|
|
19
|
+
| `doctor` | Validate `_dream_context/` structure and report issues. |
|
|
20
|
+
| `config show` | Print project config (platforms, packs, products, people, native-memory, shareable, task backend). |
|
|
21
|
+
| `config native-memory enable\|disable` | Toggle Claude Code's native auto-memory (disabled by default so dreamcontext owns memory). |
|
|
22
|
+
| `config shareable on\|off` | Toggle whether peer vaults may recall this project (default off/private). |
|
|
23
|
+
| `config people [names...]` | Set the people roster; syncs the `## People` block in `1.user.md`. `--clear` for single-person. |
|
|
24
|
+
| `config task-backend local\|clickup\|github` | **[Advanced]** Switch the task backend — one cloud sync at a time (see [integrations.md](integrations.md)). |
|
|
25
|
+
| `config clickup-token [token]` | Store a ClickUp API key in the gitignored secrets file. `--user <name>` to scope it. |
|
|
26
|
+
| `config clickup-list <teamId> <spaceId> <listId>` | Set the ClickUp sync target. `--migrate` / `--keep` when changing lists. |
|
|
27
|
+
| `config clickup-member <person> <memberId>` | Map a roster person to a ClickUp member id. `--token-env <ENV>`. |
|
|
28
|
+
| `config github-token [token]` | Store a GitHub token in the gitignored secrets file (also reads `GITHUB_TOKEN`/`GH_TOKEN`). `--user <name>` to scope it. |
|
|
29
|
+
| `config github-repo <owner> <repo>` | Set the GitHub sync target (`owner`/`repo`). |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Tasks
|
|
34
|
+
|
|
35
|
+
| Command | Description |
|
|
36
|
+
|---|---|
|
|
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
|
+
| `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`. |
|
|
40
|
+
| `tasks rice <name>` | Print or update RICE values. `--reach`/`--impact`/`--confidence`/`--effort`, `--clear`. |
|
|
41
|
+
| `tasks due <name> <YYYY-MM-DD\|clear>` | Set or clear a due date. |
|
|
42
|
+
| `tasks tag <name> <tags...>` | Add (or `--remove`) tags. `person:<slug>` assigns a person. |
|
|
43
|
+
| `tasks insert <name> <section> <content...>` | Insert into a section: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technical_details`, `notes`, `changelog`. |
|
|
44
|
+
| `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). |
|
|
46
|
+
| `tasks complete <name> [summary...]` | Mark completed (convenience). |
|
|
47
|
+
| `tasks delete <name>` | Delete a task (propagates to remote backend on sync). `--yes`. |
|
|
48
|
+
| `tasks doctor [name]` | Validate the Workflow flowchart is in sync with Acceptance Criteria (all tasks if name omitted). |
|
|
49
|
+
| `tasks sync [push\|pull\|both]` | Sync with the remote backend (no-op on local). `--hook`, `--json`. |
|
|
50
|
+
| `tasks members` | People with access to the remote list (assignee candidates). `--json`. |
|
|
51
|
+
| `tasks provision` | Create recommended custom fields on the remote list. |
|
|
52
|
+
| `tasks sync-hooks install\|uninstall` | Manage best-effort git sync triggers (post-commit, pre-push). |
|
|
53
|
+
|
|
54
|
+
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.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Features
|
|
59
|
+
|
|
60
|
+
| Command | Description |
|
|
61
|
+
|---|---|
|
|
62
|
+
| `features create <name>` | Create a feature PRD. `-w/--why`, `-t/--tags <csv>`, `-s/--status planning\|in_progress\|in_review\|active\|shipped\|deprecated`, `--related-tasks <csv>`. |
|
|
63
|
+
| `features set <name> <tags\|status\|related_tasks> <value...>` | Set a frontmatter field without hand-editing. |
|
|
64
|
+
| `features insert <name> <section> <content...>` | Insert into a section (replaces template placeholders on first write; `user_stories`/`acceptance_criteria` auto-format as `- [ ]`). |
|
|
65
|
+
| `features doctor` | Check PRDs for staleness, orphans, dangling task refs (read-only). |
|
|
66
|
+
|
|
67
|
+
Sections for `features insert`: `changelog`, `notes`, `technical_details`, `constraints`, `user_stories`, `acceptance_criteria`, `why`. **Features are sleep-only — do not update during active work.**
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Core (changelog & releases)
|
|
72
|
+
|
|
73
|
+
| Command | Description |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `core changelog add` | Add a changelog entry. `--type feat\|fix\|refactor\|chore\|docs\|perf\|test\|change`, `--scope`, `--description`, `--summary` (≤200 char), `--references <csv>` (`commit:`/`file:`/`knowledge:`/`feature:`/`task:`/`url:`), `--authors <csv>`, `--supersedes <key>`, `--breaking`. |
|
|
76
|
+
| `core releases add` | Create a release (auto-discovers tasks/features/changelog). `-V/--ver`, `-s/--summary`, `--status planning\|released` (default released), `-y/--yes`. |
|
|
77
|
+
| `core releases list` | List recent releases. `-n/--count`. |
|
|
78
|
+
| `core releases active [version]` | Get/set the active planning version (default for new tasks' version). `--clear` to unset. |
|
|
79
|
+
| `core releases show <version>` | Show a release's details. |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Knowledge
|
|
84
|
+
|
|
85
|
+
| Command | Description |
|
|
86
|
+
|---|---|
|
|
87
|
+
| `knowledge create <name>` | Create a knowledge file. `-d/--description`, `-t/--tags <csv>`, `-c/--content`. |
|
|
88
|
+
| `knowledge index` | Show the knowledge index. `--tag <tag>`, `--plain`. |
|
|
89
|
+
| `knowledge tags` | List standard tags. `--plain`. |
|
|
90
|
+
| `knowledge move <slug> <folder>` | Move `knowledge/<slug>.md` → `knowledge/<folder>/<basename>.md` and rewrite inbound `[[wikilinks]]` atomically (target token only; `\|alias`/`#anchor` preserved). Free-form folders — nothing reserved; nested allowed; path traversal + clobber rejected. Use this instead of `mv` + hand-editing links. |
|
|
91
|
+
| `knowledge touch <slug>` | Record access (decay/staleness tracking + warm loading). |
|
|
92
|
+
|
|
93
|
+
> `knowledge/**/*.md` is indexed **recursively**, so knowledge organized into context folders (`knowledge/<context>/…`) stays first-class. Group a flat file into a context folder with `knowledge move <slug> <folder>` (atomic move + wikilink rewrite); `sleep-product` calls this same command during consolidation; legacy flat `knowledge/diagrams/` boards are folded by `migrations apply-diagrams`. Never hand-move + hand-edit links. See [knowledge-and-recall.md](knowledge-and-recall.md).
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Memory (recall & corpus)
|
|
98
|
+
|
|
99
|
+
| Command | Description |
|
|
100
|
+
|---|---|
|
|
101
|
+
| `memory recall <query...>` | Search the corpus (knowledge + features + tasks + memory + changelog). `-t/--top <n>`, `--types <csv>`, `--json`, `--plain`, `--vault <name>` (repeatable), `--connected`, `--all-vaults`. |
|
|
102
|
+
| `memory remember <text...>` | Quick-append a CHANGELOG entry (`type=note`, `scope=quick`). `--summary`, `--type`, `--scope`, `--references <csv>`, `--person <csv>`. |
|
|
103
|
+
| `memory update <slug>` | Update a knowledge file. `-d/--description`, `-t/--tags`, `-c/--content`, `--append <text>`, `--pin`, `--unpin`. |
|
|
104
|
+
| `memory delete <slug>` | Delete a knowledge file (irreversible; recover via git). `-f/--force`. |
|
|
105
|
+
| `memory list` | List the corpus by type. `--types <csv>`, `--plain`. |
|
|
106
|
+
| `memory status` | Corpus size + breakdown by type. |
|
|
107
|
+
| `recall status\|on\|off\|raw` | Control recall mode: `on`=haiku (default, LLM picks docs), `raw`=BM25 only, `off`=disabled. |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Sleep / consolidation
|
|
112
|
+
|
|
113
|
+
| Command | Description |
|
|
114
|
+
|---|---|
|
|
115
|
+
| `sleep status` | Current debt level + history. |
|
|
116
|
+
| `sleep add <score> <description...>` | Record a debt-accumulating action (non-file work). |
|
|
117
|
+
| `sleep start` | Begin consolidation epoch (safe clearing). `--deep` forces deep consolidation (authorizes destructive knowledge ops). |
|
|
118
|
+
| `sleep done <summary...>` | Mark consolidation complete, write history, reset debt. |
|
|
119
|
+
| `sleep debt` | Output the debt number (programmatic). |
|
|
120
|
+
| `sleep history` | Consolidation history log. `-n/--limit`. |
|
|
121
|
+
|
|
122
|
+
See [sleep.md](sleep.md) for the full flow.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Bookmarks & triggers
|
|
127
|
+
|
|
128
|
+
| Command | Description |
|
|
129
|
+
|---|---|
|
|
130
|
+
| `bookmark add <message...>` | Tag an important moment. `-s/--salience 1\|2\|3` (default 2), `-t/--task <slug>`. |
|
|
131
|
+
| `bookmark list` / `bookmark clear` | Show / remove all bookmarks. |
|
|
132
|
+
| `trigger add <when> <remind...>` | Create a contextual reminder. `-m/--max-fires` (default 3), `-s/--source`. |
|
|
133
|
+
| `trigger list` / `trigger remove <id>` | Show / remove triggers. |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Taxonomy
|
|
138
|
+
|
|
139
|
+
| Command | Description |
|
|
140
|
+
|---|---|
|
|
141
|
+
| `taxonomy vocab` | Show the resolved vocabulary (defaults + `core/taxonomy.json`). `--json`, `--facet <facet>`. |
|
|
142
|
+
| `taxonomy audit` | Audit corpus tags against the vocabulary (read-only). `--json`. |
|
|
143
|
+
| `taxonomy init` | Scaffold `core/taxonomy.json` (idempotent). |
|
|
144
|
+
| `taxonomy add <tag>` | Add a tag to the vocabulary. |
|
|
145
|
+
| `taxonomy alias <alias> <canonical>` | Add an alias→canonical mapping. |
|
|
146
|
+
| `taxonomy resolve <tag>` | Show normalized form, classification, canonical resolution. `--json`. |
|
|
147
|
+
|
|
148
|
+
Never hand-edit `core/taxonomy.json` — mutate via these commands.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Federation / vaults (see [integrations.md](integrations.md))
|
|
153
|
+
|
|
154
|
+
| Command | Description |
|
|
155
|
+
|---|---|
|
|
156
|
+
| `vaults add\|list\|discover\|remove` | Manage the global vault registry. `discover [root] [--register]`. |
|
|
157
|
+
| `connect <vault>` | Read a peer. `-d/--direction out\|in\|both` (out = read), `--topics <csv>`. |
|
|
158
|
+
| `disconnect <vault>` | Remove a connection. |
|
|
159
|
+
| `connections list` | List this vault's connections. |
|
|
160
|
+
| `federation peers` | Refresh + print readable-peer summaries. |
|
|
161
|
+
| `federation status` | Connections + leftover federated copies. |
|
|
162
|
+
| `federation purge` | Remove leftover `federated:true` copies. `--vault`, `--all`, `--dry-run`. |
|
|
163
|
+
| `federation sync` / `federation drain` | **Disabled no-ops** (copy-based sync is parked). |
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Council (see [integrations.md](integrations.md))
|
|
168
|
+
|
|
169
|
+
`council create`, `council agent create`, `council round start\|end`, `council synthesize`, `council complete`, `council promote`, `council list`, `council show`. Plus sub-agent helpers (`round-context`, `report append`, `summaries`, `research add\|list`).
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Other
|
|
174
|
+
|
|
175
|
+
| Command | Description |
|
|
176
|
+
|---|---|
|
|
177
|
+
| `dashboard` | Open the web UI. `-p/--port`, `--host`, `--no-open`, `--vault`, `--launcher`. |
|
|
178
|
+
| `app install\|update\|status` | Manage the macOS desktop app. `--from <path>`, `--dir <dir>`. |
|
|
179
|
+
| `marketing` / `mk` | Meta marketing skill surface. |
|
|
180
|
+
| `transcript distill <session_id>` | Extract high-signal content from a transcript. `--since <ts>`, `--full`. |
|
|
181
|
+
| `reflect` | Surface recurring cross-session terms as candidates. `--min-sessions`, `--max`, `--write`. |
|
|
182
|
+
| `snapshot` | Output the context snapshot (used by SessionStart). `--tokens`, `--vault <name>`. |
|
|
183
|
+
| `migrations pending\|apply-diagrams\|record` | Inspect/apply brain-structure migrations. `record --files --summary`. |
|
|
184
|
+
| `feedback` | File a gap/bug upstream as a GitHub issue. See [improving-dreamcontext.md](improving-dreamcontext.md). |
|
|
185
|
+
| `hook <name>` | Hook handlers (called by the platform, not you): `session-start`, `stop`, `subagent-start`, `pre-tool-use`, `user-prompt-submit`, `post-tool-use`, `pre-compact`, `ensure-dashboard`, `refresh-asset-drift`. |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Environment variables
|
|
190
|
+
|
|
191
|
+
| Var | Effect |
|
|
192
|
+
|---|---|
|
|
193
|
+
| `DREAMCONTEXT_MEMORY_HOOK=0` | Disable auto-injected recall on prompts. |
|
|
194
|
+
| `DREAMCONTEXT_RECALL_MODE=haiku\|raw\|off` | Override recall mode for the session (else uses `recall` setting; default `haiku`). |
|
|
195
|
+
| `DREAMCONTEXT_AUTO_DASHBOARD=0` | Don't auto-open the dashboard on session start. |
|
|
196
|
+
| `DREAMCONTEXT_DASHBOARD_PORT` | Default dashboard port (else 4173). |
|
|
197
|
+
| `DREAMCONTEXT_AUTO_UPGRADE=0` | Disable automatic CLI self-upgrade. |
|
|
198
|
+
| `DREAMCONTEXT_VERSION_CHECK=0` | Disable the version-check nag. |
|
|
199
|
+
| `DREAMCONTEXT_PERSON` | Current person for attribution (wins over the roster default). |
|
|
200
|
+
| `DREAMCONTEXT_SNAPSHOT_BUDGET` | Token budget cap for the SessionStart snapshot. |
|
|
201
|
+
| `DREAMCONTEXT_SKILLS_HOOK=0` | Disable skill-suggestion injection on prompts. |
|
|
202
|
+
| `DREAMCONTEXT_DRIFT_CHECK` / `DREAMCONTEXT_APP_AUTO_UPDATE` | Asset-drift check / desktop app auto-update toggles. |
|
|
203
|
+
| `DREAMCONTEXT_DEBUG` | Verbose diagnostics (e.g. recall decisions to stderr). |
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Improving dreamcontext (Agent Feedback Loop)
|
|
2
|
+
|
|
3
|
+
You are not just a *user* of dreamcontext — you are its field reporter. When dreamcontext gets in your way, the system can only improve if that friction reaches its maintainers. Take responsibility: file it. **Do not silently work around it** — a workaround fixes today; feedback fixes the system.
|
|
4
|
+
|
|
5
|
+
## Triggers — the moment you notice any of these, consider filing
|
|
6
|
+
|
|
7
|
+
- You expected a fact to be in memory but `memory recall` didn't surface it (a recall gap, not a missing fact).
|
|
8
|
+
- You wished a CLI command existed and there was no path (e.g. "I want to reopen a completed task" and there's no `tasks reopen`).
|
|
9
|
+
- A command, hook, or doc behaved wrong, was confusing, or crashed.
|
|
10
|
+
- The structure forced an awkward workaround for something the system should support directly.
|
|
11
|
+
|
|
12
|
+
## The loop (the ONLY sanctioned way to file — never run `gh issue create` by hand)
|
|
13
|
+
|
|
14
|
+
1. **Draft.** Run `dreamcontext feedback --dry-run` with the category and a complete scenario:
|
|
15
|
+
```bash
|
|
16
|
+
dreamcontext feedback --dry-run \
|
|
17
|
+
-c <bug|missing-cli|unseen-memory|feature|docs|other> \
|
|
18
|
+
-t "<concise, specific title>" \
|
|
19
|
+
-s "<what you were doing>" \
|
|
20
|
+
-e "<what dreamcontext should have done>" \
|
|
21
|
+
-g "<what was missing / broken / surprising>" \
|
|
22
|
+
-r "<exact commands / repro steps>" \
|
|
23
|
+
-p "<your proposed improvement: command, behavior, doc, or fix>"
|
|
24
|
+
```
|
|
25
|
+
A maintainer who never saw your session must understand it from the issue alone — include the whole scenario.
|
|
26
|
+
2. **Confirm with the user.** Show them the rendered draft and ask permission. This writes to a public repo on their behalf — never file without an explicit yes.
|
|
27
|
+
3. **File.** Re-run the same command without `--dry-run` and with `--yes`. It checks for near-duplicate open issues (skip with `--no-dedup`), applies the `agent-feedback` label, and files to the **dreamcontext upstream project** (`meanllbrl/dreamcontext`) — NOT the user's own repo.
|
|
28
|
+
|
|
29
|
+
## No GitHub access?
|
|
30
|
+
|
|
31
|
+
If the command reports `gh` is missing or unauthenticated, relay its guidance: install `gh` + run `gh auth login`; if they have no GitHub account, ask them to create a free one at github.com/signup. They need an account to file. Then re-run the loop.
|
|
32
|
+
|
|
33
|
+
## Quality bar
|
|
34
|
+
|
|
35
|
+
One issue per distinct gap, a concrete title, the full scenario, a concrete proposal. Vague feedback ("recall is bad") is noise; a reproducible scenario with a proposed command is signal.
|
|
36
|
+
|
|
37
|
+
## Categories
|
|
38
|
+
|
|
39
|
+
`bug` · `missing-cli` · `unseen-memory` (recall gap) · `feature` · `docs` · `other`
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Integrations — ClickUp / GitHub, Dashboard, Desktop App, Federation, Council, Marketing
|
|
2
|
+
|
|
3
|
+
This reference covers everything beyond the local markdown brain. **If a user asks whether dreamcontext integrates with ClickUp or GitHub Issues, runs a dashboard, syncs across projects, or runs debates — the answer is yes.** Details below.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ✅ Cloud / remote task management (ClickUp _or_ GitHub — one at a time)
|
|
8
|
+
|
|
9
|
+
**dreamcontext has a first-class cloud task-management integration.** Tasks always stay as local markdown (`state/<task>.md`) — the canonical source of truth, works offline — and a **pluggable remote task backend** mirrors them bidirectionally to a cloud task manager. Two providers ship today: **ClickUp** (issue #11) and **GitHub Issues** (v0.9.0). If a user asks about "a cloud task system," "ClickUp," "GitHub issue sync," or "remote task sync" — **this is it; the answer is yes.**
|
|
10
|
+
|
|
11
|
+
> **⚠️ Exactly ONE cloud sync at a time — never both.** `taskBackend` is a single value: `local` | `clickup` | `github`. A project syncs to ClickUp **or** GitHub, not both at once. Switching the backend replaces the active sync target — the previous provider's saved coordinates stay on disk but go dormant, because `getTaskBackend()` only ever resolves the one that matches `taskBackend`. It never runs two syncs. Pick one per project.
|
|
12
|
+
|
|
13
|
+
### ClickUp
|
|
14
|
+
|
|
15
|
+
#### What it does
|
|
16
|
+
- **Bidirectional sync** (`push`, `pull`, or `both`) between local task files and a ClickUp list.
|
|
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
|
+
- **Assignees**: `person:<slug>` tags map to ClickUp member IDs bidirectionally (multi-assignee; the full `assignees[]` set survives push/pull). See "People & assignees" in [tasks-and-features.md](tasks-and-features.md).
|
|
20
|
+
- **Changelog as comments**: task changelog entries post as ClickUp comments (`changelogTarget: 'comments'`).
|
|
21
|
+
- **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
|
+
- **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.
|
|
23
|
+
- **Git triggers**: best-effort `post-commit` / `pre-push` hooks sync automatically (they never block or fail git).
|
|
24
|
+
|
|
25
|
+
#### Enabling it (guided)
|
|
26
|
+
```bash
|
|
27
|
+
dreamcontext config task-backend clickup
|
|
28
|
+
```
|
|
29
|
+
Interactively this: gitignores the derived mirror/sync state → prompts for the API key (stored in the gitignored `state/.secrets.json`, mode 0600 — never `.config.json`) → tests the connection → lets you **pick the list from the API** (no URL hunting) → offers to provision custom fields → runs the first sync. Non-interactively it prints the next steps.
|
|
30
|
+
|
|
31
|
+
#### Manual / scripted configuration
|
|
32
|
+
```bash
|
|
33
|
+
# Store the API key out of shell history (preferred): pipe it
|
|
34
|
+
echo "$CLICKUP_TOKEN" | dreamcontext config clickup-token
|
|
35
|
+
dreamcontext config clickup-token # or prompt interactively
|
|
36
|
+
dreamcontext config clickup-token --user <person> # scope a token to one person
|
|
37
|
+
|
|
38
|
+
# Set the sync target explicitly
|
|
39
|
+
dreamcontext config clickup-list <teamId> <spaceId> <listId>
|
|
40
|
+
# --migrate : changing lists → next sync recreates every task in the NEW list
|
|
41
|
+
# --keep : tasks were moved within ClickUp itself; keep existing mappings
|
|
42
|
+
|
|
43
|
+
# Map a roster person to a ClickUp member (assignee round-trip)
|
|
44
|
+
dreamcontext config clickup-member <person> <memberId> [--token-env <ENV>]
|
|
45
|
+
|
|
46
|
+
# Back to local-only
|
|
47
|
+
dreamcontext config task-backend local
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### Day-to-day sync commands
|
|
51
|
+
```bash
|
|
52
|
+
dreamcontext tasks sync [push|pull|both] # default: both; no-op on the local backend
|
|
53
|
+
dreamcontext tasks sync --hook # best-effort mode for git hooks (never fails, exit 0)
|
|
54
|
+
dreamcontext tasks sync --json # machine-readable sync report
|
|
55
|
+
dreamcontext tasks members [--json] # people with access to the remote list (assignee candidates)
|
|
56
|
+
dreamcontext tasks provision # create the recommended custom fields on the list
|
|
57
|
+
dreamcontext tasks sync-hooks install|uninstall # manage the git sync triggers
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### Inspecting state
|
|
61
|
+
```bash
|
|
62
|
+
dreamcontext config show # shows task backend, ClickUp token presence (masked), and list id
|
|
63
|
+
```
|
|
64
|
+
The mirror, sync ledger, and conflict files are derived and gitignored — never commit them, never hand-edit them.
|
|
65
|
+
|
|
66
|
+
### GitHub Issues
|
|
67
|
+
|
|
68
|
+
The same backend interface, talking **plain GitHub Issues over REST** (no GraphQL). Tasks map ~1:1 onto issues — the **issue body is the task markdown** — and the four-state status is carried by issue `state`/`state_reason` plus `dc:*` labels.
|
|
69
|
+
|
|
70
|
+
#### What it does
|
|
71
|
+
- **Bidirectional sync** (`push`/`pull`/`both`) between local task files and a repo's Issues.
|
|
72
|
+
- **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
|
+
- **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
|
+
- **Assignees:** `person:<slug>` tags ↔ issue assignees (must be repo collaborators); a non-collaborator assignee is skipped gracefully, never a 4xx that aborts the sync. See "People & assignees" in [tasks-and-features.md](tasks-and-features.md).
|
|
76
|
+
- **Changelog as comments:** task changelog entries post as issue comments (union-merged, deduped — same pattern as ClickUp).
|
|
77
|
+
- **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
|
+
- **Rate-limit hardened:** paces under GitHub's 5000 req/hr cap with Retry-After backoff; a partial push can never look like success.
|
|
79
|
+
|
|
80
|
+
#### Enabling it (guided)
|
|
81
|
+
```bash
|
|
82
|
+
dreamcontext config task-backend github
|
|
83
|
+
```
|
|
84
|
+
Interactively this: gitignores the derived mirror/sync state → prompts for a token (stored in the gitignored `state/.secrets.json`, mode 0600 — never `.config.json`) → tests the connection (`GET /user`) → lets you **pick the repo from the API** → offers to provision the recommended `dc:*` labels → runs the first sync.
|
|
85
|
+
|
|
86
|
+
#### Manual / scripted configuration
|
|
87
|
+
```bash
|
|
88
|
+
echo "$GITHUB_TOKEN" | dreamcontext config github-token # also reads GITHUB_TOKEN / GH_TOKEN from the env
|
|
89
|
+
dreamcontext config github-token # or prompt interactively
|
|
90
|
+
dreamcontext config github-repo <owner> <repo> # set the sync target explicitly
|
|
91
|
+
dreamcontext config task-backend local # back to local-only
|
|
92
|
+
```
|
|
93
|
+
Token scope: a classic PAT needs `repo`; a fine-grained token needs **Issues** (read/write) + **Metadata**. The day-to-day sync commands (`tasks sync`, `tasks members`, `tasks provision`, `sync-hooks`) and `config show` work identically to ClickUp — they're backend-generic.
|
|
94
|
+
|
|
95
|
+
#### Deferred — Tier-2 (GitHub Projects v2)
|
|
96
|
+
Priority/urgency/status as first-class **board fields** would need GitHub **Projects v2**, which is GraphQL-only and doesn't fit the REST adapter cleanly. It's a documented Tier-2 follow-up; this backend ships **plain Issues only**.
|
|
97
|
+
|
|
98
|
+
**Key mental model:** local markdown is canonical; the cloud provider is a sync *target*, and only ONE is ever active. A user on the local backend has both ClickUp **and** GitHub *available*, just not *enabled* — point them to `dreamcontext config task-backend <clickup|github>`.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Web Dashboard
|
|
103
|
+
|
|
104
|
+
A local React 19 web UI served by a zero-dependency Node HTTP server (ships in the npm package).
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
dreamcontext dashboard # open at http://localhost:4173
|
|
108
|
+
dreamcontext dashboard --port 8080 # custom port (or DREAMCONTEXT_DASHBOARD_PORT)
|
|
109
|
+
dreamcontext dashboard --no-open # start without opening the browser
|
|
110
|
+
dreamcontext dashboard --host 0.0.0.0 # expose on your network (default: loopback only)
|
|
111
|
+
dreamcontext dashboard --vault <name> # open a specific registered vault
|
|
112
|
+
dreamcontext dashboard --launcher # vault-agnostic launcher mode (resolves vault per request)
|
|
113
|
+
```
|
|
114
|
+
A SessionStart hook auto-opens it when a session starts and no server is running (opt out with `DREAMCONTEXT_AUTO_DASHBOARD=0`).
|
|
115
|
+
|
|
116
|
+
**What's in it:**
|
|
117
|
+
- **Kanban board** — drag-and-drop, multi-select filters (status/priority/urgency/tags/version) with type-ahead, sorting, grouping; Notion-style task detail panel to create tasks, change status, add changelog entries.
|
|
118
|
+
- **Eisenhower matrix** — priority×urgency quadrant planning; **Scatter view** uses RICE scores.
|
|
119
|
+
- **Core editor** — split-pane markdown editing + live preview for soul/user/memory/etc.
|
|
120
|
+
- **Knowledge manager** — search, pin/unpin; **Feature PRD viewer**; **SQL ER diagram** preview for data-structures.
|
|
121
|
+
- **Version manager** — plan and release versions.
|
|
122
|
+
- **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).
|
|
123
|
+
- **Brain graph** — interactive network of memory/knowledge/features/decisions with explicit + inferred edges.
|
|
124
|
+
- **Council Hall** — every debate as a searchable card grid; detail view with Overview / Agents / Matrix tabs.
|
|
125
|
+
- **"What is this?"** explainer page with live faculty diagrams.
|
|
126
|
+
|
|
127
|
+
Light/dark with system detection.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Desktop App (macOS beta)
|
|
132
|
+
|
|
133
|
+
A native **Tauri 2** app that wraps the same dashboard server so you manage every project from one window. Ships via the desktop release + macOS one-line installer (not the npm package). On macOS, `dreamcontext setup` offers to install it, and `dreamcontext upgrade` updates it automatically when installed — so you rarely run these by hand.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
dreamcontext app install # install to ~/Applications (no admin, no quarantine prompt)
|
|
137
|
+
dreamcontext app update # update to the latest release
|
|
138
|
+
dreamcontext app status # show installed version and state
|
|
139
|
+
# --from <path> : install/update from a local .app/.tar.gz/.zip instead of GitHub Releases
|
|
140
|
+
# --dir <dir> : install directory (default ~/Applications)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- **Multi-vault launcher** — lists every registered vault; opens each project in its own window (pinned via a request header); per-project status dot (green up-to-date / yellow needs-update / red folder-gone) with an in-UI `update`.
|
|
144
|
+
- **Federation board** — projects rendered as Excalidraw-style cards; click source→target to wire a live "reads" relationship (violet wire = one project reads another's canonical memory live during recall; never a copy), gated by the target being shareable.
|
|
145
|
+
- **In-app onboarding** — quiz-style wizard creates or initializes a project, scaffolds `_dream_context/`, runs `setup`, installs the global CLI; deterministic, LLM-free.
|
|
146
|
+
- **Sleepy — notch quick-capture (beta)** — a global-hotkey transparent notch panel with a mascot whose mood follows sleep debt. Pick a vault, type a thought, choose: **Learn** (save to memory + enrich), **Ask** (one-shot Q&A, nothing saved), **Sleep** (trigger a full consolidation for that vault).
|
|
147
|
+
- Delivery is CLI/curl-driven (no Apple notarization); prefers your auto-upgrading global CLI over its bundled copy. First launch may need right-click → Open.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Federation (cross-project recall)
|
|
152
|
+
|
|
153
|
+
Most people end up with more than one dreamcontext project. Federation lets projects discover each other and **recall across each other live** — read-only, local-only, no server, and **nothing is ever copied between vaults**. Each vault stays the single source of truth for its own knowledge.
|
|
154
|
+
|
|
155
|
+
### Vault registry
|
|
156
|
+
```bash
|
|
157
|
+
dreamcontext vaults add <name> <path> # register a project directory as a vault
|
|
158
|
+
dreamcontext vaults list # list registered vaults
|
|
159
|
+
dreamcontext vaults discover [root] [--register] # find every _dream_context/ under a tree (and register)
|
|
160
|
+
dreamcontext vaults remove <name>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Connections (read edges)
|
|
164
|
+
```bash
|
|
165
|
+
dreamcontext connect <vault> --direction out [--topics a,b] # out = a read edge (you read the peer)
|
|
166
|
+
dreamcontext connections list # who this vault reads
|
|
167
|
+
dreamcontext disconnect <vault>
|
|
168
|
+
dreamcontext config shareable on|off # opt THIS project IN/OUT of being recalled by peers (default off/private)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### PULL — recall already spans peers
|
|
172
|
+
Plain `memory recall` automatically searches eligible readable peers alongside the current vault. Hits are namespaced `<vault>::<type>/<slug>` so provenance is always visible.
|
|
173
|
+
```bash
|
|
174
|
+
dreamcontext memory recall "<query>" # current vault + eligible readable peers (default)
|
|
175
|
+
dreamcontext memory recall "<query>" --vault <name> # current + one named peer (repeatable)
|
|
176
|
+
dreamcontext memory recall "<query>" --connected # current + out/both connections
|
|
177
|
+
dreamcontext memory recall "<query>" --all-vaults # current + every shareable vault
|
|
178
|
+
```
|
|
179
|
+
Eligible = direction `out`/`both`, not stale, AND the peer is `shareable: true`. Non-shareable peers are silently excluded. If no eligible connections exist, recall is local-only.
|
|
180
|
+
|
|
181
|
+
### Reading a specific peer (beyond recall)
|
|
182
|
+
|
|
183
|
+
Recall is the cheap first pass. When you recognize a **specific** connected project actually holds what you need — its code, a decision, a schema — go straight to it instead of guessing or re-deriving:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
dreamcontext snapshot --vault <name> # print that peer's full context snapshot (orient fast)
|
|
187
|
+
dreamcontext federation peers # one-line summary of each readable peer + its active work
|
|
188
|
+
```
|
|
189
|
+
- **Read its files directly.** A peer is a normal directory on disk — resolve its path (from `vaults list` / the snapshot's Connected projects) and `Read`/`Grep` inside its `_dream_context/` or source tree.
|
|
190
|
+
- **Dispatch an explorer scoped to it.** For anything non-trivial, send `dreamcontext-explore` with the peer's path in the prompt ("explore `<peer-path>` for …") so it searches there with context-first discipline.
|
|
191
|
+
- A connection is a standing "may read" agreement — there is no per-situation rule to wait for. If your memory says a sibling project is relevant, read it.
|
|
192
|
+
|
|
193
|
+
### Ambient awareness
|
|
194
|
+
The session snapshot includes a `## Connected projects` section. For a live summary: `dreamcontext federation peers`. Inspect / clean up: `dreamcontext federation status`.
|
|
195
|
+
|
|
196
|
+
### Copy-based sync is DISABLED (parked on the roadmap)
|
|
197
|
+
Earlier builds pushed a lossy digest into peers at sleep (`federation sync` / `federation drain`) and ingested `federated: true` copies. That broke single-source-of-truth (stale copies, false conflicts) and is now **inert no-ops**; the `sleep-federation` specialist is **not** dispatched. **Do NOT fire `sleep-federation`** during sleep. To remove leftover copies from the old path:
|
|
198
|
+
```bash
|
|
199
|
+
dreamcontext federation purge --all # remove every federated:true copy here
|
|
200
|
+
dreamcontext federation purge --vault <name> # remove only copies from one peer
|
|
201
|
+
dreamcontext federation purge --dry-run # preview
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Council (multi-persona debates)
|
|
207
|
+
|
|
208
|
+
Structured debates for load-bearing decisions (architecture, migrations, hiring, brand critiques). N personas × N rounds, each persona its own sub-agent with a scoped prompt, model, and aspects; a synthesizer writes the verdict. Also available as the `council` skill pack + `/council` skill.
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
dreamcontext council create "Should we migrate Postgres → Firestore?" --rounds 2
|
|
212
|
+
dreamcontext council agent create migration-risk-auditor --model sonnet --aspects operational-risk,rollback
|
|
213
|
+
dreamcontext council agent create dx-champion --model opus --aspects developer-experience
|
|
214
|
+
dreamcontext council round start 1
|
|
215
|
+
dreamcontext council round end 1 # injects cross-context for round 2+
|
|
216
|
+
dreamcontext council round start 2
|
|
217
|
+
dreamcontext council round end 2
|
|
218
|
+
dreamcontext council synthesize # prints the manifest the synthesizer reads
|
|
219
|
+
dreamcontext council complete
|
|
220
|
+
dreamcontext council promote <id> # copy the verdict into knowledge/decision-<slug>.md
|
|
221
|
+
dreamcontext council list [--unpromoted|--all]
|
|
222
|
+
dreamcontext council show <id>
|
|
223
|
+
```
|
|
224
|
+
State lives in `_dream_context/council/<id>/` (`debate.md`, `round-log.md`, `final-report.md`, per-persona folders). During sleep, check `council list --unpromoted` and promote if the user engaged positively. Ships `council-persona` + `council-synthesizer` sub-agents. Rendered in the dashboard's Council Hall.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Marketing (`mk`)
|
|
229
|
+
|
|
230
|
+
The Meta marketing skill surface (cohorts, campaigns, competitor ingest, learnings), paired with the `meta-marketing` + `growth` skill packs.
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
dreamcontext marketing # alias: dreamcontext mk
|
|
234
|
+
dreamcontext mk --help # subcommands (cohort, campaign, competitor, learnings, rem-sleep, …)
|
|
235
|
+
```
|
|
236
|
+
If `_dream_context/marketing/` exists, run `dreamcontext mk rem-sleep` as part of the sleep cycle (see [sleep.md](sleep.md)). PreToolUse gates protect `marketing/.env`.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Knowledge, Recall & Taxonomy — full reference
|
|
2
|
+
|
|
3
|
+
## Knowledge files
|
|
4
|
+
|
|
5
|
+
Deep, durable docs the agent should recall in future sessions (research, design rationale, domain context). The **index is auto-loaded each session** (names, descriptions, tags, staleness) — so you already know what exists.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
dreamcontext knowledge create <name> -d "description" -t architecture,api -c "body"
|
|
9
|
+
dreamcontext knowledge index [--tag <tag>] [--plain]
|
|
10
|
+
dreamcontext knowledge tags
|
|
11
|
+
dreamcontext knowledge touch <slug> # record access AFTER reading — powers staleness + warm loading
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
- **Pin** frequently-needed files so they load in full every session: set `pinned: true` (via `dreamcontext memory update <slug> --pin`). Read non-pinned files on demand, then `knowledge touch`.
|
|
15
|
+
- **Surgical edits mid-session**: `dreamcontext memory update <slug> [--description|--tags|--content|--append <text>|--pin|--unpin]`. Heavy maintenance (merging, deduping, restructuring) belongs to `sleep-product`.
|
|
16
|
+
- **Quick capture**: `dreamcontext memory remember "<text>"` writes a `type=note` CHANGELOG entry; sleep reconciles it into knowledge later.
|
|
17
|
+
|
|
18
|
+
### Organize knowledge into context folders (the promoted convention)
|
|
19
|
+
|
|
20
|
+
`knowledge/**/*.md` is indexed **recursively** — a file under `knowledge/<context>/` stays first-class in the index, recall, snapshot, and dashboard (its slug becomes `<context>/<name>`). The promoted layout is **context/topic-grouped folders**, not a flat dump and not a segregated `diagrams/` tree:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
knowledge/
|
|
24
|
+
├── recall/ ← a context folder
|
|
25
|
+
│ ├── recall-engine-v2.md
|
|
26
|
+
│ ├── decision-mem0-vs-bm25.md
|
|
27
|
+
│ └── recall/recall.excalidraw.md ← the context's diagram lives INSIDE the folder
|
|
28
|
+
├── federation/
|
|
29
|
+
│ └── ...
|
|
30
|
+
├── data-structures/{default,<product>}.md
|
|
31
|
+
└── products/<product>.md
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Don't reorganize by hand-moving files + hand-editing links.** To group an existing flat file into a context folder, use the atomic command:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
dreamcontext knowledge move <slug> <folder> # knowledge/<slug>.md → knowledge/<folder>/<basename>.md
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
It moves the file **and** rewrites every inbound `[[wikilink]]` in one atomic step (target token only; `|alias` and `#anchor` are preserved), keeps the file first-class in index/recall/snapshot/dashboard, and migrates its `knowledge_access` decay key. Folder names are free-form — nothing is reserved; nested folders are allowed; path traversal and clobbering an existing destination are rejected. Context grouping is normally done by `sleep-product` during consolidation — its "Organize" pass groups files that share a clear topic and calls this same command. During active work, just create knowledge with `dreamcontext knowledge create` and let sleep organize, or run `knowledge move` yourself — but never `mv` + hand-edit links by hand. When creating a brand-new doc you may place it directly in its context folder.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Memory functions — what they are and how to use them
|
|
45
|
+
|
|
46
|
+
The `memory` command group is your interface to the curated corpus: `knowledge/*`, `core/features/*`, `state/*.md`, `core/2.memory.md` (Technical Decisions + Known Issues), and every `core/CHANGELOG.json` entry. No setup, no index file, no external service — rebuilt in memory each call (<100ms on ~130 docs).
|
|
47
|
+
|
|
48
|
+
| Function | Use it to… | Command |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| **recall** | Find prior decisions/context across the whole corpus | `dreamcontext memory recall <query...>` |
|
|
51
|
+
| **remember** | Capture a one-off fact mid-session before it's lost | `dreamcontext memory remember "<text>"` |
|
|
52
|
+
| **update** | Surgically edit a knowledge file (desc/tags/body/pin) | `dreamcontext memory update <slug> …` |
|
|
53
|
+
| **delete** | Remove a knowledge file (irreversible; recover via git) | `dreamcontext memory delete <slug> -f` |
|
|
54
|
+
| **list** | Enumerate the corpus by type | `dreamcontext memory list [--types …]` |
|
|
55
|
+
| **status** | See corpus size + breakdown by type | `dreamcontext memory status` |
|
|
56
|
+
| **recall mode** | Switch how recall ranks (haiku/raw/off) | `dreamcontext recall on\|raw\|off\|status` |
|
|
57
|
+
|
|
58
|
+
### recall — your first-line discovery tool
|
|
59
|
+
|
|
60
|
+
**Run `memory recall` BEFORE grep or blind file reads** whenever the user asks "where did we decide X?", "have we discussed Y?", "what do we know about Z?", or before duplicating work. It ranks across knowledge + features + tasks + memory + changelog in one shot.
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Plain discovery — top 10 hits with snippets
|
|
64
|
+
dreamcontext memory recall "how did we decide on the sleep fan-out"
|
|
65
|
+
|
|
66
|
+
# Narrow to where the answer likely lives (cheaper, sharper)
|
|
67
|
+
dreamcontext memory recall "auth flow" --types knowledge,feature
|
|
68
|
+
dreamcontext memory recall "deprecated" --types changelog # ship history
|
|
69
|
+
dreamcontext memory recall "rate limit" --types task # in-flight work
|
|
70
|
+
|
|
71
|
+
# Tune result count / machine-readable output
|
|
72
|
+
dreamcontext memory recall "rice prioritization" --top 3 --json
|
|
73
|
+
dreamcontext memory recall "vault registry" --plain # no colors, for piping
|
|
74
|
+
|
|
75
|
+
# Span federation peers (see integrations.md)
|
|
76
|
+
dreamcontext memory recall "<query>" --connected # + out/both peers
|
|
77
|
+
dreamcontext memory recall "<query>" --vault other-project # + one named peer (repeatable)
|
|
78
|
+
```
|
|
79
|
+
Read the hit's `slug`/path from the output, then `Read` that file for full context. Hits are scored (higher = better); cross-vault hits are namespaced `<vault>::<type>/<slug>`.
|
|
80
|
+
|
|
81
|
+
### remember — quick capture mid-session
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
dreamcontext memory remember "Chose BM25 over mem0 after a 3-reviewer review"
|
|
85
|
+
dreamcontext memory remember "<text>" --references decision:recall-v2,task:recall-engine
|
|
86
|
+
dreamcontext memory remember "<text>" --person mehmet,ada # attribute (multi-person)
|
|
87
|
+
```
|
|
88
|
+
Writes a CHANGELOG entry (`type=note`, `scope=quick`); the sleep cycle reconciles it into knowledge later. You do NOT hand-edit `2.memory.md` for these (it no longer carries a LIFO notes section).
|
|
89
|
+
|
|
90
|
+
### Recall modes
|
|
91
|
+
| Mode | Behavior | Set with |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| `haiku` (**default**) | A small cloud model picks 0–3 relevant docs per prompt (smarter than keywords; BM25 fallback) | `dreamcontext recall on` |
|
|
94
|
+
| `raw` | BM25 keyword scoring only — no LLM call | `dreamcontext recall raw` |
|
|
95
|
+
| `off` | No recall injection at all | `dreamcontext recall off` |
|
|
96
|
+
| — | Inspect current mode | `dreamcontext recall status` |
|
|
97
|
+
|
|
98
|
+
- **Auto-injection (ON by default):** the UserPromptSubmit hook surfaces top hits on every non-trivial prompt. Opt out with `DREAMCONTEXT_MEMORY_HOOK=0`; override mode per-session with `DREAMCONTEXT_RECALL_MODE`.
|
|
99
|
+
- **Federation:** plain `recall` automatically spans eligible readable peers; hits are namespaced `<vault>::<type>/<slug>`. Scope with `--vault`/`--connected`/`--all-vaults` (see [integrations.md](integrations.md)).
|
|
100
|
+
|
|
101
|
+
### What recall is and isn't
|
|
102
|
+
- BM25 is keyword/stemming-based, not semantic — "ML practitioner" won't match "data scientist" (haiku mode mitigates this).
|
|
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
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Root-cause analysis pattern
|
|
108
|
+
|
|
109
|
+
When debugging (e.g. "notifications are broken"):
|
|
110
|
+
1. `dreamcontext memory recall "notification"` — what's known + what changed?
|
|
111
|
+
2. SEARCH `core/CHANGELOG.json` / `RELEASES.json` for the term — what shipped recently?
|
|
112
|
+
3. READ `core/4.tech_stack.md` — how is the system wired?
|
|
113
|
+
4. SEARCH `knowledge/` for the module — any deep research?
|
|
114
|
+
5. Now diagnose with the full picture.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Taxonomy (tags drive recall precision)
|
|
119
|
+
|
|
120
|
+
Consistent tags make recall sharp; fragmented near-duplicate tags degrade it. Before tagging anything, consult the vocabulary and reuse canonical faceted tags (`topic:recall`, `domain:security`) before inventing new ones.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
dreamcontext taxonomy vocab [--facet <facet>] [--json] # resolved vocabulary (defaults + core/taxonomy.json)
|
|
124
|
+
dreamcontext taxonomy resolve <tag> # normalized form, classification, canonical
|
|
125
|
+
dreamcontext taxonomy audit [--json] # surface non-canonical / orphan tags (read-only)
|
|
126
|
+
dreamcontext taxonomy init # scaffold core/taxonomy.json (idempotent)
|
|
127
|
+
dreamcontext taxonomy add <facet:value> # add a new vocabulary tag
|
|
128
|
+
dreamcontext taxonomy alias <alias> <canonical> # merge a shorthand into a canonical tag
|
|
129
|
+
```
|
|
130
|
+
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
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Excalidraw boards (diagrams)
|
|
135
|
+
|
|
136
|
+
Excalidraw boards (`.excalidraw.md`) are first-class knowledge files. **A board belongs INSIDE the context folder it documents**, co-located with that context's `.md` knowledge — not in a separate top-level diagrams dump. A board lives in its own `<title>/` wrapper folder so its tooling siblings stay together:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
knowledge/system/architecture/architecture.excalidraw.md ← board inside its context folder
|
|
140
|
+
knowledge/recall/recall/recall.excalidraw.md
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Rules:
|
|
144
|
+
- **REQUIRED frontmatter**: every board must have `name:` and `description:`. Boards with no `## Text Elements` fall back to description-only recall — make the description rich.
|
|
145
|
+
- **Do NOT hand-edit scene JSON.** The `.excalidraw.md` is generated output. Build a spec and run the generator (`.board.cjs`). Edit the spec, not the board. The spec is the source of truth; if they disagree, the spec wins. Commit both. (See the `excalidraw` skill pack for generating boards.)
|
|
146
|
+
- **Dark siblings**: tooling files inside a board's `<title>/` folder — generator scripts (`.board.cjs`), spec `.json`, and frontmatter-less helper `.md` — are excluded from index/recall/snapshot/dashboard. **Exception:** a companion `.md` with `name:` frontmatter is indexed as first-class, so you can co-locate a board with its teardown (`acme/acme.excalidraw.md` + `acme/acme.teardown.md`).
|
|
147
|
+
- **Indexing strips scene JSON/base64/element ids** — only frontmatter + `## Text Elements` are searchable, so a 2 MB board is as searchable as a tiny one. The dashboard renderer still gets the raw scene via the detail API and shows the full nested folder tree.
|
|
148
|
+
|
|
149
|
+
**Where does a board go?**
|
|
150
|
+
| Nature | Location | Indexed? |
|
|
151
|
+
|---|---|---|
|
|
152
|
+
| Canonical (architecture, flows, roadmaps a future session should recall) | inside its `knowledge/<context>/<title>/` folder | Yes |
|
|
153
|
+
| Temporary / scratch / exploratory | `inbox/` or `workspace/` (dark by location) | No |
|
|
154
|
+
|
|
155
|
+
Decision rule: *"Will a future session need this? → its context folder under `knowledge/`. Throwaway? → `inbox/` or `workspace/`."*
|
|
156
|
+
|
|
157
|
+
> **Legacy note:** older projects kept all boards under a single top-level `knowledge/diagrams/` tree, and `dreamcontext migrations apply-diagrams` still maintains flat boards there (folds them into per-title folders + rewrites `[[wikilinks]]` atomically — never hand-edit links). That layout still indexes and renders, but new boards should go in their **context folder**, and `sleep-product` keeps the store organized over time.
|