@goondocks/myco 0.17.2 → 0.18.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 (196) hide show
  1. package/README.md +14 -22
  2. package/bin/myco-run +15 -2
  3. package/dist/{agent-run-7AYHXIEF.js → agent-run-I4O2K2CK.js} +7 -7
  4. package/dist/{agent-tasks-UUIFKBD4.js → agent-tasks-UOW5BQIB.js} +7 -7
  5. package/dist/{chunk-XD3NEN3Q.js → chunk-2V7HR7HB.js} +2 -2
  6. package/dist/chunk-44PZCAYS.js +107 -0
  7. package/dist/chunk-44PZCAYS.js.map +1 -0
  8. package/dist/{chunk-DT42247G.js → chunk-75AZFBFW.js} +3 -3
  9. package/dist/{chunk-RMJPQZGF.js → chunk-C3EGL5JX.js} +755 -266
  10. package/dist/chunk-C3EGL5JX.js.map +1 -0
  11. package/dist/{chunk-7DAH5GLC.js → chunk-CKJAWZQE.js} +5 -1
  12. package/dist/chunk-CKJAWZQE.js.map +1 -0
  13. package/dist/{chunk-ML6GTPZU.js → chunk-CML4MCYF.js} +2 -2
  14. package/dist/{chunk-UTLWSKDV.js → chunk-CURS2TNP.js} +45 -4
  15. package/dist/chunk-CURS2TNP.js.map +1 -0
  16. package/dist/{chunk-EBIYONNZ.js → chunk-DPSLJ242.js} +34 -2
  17. package/dist/chunk-DPSLJ242.js.map +1 -0
  18. package/dist/{chunk-BZDZORVP.js → chunk-LSP5HYOO.js} +19 -16
  19. package/dist/chunk-LSP5HYOO.js.map +1 -0
  20. package/dist/{chunk-NUSTG3BH.js → chunk-N75GMQGA.js} +3 -3
  21. package/dist/{chunk-F6C4IC6R.js → chunk-NI23QCHB.js} +3 -3
  22. package/dist/{chunk-C3C5QVLK.js → chunk-O3TRN3RC.js} +2 -2
  23. package/dist/{chunk-3NCVCGUZ.js → chunk-RAV5YMRU.js} +3 -3
  24. package/dist/{chunk-25WHTV4N.js → chunk-RIDSOQDR.js} +21 -7
  25. package/dist/chunk-RIDSOQDR.js.map +1 -0
  26. package/dist/{chunk-HPZ7YAMA.js → chunk-TCSVDQF5.js} +1130 -195
  27. package/dist/chunk-TCSVDQF5.js.map +1 -0
  28. package/dist/{chunk-CTF7TQMJ.js → chunk-TLK46KKD.js} +14 -4
  29. package/dist/chunk-TLK46KKD.js.map +1 -0
  30. package/dist/{chunk-IGBHLFV5.js → chunk-TOER6RNC.js} +22 -2
  31. package/dist/chunk-TOER6RNC.js.map +1 -0
  32. package/dist/{chunk-ZSJPI5MS.js → chunk-TZAXQKO6.js} +6 -2
  33. package/dist/chunk-TZAXQKO6.js.map +1 -0
  34. package/dist/{chunk-RKPTMHED.js → chunk-U3J2DDSR.js} +2 -2
  35. package/dist/{chunk-SI5BBQAT.js → chunk-W7WENJ6F.js} +2 -2
  36. package/dist/{chunk-VVGZL2HX.js → chunk-WYOE4IAX.js} +153 -15
  37. package/dist/{chunk-VVGZL2HX.js.map → chunk-WYOE4IAX.js.map} +1 -1
  38. package/dist/{chunk-XZWFMMJR.js → chunk-XWOQL4XN.js} +3 -3
  39. package/dist/{chunk-5ZISXCDC.js → chunk-YZPI2Y3E.js} +39 -5
  40. package/dist/chunk-YZPI2Y3E.js.map +1 -0
  41. package/dist/{cli-WJVYP2QT.js → cli-D3TJYJ2U.js} +40 -40
  42. package/dist/{client-LZ3ZR4HC.js → client-4LLEXLVK.js} +4 -4
  43. package/dist/{config-ZQIMG3FB.js → config-DA4IUVFL.js} +3 -3
  44. package/dist/{detect-NJ2OREDP.js → detect-SZ2KDUF4.js} +2 -2
  45. package/dist/{detect-providers-C64L3QET.js → detect-providers-PSVKXTWE.js} +4 -4
  46. package/dist/{doctor-XEPBNHM3.js → doctor-KCTXPX5D.js} +12 -12
  47. package/dist/{executor-NXKJU5KW.js → executor-UYIZC3L5.js} +93 -285
  48. package/dist/executor-UYIZC3L5.js.map +1 -0
  49. package/dist/{init-BHVQAQ27.js → init-QFNBKKDC.js} +13 -13
  50. package/dist/{installer-45ZLP2RP.js → installer-BWJED3ED.js} +2 -2
  51. package/dist/{llm-KTD6SR55.js → llm-SMA5ZEAW.js} +4 -4
  52. package/dist/{loader-SHRKUKOS.js → loader-Q3P3R4UP.js} +3 -3
  53. package/dist/{loader-NEX3UF6U.js → loader-SKKUMT5C.js} +3 -3
  54. package/dist/{main-YFVBIRRK.js → main-5THODR77.js} +751 -257
  55. package/dist/main-5THODR77.js.map +1 -0
  56. package/dist/{open-2U7ZRGA3.js → open-7737CSPN.js} +7 -7
  57. package/dist/{post-compact-QIBMEWL3.js → post-compact-2TJ5FPZH.js} +7 -7
  58. package/dist/{post-tool-use-ICGFXDVY.js → post-tool-use-FRTSICC3.js} +6 -6
  59. package/dist/{post-tool-use-failure-C7TLH3XQ.js → post-tool-use-failure-KYO2NCNB.js} +7 -7
  60. package/dist/{pre-compact-IF7K4TQK.js → pre-compact-J6GCJEJR.js} +7 -7
  61. package/dist/{provider-check-LTLQ6BUZ.js → provider-check-AE3L5Z6R.js} +4 -4
  62. package/dist/{registry-TFQ22Z7N.js → registry-O2NZLO3V.js} +4 -4
  63. package/dist/{remove-FBGM2QVJ.js → remove-3WZZC7AX.js} +9 -9
  64. package/dist/{resolution-events-HGKIJOTA.js → resolution-events-XWYLLDRK.js} +4 -4
  65. package/dist/{restart-TQEECRNW.js → restart-HUHEFOXU.js} +8 -8
  66. package/dist/{search-NN5FC4Z6.js → search-ZGN3LDXG.js} +8 -8
  67. package/dist/{server-XMWJ4GF7.js → server-PTXLVVEE.js} +4 -4
  68. package/dist/{session-GLPAFYPO.js → session-7VV3IQMO.js} +9 -9
  69. package/dist/{session-end-TI3ILRBC.js → session-end-SMU55UCM.js} +6 -6
  70. package/dist/{session-start-PJLJDVJJ.js → session-start-NIMWEOIZ.js} +29 -13
  71. package/dist/session-start-NIMWEOIZ.js.map +1 -0
  72. package/dist/{setup-llm-AQSWLXCZ.js → setup-llm-7S3VPAPN.js} +8 -8
  73. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
  74. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +10 -0
  75. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +163 -49
  76. package/dist/src/agent/definitions/tasks/skill-generate.yaml +44 -27
  77. package/dist/src/agent/definitions/tasks/skill-survey.yaml +132 -138
  78. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
  79. package/dist/src/cli.js +1 -1
  80. package/dist/src/daemon/main.js +1 -1
  81. package/dist/src/hooks/post-tool-use.js +1 -1
  82. package/dist/src/hooks/session-end.js +1 -1
  83. package/dist/src/hooks/session-start.js +1 -1
  84. package/dist/src/hooks/stop.js +1 -1
  85. package/dist/src/hooks/user-prompt-submit.js +1 -1
  86. package/dist/src/mcp/server.js +1 -1
  87. package/dist/src/symbionts/manifests/codex.yaml +85 -0
  88. package/dist/src/symbionts/templates/claude-code/hooks.json +12 -12
  89. package/dist/src/symbionts/templates/claude-code/settings.json +3 -3
  90. package/dist/src/symbionts/templates/codex/hooks.json +4 -4
  91. package/dist/src/symbionts/templates/cursor/hooks.json +9 -9
  92. package/dist/src/symbionts/templates/cursor/settings.json +2 -2
  93. package/dist/src/symbionts/templates/gemini/hooks.json +6 -6
  94. package/dist/src/symbionts/templates/gemini/settings.json +2 -2
  95. package/dist/src/symbionts/templates/myco-run.cjs +44 -0
  96. package/dist/src/symbionts/templates/opencode/settings.json +2 -2
  97. package/dist/src/symbionts/templates/vscode-copilot/hooks.json +7 -7
  98. package/dist/src/symbionts/templates/vscode-copilot/settings.json +2 -2
  99. package/dist/src/symbionts/templates/windsurf/hooks.json +4 -4
  100. package/dist/src/symbionts/templates/windsurf/settings.json +2 -2
  101. package/dist/src/worker/package-lock.json +4338 -0
  102. package/dist/src/worker/package.json +5 -0
  103. package/dist/src/worker/src/index.ts +58 -65
  104. package/dist/src/worker/src/mcp/auth.ts +65 -0
  105. package/dist/src/worker/src/mcp/server.ts +53 -0
  106. package/dist/src/worker/src/mcp/tools/context.ts +13 -0
  107. package/dist/src/worker/src/mcp/tools/get.ts +15 -0
  108. package/dist/src/worker/src/mcp/tools/graph.ts +35 -0
  109. package/dist/src/worker/src/mcp/tools/search.ts +32 -0
  110. package/dist/src/worker/src/mcp/tools/sessions.ts +24 -0
  111. package/dist/src/worker/src/mcp/tools/skills.ts +16 -0
  112. package/dist/src/worker/src/mcp/tools/team.ts +9 -0
  113. package/dist/src/worker/src/schema.ts +5 -1
  114. package/dist/src/worker/src/search-helpers.ts +70 -0
  115. package/dist/src/worker/wrangler.toml +9 -0
  116. package/dist/{stats-BISBIBXZ.js → stats-GEOQ2DFF.js} +9 -9
  117. package/dist/{stop-47BJ42EO.js → stop-7AKYBJJ2.js} +6 -6
  118. package/dist/{stop-failure-VU5BTLWX.js → stop-failure-NLE2EURG.js} +7 -7
  119. package/dist/{subagent-start-SPTKQRHU.js → subagent-start-LBNZF2TG.js} +7 -7
  120. package/dist/{subagent-stop-UU75BYLC.js → subagent-stop-B2Z5GYAB.js} +7 -7
  121. package/dist/{task-completed-MVDO7TZF.js → task-completed-PO5TETJ7.js} +7 -7
  122. package/dist/{team-7X64J4Y6.js → team-DPNP2RN7.js} +97 -14
  123. package/dist/team-DPNP2RN7.js.map +1 -0
  124. package/dist/ui/assets/{index-rpmSpJpm.js → index-CiI1fwas.js} +120 -120
  125. package/dist/ui/index.html +1 -1
  126. package/dist/{update-DA7VEXOS.js → update-WBWB5URU.js} +18 -9
  127. package/dist/update-WBWB5URU.js.map +1 -0
  128. package/dist/{user-prompt-submit-ADZ4NTVO.js → user-prompt-submit-IZJC3NV7.js} +30 -7
  129. package/dist/user-prompt-submit-IZJC3NV7.js.map +1 -0
  130. package/dist/{verify-QYSERHF7.js → verify-FNSP62I3.js} +5 -5
  131. package/dist/{version-A72TAL2J.js → version-QEVU66NT.js} +2 -2
  132. package/package.json +7 -7
  133. package/dist/chunk-25WHTV4N.js.map +0 -1
  134. package/dist/chunk-5ZISXCDC.js.map +0 -1
  135. package/dist/chunk-7DAH5GLC.js.map +0 -1
  136. package/dist/chunk-BZDZORVP.js.map +0 -1
  137. package/dist/chunk-CTF7TQMJ.js.map +0 -1
  138. package/dist/chunk-EBIYONNZ.js.map +0 -1
  139. package/dist/chunk-HPZ7YAMA.js.map +0 -1
  140. package/dist/chunk-IGBHLFV5.js.map +0 -1
  141. package/dist/chunk-RMJPQZGF.js.map +0 -1
  142. package/dist/chunk-UTLWSKDV.js.map +0 -1
  143. package/dist/chunk-ZSJPI5MS.js.map +0 -1
  144. package/dist/executor-NXKJU5KW.js.map +0 -1
  145. package/dist/main-YFVBIRRK.js.map +0 -1
  146. package/dist/session-start-PJLJDVJJ.js.map +0 -1
  147. package/dist/src/symbionts/templates/hook-guard.cjs +0 -19
  148. package/dist/team-7X64J4Y6.js.map +0 -1
  149. package/dist/update-DA7VEXOS.js.map +0 -1
  150. package/dist/user-prompt-submit-ADZ4NTVO.js.map +0 -1
  151. /package/dist/{agent-run-7AYHXIEF.js.map → agent-run-I4O2K2CK.js.map} +0 -0
  152. /package/dist/{agent-tasks-UUIFKBD4.js.map → agent-tasks-UOW5BQIB.js.map} +0 -0
  153. /package/dist/{chunk-XD3NEN3Q.js.map → chunk-2V7HR7HB.js.map} +0 -0
  154. /package/dist/{chunk-DT42247G.js.map → chunk-75AZFBFW.js.map} +0 -0
  155. /package/dist/{chunk-ML6GTPZU.js.map → chunk-CML4MCYF.js.map} +0 -0
  156. /package/dist/{chunk-NUSTG3BH.js.map → chunk-N75GMQGA.js.map} +0 -0
  157. /package/dist/{chunk-F6C4IC6R.js.map → chunk-NI23QCHB.js.map} +0 -0
  158. /package/dist/{chunk-C3C5QVLK.js.map → chunk-O3TRN3RC.js.map} +0 -0
  159. /package/dist/{chunk-3NCVCGUZ.js.map → chunk-RAV5YMRU.js.map} +0 -0
  160. /package/dist/{chunk-RKPTMHED.js.map → chunk-U3J2DDSR.js.map} +0 -0
  161. /package/dist/{chunk-SI5BBQAT.js.map → chunk-W7WENJ6F.js.map} +0 -0
  162. /package/dist/{chunk-XZWFMMJR.js.map → chunk-XWOQL4XN.js.map} +0 -0
  163. /package/dist/{cli-WJVYP2QT.js.map → cli-D3TJYJ2U.js.map} +0 -0
  164. /package/dist/{client-LZ3ZR4HC.js.map → client-4LLEXLVK.js.map} +0 -0
  165. /package/dist/{config-ZQIMG3FB.js.map → config-DA4IUVFL.js.map} +0 -0
  166. /package/dist/{detect-NJ2OREDP.js.map → detect-SZ2KDUF4.js.map} +0 -0
  167. /package/dist/{detect-providers-C64L3QET.js.map → detect-providers-PSVKXTWE.js.map} +0 -0
  168. /package/dist/{doctor-XEPBNHM3.js.map → doctor-KCTXPX5D.js.map} +0 -0
  169. /package/dist/{init-BHVQAQ27.js.map → init-QFNBKKDC.js.map} +0 -0
  170. /package/dist/{installer-45ZLP2RP.js.map → installer-BWJED3ED.js.map} +0 -0
  171. /package/dist/{llm-KTD6SR55.js.map → llm-SMA5ZEAW.js.map} +0 -0
  172. /package/dist/{loader-NEX3UF6U.js.map → loader-Q3P3R4UP.js.map} +0 -0
  173. /package/dist/{loader-SHRKUKOS.js.map → loader-SKKUMT5C.js.map} +0 -0
  174. /package/dist/{open-2U7ZRGA3.js.map → open-7737CSPN.js.map} +0 -0
  175. /package/dist/{post-compact-QIBMEWL3.js.map → post-compact-2TJ5FPZH.js.map} +0 -0
  176. /package/dist/{post-tool-use-ICGFXDVY.js.map → post-tool-use-FRTSICC3.js.map} +0 -0
  177. /package/dist/{post-tool-use-failure-C7TLH3XQ.js.map → post-tool-use-failure-KYO2NCNB.js.map} +0 -0
  178. /package/dist/{pre-compact-IF7K4TQK.js.map → pre-compact-J6GCJEJR.js.map} +0 -0
  179. /package/dist/{provider-check-LTLQ6BUZ.js.map → provider-check-AE3L5Z6R.js.map} +0 -0
  180. /package/dist/{registry-TFQ22Z7N.js.map → registry-O2NZLO3V.js.map} +0 -0
  181. /package/dist/{remove-FBGM2QVJ.js.map → remove-3WZZC7AX.js.map} +0 -0
  182. /package/dist/{resolution-events-HGKIJOTA.js.map → resolution-events-XWYLLDRK.js.map} +0 -0
  183. /package/dist/{restart-TQEECRNW.js.map → restart-HUHEFOXU.js.map} +0 -0
  184. /package/dist/{search-NN5FC4Z6.js.map → search-ZGN3LDXG.js.map} +0 -0
  185. /package/dist/{server-XMWJ4GF7.js.map → server-PTXLVVEE.js.map} +0 -0
  186. /package/dist/{session-GLPAFYPO.js.map → session-7VV3IQMO.js.map} +0 -0
  187. /package/dist/{session-end-TI3ILRBC.js.map → session-end-SMU55UCM.js.map} +0 -0
  188. /package/dist/{setup-llm-AQSWLXCZ.js.map → setup-llm-7S3VPAPN.js.map} +0 -0
  189. /package/dist/{stats-BISBIBXZ.js.map → stats-GEOQ2DFF.js.map} +0 -0
  190. /package/dist/{stop-47BJ42EO.js.map → stop-7AKYBJJ2.js.map} +0 -0
  191. /package/dist/{stop-failure-VU5BTLWX.js.map → stop-failure-NLE2EURG.js.map} +0 -0
  192. /package/dist/{subagent-start-SPTKQRHU.js.map → subagent-start-LBNZF2TG.js.map} +0 -0
  193. /package/dist/{subagent-stop-UU75BYLC.js.map → subagent-stop-B2Z5GYAB.js.map} +0 -0
  194. /package/dist/{task-completed-MVDO7TZF.js.map → task-completed-PO5TETJ7.js.map} +0 -0
  195. /package/dist/{verify-QYSERHF7.js.map → verify-FNSP62I3.js.map} +0 -0
  196. /package/dist/{version-A72TAL2J.js.map → version-QEVU66NT.js.map} +0 -0
@@ -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-WJVYP2QT.js");
5
+ await import("../cli-D3TJYJ2U.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-YFVBIRRK.js");
4
+ var { main } = await import("../../main-5THODR77.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-ICGFXDVY.js");
4
+ var { main } = await import("../../post-tool-use-FRTSICC3.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-TI3ILRBC.js");
4
+ var { main } = await import("../../session-end-SMU55UCM.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-PJLJDVJJ.js");
4
+ var { main } = await import("../../session-start-NIMWEOIZ.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-47BJ42EO.js");
4
+ var { main } = await import("../../stop-7AKYBJJ2.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-ADZ4NTVO.js");
4
+ var { main } = await import("../../user-prompt-submit-IZJC3NV7.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-XMWJ4GF7.js");
4
+ var { main } = await import("../../server-PTXLVVEE.js");
5
5
  await main();
6
6
  //# sourceMappingURL=server.js.map
@@ -11,6 +11,91 @@ hookFields:
11
11
  lastResponse: last_assistant_message
12
12
  capture:
13
13
  planDirs: []
14
+ planTags:
15
+ - proposed_plan
16
+ rules:
17
+ # Ephemeral sub-invocation filter (structural, two-layer defense).
18
+ #
19
+ # Codex spawns internal LLM sub-invocations for things like UI
20
+ # title generation. Those sub-invocations fire SessionStart and
21
+ # UserPromptSubmit with their own session_id but never write a
22
+ # rollout transcript file, so both events arrive with
23
+ # `transcript_path: null`. Real user-facing sessions always have a
24
+ # rollout file in ~/.codex/sessions/... and therefore a populated
25
+ # transcript_path.
26
+ #
27
+ # Dropping on `transcript_path_missing` is a deliberately
28
+ # pattern-based signal — robust across Codex and extension updates
29
+ # because it keys on the Codex protocol contract (transcript_path
30
+ # is populated iff a real transcript exists), not on any specific
31
+ # prompt text that could drift.
32
+ #
33
+ # Scope is `any_agent` for both rules because detection itself
34
+ # falls back to transcript_path → configDir matching; when that's
35
+ # missing the hook can't attribute the event, so the owning
36
+ # manifest has to opt into enforcing the rule regardless.
37
+
38
+ # Layer 1 — stop the phantom from ever being registered.
39
+ - event: session_start
40
+ scope: any_agent
41
+ when:
42
+ transcript_path_missing: true
43
+ action: drop
44
+ reason: ephemeral-sub-invocation
45
+
46
+ # Layer 2 — safety net. Deletes any phantom session row that did
47
+ # slip past SessionStart (e.g. because Codex's rollout file hadn't
48
+ # been flushed by the time SessionStart was queried).
49
+ - event: user_prompt
50
+ scope: any_agent
51
+ when:
52
+ transcript_path_missing: true
53
+ action: drop
54
+ reason: ephemeral-sub-invocation
55
+
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.
14
99
  registration:
15
100
  hooksTarget: .codex/hooks.json
16
101
  mcpTarget: .codex/config.toml
@@ -4,7 +4,7 @@
4
4
  "hooks": [
5
5
  {
6
6
  "type": "command",
7
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook session-start",
7
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook session-start --symbiont claude-code",
8
8
  "timeout": 10
9
9
  }
10
10
  ]
@@ -15,7 +15,7 @@
15
15
  "hooks": [
16
16
  {
17
17
  "type": "command",
18
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook user-prompt-submit",
18
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook user-prompt-submit --symbiont claude-code",
19
19
  "timeout": 5
20
20
  }
21
21
  ]
@@ -26,7 +26,7 @@
26
26
  "hooks": [
27
27
  {
28
28
  "type": "command",
29
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook post-tool-use",
29
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook post-tool-use --symbiont claude-code",
30
30
  "timeout": 5
31
31
  }
32
32
  ]
@@ -37,7 +37,7 @@
37
37
  "hooks": [
38
38
  {
39
39
  "type": "command",
40
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook post-tool-use-failure",
40
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook post-tool-use-failure --symbiont claude-code",
41
41
  "timeout": 5
42
42
  }
43
43
  ]
@@ -48,7 +48,7 @@
48
48
  "hooks": [
49
49
  {
50
50
  "type": "command",
51
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook stop",
51
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook stop --symbiont claude-code",
52
52
  "timeout": 30
53
53
  }
54
54
  ]
@@ -59,7 +59,7 @@
59
59
  "hooks": [
60
60
  {
61
61
  "type": "command",
62
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook session-end",
62
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook session-end --symbiont claude-code",
63
63
  "timeout": 10
64
64
  }
65
65
  ]
@@ -70,7 +70,7 @@
70
70
  "hooks": [
71
71
  {
72
72
  "type": "command",
73
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook subagent-start",
73
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook subagent-start --symbiont claude-code",
74
74
  "timeout": 5
75
75
  }
76
76
  ]
@@ -81,7 +81,7 @@
81
81
  "hooks": [
82
82
  {
83
83
  "type": "command",
84
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook subagent-stop",
84
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook subagent-stop --symbiont claude-code",
85
85
  "timeout": 10
86
86
  }
87
87
  ]
@@ -92,7 +92,7 @@
92
92
  "hooks": [
93
93
  {
94
94
  "type": "command",
95
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook stop-failure",
95
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook stop-failure --symbiont claude-code",
96
96
  "timeout": 10
97
97
  }
98
98
  ]
@@ -103,7 +103,7 @@
103
103
  "hooks": [
104
104
  {
105
105
  "type": "command",
106
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook task-completed",
106
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook task-completed --symbiont claude-code",
107
107
  "timeout": 5
108
108
  }
109
109
  ]
@@ -114,7 +114,7 @@
114
114
  "hooks": [
115
115
  {
116
116
  "type": "command",
117
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook pre-compact",
117
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook pre-compact --symbiont claude-code",
118
118
  "timeout": 5
119
119
  }
120
120
  ]
@@ -125,7 +125,7 @@
125
125
  "hooks": [
126
126
  {
127
127
  "type": "command",
128
- "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-hook.cjs hook post-compact",
128
+ "command": "cd \"${CLAUDE_PROJECT_DIR:-.}\" && node .agents/myco-run.cjs hook post-compact --symbiont claude-code",
129
129
  "timeout": 5
130
130
  }
131
131
  ]
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(myco-run *)",
5
- "Bash(myco-run:*)",
6
4
  "Bash(myco *)",
7
- "Bash(myco:*)"
5
+ "Bash(myco:*)",
6
+ "Bash(myco-dev *)",
7
+ "Bash(myco-dev:*)"
8
8
  ]
9
9
  }
10
10
  }