@goondocks/myco 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/README.md +17 -130
  2. package/dist/{agent-run-2NFYMQXW.js → agent-run-EADUYYAS.js} +6 -6
  3. package/dist/{agent-tasks-MEIYLXGN.js → agent-tasks-GC77JXQB.js} +6 -6
  4. package/dist/{chunk-EO2RQW4S.js → chunk-2CKDAFSX.js} +2 -2
  5. package/dist/{chunk-NZI7WBZI.js → chunk-2DF4OZ2D.js} +22 -2
  6. package/dist/chunk-2DF4OZ2D.js.map +1 -0
  7. package/dist/{chunk-OW433Q4C.js → chunk-2LN2BBKA.js} +45 -4
  8. package/dist/chunk-2LN2BBKA.js.map +1 -0
  9. package/dist/{chunk-U7GJTVSX.js → chunk-2OO3BRFK.js} +21 -7
  10. package/dist/chunk-2OO3BRFK.js.map +1 -0
  11. package/dist/{chunk-RAV5YMRU.js → chunk-3TPD6HEF.js} +4 -4
  12. package/dist/{chunk-JMOUFG6Y.js → chunk-44PZCAYS.js} +47 -5
  13. package/dist/chunk-44PZCAYS.js.map +1 -0
  14. package/dist/{chunk-D7TYRPRM.js → chunk-6LQIMRTC.js} +145 -145
  15. package/dist/chunk-6LQIMRTC.js.map +1 -0
  16. package/dist/{chunk-NI23QCHB.js → chunk-AELJ4PS5.js} +5 -5
  17. package/dist/{chunk-BUIR3JWM.js → chunk-CYBC2HZ3.js} +3 -3
  18. package/dist/chunk-EM63ZFKA.js +166 -0
  19. package/dist/chunk-EM63ZFKA.js.map +1 -0
  20. package/dist/{chunk-O3TRN3RC.js → chunk-INWD6AIQ.js} +2 -2
  21. package/dist/{chunk-CML4MCYF.js → chunk-KSXTNYXO.js} +2 -2
  22. package/dist/{chunk-KWTOCJLB.js → chunk-LLJMDXO2.js} +1176 -241
  23. package/dist/chunk-LLJMDXO2.js.map +1 -0
  24. package/dist/{chunk-2V7HR7HB.js → chunk-MDEUXYJG.js} +4 -4
  25. package/dist/{chunk-PFWIPRF6.js → chunk-MS6FDV45.js} +3 -3
  26. package/dist/{chunk-55QEICRO.js → chunk-N77K772N.js} +3 -3
  27. package/dist/{chunk-E4VLWIJC.js → chunk-ODXLRR4U.js} +1 -1
  28. package/dist/{chunk-DLFDBKEV.js → chunk-OZF5EURR.js} +19 -16
  29. package/dist/chunk-OZF5EURR.js.map +1 -0
  30. package/dist/{chunk-IB76KGBY.js → chunk-POEPHBQK.js} +1 -1
  31. package/dist/{chunk-7OYXB2NM.js → chunk-REN37KYI.js} +6 -2
  32. package/dist/chunk-REN37KYI.js.map +1 -0
  33. package/dist/{chunk-JDI4DPWD.js → chunk-RXROZBSK.js} +637 -150
  34. package/dist/chunk-RXROZBSK.js.map +1 -0
  35. package/dist/{chunk-U3J2DDSR.js → chunk-SCI55NKY.js} +2 -2
  36. package/dist/{chunk-GDY63YAW.js → chunk-U6PF3YII.js} +79 -79
  37. package/dist/chunk-U6PF3YII.js.map +1 -0
  38. package/dist/{chunk-FABWUX5G.js → chunk-UVKQ62II.js} +18 -4
  39. package/dist/chunk-UVKQ62II.js.map +1 -0
  40. package/dist/{chunk-VOCGURV7.js → chunk-UW6DGPSV.js} +3 -3
  41. package/dist/{chunk-CKJAWZQE.js → chunk-W4VHC2ES.js} +11 -3
  42. package/dist/chunk-W4VHC2ES.js.map +1 -0
  43. package/dist/{chunk-75AZFBFW.js → chunk-YPWF322W.js} +3 -3
  44. package/dist/{cli-IIMBALPV.js → cli-X7CFP4YD.js} +39 -39
  45. package/dist/{client-VZCUISHZ.js → client-YA33HUFY.js} +4 -4
  46. package/dist/{config-DA4IUVFL.js → config-RFB2DJC6.js} +6 -6
  47. package/dist/{detect-GEM3NVK6.js → detect-BEOIHGBC.js} +5 -5
  48. package/dist/{detect-providers-PSVKXTWE.js → detect-providers-2OQBU4VX.js} +4 -4
  49. package/dist/{doctor-QYD34X7Q.js → doctor-FAH7N66M.js} +11 -11
  50. package/dist/{executor-NSPRTH4M.js → executor-ICTRRUBY.js} +93 -285
  51. package/dist/executor-ICTRRUBY.js.map +1 -0
  52. package/dist/{init-WYYL44KZ.js → init-PTJEOTJV.js} +15 -15
  53. package/dist/{llm-KEDHK3TQ.js → llm-7D2OGDEK.js} +4 -4
  54. package/dist/{loader-Q3P3R4UP.js → loader-O2JFO2UC.js} +6 -6
  55. package/dist/{loader-SKKUMT5C.js → loader-VPE4RCIF.js} +6 -6
  56. package/dist/{main-6PY3ITQ5.js → main-EIKBLOUL.js} +752 -264
  57. package/dist/main-EIKBLOUL.js.map +1 -0
  58. package/dist/{open-HRFMJDQX.js → open-2JCSOLZS.js} +6 -6
  59. package/dist/{post-compact-HT24YMAN.js → post-compact-2HPPWPBI.js} +10 -10
  60. package/dist/{post-tool-use-DENRI5WB.js → post-tool-use-TWBBBABS.js} +9 -9
  61. package/dist/{post-tool-use-failure-A6SNJX42.js → post-tool-use-failure-LIJYR4KL.js} +10 -10
  62. package/dist/{pre-compact-3Q4BALCL.js → pre-compact-II2CMNTG.js} +10 -10
  63. package/dist/{provider-check-AE3L5Z6R.js → provider-check-KEQNQ6LO.js} +4 -4
  64. package/dist/{registry-O2NZLO3V.js → registry-X5FDGYXT.js} +7 -7
  65. package/dist/{remove-YB5A6HY2.js → remove-L5MVYBOY.js} +11 -11
  66. package/dist/{resolution-events-XWYLLDRK.js → resolution-events-MVIZMONR.js} +4 -4
  67. package/dist/{restart-RGDVHELZ.js → restart-VIT3JBD6.js} +7 -7
  68. package/dist/{search-WOHT3G55.js → search-O6BB5MTO.js} +7 -7
  69. package/dist/{server-6SUNYDV7.js → server-O3UPJVBR.js} +258 -173
  70. package/dist/server-O3UPJVBR.js.map +1 -0
  71. package/dist/{session-W3SKRFRV.js → session-5JV3DQIK.js} +8 -8
  72. package/dist/{session-end-OUTY7AFF.js → session-end-PZ2OXBGG.js} +9 -9
  73. package/dist/{session-start-5MB3LFOA.js → session-start-FDGM56BX.js} +22 -17
  74. package/dist/{session-start-5MB3LFOA.js.map → session-start-FDGM56BX.js.map} +1 -1
  75. package/dist/{setup-llm-ZMYGIQX5.js → setup-llm-MQK557BB.js} +10 -10
  76. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
  77. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +10 -0
  78. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +163 -49
  79. package/dist/src/agent/definitions/tasks/skill-generate.yaml +44 -27
  80. package/dist/src/agent/definitions/tasks/skill-survey.yaml +132 -138
  81. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
  82. package/dist/src/cli.js +1 -1
  83. package/dist/src/daemon/main.js +1 -1
  84. package/dist/src/hooks/post-tool-use.js +1 -1
  85. package/dist/src/hooks/session-end.js +1 -1
  86. package/dist/src/hooks/session-start.js +1 -1
  87. package/dist/src/hooks/stop.js +1 -1
  88. package/dist/src/hooks/user-prompt-submit.js +1 -1
  89. package/dist/src/mcp/server.js +1 -1
  90. package/dist/src/symbionts/manifests/codex.yaml +45 -7
  91. package/dist/{stats-DGI6B3HX.js → stats-2STTARTC.js} +11 -11
  92. package/dist/{stop-YGHODSP7.js → stop-WNKCMCGO.js} +9 -9
  93. package/dist/{stop-failure-7IJTPJ6W.js → stop-failure-6GTOBVTN.js} +10 -10
  94. package/dist/{subagent-start-ZBQ5PJB5.js → subagent-start-VJF5YKVX.js} +10 -10
  95. package/dist/{subagent-stop-N2TDQU2D.js → subagent-stop-UW6HMICY.js} +10 -10
  96. package/dist/{task-completed-BDLMRSBB.js → task-completed-U4Q3XXLX.js} +10 -10
  97. package/dist/{team-2ZFGTSIN.js → team-N6TXS2PF.js} +148 -103
  98. package/dist/team-N6TXS2PF.js.map +1 -0
  99. package/dist/ui/assets/{index-DtT9_nlT.js → index-CHIm98OP.js} +48 -48
  100. package/dist/ui/index.html +1 -1
  101. package/dist/{update-STLAN7LR.js → update-ZYCOWKMD.js} +11 -11
  102. package/dist/{user-prompt-submit-4IBFUYQ3.js → user-prompt-submit-SOYL4OWF.js} +15 -12
  103. package/dist/user-prompt-submit-SOYL4OWF.js.map +1 -0
  104. package/dist/{verify-EJYPO7QA.js → verify-P37PQ4YM.js} +8 -8
  105. package/dist/{version-YPBIKH77.js → version-XAWC277D.js} +2 -2
  106. package/package.json +25 -8
  107. package/CONTRIBUTING.md +0 -132
  108. package/dist/chunk-7OYXB2NM.js.map +0 -1
  109. package/dist/chunk-CKJAWZQE.js.map +0 -1
  110. package/dist/chunk-D7TYRPRM.js.map +0 -1
  111. package/dist/chunk-DLFDBKEV.js.map +0 -1
  112. package/dist/chunk-FABWUX5G.js.map +0 -1
  113. package/dist/chunk-GDY63YAW.js.map +0 -1
  114. package/dist/chunk-JDI4DPWD.js.map +0 -1
  115. package/dist/chunk-JMOUFG6Y.js.map +0 -1
  116. package/dist/chunk-KWTOCJLB.js.map +0 -1
  117. package/dist/chunk-NZI7WBZI.js.map +0 -1
  118. package/dist/chunk-OW433Q4C.js.map +0 -1
  119. package/dist/chunk-RJMXDUMA.js +0 -40
  120. package/dist/chunk-RJMXDUMA.js.map +0 -1
  121. package/dist/chunk-U7GJTVSX.js.map +0 -1
  122. package/dist/executor-NSPRTH4M.js.map +0 -1
  123. package/dist/main-6PY3ITQ5.js.map +0 -1
  124. package/dist/server-6SUNYDV7.js.map +0 -1
  125. package/dist/src/worker/package-lock.json +0 -4338
  126. package/dist/src/worker/package.json +0 -22
  127. package/dist/src/worker/src/auth.ts +0 -31
  128. package/dist/src/worker/src/index.ts +0 -470
  129. package/dist/src/worker/src/mcp/auth.ts +0 -65
  130. package/dist/src/worker/src/mcp/server.ts +0 -53
  131. package/dist/src/worker/src/mcp/tools/context.ts +0 -13
  132. package/dist/src/worker/src/mcp/tools/get.ts +0 -15
  133. package/dist/src/worker/src/mcp/tools/graph.ts +0 -35
  134. package/dist/src/worker/src/mcp/tools/search.ts +0 -32
  135. package/dist/src/worker/src/mcp/tools/sessions.ts +0 -24
  136. package/dist/src/worker/src/mcp/tools/skills.ts +0 -16
  137. package/dist/src/worker/src/mcp/tools/team.ts +0 -9
  138. package/dist/src/worker/src/schema.ts +0 -324
  139. package/dist/src/worker/src/search-helpers.ts +0 -70
  140. package/dist/src/worker/tsconfig.json +0 -16
  141. package/dist/src/worker/wrangler.toml +0 -30
  142. package/dist/team-2ZFGTSIN.js.map +0 -1
  143. package/dist/user-prompt-submit-4IBFUYQ3.js.map +0 -1
  144. /package/dist/{agent-run-2NFYMQXW.js.map → agent-run-EADUYYAS.js.map} +0 -0
  145. /package/dist/{agent-tasks-MEIYLXGN.js.map → agent-tasks-GC77JXQB.js.map} +0 -0
  146. /package/dist/{chunk-EO2RQW4S.js.map → chunk-2CKDAFSX.js.map} +0 -0
  147. /package/dist/{chunk-RAV5YMRU.js.map → chunk-3TPD6HEF.js.map} +0 -0
  148. /package/dist/{chunk-NI23QCHB.js.map → chunk-AELJ4PS5.js.map} +0 -0
  149. /package/dist/{chunk-BUIR3JWM.js.map → chunk-CYBC2HZ3.js.map} +0 -0
  150. /package/dist/{chunk-O3TRN3RC.js.map → chunk-INWD6AIQ.js.map} +0 -0
  151. /package/dist/{chunk-CML4MCYF.js.map → chunk-KSXTNYXO.js.map} +0 -0
  152. /package/dist/{chunk-2V7HR7HB.js.map → chunk-MDEUXYJG.js.map} +0 -0
  153. /package/dist/{chunk-PFWIPRF6.js.map → chunk-MS6FDV45.js.map} +0 -0
  154. /package/dist/{chunk-55QEICRO.js.map → chunk-N77K772N.js.map} +0 -0
  155. /package/dist/{chunk-E4VLWIJC.js.map → chunk-ODXLRR4U.js.map} +0 -0
  156. /package/dist/{chunk-IB76KGBY.js.map → chunk-POEPHBQK.js.map} +0 -0
  157. /package/dist/{chunk-U3J2DDSR.js.map → chunk-SCI55NKY.js.map} +0 -0
  158. /package/dist/{chunk-VOCGURV7.js.map → chunk-UW6DGPSV.js.map} +0 -0
  159. /package/dist/{chunk-75AZFBFW.js.map → chunk-YPWF322W.js.map} +0 -0
  160. /package/dist/{cli-IIMBALPV.js.map → cli-X7CFP4YD.js.map} +0 -0
  161. /package/dist/{client-VZCUISHZ.js.map → client-YA33HUFY.js.map} +0 -0
  162. /package/dist/{config-DA4IUVFL.js.map → config-RFB2DJC6.js.map} +0 -0
  163. /package/dist/{detect-GEM3NVK6.js.map → detect-BEOIHGBC.js.map} +0 -0
  164. /package/dist/{detect-providers-PSVKXTWE.js.map → detect-providers-2OQBU4VX.js.map} +0 -0
  165. /package/dist/{doctor-QYD34X7Q.js.map → doctor-FAH7N66M.js.map} +0 -0
  166. /package/dist/{init-WYYL44KZ.js.map → init-PTJEOTJV.js.map} +0 -0
  167. /package/dist/{llm-KEDHK3TQ.js.map → llm-7D2OGDEK.js.map} +0 -0
  168. /package/dist/{loader-Q3P3R4UP.js.map → loader-O2JFO2UC.js.map} +0 -0
  169. /package/dist/{loader-SKKUMT5C.js.map → loader-VPE4RCIF.js.map} +0 -0
  170. /package/dist/{open-HRFMJDQX.js.map → open-2JCSOLZS.js.map} +0 -0
  171. /package/dist/{post-compact-HT24YMAN.js.map → post-compact-2HPPWPBI.js.map} +0 -0
  172. /package/dist/{post-tool-use-DENRI5WB.js.map → post-tool-use-TWBBBABS.js.map} +0 -0
  173. /package/dist/{post-tool-use-failure-A6SNJX42.js.map → post-tool-use-failure-LIJYR4KL.js.map} +0 -0
  174. /package/dist/{pre-compact-3Q4BALCL.js.map → pre-compact-II2CMNTG.js.map} +0 -0
  175. /package/dist/{provider-check-AE3L5Z6R.js.map → provider-check-KEQNQ6LO.js.map} +0 -0
  176. /package/dist/{registry-O2NZLO3V.js.map → registry-X5FDGYXT.js.map} +0 -0
  177. /package/dist/{remove-YB5A6HY2.js.map → remove-L5MVYBOY.js.map} +0 -0
  178. /package/dist/{resolution-events-XWYLLDRK.js.map → resolution-events-MVIZMONR.js.map} +0 -0
  179. /package/dist/{restart-RGDVHELZ.js.map → restart-VIT3JBD6.js.map} +0 -0
  180. /package/dist/{search-WOHT3G55.js.map → search-O6BB5MTO.js.map} +0 -0
  181. /package/dist/{session-W3SKRFRV.js.map → session-5JV3DQIK.js.map} +0 -0
  182. /package/dist/{session-end-OUTY7AFF.js.map → session-end-PZ2OXBGG.js.map} +0 -0
  183. /package/dist/{setup-llm-ZMYGIQX5.js.map → setup-llm-MQK557BB.js.map} +0 -0
  184. /package/dist/{stats-DGI6B3HX.js.map → stats-2STTARTC.js.map} +0 -0
  185. /package/dist/{stop-YGHODSP7.js.map → stop-WNKCMCGO.js.map} +0 -0
  186. /package/dist/{stop-failure-7IJTPJ6W.js.map → stop-failure-6GTOBVTN.js.map} +0 -0
  187. /package/dist/{subagent-start-ZBQ5PJB5.js.map → subagent-start-VJF5YKVX.js.map} +0 -0
  188. /package/dist/{subagent-stop-N2TDQU2D.js.map → subagent-stop-UW6HMICY.js.map} +0 -0
  189. /package/dist/{task-completed-BDLMRSBB.js.map → task-completed-U4Q3XXLX.js.map} +0 -0
  190. /package/dist/{update-STLAN7LR.js.map → update-ZYCOWKMD.js.map} +0 -0
  191. /package/dist/{verify-EJYPO7QA.js.map → verify-P37PQ4YM.js.map} +0 -0
  192. /package/dist/{version-YPBIKH77.js.map → version-XAWC277D.js.map} +0 -0
@@ -33,34 +33,40 @@ phases:
33
33
  ---
34
34
  name: myco:kebab-case-name
35
35
  description: |
36
- One paragraph that serves as the PRIMARY triggering mechanism.
37
- Be explicit about when this skill activates. Include concrete
38
- keywords, file names, and scenarios. Be somewhat pushy to
39
- counter undertriggering — include "even if the user doesn't
40
- explicitly ask for [topic]" language when appropriate.
36
+ One paragraph serving as the PRIMARY triggering mechanism.
37
+ Cover the full procedural domain mention all the major
38
+ procedures this skill covers. Be explicit about when this
39
+ activates. Include "even if the user doesn't explicitly
40
+ ask for [topic]" language when appropriate.
41
41
  managed_by: myco
42
42
  user-invocable: true
43
43
  allowed-tools: Read, Edit, Write, Bash, Grep, Glob
44
44
  ---
45
45
 
46
- # Skill Title
46
+ # Domain Title
47
47
 
48
- Brief context paragraph (2-3 sentences) explaining what this
49
- procedure accomplishes and when you'd use it.
48
+ Brief context paragraph (2-3 sentences) explaining the
49
+ procedural domain and when you'd use this skill.
50
50
 
51
51
  ## Prerequisites
52
52
 
53
- What must be true before starting.
53
+ What must be true before starting any procedure in this domain.
54
54
 
55
- ## Steps
55
+ ## Procedure A: [Name]
56
56
 
57
- Numbered, concrete steps with file paths and code examples.
58
- Each step should reference specific files in this project.
57
+ Steps for the first major procedure in this domain.
59
58
 
60
- ## Common Pitfalls
59
+ ## Procedure B: [Name]
61
60
 
62
- Inline with the steps where possible, or as a short section
63
- at the end for cross-cutting gotchas.
61
+ Steps for the second major procedure.
62
+
63
+ ## Procedure C: [Name]
64
+
65
+ Steps for the third major procedure.
66
+
67
+ ## Cross-Cutting Gotchas
68
+
69
+ Pitfalls that span multiple procedures in this domain.
64
70
  ```
65
71
 
66
72
  ## Frontmatter Fields
@@ -79,21 +85,27 @@ phases:
79
85
 
80
86
  ## Writing Principles
81
87
 
88
+ - **This candidate represents a procedural domain** — a family
89
+ of related tasks that share prerequisite knowledge. The skill
90
+ should cover the full domain, not just a single procedure.
91
+ - **A well-scoped skill has 3-6 major sections**, each describing
92
+ a distinct procedure within the domain. If the candidate maps
93
+ to fewer than 2 sections, note this in the rationale — it may
94
+ be too narrow.
82
95
  - **Explain reasoning, not rigid rules.** "Because X, do Y"
83
- is better than "ALWAYS do Y." Use theory of mind — the agent
84
- using this skill is smart enough to understand WHY.
85
- - **Stay under 500 lines.** Be concise but complete.
86
- - **Use concrete file paths** from this project, not generic examples.
96
+ is better than "ALWAYS do Y." The agent using this skill
97
+ understands WHY.
98
+ - **Stay under 800 lines.** Be concise but complete.
99
+ - **Use concrete file paths** from this project.
87
100
  - **Include code patterns** where they help (inline code blocks).
88
101
  - **Include examples** — show input/output or before/after where
89
102
  it makes the procedure clearer.
90
- - **Reference gotchas inline** where the developer would encounter
91
- them, not in a separate section.
103
+ - **Reference gotchas inline** where the developer would
104
+ encounter them, not in a separate section.
92
105
  - **The description is the trigger.** An agent reading just the
93
- description should know whether this skill applies to their task.
106
+ description should know whether this skill applies.
94
107
  - **Be general enough to survive change.** The skill should teach
95
- the pattern, not just document the current state. If a file path
96
- changes, the procedure should still make sense.
108
+ the pattern, not just document the current state.
97
109
 
98
110
  ## Tool Call
99
111
 
@@ -143,14 +155,19 @@ phases:
143
155
  function names, and code patterns from this project?
144
156
  Generic advice ("add a config file") is not enough.
145
157
 
146
- 4. **Length:** Under 500 lines?
158
+ 4. **Length:** Under 800 lines?
159
+
160
+ 5. **Domain scope:** Does this skill cover a procedural domain
161
+ (multiple related procedures as sections) or just a single
162
+ procedure? If single, flag as potentially too narrow. Count
163
+ the ## headings — expect 3-6 for a well-scoped domain skill.
147
164
 
148
- 5. **Conflicts:** Does it overlap with existing skills?
165
+ 6. **Conflicts:** Does it overlap with existing skills?
149
166
  Use vault_skill_records (action: list) to check. The
150
167
  staging path's dedup gate already ran on your description;
151
168
  this is a sanity check on the procedural content itself.
152
169
 
153
- 6. **Accuracy:** Spot-check 2-3 specific claims against the
170
+ 7. **Accuracy:** Spot-check 2-3 specific claims against the
154
171
  vault. Use vault_search_fts to verify file paths and
155
172
  function names mentioned in the skill.
156
173
 
@@ -1,15 +1,16 @@
1
1
  name: skill-survey
2
2
  displayName: Skill Candidate Survey
3
3
  description: >-
4
- Analyze vault knowledge for procedural skill candidates. Identifies
5
- clusters of related sessions, spores, and plans that describe how
6
- to accomplish tasks in this project.
4
+ Analyze vault knowledge for procedural domain candidates. Identifies
5
+ broad categories of recurring developer work not individual micro-
6
+ procedures that warrant guided skill context.
7
7
  agent: myco-agent
8
8
  prompt: >-
9
- Survey the vault knowledge graph for procedural skill candidates.
9
+ Survey the vault knowledge graph for procedural domain candidates.
10
+ The instruction contains pre-assembled vault context.
10
11
  isDefault: false
11
12
  model: claude-sonnet-4-6
12
- maxTurns: 65
13
+ maxTurns: 35
13
14
  timeoutSeconds: 600
14
15
  schedule:
15
16
  enabled: true
@@ -17,167 +18,160 @@ schedule:
17
18
  runIn:
18
19
  - idle
19
20
  phases:
20
- - name: explore-spores
21
+ - name: explore
21
22
  prompt: |
22
- Identify procedural patterns from spores and entities.
23
- You are one of three parallel exploration phases — focus only on spores.
24
- Budget is tightbe efficient, not exhaustive.
23
+ The instruction contains pre-assembled vault context: digest,
24
+ recent wisdom spores, decisions, gotchas, sessions, and the
25
+ current skill inventory. Read it carefully this is your
26
+ primary input.
25
27
 
26
- 1. Read the digest (vault_read_digest) for a high-level overview.
27
- This gives you the landscape in one call.
28
+ Your goal: identify PROCEDURAL DOMAINS broad categories of
29
+ recurring work where a developer benefits from guided context.
28
30
 
29
- 2. Query wisdom spores (vault_spores, observation_type: wisdom).
30
- These are highest signal — synthesized from multiple sessions.
31
+ ## What is a procedural domain?
31
32
 
32
- 3. Query decisions and gotchas (vault_spores, limit 30 each).
33
- One page per type is sufficient — don't paginate exhaustively.
33
+ A domain groups related procedures that share prerequisite
34
+ knowledge. Think "extending the daemon infrastructure" (covering
35
+ PowerManager jobs, MCP tools, config writes, notification
36
+ wiring) — NOT "registering a PowerManager job" alone.
34
37
 
35
- 4. Check vault_entities for high-mention components.
38
+ Good domain examples:
39
+ - "Vault schema and data layer extension" (migrations, tables,
40
+ queries, FTS indexes, constants)
41
+ - "Agent pipeline task authoring" (YAML anatomy, phases,
42
+ scheduling, parameter injection, fault tolerance)
43
+ - "Symbiont integration lifecycle" (manifests, hooks, config
44
+ directories, capture rules, installer registration)
36
45
 
37
- Group findings by procedural topic ("how to do X").
38
- Stop when you have a clear picture — diminishing returns
39
- from additional queries waste turns.
40
- tools:
41
- - vault_spores
42
- - vault_entities
43
- - vault_edges
44
- - vault_read_digest
45
- maxTurns: 15
46
- required: true
47
- readOnly: true
46
+ Bad examples (too narrow these are SECTIONS within a domain):
47
+ - "How to register a PowerManager job"
48
+ - "Adding an FTS5 index"
49
+ - "Writing a symbiont capture rule"
48
50
 
49
- - name: explore-sessions
50
- prompt: |
51
- Identify procedural workflows from session history.
52
- You are one of three parallel exploration phases — focus only on sessions.
53
- Budget is tight — be efficient, not exhaustive.
51
+ ## Scale guidance
54
52
 
55
- 1. List recent sessions (vault_sessions, limit 20). Read summaries
56
- to identify multi-step workflows and recurring implementation patterns.
53
+ 20-30 broad skills for a complex project is the right order
54
+ of magnitude. If a topic would be a section heading within a
55
+ broader skill, it is not its own candidate.
57
56
 
58
- 2. Do 2-3 targeted FTS searches for procedural keywords:
59
- vault_search_fts with queries like "migration step", "configure install",
60
- "refactor debug". Combine related terms in ONE query rather than
61
- searching each keyword separately.
57
+ ## Process
62
58
 
63
- Group findings by procedural topic ("how to do X").
64
- Stop when you have a clear picture — you don't need to search
65
- every possible keyword.
66
- tools:
67
- - vault_sessions
68
- - vault_search_fts
69
- maxTurns: 10
70
- required: true
71
- readOnly: true
59
+ 1. Read the pre-assembled context for orientation.
72
60
 
73
- - name: explore-plans
74
- prompt: |
75
- Identify procedures from plans and artifacts.
76
- You are one of three parallel exploration phases — focus only on plans.
77
- Budget is tight — be efficient, not exhaustive.
61
+ 2. Use vault tools for TARGETED follow-up on promising
62
+ clusters. The baseline gives you direction — follow threads
63
+ that suggest a procedural domain exists.
78
64
 
79
- Plans contain explicit step-by-step procedures and design decisions.
80
- They are often the most directly skill-ready content.
65
+ Good follow-up queries:
66
+ - vault_search_fts to find additional sessions touching
67
+ a domain you spotted in the digest
68
+ - vault_spores to read full content of high-signal spores
69
+ summarized in the baseline
70
+ - vault_entities for components with high mention counts
71
+ that might anchor a domain
81
72
 
82
- 1. Use vault_search_semantic with 2-3 broad queries to find plans:
83
- - "implementation plan design architecture"
84
- - "migration setup configuration deployment"
85
- Combine related concepts in each query. Do NOT search each
86
- keyword separately.
73
+ Do NOT exhaustively paginate or search every keyword.
74
+ You have ~12 tool calls — use them purposefully.
87
75
 
88
- 2. If semantic search returns thin results, do ONE targeted FTS
89
- search for a specific procedural term.
76
+ 3. Group findings into candidate domains. For each domain,
77
+ note: the core theme, which procedures it covers, and
78
+ which source items provide evidence.
90
79
 
91
- Group findings by procedural topic ("how to do X").
92
- Stop when you have coverage — more queries have diminishing returns.
80
+ Store your domain clusters in working notes for the next phase.
93
81
  tools:
94
- - vault_search_semantic
82
+ - vault_spores
83
+ - vault_entities
84
+ - vault_edges
85
+ - vault_sessions
95
86
  - vault_search_fts
96
- maxTurns: 22
87
+ - vault_search_semantic
88
+ maxTurns: 15
97
89
  required: true
98
90
  readOnly: true
99
91
 
100
- - name: evaluate
92
+ - name: synthesize-evaluate
93
+ model: claude-sonnet-4-6
101
94
  prompt: |
102
- Three parallel exploration phases have completed one explored
103
- spores and entities, one explored sessions, one explored plans.
104
- Their findings are in the prior context.
95
+ The explore phase identified procedural domain clusters from
96
+ the vault. Now evaluate each and create candidates for domains
97
+ that pass all criteria.
105
98
 
106
- BEFORE creating any candidates, you MUST load the dedup context:
107
- 1. vault_skill_records (action: list) — all active skills on disk
99
+ BEFORE creating any candidates, load the dedup context:
100
+ 1. vault_skill_records (action: list) — all active skills
108
101
  2. vault_skill_candidates (action: list) — all existing candidates
109
- Keep both lists for reference throughout this phase.
110
-
111
- For each procedural cluster identified, evaluate ALL of these
112
- criteria. A candidate must pass EVERY one:
113
-
114
- 1. PROCEDURE TEST: Is this "how to do X in this project"?
115
- "What is X" or "X exists" is knowledge, not a skill. Skip it.
116
-
117
- 2. REPEATABILITY TEST: Will someone need to do this again?
118
- Skills are repeatable how-to's for recurring tasks — things
119
- a developer will do more than once as the project grows.
120
- One-time fixes, bug patches, version-specific workarounds,
121
- and already-applied migration steps are NOT skills. They are
122
- vault knowledge (spores/wisdom) that should stay as spores.
123
- Ask: "if a new contributor joined tomorrow, would they ever
124
- need to follow this procedure?" If the answer is "no, it was
125
- done once and the result is permanent," it is not a skill.
126
- Examples of SKILLS: adding a new symbiont, creating a DB
127
- migration, registering an MCP tool, authoring an agent task.
128
- NOT skills: fixing a specific bug, applying a one-off schema
129
- change, adapting to a framework update, addressing a one-off
130
- behavioral change in a dependency.
131
-
132
- 3. CROSS-SESSION EVIDENCE: Knowledge from 2+ sessions, 3+ source
133
- items across sessions, spores, and plans.
134
-
135
- 4. DEDUPLICATION (mandatory failures here create real problems):
136
- Check BOTH lists from step 0 above.
137
- - If an active skill record's name or description covers the
138
- same procedure, do NOT create a duplicate. Skip it entirely.
139
- - If a non-dismissed candidate covers the same topic, UPDATE
140
- that candidate with new evidence instead of creating a new one.
141
- - If a generated/dismissed candidate covered this, it was
142
- already handled. Do not re-create it.
143
-
144
- 5. CONFIDENCE SCORE (0.0-1.0):
145
- - Knowledge density (more sources = higher)
102
+ Keep both lists for reference.
103
+
104
+ ## Evaluation criteria
105
+
106
+ Each candidate must pass ALL of these at the DOMAIN level:
107
+
108
+ 1. PROCEDURE TEST: Does this domain describe "how to do a
109
+ family of related tasks in this project"? A domain about
110
+ "what X is" or "X exists" is knowledge, not a skill.
111
+
112
+ 2. REPEATABILITY TEST: Will developers need these procedures
113
+ again as the project grows? Domains covering extension
114
+ points (adding new X, extending Y) are strong candidates.
115
+ One-time fixes and bug patches are NOT skills.
116
+
117
+ 3. BREADTH TEST: Does this domain cover 2+ distinct procedures
118
+ that share prerequisite knowledge? A single procedure is
119
+ too narrow it should be a section within a broader domain.
120
+ If you can't imagine 3+ major section headings, it's not
121
+ broad enough.
122
+
123
+ 4. CROSS-SESSION EVIDENCE: Knowledge from 2+ sessions and 3+
124
+ source items (spores, sessions, plans).
125
+
126
+ 5. DEDUPLICATION: Check BOTH lists from step 0.
127
+ - If an active skill already covers this domain, skip.
128
+ - If the domain SUBSUMES existing narrow skills (the domain
129
+ is broader and the narrow skills are sections within it),
130
+ create the candidate with `supersedes` listing the narrow
131
+ skill names as a JSON array. The dedup gate exempts
132
+ superseded skills from vocabulary overlap checks.
133
+ - If a non-dismissed candidate covers the same domain,
134
+ UPDATE it with new evidence instead of creating.
135
+ - Dismissed candidates: the gate allows creation with a
136
+ warning. If the dismissed topic is a narrow subset of
137
+ your broader domain, proceed.
138
+
139
+ 6. CONFIDENCE SCORE (0.0-1.0):
140
+ - Domain breadth (more procedures covered = higher)
146
141
  - Cross-session evidence (wider = higher)
147
- - Presence of wisdom spores (higher quality signal)
148
- - Presence of plans with step-by-step procedures (higher)
149
-
150
- For each valid candidate, use vault_skill_candidates (action: create)
151
- with topic, rationale, confidence, and source_ids (JSON array of
152
- {id, type} objects referencing the spores, sessions, and plans).
153
-
154
- IMPORTANT: Write the rationale field as markdown. Include these
155
- sections in every rationale:
156
- - **Procedure verdict**: PASS/FAIL
157
- - **Repeatability verdict**: PASS/FAIL with justification
158
- - **Cross-session evidence**: session IDs and source count
159
- - **Existing coverage**: list the skills/candidates you checked
160
- and why this is genuinely new (not "NONE" — name what you checked)
161
- Use **bold** for verdicts, numbered lists for steps, `code` for
162
- file paths and function names. The rationale is displayed directly
163
- to the user in the dashboard.
164
-
165
- If an existing candidate has new evidence, use vault_skill_candidates
166
- (action: update) to increase confidence and add source_ids.
167
-
168
- Dismiss candidates whose underlying knowledge has been superseded
169
- (action: update, status: dismissed).
170
-
171
- Report a summary of candidates created, updated, and dismissed
172
- using vault_report.
142
+ - Wisdom spore presence (higher quality signal)
143
+ - Plan presence (step-by-step procedures = higher)
144
+
145
+ ## Creating candidates
146
+
147
+ Use vault_skill_candidates (action: create) with:
148
+ - topic: the domain name (e.g., "Vault Schema and Data Layer Extension")
149
+ - rationale: markdown with these sections:
150
+ - **Domain scope**: what procedures this covers (bulleted list)
151
+ - **Procedure verdict**: PASS/FAIL
152
+ - **Repeatability verdict**: PASS/FAIL with justification
153
+ - **Breadth verdict**: PASS/FAIL with section count estimate
154
+ - **Cross-session evidence**: session IDs and source count
155
+ - **Existing coverage**: skills/candidates checked and why this
156
+ is new or broader (name what you checked, not "NONE")
157
+ - **Supersedes**: which existing narrow skills this replaces
158
+ (if any)
159
+ - confidence: 0.0-1.0
160
+ - source_ids: JSON array of {id, type} objects
161
+ - supersedes: JSON array of skill names this replaces (or omit)
162
+
163
+ If an existing candidate has new evidence, use action: update.
164
+
165
+ Dismiss candidates whose underlying knowledge has been
166
+ superseded (action: update, status: dismissed).
167
+
168
+ Report a summary via vault_report.
173
169
  tools:
174
170
  - vault_skill_candidates
175
171
  - vault_skill_records
176
172
  - vault_set_state
177
173
  - vault_report
178
- maxTurns: 12
174
+ maxTurns: 15
179
175
  required: true
180
176
  dependsOn:
181
- - explore-spores
182
- - explore-sessions
183
- - explore-plans
177
+ - explore
@@ -13,7 +13,7 @@ description: >
13
13
  Records resolution events for audit trail.
14
14
  agent: myco-agent
15
15
  isDefault: false
16
- model: claude-sonnet-4-6
16
+ model: claude-haiku-4-5-20251001
17
17
  maxTurns: 30
18
18
  timeoutSeconds: 300
19
19
 
package/dist/src/cli.js CHANGED
@@ -2,5 +2,5 @@
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
3
 
4
4
  // src/entries/cli.ts
5
- await import("../cli-IIMBALPV.js");
5
+ await import("../cli-X7CFP4YD.js");
6
6
  //# sourceMappingURL=cli.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/daemon.ts
4
- var { main } = await import("../../main-6PY3ITQ5.js");
4
+ var { main } = await import("../../main-EIKBLOUL.js");
5
5
  await main();
6
6
  //# sourceMappingURL=main.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/post-tool-use.ts
4
- var { main } = await import("../../post-tool-use-DENRI5WB.js");
4
+ var { main } = await import("../../post-tool-use-TWBBBABS.js");
5
5
  await main();
6
6
  //# sourceMappingURL=post-tool-use.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-end.ts
4
- var { main } = await import("../../session-end-OUTY7AFF.js");
4
+ var { main } = await import("../../session-end-PZ2OXBGG.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-end.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-start.ts
4
- var { main } = await import("../../session-start-5MB3LFOA.js");
4
+ var { main } = await import("../../session-start-FDGM56BX.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-start.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/stop.ts
4
- var { main } = await import("../../stop-YGHODSP7.js");
4
+ var { main } = await import("../../stop-WNKCMCGO.js");
5
5
  await main();
6
6
  //# sourceMappingURL=stop.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/user-prompt-submit.ts
4
- var { main } = await import("../../user-prompt-submit-4IBFUYQ3.js");
4
+ var { main } = await import("../../user-prompt-submit-SOYL4OWF.js");
5
5
  await main();
6
6
  //# sourceMappingURL=user-prompt-submit.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/mcp-server.ts
4
- var { main } = await import("../../server-6SUNYDV7.js");
4
+ var { main } = await import("../../server-O3UPJVBR.js");
5
5
  await main();
6
6
  //# sourceMappingURL=server.js.map
@@ -11,6 +11,8 @@ hookFields:
11
11
  lastResponse: last_assistant_message
12
12
  capture:
13
13
  planDirs: []
14
+ planTags:
15
+ - proposed_plan
14
16
  rules:
15
17
  # Ephemeral sub-invocation filter (structural, two-layer defense).
16
18
  #
@@ -51,13 +53,49 @@ capture:
51
53
  action: drop
52
54
  reason: ephemeral-sub-invocation
53
55
 
54
- # NOTE: the VS Code Codex extension wraps user prompts with an IDE
55
- # context preamble (`# Context from my IDE setup:` … `## My request
56
- # for Codex:`). Stripping that belongs in a follow-up that keys on
57
- # the transcript's `session_meta.payload.originator == "codex_vscode"`
58
- # signal rather than matching preamble text, per Chris's correctness
59
- # bar against fragile text matching. Leaving unfiltered for now —
60
- # session data is preserved, just shown with the wrapper.
56
+ # Layer 3 sub-agent thread spawn filter (structural).
57
+ #
58
+ # Codex spawns sub-agents (thread_spawn) for code review, testing,
59
+ # etc. These write real transcript files but are NOT user-initiated
60
+ # sessions. Their session_meta has:
61
+ # "source": {"subagent": {"thread_spawn": {...}}}
62
+ # while user sessions have "source": "vscode" or similar strings.
63
+ #
64
+ # This condition reads the transcript's first JSON line and checks
65
+ # the dot-path field — a structural signal that won't drift.
66
+ - event: session_start
67
+ scope: this_agent
68
+ when:
69
+ transcript_meta_field_exists: source.subagent
70
+ action: drop
71
+ reason: subagent-thread-spawn
72
+
73
+ # Layer 4 — safety net for sub-agent prompts that slip past
74
+ # SessionStart (e.g. transcript not yet flushed).
75
+ - event: user_prompt
76
+ scope: this_agent
77
+ when:
78
+ transcript_meta_field_exists: source.subagent
79
+ action: drop
80
+ reason: subagent-thread-spawn
81
+
82
+ # Codex Desktop wraps user prompts with a file-mention preamble when
83
+ # screenshots or files are attached:
84
+ # "# Files mentioned by the user:\n## <filename>: <path>\n## My request for Codex:\n<actual prompt>"
85
+ # Strip the preamble so the captured prompt contains only the user's text.
86
+ - event: user_prompt
87
+ scope: this_agent
88
+ when:
89
+ prompt_contains: "## My request for Codex:"
90
+ action: rewrite_prompt
91
+ extract_after: "## My request for Codex:\n"
92
+ reason: codex-desktop-file-preamble
93
+
94
+ # NOTE: the VS Code Codex extension uses a different preamble
95
+ # (`# Context from my IDE setup:` … `## My request for Codex:`).
96
+ # Keying on the shared `## My request for Codex:` marker above
97
+ # should handle both Desktop and VS Code variants. If the VS Code
98
+ # preamble diverges, add a separate rule keyed on its specific marker.
61
99
  registration:
62
100
  hooksTarget: .codex/hooks.json
63
101
  mcpTarget: .codex/config.toml
@@ -1,23 +1,23 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  gatherStats
4
- } from "./chunk-DLFDBKEV.js";
4
+ } from "./chunk-OZF5EURR.js";
5
5
  import {
6
6
  initVaultDb
7
- } from "./chunk-55QEICRO.js";
7
+ } from "./chunk-N77K772N.js";
8
8
  import "./chunk-SAKJMNSR.js";
9
9
  import "./chunk-WYOE4IAX.js";
10
- import "./chunk-CML4MCYF.js";
11
- import "./chunk-2V7HR7HB.js";
10
+ import "./chunk-KSXTNYXO.js";
11
+ import "./chunk-MDEUXYJG.js";
12
12
  import "./chunk-MYX5NCRH.js";
13
- import "./chunk-BUIR3JWM.js";
14
- import "./chunk-EO2RQW4S.js";
13
+ import "./chunk-CYBC2HZ3.js";
14
+ import "./chunk-2CKDAFSX.js";
15
15
  import "./chunk-LPUQPDC2.js";
16
- import "./chunk-CKJAWZQE.js";
16
+ import "./chunk-W4VHC2ES.js";
17
17
  import "./chunk-E7NUADTQ.js";
18
- import "./chunk-D7TYRPRM.js";
19
- import "./chunk-E4VLWIJC.js";
20
- import "./chunk-GDY63YAW.js";
18
+ import "./chunk-6LQIMRTC.js";
19
+ import "./chunk-ODXLRR4U.js";
20
+ import "./chunk-U6PF3YII.js";
21
21
  import "./chunk-PZUWP5VK.js";
22
22
 
23
23
  // src/cli/stats.ts
@@ -92,4 +92,4 @@ function formatUptime(seconds) {
92
92
  export {
93
93
  run
94
94
  };
95
- //# sourceMappingURL=stats-DGI6B3HX.js.map
95
+ //# sourceMappingURL=stats-2STTARTC.js.map