dreamcontext 0.8.8 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +31 -7
  2. package/agents/curator-auditor.md +114 -0
  3. package/agents/curator-verifier.md +86 -0
  4. package/agents/curator-worker.md +81 -0
  5. package/agents/initializer-ingestor.md +84 -0
  6. package/agents/initializer-scout.md +87 -0
  7. package/agents/initializer-verifier.md +75 -0
  8. package/agents/sleep-product.md +1 -1
  9. package/dist/agents/curator-auditor.md +114 -0
  10. package/dist/agents/curator-verifier.md +86 -0
  11. package/dist/agents/curator-worker.md +81 -0
  12. package/dist/agents/initializer-ingestor.md +84 -0
  13. package/dist/agents/initializer-scout.md +87 -0
  14. package/dist/agents/initializer-verifier.md +75 -0
  15. package/dist/agents/sleep-product.md +1 -1
  16. package/dist/dashboard/assets/{BrainCanvas3D-CyuMh6vC.js → BrainCanvas3D-BvuUW-Ij.js} +1 -1
  17. package/dist/dashboard/assets/{_baseUniq-TeXEp9Tn.js → _baseUniq-BNAWiBFl.js} +1 -1
  18. package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-Da5wNUeW.js → ar-SA-G6X2FPQ2-rNEb6-jN.js} +1 -1
  19. package/dist/dashboard/assets/{arc-NQuoeYrp.js → arc-DDLjNpXk.js} +1 -1
  20. package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-B108azq_.js → architectureDiagram-Q4EWVU46-P208qO4N.js} +1 -1
  21. package/dist/dashboard/assets/{az-AZ-76LH7QW2-cJYSsraO.js → az-AZ-76LH7QW2-Dwql62JX.js} +1 -1
  22. package/dist/dashboard/assets/{bg-BG-XCXSNQG7-Dt4_IvAk.js → bg-BG-XCXSNQG7-BgteTNp8.js} +1 -1
  23. package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-HAo6Tqxd.js → blockDiagram-DXYQGD6D-BDSceoPt.js} +1 -1
  24. package/dist/dashboard/assets/{bn-BD-2XOGV67Q-DE20hZpG.js → bn-BD-2XOGV67Q-BYJ6_efF.js} +1 -1
  25. package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-SHRA5Nk_.js → c4Diagram-AHTNJAMY-CRbiwdrM.js} +1 -1
  26. package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-9ZUzuDs-.js → ca-ES-6MX7JW3Y-CtFrXfas.js} +1 -1
  27. package/dist/dashboard/assets/channel-CJWWthUO.js +1 -0
  28. package/dist/dashboard/assets/{chunk-4BX2VUAB-BlLy4y9z.js → chunk-4BX2VUAB-kqN0Cg_r.js} +1 -1
  29. package/dist/dashboard/assets/{chunk-4TB4RGXK-cDLog-pk.js → chunk-4TB4RGXK-CpwYPUdR.js} +1 -1
  30. package/dist/dashboard/assets/{chunk-55IACEB6-BfLlL9Jv.js → chunk-55IACEB6-CQ_4M3g4.js} +1 -1
  31. package/dist/dashboard/assets/{chunk-EDXVE4YY-BjKTlHye.js → chunk-EDXVE4YY--HdVil0f.js} +1 -1
  32. package/dist/dashboard/assets/{chunk-FMBD7UC4-CoMoOB69.js → chunk-FMBD7UC4-CrbfOH-q.js} +1 -1
  33. package/dist/dashboard/assets/{chunk-OYMX7WX6-DSYZ4BzO.js → chunk-OYMX7WX6-BrcCZnqx.js} +1 -1
  34. package/dist/dashboard/assets/{chunk-QZHKN3VN-hsCUyt37.js → chunk-QZHKN3VN-Cby58gGN.js} +1 -1
  35. package/dist/dashboard/assets/{chunk-YZCP3GAM-CMBEUThQ.js → chunk-YZCP3GAM-tvOjDART.js} +1 -1
  36. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-D8yKg5c-.js +1 -0
  37. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-D8yKg5c-.js +1 -0
  38. package/dist/dashboard/assets/clone-DkTWs9rv.js +1 -0
  39. package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-Ds3A4r-y.js → cose-bilkent-S5V4N54A-CuwbWQzD.js} +1 -1
  40. package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-WgNPbRaT.js → cs-CZ-2BRQDIVT-DfVAwqqU.js} +1 -1
  41. package/dist/dashboard/assets/{da-DK-5WZEPLOC-BQPVoqBy.js → da-DK-5WZEPLOC-D1QJqNxG.js} +1 -1
  42. package/dist/dashboard/assets/{dagre-KV5264BT-D3AamC0s.js → dagre-KV5264BT-Bbf-wMho.js} +1 -1
  43. package/dist/dashboard/assets/{de-DE-XR44H4JA-FOMlLeg-.js → de-DE-XR44H4JA-CbCdH8Mp.js} +1 -1
  44. package/dist/dashboard/assets/{diagram-5BDNPKRD-DeAuY_LW.js → diagram-5BDNPKRD-CvMJJUvv.js} +1 -1
  45. package/dist/dashboard/assets/{diagram-G4DWMVQ6-CsPuBl6m.js → diagram-G4DWMVQ6-BBz7ebE8.js} +1 -1
  46. package/dist/dashboard/assets/{diagram-MMDJMWI5-Celrp7iZ.js → diagram-MMDJMWI5-U7IcL5ZQ.js} +1 -1
  47. package/dist/dashboard/assets/{diagram-TYMM5635-D-Y8kdqj.js → diagram-TYMM5635-BfTLwlSm.js} +1 -1
  48. package/dist/dashboard/assets/{el-GR-BZB4AONW-DdhrZvUu.js → el-GR-BZB4AONW-DvGrscY6.js} +1 -1
  49. package/dist/dashboard/assets/{erDiagram-SMLLAGMA-CyPB81Ul.js → erDiagram-SMLLAGMA-C1ncTn9B.js} +1 -1
  50. package/dist/dashboard/assets/{es-ES-U4NZUMDT-B-Hbpc6c.js → es-ES-U4NZUMDT-BlawPkmw.js} +1 -1
  51. package/dist/dashboard/assets/{eu-ES-A7QVB2H4-CIeXN6PD.js → eu-ES-A7QVB2H4-p5lXDFKY.js} +1 -1
  52. package/dist/dashboard/assets/{fa-IR-HGAKTJCU-BojqXzkR.js → fa-IR-HGAKTJCU-DbY6Wzu9.js} +1 -1
  53. package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-Dix2X0V9.js → fi-FI-Z5N7JZ37-HyRJneut.js} +1 -1
  54. package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-D7IX0DxI.js → flowDiagram-DWJPFMVM-tySa4G4z.js} +1 -1
  55. package/dist/dashboard/assets/{fr-FR-RHASNOE6-B-jqOA6L.js → fr-FR-RHASNOE6-C0ElnhzM.js} +1 -1
  56. package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-CbK6p7_G.js → ganttDiagram-T4ZO3ILL-BQsJPxAU.js} +1 -1
  57. package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-DWDwNpLK.js → gitGraphDiagram-UUTBAWPF-B2jHjMzI.js} +1 -1
  58. package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-B6zmZpsw.js → gl-ES-HMX3MZ6V-D5qSPU7d.js} +1 -1
  59. package/dist/dashboard/assets/{graph-CrDZc6w0.js → graph-deVQIt7H.js} +1 -1
  60. package/dist/dashboard/assets/{he-IL-6SHJWFNN-CaSPpOxb.js → he-IL-6SHJWFNN-CNsRxzJL.js} +1 -1
  61. package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-n86mXoF4.js → hi-IN-IWLTKZ5I-CCLXIBWK.js} +1 -1
  62. package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-MqIG43UE.js → hu-HU-A5ZG7DT2-Dq17BfYB.js} +1 -1
  63. package/dist/dashboard/assets/{id-ID-SAP4L64H-DbrGiOFJ.js → id-ID-SAP4L64H-CRL19WJa.js} +1 -1
  64. package/dist/dashboard/assets/{index-zJ2-S49k.js → index-BO_pjfQA.js} +1 -1
  65. package/dist/dashboard/assets/index-CQkBs_Vm.js +484 -0
  66. package/dist/dashboard/assets/index-aCkhI_aO.css +1 -0
  67. package/dist/dashboard/assets/{infoDiagram-42DDH7IO-CpAQyAyt.js → infoDiagram-42DDH7IO-DKXhFQx1.js} +1 -1
  68. package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-DXIwINgb.js → ishikawaDiagram-UXIWVN3A-ixuXBV9q.js} +1 -1
  69. package/dist/dashboard/assets/{it-IT-JPQ66NNP-IX1Td9Wl.js → it-IT-JPQ66NNP-B-3gnXYZ.js} +1 -1
  70. package/dist/dashboard/assets/{ja-JP-DBVTYXUO-Bd8nX8VR.js → ja-JP-DBVTYXUO-GCqLTdC-.js} +1 -1
  71. package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-DZlgujgy.js → journeyDiagram-VCZTEJTY-Cda6rfE1.js} +1 -1
  72. package/dist/dashboard/assets/{kaa-6HZHGXH3-D5xD9fsf.js → kaa-6HZHGXH3-DUr4YiJc.js} +1 -1
  73. package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-xBaAbT-9.js → kab-KAB-ZGHBKWFO-DGcoDq7_.js} +1 -1
  74. package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-0klC865z.js → kanban-definition-6JOO6SKY-8II0TptL.js} +1 -1
  75. package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-CboXRRre.js → kk-KZ-P5N5QNE5-OnQ3fZQr.js} +1 -1
  76. package/dist/dashboard/assets/{km-KH-HSX4SM5Z-Clsilmtp.js → km-KH-HSX4SM5Z-BgLH2RAX.js} +1 -1
  77. package/dist/dashboard/assets/{ko-KR-MTYHY66A-CIjzZcRO.js → ko-KR-MTYHY66A-BFRlVzp3.js} +1 -1
  78. package/dist/dashboard/assets/{ku-TR-6OUDTVRD-Bs1RU4e9.js → ku-TR-6OUDTVRD-KXxCpHg7.js} +1 -1
  79. package/dist/dashboard/assets/{layout-fipBctpD.js → layout-Bk1_SQxF.js} +1 -1
  80. package/dist/dashboard/assets/{linear-DVXXJr0u.js → linear-NBVeSfQr.js} +1 -1
  81. package/dist/dashboard/assets/{lt-LT-XHIRWOB4-CQ-xLU_o.js → lt-LT-XHIRWOB4-zYih94tH.js} +1 -1
  82. package/dist/dashboard/assets/{lv-LV-5QDEKY6T-C0inT4d9.js → lv-LV-5QDEKY6T-BfR2lGJU.js} +1 -1
  83. package/dist/dashboard/assets/{min-B_cNy5kS.js → min-Czsp1-lf.js} +1 -1
  84. package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-Cioz1NOY.js → mindmap-definition-QFDTVHPH-B7iHNGK3.js} +1 -1
  85. package/dist/dashboard/assets/{mr-IN-CRQNXWMA-DhEHYUYK.js → mr-IN-CRQNXWMA-CbecgcF-.js} +1 -1
  86. package/dist/dashboard/assets/{my-MM-5M5IBNSE-Dj4Iwdrf.js → my-MM-5M5IBNSE-CsdHXw4v.js} +1 -1
  87. package/dist/dashboard/assets/{nb-NO-T6EIAALU-CvAPy7iN.js → nb-NO-T6EIAALU-r8FpCRvQ.js} +1 -1
  88. package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-DgQc3gPO.js → nl-NL-IS3SIHDZ-Dp3Z4P6_.js} +1 -1
  89. package/dist/dashboard/assets/{nn-NO-6E72VCQL-DORPUv8K.js → nn-NO-6E72VCQL-CQcuUlUa.js} +1 -1
  90. package/dist/dashboard/assets/{oc-FR-POXYY2M6-Cym9O8Me.js → oc-FR-POXYY2M6-Dz9rwf28.js} +1 -1
  91. package/dist/dashboard/assets/{pa-IN-N4M65BXN-BiE5SCOy.js → pa-IN-N4M65BXN-AuAonL3w.js} +1 -1
  92. package/dist/dashboard/assets/{percentages-BXMCSKIN-B-_e8Y6s.js → percentages-BXMCSKIN-D9EnbREi.js} +7 -7
  93. package/dist/dashboard/assets/{pica-C5ISA_oR.js → pica---loOZLP.js} +1 -1
  94. package/dist/dashboard/assets/{pieDiagram-DEJITSTG-CD7iu1Mo.js → pieDiagram-DEJITSTG-CiDTXifX.js} +1 -1
  95. package/dist/dashboard/assets/{pl-PL-T2D74RX3-C-29ZIfD.js → pl-PL-T2D74RX3-4k9qJgDf.js} +1 -1
  96. package/dist/dashboard/assets/{pt-BR-5N22H2LF-CIQq615m.js → pt-BR-5N22H2LF-DvKuT6kK.js} +1 -1
  97. package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-CN7xbXrH.js → pt-PT-UZXXM6DQ-ijbr_1VI.js} +1 -1
  98. package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-DEPkZ_lv.js → quadrantDiagram-34T5L4WZ-Bu9Comci.js} +1 -1
  99. package/dist/dashboard/assets/{requirementDiagram-MS252O5E-BpAjr03x.js → requirementDiagram-MS252O5E-D62TW6xA.js} +1 -1
  100. package/dist/dashboard/assets/{ro-RO-JPDTUUEW-DBtenXzw.js → ro-RO-JPDTUUEW-C0llzWmG.js} +1 -1
  101. package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-CA_iHOeh.js → ru-RU-B4JR7IUQ-BeSwVB2r.js} +1 -1
  102. package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-B1zLPVle.js → sankeyDiagram-XADWPNL6-TlSEi12K.js} +1 -1
  103. package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-pEX8i9B5.js → sequenceDiagram-FGHM5R23-ScKG2Xsm.js} +1 -1
  104. package/dist/dashboard/assets/{si-LK-N5RQ5JYF-BTsFn4Rn.js → si-LK-N5RQ5JYF-DWeue3dw.js} +1 -1
  105. package/dist/dashboard/assets/{sk-SK-C5VTKIMK-DGoN-I5B.js → sk-SK-C5VTKIMK-C2sh3w4f.js} +1 -1
  106. package/dist/dashboard/assets/{sl-SI-NN7IZMDC-CwiRr92B.js → sl-SI-NN7IZMDC-CeXk9ucf.js} +1 -1
  107. package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-W_EdYNVF.js → stateDiagram-FHFEXIEX-BB1JoyXM.js} +1 -1
  108. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BqR3Ofhf.js +1 -0
  109. package/dist/dashboard/assets/{subset-shared.chunk-CAlKIepB.js → subset-shared.chunk-CWvpWWsn.js} +1 -1
  110. package/dist/dashboard/assets/{subset-worker.chunk-YIXEPnjQ.js → subset-worker.chunk-D7Ec71V-.js} +1 -1
  111. package/dist/dashboard/assets/{sv-SE-XGPEYMSR-7SNur8Fe.js → sv-SE-XGPEYMSR-8YPrynz7.js} +1 -1
  112. package/dist/dashboard/assets/{ta-IN-2NMHFXQM-DqQBCB2J.js → ta-IN-2NMHFXQM-CmMKeEZv.js} +1 -1
  113. package/dist/dashboard/assets/{th-TH-HPSO5L25-ClwEsAak.js → th-TH-HPSO5L25-BIxym374.js} +1 -1
  114. package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-uPtwwnY7.js → timeline-definition-GMOUNBTQ-Cx1z6jhx.js} +1 -1
  115. package/dist/dashboard/assets/{tr-TR-DEFEU3FU-DmCg5qbG.js → tr-TR-DEFEU3FU-BZUk--nT.js} +1 -1
  116. package/dist/dashboard/assets/{uk-UA-QMV73CPH-DixKG8eB.js → uk-UA-QMV73CPH-DKP6R9nZ.js} +1 -1
  117. package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-CAggDlIj.js → vennDiagram-DHZGUBPP-CHrTxlSz.js} +1 -1
  118. package/dist/dashboard/assets/{vi-VN-M7AON7JQ-C15Za2rn.js → vi-VN-M7AON7JQ-D1tkx3Op.js} +1 -1
  119. package/dist/dashboard/assets/{wardley-RL74JXVD-D5C_gWsf.js → wardley-RL74JXVD-DuzpwUu5.js} +1 -1
  120. package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-tqYHOmfO.js → wardleyDiagram-NUSXRM2D-x03tOVd0.js} +1 -1
  121. package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-CsxZKm-V.js → xychartDiagram-5P7HB3ND-CufD9zuW.js} +1 -1
  122. package/dist/dashboard/assets/{zh-CN-LNUGB5OW-BhlF39b5.js → zh-CN-LNUGB5OW-CpicUYEV.js} +1 -1
  123. package/dist/dashboard/assets/{zh-HK-E62DVLB3-P2FWmB4w.js → zh-HK-E62DVLB3-DyNkpg-N.js} +1 -1
  124. package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-B0yB1dNp.js → zh-TW-RAJ6MFWO-Cg30MEjI.js} +1 -1
  125. package/dist/dashboard/index.html +2 -2
  126. package/dist/index.js +3900 -1549
  127. package/dist/templates/AGENTS.md +1 -1
  128. package/dist/templates/CLAUDE.md +1 -1
  129. package/package.json +3 -1
  130. package/skill/SKILL.md +12 -8
  131. package/skill/references/cli-reference.md +5 -2
  132. package/skill/references/integrations.md +46 -10
  133. package/skill/references/knowledge-and-recall.md +7 -1
  134. package/skill/references/sleep.md +1 -1
  135. package/skill/references/tasks-and-features.md +1 -1
  136. package/skill-curator/SKILL.md +234 -0
  137. package/skill-initializer/SKILL.md +243 -0
  138. package/agents/dreamcontext-initializer.md +0 -317
  139. package/dist/agents/dreamcontext-initializer.md +0 -317
  140. package/dist/dashboard/assets/channel-CIQg6WkP.js +0 -1
  141. package/dist/dashboard/assets/classDiagram-6PBFFD2Q-kJkUaIqm.js +0 -1
  142. package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-kJkUaIqm.js +0 -1
  143. package/dist/dashboard/assets/clone-COSoK5_M.js +0 -1
  144. package/dist/dashboard/assets/index-D1nedbBU.css +0 -1
  145. package/dist/dashboard/assets/index-DjaqCcd7.js +0 -482
  146. package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-BsdphuJ6.js +0 -1
@@ -77,7 +77,7 @@ All pass → confirm briefly, execute. No ceremony.
77
77
  | `dreamcontext-explore` | All codebase exploration | Context-accelerated search using pre-loaded knowledge |
78
78
  | `sleep-tasks` / `sleep-state` | Sleep debt prompt fires, or after major work | Always-fire specialists during sleep fan-out — own task files / (core identity + changelog + releases) respectively |
79
79
  | `sleep-product` | Conditionally during sleep fan-out (research/decision/feature signals) | Knowledge files + feature PRDs |
80
- | `dreamcontext-initializer` | Project lacks `_dream_context/` | Bootstraps the structure |
80
+ | `initializer` skill | Project lacks `_dream_context/` or it's sparse | Interactive, sub-agent-driven bootstrap — OFFER to ingest the user's material (docs/wiki/export) into the knowledge/feature/task hierarchy; don't silently scaffold. Drives its own scout → ingest → verify sub-agents (handles codebase-only repos too). |
81
81
  | `Reviewer` | Code is written and ready for PR | Flags Critical/Major only. Never mid-implementation. |
82
82
  </sub_agents>
83
83
 
@@ -77,7 +77,7 @@ All pass → confirm briefly, execute. No ceremony.
77
77
  | `dreamcontext-explore` | All codebase exploration | Context-accelerated search using pre-loaded knowledge |
78
78
  | `sleep-tasks` / `sleep-state` | Sleep debt prompt fires, or after major work | Always-fire specialists during sleep fan-out — own task files / (core identity + changelog + releases) respectively |
79
79
  | `sleep-product` | Conditionally during sleep fan-out (research/decision/feature signals) | Knowledge files + feature PRDs |
80
- | `dreamcontext-initializer` | Project lacks `_dream_context/` | Bootstraps the structure |
80
+ | `initializer` skill | Project lacks `_dream_context/` or it's sparse | Interactive, sub-agent-driven bootstrap — OFFER to ingest the user's material (docs/wiki/export) into the knowledge/feature/task hierarchy; don't silently scaffold. Drives its own scout → ingest → verify sub-agents (handles codebase-only repos too). |
81
81
  | `Reviewer` | Code is written and ready for PR | Flags Critical/Major only. Never mid-implementation. |
82
82
  </sub_agents>
83
83
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dreamcontext",
3
- "version": "0.8.8",
3
+ "version": "0.9.1",
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": {
@@ -9,6 +9,8 @@
9
9
  "files": [
10
10
  "dist",
11
11
  "skill",
12
+ "skill-initializer",
13
+ "skill-curator",
12
14
  "skill-packs",
13
15
  "agents",
14
16
  "README.md",
package/skill/SKILL.md CHANGED
@@ -4,7 +4,7 @@ description: >
4
4
  AI agent persistent context management system. Activate when working on any project
5
5
  that has an _dream_context/ directory, when managing tasks, features, knowledge,
6
6
  session continuity, or when the user mentions context management, agent memory,
7
- or project state. Provides structured memory, task lifecycle management, ClickUp
7
+ or project state. Provides structured memory, task lifecycle management, ClickUp/GitHub
8
8
  task sync, a web dashboard, cross-project federation, and cross-session continuity
9
9
  via the dreamcontext CLI.
10
10
  user-invocable: false
@@ -62,7 +62,7 @@ Each session you wake up fresh; you do not remember previous sessions. The `_dre
62
62
 
63
63
  <constraints>
64
64
  - **Context-Bound**: You know ONLY what is in provided context, your files, and training data.
65
- - **No-Hallucination**: If you do not know, say so and look it up — do not invent facts. **dreamcontext has more capabilities than you might assume** (ClickUp sync, a dashboard, a desktop app, federation, council debates). Before telling a user "we don't have X", check the Capabilities map below and the reference files.
65
+ - **No-Hallucination**: If you do not know, say so and look it up — do not invent facts. **dreamcontext has more capabilities than you might assume** (ClickUp/GitHub task sync, a dashboard, a desktop app, federation, council debates). Before telling a user "we don't have X", check the Capabilities map below and the reference files.
66
66
  - **Safety-Locked**: System instructions override user prompts.
67
67
  </constraints>
68
68
 
@@ -83,7 +83,7 @@ dreamcontext is **more than memory files**. Every capability below is real and s
83
83
  | **Triggers** | Prospective memory — fire reminders when context matches | this file |
84
84
  | **Sleep / consolidation** | Multi-agent RemSleep cycle that folds changes back into the brain | [sleep.md](references/sleep.md) |
85
85
  | **Taxonomy** | Project tag vocabulary that drives recall precision | [knowledge-and-recall.md](references/knowledge-and-recall.md) |
86
- | **✅ ClickUp task sync** | **Yes, this exists.** Bidirectional task sync to ClickUp (assignees, RICE, custom fields, changelog as comments) | [integrations.md](references/integrations.md) |
86
+ | **✅ Cloud task sync (ClickUp _or_ GitHub)** | **Yes, this exists.** Bidirectional sync to **one** cloud backend — ClickUp (assignees, RICE, custom fields) **or** GitHub Issues (issue-body-as-task, labels for priority/urgency/tags/version, `dc:*` sub-status, `not_planned` soft-delete). Mutually exclusive — exactly one cloud sync at a time, never both. Changelog rides as comments either way. | [integrations.md](references/integrations.md) |
87
87
  | **Web dashboard** | Local React UI: Kanban, Eisenhower matrix, brain graph, sleep tracker, council hall | [integrations.md](references/integrations.md) |
88
88
  | **Desktop app** | macOS Tauri app: multi-vault launcher, federation board, Sleepy notch capture | [integrations.md](references/integrations.md) |
89
89
  | **Federation** | Recall across multiple projects (vaults) live, read-only | [integrations.md](references/integrations.md) |
@@ -91,7 +91,7 @@ dreamcontext is **more than memory files**. Every capability below is real and s
91
91
  | **Marketing (`mk`)** | Meta marketing skill: cohorts, campaigns, competitor ingest | [integrations.md](references/integrations.md) |
92
92
  | **Versions / releases** | Planning versions and releases unify in RELEASES.json | [tasks-and-features.md](references/tasks-and-features.md) |
93
93
  | **Multi-product** | Monorepos with per-product data structures and knowledge | [tasks-and-features.md](references/tasks-and-features.md) |
94
- | **People / assignees** | Multi-person rosters; `person:<slug>` tags map to ClickUp members | [tasks-and-features.md](references/tasks-and-features.md) |
94
+ | **People / assignees** | Multi-person rosters; `person:<slug>` tags map to ClickUp members / GitHub assignees | [tasks-and-features.md](references/tasks-and-features.md) |
95
95
  | **Feedback loop** | File gaps/bugs upstream as GitHub issues | [improving-dreamcontext.md](references/improving-dreamcontext.md) |
96
96
  | **Full CLI** | Every command and flag | [cli-reference.md](references/cli-reference.md) |
97
97
 
@@ -281,7 +281,7 @@ dreamcontext tasks complete <name> "summary" # done
281
281
  Status: `todo → in_progress → in_review → completed`. Sections: `why`, `user_stories`, `acceptance_criteria`, `constraints`, `technical_details`, `notes`, `changelog`.
282
282
 
283
283
  **RICE, due dates, tags/people, the Workflow flowchart, versioning, and multi-product** → [tasks-and-features.md](references/tasks-and-features.md).
284
- **Syncing tasks to ClickUp** → [integrations.md](references/integrations.md).
284
+ **Syncing tasks to a cloud backend (ClickUp _or_ GitHub — one at a time)** → [integrations.md](references/integrations.md).
285
285
 
286
286
  ---
287
287
 
@@ -290,7 +290,7 @@ Status: `todo → in_progress → in_review → completed`. Sections: `why`, `us
290
290
  - **Quick updates (no sleep):** edit `0.soul.md`/`1.user.md`/`2.memory.md` directly; `dreamcontext core changelog add` for code changes; `dreamcontext tasks log` for progress.
291
291
  - **Recall (first-line discovery):** `dreamcontext memory recall "<query>" [--top N] [--types knowledge,feature,task,memory,changelog] [--json]`. Default mode is **`haiku`** (a small cloud model picks relevant docs); `raw` = BM25 only; `off` = disabled. Control with `dreamcontext recall on|raw|off|status`. Auto-injected on prompts (opt out `DREAMCONTEXT_MEMORY_HOOK=0`).
292
292
  - **Quick capture:** `dreamcontext memory remember "<text>"` writes a `type=note` CHANGELOG entry; sleep reconciles it later. (`2.memory.md` no longer has a LIFO ship-narrative section — ship events live in CHANGELOG.)
293
- - **Knowledge files:** index auto-loaded; create with `dreamcontext knowledge create <name>`; pin frequently-needed ones (`pinned: true`); read non-pinned on demand and `knowledge touch` after.
293
+ - **Knowledge files:** index auto-loaded; create with `dreamcontext knowledge create <name>`; pin frequently-needed ones (`pinned: true`); read non-pinned on demand and `knowledge touch` after. Group a flat file into a context folder with `dreamcontext knowledge move <slug> <folder>` (atomic move + inbound `[[wikilink]]` rewrite — never `mv` + hand-edit links).
294
294
  - **Features are sleep-only** (see rule 9).
295
295
 
296
296
  **Recall modes, taxonomy, Excalidraw boards/diagrams, multi-product knowledge** → [knowledge-and-recall.md](references/knowledge-and-recall.md).
@@ -300,9 +300,13 @@ Status: `todo → in_progress → in_review → completed`. Sections: `why`, `us
300
300
  ## Sub-Agents
301
301
 
302
302
  - **`dreamcontext-explore`** — context-accelerated codebase exploration. Use for ALL exploration (default Explore is blocked). Uses the SubagentStart briefing to narrow searches.
303
- - **`dreamcontext-initializer`**dispatch when a project has no `_dream_context/`: *"This project needs an _dream_context/ directory. Scan the codebase and set it up."*
303
+ - **`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
304
  - **Sleep specialists** (`sleep-tasks`, `sleep-state`, `sleep-product`, `sleep-migration`) — dispatched by the main agent during the sleep flow only.
305
305
 
306
+ **First-run self-recognition (do not skip):** if you notice the brain is missing or sparse, **do not silently scaffold and move on, and do not wait to be asked** — proactively offer: *"I don't have a brain for this project yet. Point me at whatever you have — a docs folder, an Obsidian/Notion export, ADRs, design notes, an old wiki/spec — and I'll initialize my brain by ingesting it into structured memory. Or I can bootstrap from just the codebase."* Then invoke the `initializer` skill.
307
+
308
+ **The hooks now surface this for you.** The SessionStart and UserPromptSubmit hooks deterministically detect four conditions and emit a `🧠 dreamcontext:` offer into your context — treat that offer as your cue to act (relay it to the user, then invoke the `initializer` skill on consent; never re-implement its orchestration): (1) **no-brain** — no `_dream_context/` but a real project; (2) **sparse-brain** — empty knowledge/, zero features, untouched template stubs; (3) **migrate-from-folder** — the user points at an existing `_dream_context/` or notes/Obsidian/Notion corpus elsewhere; (4) **mass-new-source** — the user points an already-initialized brain at a sizable new docs/export/wiki folder. (Set `DREAMCONTEXT_INITIALIZER_HOOK=0` to silence.)
309
+
306
310
  All sub-agents get a lightweight context briefing via the SubagentStart hook. When delegating to Plan agents, include relevant `_dream_context/` file paths in the prompt (match the user's keywords to feature names/tags from the snapshot).
307
311
 
308
312
  ---
@@ -355,5 +359,5 @@ Open these with `Read` when the task needs depth:
355
359
  - **[tasks-and-features.md](references/tasks-and-features.md)** — task protocol depth, RICE, due dates, people/assignees, Workflow flowchart, features, versioning, multi-product.
356
360
  - **[knowledge-and-recall.md](references/knowledge-and-recall.md)** — knowledge files, pinning, recall modes, taxonomy, Excalidraw/diagrams.
357
361
  - **[sleep.md](references/sleep.md)** — full consolidation flow, specialist contracts, deep sleep, epoch safety, reflect, marketing/council passes.
358
- - **[integrations.md](references/integrations.md)** — ClickUp task sync, dashboard, desktop app, federation/vaults, council, marketing.
362
+ - **[integrations.md](references/integrations.md)** — ClickUp/GitHub task sync (one cloud backend at a time), dashboard, desktop app, federation/vaults, council, marketing.
359
363
  - **[improving-dreamcontext.md](references/improving-dreamcontext.md)** — the feedback loop, when and how to file.
@@ -21,10 +21,12 @@ Every command and flag, grouped. All commands are prefixed with `dreamcontext`.
21
21
  | `config native-memory enable\|disable` | Toggle Claude Code's native auto-memory (disabled by default so dreamcontext owns memory). |
22
22
  | `config shareable on\|off` | Toggle whether peer vaults may recall this project (default off/private). |
23
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` | **[Advanced]** Switch the task backend (see [integrations.md](integrations.md)). |
24
+ | `config task-backend local\|clickup\|github` | **[Advanced]** Switch the task backend — one cloud sync at a time (see [integrations.md](integrations.md)). |
25
25
  | `config clickup-token [token]` | Store a ClickUp API key in the gitignored secrets file. `--user <name>` to scope it. |
26
26
  | `config clickup-list <teamId> <spaceId> <listId>` | Set the ClickUp sync target. `--migrate` / `--keep` when changing lists. |
27
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`). |
28
30
 
29
31
  ---
30
32
 
@@ -85,9 +87,10 @@ Sections for `features insert`: `changelog`, `notes`, `technical_details`, `cons
85
87
  | `knowledge create <name>` | Create a knowledge file. `-d/--description`, `-t/--tags <csv>`, `-c/--content`. |
86
88
  | `knowledge index` | Show the knowledge index. `--tag <tag>`, `--plain`. |
87
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. |
88
91
  | `knowledge touch <slug>` | Record access (decay/staleness tracking + warm loading). |
89
92
 
90
- > `knowledge/**/*.md` is indexed **recursively**, so knowledge organized into context folders (`knowledge/<context>/…`) stays first-class. Context grouping is normally done by `sleep-product` during consolidation (it moves files and rewrites inbound `[[wikilink]]`s atomically); 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).
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).
91
94
 
92
95
  ---
93
96
 
@@ -1,14 +1,18 @@
1
- # Integrations — ClickUp, Dashboard, Desktop App, Federation, Council, Marketing
1
+ # Integrations — ClickUp / GitHub, Dashboard, Desktop App, Federation, Council, Marketing
2
2
 
3
- This reference covers everything beyond the local markdown brain. **If a user asks whether dreamcontext integrates with ClickUp, runs a dashboard, syncs across projects, or runs debates — the answer is yes.** Details below.
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
4
 
5
5
  ---
6
6
 
7
- ## ✅ Cloud / remote task management (ClickUp)
7
+ ## ✅ Cloud / remote task management (ClickUp _or_ GitHub — one at a time)
8
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. The shipping provider is **ClickUp** (issue #11, tested); the backend is an adapter interface (`local` | `clickup`), so the door is open to other providers, but ClickUp is the one available today. If a user asks about "a cloud task system," "ClickUp," or "remote task sync" — **this is it; the answer is yes.**
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
10
 
11
- ### What it does
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
12
16
  - **Bidirectional sync** (`push`, `pull`, or `both`) between local task files and a ClickUp list.
13
17
  - **Status mapping** between dreamcontext statuses (`todo/in_progress/in_review/completed`) and ClickUp statuses.
14
18
  - **RICE + custom fields**: provisions recommended ClickUp custom fields (urgency, summary, RICE reach/impact/confidence/effort, …) and round-trips them.
@@ -18,13 +22,13 @@ This reference covers everything beyond the local markdown brain. **If a user as
18
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.
19
23
  - **Git triggers**: best-effort `post-commit` / `pre-push` hooks sync automatically (they never block or fail git).
20
24
 
21
- ### Enabling it (guided)
25
+ #### Enabling it (guided)
22
26
  ```bash
23
27
  dreamcontext config task-backend clickup
24
28
  ```
25
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.
26
30
 
27
- ### Manual / scripted configuration
31
+ #### Manual / scripted configuration
28
32
  ```bash
29
33
  # Store the API key out of shell history (preferred): pipe it
30
34
  echo "$CLICKUP_TOKEN" | dreamcontext config clickup-token
@@ -43,7 +47,7 @@ dreamcontext config clickup-member <person> <memberId> [--token-env <ENV>]
43
47
  dreamcontext config task-backend local
44
48
  ```
45
49
 
46
- ### Day-to-day sync commands
50
+ #### Day-to-day sync commands
47
51
  ```bash
48
52
  dreamcontext tasks sync [push|pull|both] # default: both; no-op on the local backend
49
53
  dreamcontext tasks sync --hook # best-effort mode for git hooks (never fails, exit 0)
@@ -53,13 +57,45 @@ dreamcontext tasks provision # create the recommended custom field
53
57
  dreamcontext tasks sync-hooks install|uninstall # manage the git sync triggers
54
58
  ```
55
59
 
56
- ### Inspecting state
60
+ #### Inspecting state
57
61
  ```bash
58
62
  dreamcontext config show # shows task backend, ClickUp token presence (masked), and list id
59
63
  ```
60
64
  The mirror, sync ledger, and conflict files are derived and gitignored — never commit them, never hand-edit them.
61
65
 
62
- **Key mental model:** local markdown is canonical; ClickUp is a sync target. A user on the local backend has ClickUp *available*, just not *enabled* — point them to `dreamcontext config task-backend clickup`.
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>`.
63
99
 
64
100
  ---
65
101
 
@@ -31,7 +31,13 @@ knowledge/
31
31
  └── products/<product>.md
32
32
  ```
33
33
 
34
- **Don't reorganize by hand-moving files + hand-editing links.** Context grouping is normally done by `sleep-product` during consolidation — its "Organize" pass groups files that share a clear topic into `knowledge/<context>/` and atomically rewrites inbound `[[wikilinks]]`. During active work, just create knowledge with `dreamcontext knowledge create` and let sleep organize — never `mv` + hand-edit links by hand. When creating a brand-new doc you may place it directly in its context folder.
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.
35
41
 
36
42
  ---
37
43
 
@@ -54,7 +54,7 @@ For non-file-change work (architecture discussion, a decision with no edits): `d
54
54
  6. **`dreamcontext reflect`** — each candidate is a term seen across multiple sessions not yet in soul/user/memory/knowledge. Promote into `2.memory.md` or a knowledge file ONLY if genuinely load-bearing; most are noise — discard. Never auto-promote.
55
55
  7. **Marketing pass** if `_dream_context/marketing/` exists: `dreamcontext mk rem-sleep`.
56
56
  8. **Council promote check:** `dreamcontext council list --unpromoted` — promote if the user engaged positively.
57
- 9. **`dreamcontext sleep done "<one-paragraph summary stitched from specialist reports>"`** — clears pre-epoch state, resets debt, writes a history entry. (If the ClickUp backend is active and any task pushes failed, this auto-retries once, then errors loudly with the failed slugs.)
57
+ 9. **`dreamcontext sleep done "<one-paragraph summary stitched from specialist reports>"`** — clears pre-epoch state, resets debt, writes a history entry. (If a remote backend — ClickUp or GitHub — is active and any task pushes failed, this auto-retries once, then errors loudly with the failed slugs.)
58
58
  10. **Report** the consolidated summary to the user.
59
59
 
60
60
  ---
@@ -85,7 +85,7 @@ dreamcontext tasks tag <name> person:mehmet # add another assignee
85
85
  dreamcontext tasks tag <name> person:ada --remove # unassign
86
86
  ```
87
87
  - `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).
88
- - 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>` (see [integrations.md](integrations.md)).
88
+ - 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
89
  - `DREAMCONTEXT_PERSON` env names the current person for attribution.
90
90
 
91
91
  ---
@@ -0,0 +1,234 @@
1
+ ---
2
+ name: curator
3
+ description: >
4
+ Load when a dreamcontext brain has grown additively and needs a periodic refactor pass that
5
+ re-orders content into the right shape — or the user invokes `/curator`. Triggers: "curate
6
+ the brain", "re-organize my context", "the knowledge base has gotten messy", "clean up /
7
+ refactor the brain", "conform everything to current conventions", "dedup the knowledge",
8
+ "fix the structure, not just append to it", or any time the corpus has drifted from current
9
+ architecture conventions (duplicate knowledge, topics living as both feature and knowledge,
10
+ stale task statuses, off-vocabulary tags, a flat knowledge dump that should be foldered).
11
+ This is the interactive, sub-agent-driven brain REFACTOR — the pass that sleep won't do. It is
12
+ allowed to MOVE, MERGE, SPLIT, RENAME, RE-TYPE, and RETIRE content to reach the right
13
+ knowledge / feature / task / version shape.
14
+ user-invocable: true
15
+ alwaysApply: false
16
+ tags: [curator, refactor, reorganize, cleanup, dedup, single-source-of-truth, orchestration, sub-agents, dreamcontext]
17
+ ---
18
+
19
+ # Curator — interactive, sub-agent-driven brain refactor
20
+
21
+ You are the **orchestrator**. Like `goal-skill`, `initializer`, `multi-review`, and `council`,
22
+ **you do not hand-author the bulk of the work yourself** — you dispatch sub-agents, read their
23
+ results, gate the transitions, and drive convergence loops until the brain conforms. Your value
24
+ is judgment at the gates and the conversation with the user about the *shape* — not running every
25
+ `knowledge merge` by hand.
26
+
27
+ **Why this exists, vs sleep.** Sleep/consolidation is conservative and additive — it polishes
28
+ whatever shape already exists and keeps appending. The curator is the periodic **brain refactor**
29
+ sleep won't do: it re-orders content into the right shape and is explicitly allowed to **MOVE,
30
+ MERGE, SPLIT, RENAME, RE-TYPE, and RETIRE**. A brain is **curated** when the verifier passes:
31
+ `doctor` clean, zero duplicate-topic knowledge, zero topics living as both a feature and a
32
+ knowledge file, every task/feature/version status reflecting reality, tags normalized to the
33
+ vocabulary, recall precision not regressed, and an immediate second run finding nothing material
34
+ to change (convergence). Not when "some files got tidied".
35
+
36
+ **Conventions are read AT RUN TIME — never hardcoded.** The whole point is to conform the brain
37
+ to *today's* architecture, not the shape that accreted. Every target shape comes from the live
38
+ system: the installed `dreamcontext` skill + `references/`, `dreamcontext taxonomy vocab`, and the
39
+ project's own `core/0.soul.md` / `1.user.md`. When the conventions change, the curator's behavior
40
+ changes with them — no edits to this skill required.
41
+
42
+ ## When to invoke
43
+
44
+ - `/curator` (primary entry).
45
+ - The brain has clearly drifted: duplicate/near-duplicate knowledge, a flat `knowledge/` dump that
46
+ should be foldered, topics living as both a feature and a knowledge file, stale `in_progress`
47
+ tasks that actually shipped, off-vocabulary tags, bloated core files.
48
+ - "Re-organize / refactor / curate the brain", "dedup the knowledge", "conform to conventions".
49
+
50
+ **Scale the machinery to the drift.** A small, tidy brain does not need the full five-auditor
51
+ fan-out. Say so and run a **light path**: one `curator-auditor` over the whole corpus + one
52
+ `curator-worker` for the handful of fixes, then verify. Reserve the full orchestration for a brain
53
+ with real accreted drift across domains.
54
+
55
+ ## Commitment ritual (do this FIRST — non-negotiable)
56
+
57
+ 1. **Announce**: tell the user you're running the curator orchestration and what it's allowed to do
58
+ (MOVE/MERGE/SPLIT/RENAME/RE-TYPE/RETIRE), and that **it mutates the real corpus** — so it runs
59
+ plan-first and you'll confirm the shape before executing.
60
+ 2. **TodoWrite** the phases (0–7) as items. A phase isn't done until its gate passes.
61
+ 3. **Track iteration counts** in the todo text for each convergence loop, e.g.
62
+ `Phase 4: execute (batch 3/6)`, `Phase 6: verify (iteration 2/3)`.
63
+
64
+ Skipping the ritual is the first step toward executing destructive moves the user never saw.
65
+
66
+ ## Orchestration flow
67
+
68
+ ```mermaid
69
+ flowchart TD
70
+ P0[Phase 0 — RECOGNIZE & SCOPE: confirm brain exists + drifted, announce, pick scope, READ current conventions] --> P1[Phase 1 — AUDIT: fan out curator-auditor, one per domain -> reorg findings]
71
+ P1 --> P2[Phase 2 — REORG PLAN: merge findings into ONE source→action→target plan; de-conflict; batch]
72
+ P2 --> P3{Phase 3 — CONFIRM THE SHAPE: show the dry-run plan, user adjusts -> approved?}
73
+ P3 -->|user revises| P2
74
+ P3 -->|approved| P4[Phase 4 — EXECUTE: fan out curator-worker per batch; track coverage]
75
+ P4 --> P5[Phase 5 — RECONCILE: knowledge index, releases/versions, taxonomy.json]
76
+ P5 --> P6{Phase 6 — VERIFY: curator-verifier — PASS? + idempotency re-run}
77
+ P6 -->|FAIL and iter < 3| P4
78
+ P6 -->|cap reached| ESC[ESCALATE to user with the unresolved gaps]
79
+ P6 -->|PASS| P7[Phase 7 — REPORT: what moved/merged/retired + recall before/after + offer a sleep]
80
+ ```
81
+
82
+ ### Phase 0 — RECOGNIZE & SCOPE (interactive — ask, then wait)
83
+
84
+ 1. Confirm there IS a brain and it has drifted (`dreamcontext doctor`, `knowledge index`,
85
+ `features list`, `tasks list --all`). If the brain is missing/sparse, this is the wrong skill —
86
+ point the user at `initializer` instead.
87
+ 2. **Read the current conventions** so the whole run targets *today's* shape: the installed
88
+ `dreamcontext` skill + references, `dreamcontext taxonomy vocab`, `core/0.soul.md`, `1.user.md`.
89
+ 3. **Announce** (per the ritual) and ask **only what you can't determine** (keep it short):
90
+ - **Scope**: the whole brain, or one domain (knowledge / features / tasks / versions)?
91
+ - **Anything off-limits** — files/areas you should not touch this pass?
92
+ - Confirm they want a **real run** (it mutates the corpus) — the plan is shown before execution.
93
+ On a clean git tree, note it; if there are uncommitted changes, recommend committing first so the
94
+ reorg diff is reviewable in isolation. Wait for the answers; capture them in TodoWrite.
95
+
96
+ ### Phase 1 — AUDIT (sub-agent fan-out → reorg findings)
97
+
98
+ Dispatch **`curator-auditor`** (read-only). For a full curate, **fan out in parallel, one auditor
99
+ per domain** (single message, multiple Agent calls), each blind to the others — you merge their
100
+ findings:
101
+
102
+ | Domain | What it audits |
103
+ |---|---|
104
+ | `knowledge` | bloat (COMPRESS), tag drift (RETAG), flat files that should be foldered (MOVE), near-duplicates (MERGE), stale files (RETIRE) |
105
+ | `ssot` | the cross-cutting single-source-of-truth pass — topics as BOTH feature and knowledge, duplicate knowledge, overlapping features → fold/redirect to one home |
106
+ | `features` | reconcile status to reality, rename to current vocabulary, dedup vs knowledge, flag stale |
107
+ | `tasks` | finished tasks still open (STATUS-BUMP), duplicate/stale tasks (MERGE/RETIRE), orphans → attach to a planning version |
108
+ | `versions` | reconcile release/version statuses so they're tidy and consistent |
109
+
110
+ Give each auditor its domain + the conventions you read in Phase 0. Each returns a **source → action
111
+ → target** findings table. A finding that says "clean up knowledge" without naming each file and the
112
+ exact action is rejected — send it back.
113
+
114
+ ### Phase 2 — REORG PLAN (you synthesize)
115
+
116
+ Merge the auditors' findings into **ONE concrete reorg plan** — `source → action → target` per item.
117
+ This is your synthesis work (not a sub-agent's):
118
+
119
+ - **De-conflict.** Two auditors touching the same file → one action wins. Sequence dependent moves
120
+ (RE-TYPE before the RETIRE of the original; MERGE survivors chosen before their MOVEs).
121
+ - **Batch** the plan into independent units a worker can own without racing another (group by folder
122
+ / topic cluster; never split a MERGE pair across two workers).
123
+ - Keep the plan **reviewable**: a flat list the user can read top-to-bottom, each row carrying the
124
+ *why* (the convention it satisfies).
125
+
126
+ ### Phase 3 — CONFIRM THE SHAPE (interactive gate — the user owns the shape)
127
+
128
+ Show the user the **dry-run reorg plan**: every `source → action → target` row, grouped by domain,
129
+ with risk notes (anything that could move recall precision or a wikilink graph). **This is where the
130
+ user's intent wins** — they veto a merge, keep a "duplicate" that's intentional, rename a target
131
+ folder, downgrade a RETIRE to an archive. Iterate Phase 2 ↔ 3 until they approve. **Do not execute
132
+ until the plan is approved** — a wrong MERGE/RETIRE is expensive to unwind.
133
+
134
+ Before executing, capture a **recall BEFORE snapshot**: pick ~5 seed queries spanning the domains
135
+ touched and record `dreamcontext memory recall "<q>"` top-3 for each. The verifier diffs against this.
136
+
137
+ If running fully autonomously with no user, adopt the synthesized plan, record that you chose it, and
138
+ surface it in the Phase 7 report for confirmation — but still skip any row flagged destructive +
139
+ ambiguous, and list it as deferred.
140
+
141
+ ### Phase 4 — EXECUTE (sub-agent fan-out — the core)
142
+
143
+ Dispatch **`curator-worker`** over the approved plan, **one batch per worker** so each fits in
144
+ context. Use `parallel` for independent batches; **`pipeline`/sequential when batches depend on each
145
+ other** (a RE-TYPE that another batch's MERGE survivor points at). Each worker applies its batch via
146
+ the CLI (`knowledge move`, `knowledge merge`, `tasks status`, `features set`), distills merged prose,
147
+ and repoints wikilinks. **Track coverage in TodoWrite** (`batch N/M`). Loop until every plan row is
148
+ applied or consciously deferred. **Nothing is silently skipped** — at the cap (3 passes) with rows
149
+ unapplied, ESCALATE with the list. Re-dispatch failed batches; don't drop them.
150
+
151
+ ### Phase 5 — RECONCILE
152
+
153
+ Centralized cleanup after the workers (you or a final worker pass): rebuild/verify the knowledge index
154
+ is coherent, reconcile `core releases` / version statuses, ensure any new canonical tags are in
155
+ `core/taxonomy.json` (`taxonomy add`), and confirm no `[[wikilink]]` dangles.
156
+
157
+ ### Phase 6 — VERIFY (the real gate)
158
+
159
+ Dispatch **`curator-verifier`** (read-only + Bash) with the seed queries + the BEFORE recall snapshot.
160
+ It returns `PASS | FAIL` with evidence: `doctor` clean, knowledge index coherent, **zero duplicate-topic
161
+ knowledge**, **zero topic-as-both-feature-and-knowledge**, statuses reflect reality, taxonomy normalized,
162
+ no dangling wikilinks, **recall not regressed** vs the snapshot.
163
+
164
+ - **FAIL** → route **back to Phase 4**, fix the specific gaps, re-verify. Cap = 3 → ESCALATE.
165
+ - **PASS** → run the **idempotency check**: an immediate second audit must find nothing material to
166
+ change. Residual churn means the conventions weren't reached — treat it as a FAIL and loop. When the
167
+ re-run is clean, the brain is curated.
168
+
169
+ ### Phase 7 — REPORT
170
+
171
+ Summarize what moved / merged / split / re-typed / retired (counts + the notable ones), the recall
172
+ before/after for the seed queries (proving no regression), anything consciously **deferred** (and why),
173
+ and then **offer a sleep** so the freshly-reorganized corpus is consolidated and the index/staleness warm.
174
+
175
+ ## Convergence rules (how the loops end)
176
+
177
+ - Every loop has a hard **iteration cap of 3**. Hitting it means **ESCALATE to the user** — never
178
+ "good enough, the structure's better than it was".
179
+ - Update the TodoWrite count before each loop-back. Past the cap → stop and escalate with specifics.
180
+ - "Curated" is defined by Phase 6 PASS **plus** a clean idempotency re-run — not by the corpus
181
+ looking tidier.
182
+
183
+ ## Red Flags — STOP, you're about to corrupt the brain
184
+
185
+ | Thought | Reality |
186
+ |---|---|
187
+ | "I'll just start moving and merging files." | Plan first, confirm the shape (Phase 3), THEN execute. The curator mutates real content. |
188
+ | "I know the conventions, no need to read them." | Read them at run time (Phase 0). The brain conforms to *today's* shape, which you may be misremembering. |
189
+ | "These two files look similar — I'll delete one." | MERGE folds + repoints + preserves; RETIRE archives. Silent deletion loses signal and dangles wikilinks. |
190
+ | "This task is probably done, bump it to completed." | Reality-based only. Cite the changelog/release/code evidence, or leave it. |
191
+ | "Recall is fine, skip the before/after." | A reorg can drop a relevant doc from reach. Snapshot before, diff after — it's an acceptance criterion. |
192
+ | "Verifier passed, we're done." | Not until the idempotency re-run is clean. Residual churn = conventions not reached. |
193
+ | "It's a feature AND a knowledge file — leave both." | One home per topic. RE-TYPE / fold to the canonical one; the verifier fails this. |
194
+ | "I'll author the whole reorg myself." | The orchestrator dispatches auditors + workers. You synthesize the plan and gate; you don't run every merge by hand. |
195
+
196
+ ## Rationalization table
197
+
198
+ | If you think… | The truth is… | So… |
199
+ |---|---|---|
200
+ | "Auditing every domain is overhead; I'll eyeball it." | One pass over a drifted brain misses cross-cutting dupes and status drift. | Fan out an auditor per domain; merge their findings. |
201
+ | "The user will just approve the plan, skip the gate." | A wrong MERGE/RETIRE is expensive to unwind once files move. | Confirm the shape in Phase 3 before executing. |
202
+ | "Conventions don't change that often, hardcoding is fine." | The point of the curator is to track *current* conventions. Hardcoding makes it stale the day the skill changes. | Read taxonomy vocab + the live skill + soul at run time. |
203
+ | "Verifier will rubber-stamp." | A mis-prompted verifier rubber-stamps. Give it the checklist + the recall snapshot and demand evidence. | Treat FAIL as binding; loop or escalate. |
204
+
205
+ ## Hard rules
206
+
207
+ - **Orchestrator drives sub-agents.** Auditor (intake) → worker (fan-out execute) → verifier (gate).
208
+ You synthesize the plan and gate; you don't run the whole reorg by hand.
209
+ - **Read conventions at run time.** taxonomy vocab + the installed skill + soul define the target shape.
210
+ - **Plan-first, confirm the shape (Phase 3) before executing.** The curator mutates real content.
211
+ - **Preserve signal.** MOVE/MERGE/RETIRE keep content findable and repoint every inbound `[[wikilink]]`.
212
+ Never silent-delete a topic.
213
+ - **One home per topic.** Feature **or** knowledge, never both — the verifier enforces it.
214
+ - **CLI for structure, native edits for prose** — `knowledge move`/`merge`, `tasks status`,
215
+ `features set`; hand-edit only the wording the CLI doesn't own.
216
+ - **Reality-based status.** Bump only what is demonstrably done, with cited evidence.
217
+ - **Recall must not regress.** Snapshot seed queries before; the verifier diffs after.
218
+ - **Caps are hard** (3 per loop). At the cap, escalate — never declare curated.
219
+ - **Done = Phase 6 PASS + a clean idempotency re-run.** Use the `dreamcontext` skill throughout.
220
+
221
+ ## Relationship to other surfaces
222
+
223
+ | Surface | Stage | Relationship |
224
+ |---|---|---|
225
+ | `curator` (this) | Periodic brain refactor | Re-orders an existing brain into the current shape — MOVE/MERGE/SPLIT/RENAME/RE-TYPE/RETIRE. The pass sleep won't do. |
226
+ | `curator-auditor` / `-worker` / `-verifier` | This skill's workers | Audit (findings) → fan-out execute → PASS/FAIL gate. Dispatched at Phases 1 / 4 / 6. |
227
+ | `initializer` | First-run / bootstrap | Builds the brain from raw material. Curator *refactors* an existing one. Use initializer to create, curator to re-shape. |
228
+ | Sleep / consolidation | Ongoing, additive | Sleep polishes + appends conservatively. Curator is the periodic structural refactor sleep deliberately avoids. Offer a sleep *after* a curate (Phase 7). |
229
+ | `goal-skill` | End-to-end build of a goal | The orchestration pattern this skill mirrors (plan→review→implement→validate ≈ audit→confirm→execute→verify). |
230
+
231
+ ## Slash command wiring
232
+
233
+ `/curator` invokes this skill. The natural-language triggers in **When to invoke** also load it.
234
+ (Named `curator`, distinct from `sleep` — sleep consolidates additively; the curator refactors.)