@goondocks/myco 0.14.4 → 0.15.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 (173) hide show
  1. package/dist/{agent-run-GZ5UVLDV.js → agent-run-T433ENJS.js} +6 -6
  2. package/dist/{agent-tasks-KKQ2GBBB.js → agent-tasks-TAIU3V5I.js} +6 -6
  3. package/dist/{chunk-X34OFKYU.js → chunk-23FJUKCN.js} +2 -2
  4. package/dist/{chunk-LD6U3L6O.js → chunk-2QMDRZPJ.js} +21 -17
  5. package/dist/chunk-2QMDRZPJ.js.map +1 -0
  6. package/dist/{chunk-KNTJOMWY.js → chunk-3MEOYXOW.js} +2 -2
  7. package/dist/{chunk-PSYLKCWQ.js → chunk-4BQ5QE76.js} +24 -5
  8. package/dist/chunk-4BQ5QE76.js.map +1 -0
  9. package/dist/{chunk-UZ5Y6XMP.js → chunk-4O3QNM5I.js} +2 -2
  10. package/dist/{chunk-JTYZRPX5.js → chunk-5ZT2Q6P5.js} +1 -1
  11. package/dist/{chunk-BCKYVLUZ.js → chunk-6GG2IVNV.js} +3 -3
  12. package/dist/{chunk-JJXVDCEX.js → chunk-75J2BR4P.js} +486 -488
  13. package/dist/chunk-75J2BR4P.js.map +1 -0
  14. package/dist/{chunk-TFBAV3PV.js → chunk-BFM6AM6R.js} +2 -2
  15. package/dist/{chunk-S6I62FAH.js → chunk-CUADDHHU.js} +4 -2
  16. package/dist/{chunk-S6I62FAH.js.map → chunk-CUADDHHU.js.map} +1 -1
  17. package/dist/{chunk-4VF6KQ2Z.js → chunk-DJQOYEK3.js} +87 -84
  18. package/dist/chunk-DJQOYEK3.js.map +1 -0
  19. package/dist/{chunk-OQVKLTQY.js → chunk-EYMKBNRP.js} +2 -2
  20. package/dist/{chunk-STBNNKL5.js → chunk-GCCBXCHF.js} +6 -6
  21. package/dist/{chunk-KH64DHOY.js → chunk-GDY63YAW.js} +279 -277
  22. package/dist/chunk-GDY63YAW.js.map +1 -0
  23. package/dist/{chunk-ZESTWGJT.js → chunk-GYIA6XLB.js} +2 -2
  24. package/dist/{chunk-S66YG6QK.js → chunk-LF5Z62X6.js} +46 -7
  25. package/dist/chunk-LF5Z62X6.js.map +1 -0
  26. package/dist/{chunk-PX5KIOKY.js → chunk-SPJGJEFV.js} +10 -2
  27. package/dist/{chunk-PX5KIOKY.js.map → chunk-SPJGJEFV.js.map} +1 -1
  28. package/dist/{chunk-QFMBZ72S.js → chunk-SV6UCB2Z.js} +2 -2
  29. package/dist/{chunk-GMTWRMLP.js → chunk-TQO4PF5K.js} +3 -3
  30. package/dist/{chunk-NVCGF2DS.js → chunk-X4XFJG6I.js} +10 -6
  31. package/dist/chunk-X4XFJG6I.js.map +1 -0
  32. package/dist/{chunk-TNCBMGWB.js → chunk-X5IXK5KO.js} +262 -226
  33. package/dist/chunk-X5IXK5KO.js.map +1 -0
  34. package/dist/{chunk-TVV6PZOC.js → chunk-Z7TZJ2SP.js} +2 -2
  35. package/dist/{cli-JLDCZ77U.js → cli-W37MRZHD.js} +45 -44
  36. package/dist/cli-W37MRZHD.js.map +1 -0
  37. package/dist/{client-LRQMMKLP.js → client-YNTTC75R.js} +4 -4
  38. package/dist/{config-H657SF6B.js → config-MOWCOJJ4.js} +4 -4
  39. package/dist/{detect-27DN6UTL.js → detect-GFYKKHLJ.js} +3 -3
  40. package/dist/{detect-providers-PAVE2X6O.js → detect-providers-EU35RUL3.js} +2 -2
  41. package/dist/{doctor-IG3CXMI7.js → doctor-PAAQU5AS.js} +38 -19
  42. package/dist/doctor-PAAQU5AS.js.map +1 -0
  43. package/dist/{executor-HKNINUWO.js → executor-4OXDK4ZA.js} +790 -312
  44. package/dist/executor-4OXDK4ZA.js.map +1 -0
  45. package/dist/{init-RHQUINC2.js → init-PHQAQANR.js} +41 -23
  46. package/dist/init-PHQAQANR.js.map +1 -0
  47. package/dist/{init-wizard-ZB3JRDLE.js → init-wizard-RFD46XAJ.js} +7 -7
  48. package/dist/{installer-25TSX4SR.js → installer-BTUNKWOU.js} +2 -2
  49. package/dist/{llm-T3QVHC3Y.js → llm-D4VWYUK7.js} +4 -4
  50. package/dist/{loader-WQKVWL5D.js → loader-WC4U5NM5.js} +4 -4
  51. package/dist/{loader-JQLO6K44.js → loader-WGDVRGLM.js} +6 -4
  52. package/dist/{logs-LXHPDKUA.js → logs-WFBX2I7C.js} +3 -3
  53. package/dist/{main-MVXPBP5Z.js → main-ADLCOYKM.js} +2351 -1914
  54. package/dist/main-ADLCOYKM.js.map +1 -0
  55. package/dist/{open-CVEMRH3Z.js → open-3VPUP3HD.js} +6 -6
  56. package/dist/{openai-embeddings-5T5ZP7LO.js → openai-embeddings-SEIV7AM3.js} +2 -2
  57. package/dist/{openrouter-RD2COFC7.js → openrouter-ELODIZRP.js} +2 -2
  58. package/dist/{post-compact-ALQ2UGZ7.js → post-compact-5NYLOC46.js} +9 -9
  59. package/dist/{post-tool-use-SPL7HIYU.js → post-tool-use-SNNXSZ5Y.js} +10 -10
  60. package/dist/{post-tool-use-failure-B3CUYBTR.js → post-tool-use-failure-POKVXQHY.js} +9 -9
  61. package/dist/{pre-compact-KPWC4V64.js → pre-compact-ZUICBJEX.js} +9 -9
  62. package/dist/{provider-check-QN7OGXZA.js → provider-check-B66E5PWS.js} +2 -2
  63. package/dist/{registry-2XQMCPA6.js → registry-DHWVHXWY.js} +5 -5
  64. package/dist/{remove-O2WCN6RC.js → remove-SVU2V4Q7.js} +52 -20
  65. package/dist/remove-SVU2V4Q7.js.map +1 -0
  66. package/dist/{resolution-events-5EVUEWHS.js → resolution-events-DBCRVZGU.js} +4 -4
  67. package/dist/{restart-S52VV3SP.js → restart-NBB5CXJ4.js} +7 -7
  68. package/dist/{search-IOJ5O37S.js → search-YUQZFRZX.js} +6 -6
  69. package/dist/{server-T4VPK6FU.js → server-NBRX56VL.js} +8 -8
  70. package/dist/{session-ID6BX72K.js → session-2QP4HMZ5.js} +8 -8
  71. package/dist/{session-end-I7ZABXRI.js → session-end-NNFBW7CQ.js} +10 -10
  72. package/dist/{session-start-VPOUY42U.js → session-start-NPNP4IXX.js} +15 -15
  73. package/dist/{setup-llm-G5UG5N3T.js → setup-llm-C3IGFLRN.js} +8 -8
  74. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +8 -7
  75. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +71 -144
  76. package/dist/src/agent/definitions/tasks/skill-generate.yaml +10 -62
  77. package/dist/src/agent/definitions/tasks/skill-survey.yaml +87 -53
  78. package/dist/src/agent/prompts/agent.md +1 -0
  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/worker/src/schema.ts +14 -0
  88. package/dist/{stats-GRI4MTS2.js → stats-FEEXIRMS.js} +9 -9
  89. package/dist/{stop-UTZ2CXI2.js → stop-FGDGWXTK.js} +10 -10
  90. package/dist/{stop-failure-CECM5NB7.js → stop-failure-5YAGH2TQ.js} +9 -9
  91. package/dist/{subagent-start-SYZGJYUN.js → subagent-start-UCKVJDR4.js} +9 -9
  92. package/dist/{subagent-stop-7WWW7TGQ.js → subagent-stop-H25B3QEC.js} +9 -9
  93. package/dist/{task-completed-N7SIY6T6.js → task-completed-2JGZN2CF.js} +9 -9
  94. package/dist/{team-SJPDXELY.js → team-TG5WZXWO.js} +34 -26
  95. package/dist/team-TG5WZXWO.js.map +1 -0
  96. package/dist/ui/assets/index-7Vimyg7g.js +837 -0
  97. package/dist/ui/assets/{index-BmsHIwjl.css → index-DlEQ8A8Y.css} +1 -1
  98. package/dist/ui/index.html +2 -2
  99. package/dist/{update-DZZYQ4NJ.js → update-EG3N2EXI.js} +30 -14
  100. package/dist/update-EG3N2EXI.js.map +1 -0
  101. package/dist/{user-prompt-submit-UUNRRS5P.js → user-prompt-submit-7FFQ3ORA.js} +10 -10
  102. package/dist/{verify-JHIMXTY5.js → verify-2M3DYHEY.js} +6 -6
  103. package/dist/{version-VKNCAPZW.js → version-JUQU5W22.js} +2 -2
  104. package/package.json +3 -3
  105. package/dist/chunk-4VF6KQ2Z.js.map +0 -1
  106. package/dist/chunk-JJXVDCEX.js.map +0 -1
  107. package/dist/chunk-KH64DHOY.js.map +0 -1
  108. package/dist/chunk-LD6U3L6O.js.map +0 -1
  109. package/dist/chunk-NVCGF2DS.js.map +0 -1
  110. package/dist/chunk-PSYLKCWQ.js.map +0 -1
  111. package/dist/chunk-S66YG6QK.js.map +0 -1
  112. package/dist/chunk-TNCBMGWB.js.map +0 -1
  113. package/dist/cli-JLDCZ77U.js.map +0 -1
  114. package/dist/doctor-IG3CXMI7.js.map +0 -1
  115. package/dist/executor-HKNINUWO.js.map +0 -1
  116. package/dist/init-RHQUINC2.js.map +0 -1
  117. package/dist/main-MVXPBP5Z.js.map +0 -1
  118. package/dist/remove-O2WCN6RC.js.map +0 -1
  119. package/dist/resolve-3FEUV462.js +0 -9
  120. package/dist/team-SJPDXELY.js.map +0 -1
  121. package/dist/ui/assets/index-Cn6cQwJy.js +0 -842
  122. package/dist/update-DZZYQ4NJ.js.map +0 -1
  123. package/dist/version-VKNCAPZW.js.map +0 -1
  124. /package/dist/{agent-run-GZ5UVLDV.js.map → agent-run-T433ENJS.js.map} +0 -0
  125. /package/dist/{agent-tasks-KKQ2GBBB.js.map → agent-tasks-TAIU3V5I.js.map} +0 -0
  126. /package/dist/{chunk-X34OFKYU.js.map → chunk-23FJUKCN.js.map} +0 -0
  127. /package/dist/{chunk-KNTJOMWY.js.map → chunk-3MEOYXOW.js.map} +0 -0
  128. /package/dist/{chunk-UZ5Y6XMP.js.map → chunk-4O3QNM5I.js.map} +0 -0
  129. /package/dist/{chunk-JTYZRPX5.js.map → chunk-5ZT2Q6P5.js.map} +0 -0
  130. /package/dist/{chunk-BCKYVLUZ.js.map → chunk-6GG2IVNV.js.map} +0 -0
  131. /package/dist/{chunk-TFBAV3PV.js.map → chunk-BFM6AM6R.js.map} +0 -0
  132. /package/dist/{chunk-OQVKLTQY.js.map → chunk-EYMKBNRP.js.map} +0 -0
  133. /package/dist/{chunk-STBNNKL5.js.map → chunk-GCCBXCHF.js.map} +0 -0
  134. /package/dist/{chunk-ZESTWGJT.js.map → chunk-GYIA6XLB.js.map} +0 -0
  135. /package/dist/{chunk-QFMBZ72S.js.map → chunk-SV6UCB2Z.js.map} +0 -0
  136. /package/dist/{chunk-GMTWRMLP.js.map → chunk-TQO4PF5K.js.map} +0 -0
  137. /package/dist/{chunk-TVV6PZOC.js.map → chunk-Z7TZJ2SP.js.map} +0 -0
  138. /package/dist/{client-LRQMMKLP.js.map → client-YNTTC75R.js.map} +0 -0
  139. /package/dist/{config-H657SF6B.js.map → config-MOWCOJJ4.js.map} +0 -0
  140. /package/dist/{detect-27DN6UTL.js.map → detect-GFYKKHLJ.js.map} +0 -0
  141. /package/dist/{detect-providers-PAVE2X6O.js.map → detect-providers-EU35RUL3.js.map} +0 -0
  142. /package/dist/{init-wizard-ZB3JRDLE.js.map → init-wizard-RFD46XAJ.js.map} +0 -0
  143. /package/dist/{installer-25TSX4SR.js.map → installer-BTUNKWOU.js.map} +0 -0
  144. /package/dist/{llm-T3QVHC3Y.js.map → llm-D4VWYUK7.js.map} +0 -0
  145. /package/dist/{loader-JQLO6K44.js.map → loader-WC4U5NM5.js.map} +0 -0
  146. /package/dist/{loader-WQKVWL5D.js.map → loader-WGDVRGLM.js.map} +0 -0
  147. /package/dist/{logs-LXHPDKUA.js.map → logs-WFBX2I7C.js.map} +0 -0
  148. /package/dist/{open-CVEMRH3Z.js.map → open-3VPUP3HD.js.map} +0 -0
  149. /package/dist/{openai-embeddings-5T5ZP7LO.js.map → openai-embeddings-SEIV7AM3.js.map} +0 -0
  150. /package/dist/{openrouter-RD2COFC7.js.map → openrouter-ELODIZRP.js.map} +0 -0
  151. /package/dist/{post-compact-ALQ2UGZ7.js.map → post-compact-5NYLOC46.js.map} +0 -0
  152. /package/dist/{post-tool-use-SPL7HIYU.js.map → post-tool-use-SNNXSZ5Y.js.map} +0 -0
  153. /package/dist/{post-tool-use-failure-B3CUYBTR.js.map → post-tool-use-failure-POKVXQHY.js.map} +0 -0
  154. /package/dist/{pre-compact-KPWC4V64.js.map → pre-compact-ZUICBJEX.js.map} +0 -0
  155. /package/dist/{provider-check-QN7OGXZA.js.map → provider-check-B66E5PWS.js.map} +0 -0
  156. /package/dist/{registry-2XQMCPA6.js.map → registry-DHWVHXWY.js.map} +0 -0
  157. /package/dist/{resolution-events-5EVUEWHS.js.map → resolution-events-DBCRVZGU.js.map} +0 -0
  158. /package/dist/{restart-S52VV3SP.js.map → restart-NBB5CXJ4.js.map} +0 -0
  159. /package/dist/{search-IOJ5O37S.js.map → search-YUQZFRZX.js.map} +0 -0
  160. /package/dist/{server-T4VPK6FU.js.map → server-NBRX56VL.js.map} +0 -0
  161. /package/dist/{session-ID6BX72K.js.map → session-2QP4HMZ5.js.map} +0 -0
  162. /package/dist/{session-end-I7ZABXRI.js.map → session-end-NNFBW7CQ.js.map} +0 -0
  163. /package/dist/{session-start-VPOUY42U.js.map → session-start-NPNP4IXX.js.map} +0 -0
  164. /package/dist/{setup-llm-G5UG5N3T.js.map → setup-llm-C3IGFLRN.js.map} +0 -0
  165. /package/dist/{stats-GRI4MTS2.js.map → stats-FEEXIRMS.js.map} +0 -0
  166. /package/dist/{stop-UTZ2CXI2.js.map → stop-FGDGWXTK.js.map} +0 -0
  167. /package/dist/{stop-failure-CECM5NB7.js.map → stop-failure-5YAGH2TQ.js.map} +0 -0
  168. /package/dist/{subagent-start-SYZGJYUN.js.map → subagent-start-UCKVJDR4.js.map} +0 -0
  169. /package/dist/{subagent-stop-7WWW7TGQ.js.map → subagent-stop-H25B3QEC.js.map} +0 -0
  170. /package/dist/{task-completed-N7SIY6T6.js.map → task-completed-2JGZN2CF.js.map} +0 -0
  171. /package/dist/{user-prompt-submit-UUNRRS5P.js.map → user-prompt-submit-7FFQ3ORA.js.map} +0 -0
  172. /package/dist/{verify-JHIMXTY5.js.map → verify-2M3DYHEY.js.map} +0 -0
  173. /package/dist/{resolve-3FEUV462.js.map → version-JUQU5W22.js.map} +0 -0
@@ -2,25 +2,25 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  withEmbedding
4
4
  } from "./chunk-SODRR3HE.js";
5
- import "./chunk-BCKYVLUZ.js";
5
+ import "./chunk-6GG2IVNV.js";
6
6
  import {
7
7
  parseStringFlag
8
8
  } from "./chunk-SAKJMNSR.js";
9
- import "./chunk-TNCBMGWB.js";
9
+ import "./chunk-X5IXK5KO.js";
10
10
  import "./chunk-HHZ3RTEI.js";
11
11
  import {
12
12
  loadConfig,
13
13
  updateConfig
14
- } from "./chunk-PSYLKCWQ.js";
14
+ } from "./chunk-4BQ5QE76.js";
15
15
  import "./chunk-MYX5NCRH.js";
16
- import "./chunk-UZ5Y6XMP.js";
17
- import "./chunk-TFBAV3PV.js";
16
+ import "./chunk-4O3QNM5I.js";
17
+ import "./chunk-BFM6AM6R.js";
18
18
  import "./chunk-LPUQPDC2.js";
19
19
  import "./chunk-TRA3R4EC.js";
20
- import "./chunk-S6I62FAH.js";
20
+ import "./chunk-CUADDHHU.js";
21
21
  import "./chunk-D7TYRPRM.js";
22
22
  import "./chunk-E4VLWIJC.js";
23
- import "./chunk-KH64DHOY.js";
23
+ import "./chunk-GDY63YAW.js";
24
24
  import "./chunk-PZUWP5VK.js";
25
25
 
26
26
  // src/cli/setup-llm.ts
@@ -79,4 +79,4 @@ async function run(args, vaultDir) {
79
79
  export {
80
80
  run
81
81
  };
82
- //# sourceMappingURL=setup-llm-G5UG5N3T.js.map
82
+ //# sourceMappingURL=setup-llm-C3IGFLRN.js.map
@@ -17,7 +17,7 @@ description: >
17
17
  regenerates digest extracts.
18
18
  agent: myco-agent
19
19
  isDefault: true
20
- maxTurns: 130
20
+ maxTurns: 150
21
21
  timeoutSeconds: 1800
22
22
  model: claude-sonnet-4-6
23
23
 
@@ -77,6 +77,7 @@ phases:
77
77
  - vault_report
78
78
  maxTurns: 6
79
79
  required: true
80
+ readOnly: true
80
81
 
81
82
  - name: extract
82
83
  dependsOn: [read-state]
@@ -235,7 +236,7 @@ phases:
235
236
  - vault_create_spore
236
237
  - vault_resolve_spore
237
238
  - vault_report
238
- maxTurns: 22
239
+ maxTurns: 25
239
240
  required: false
240
241
 
241
242
  - name: graph
@@ -293,7 +294,7 @@ phases:
293
294
  - vault_create_entity
294
295
  - vault_create_edge
295
296
  - vault_report
296
- maxTurns: 25
297
+ maxTurns: 35
297
298
  required: false
298
299
 
299
300
  # ---- Digest: assess + 3 parallel tier writes ----
@@ -362,7 +363,7 @@ phases:
362
363
  - vault_search_semantic
363
364
  - vault_read_digest
364
365
  - vault_report
365
- maxTurns: 8
366
+ maxTurns: 10
366
367
  required: true
367
368
 
368
369
  - name: digest-10000
@@ -394,7 +395,7 @@ phases:
394
395
  - vault_read_digest
395
396
  - vault_write_digest
396
397
  - vault_report
397
- maxTurns: 7
398
+ maxTurns: 9
398
399
  required: false
399
400
 
400
401
  - name: digest-5000
@@ -425,7 +426,7 @@ phases:
425
426
  - vault_read_digest
426
427
  - vault_write_digest
427
428
  - vault_report
428
- maxTurns: 5
429
+ maxTurns: 7
429
430
  required: false
430
431
 
431
432
  - name: digest-1500
@@ -456,7 +457,7 @@ phases:
456
457
  - vault_read_digest
457
458
  - vault_write_digest
458
459
  - vault_report
459
- maxTurns: 3
460
+ maxTurns: 5
460
461
  required: false
461
462
 
462
463
  - name: report
@@ -2,106 +2,66 @@ name: skill-evolve
2
2
  displayName: Skill Evolution
3
3
  description: >-
4
4
  Evaluate and evolve existing Myco-managed skills based on new
5
- vault knowledge and usage patterns.
5
+ vault knowledge. Only assesses skills with new knowledge since
6
+ their last assessment, throttled to once per assess_interval_hours.
6
7
  agent: myco-agent
7
8
  prompt: >-
8
- Assess all active Myco-managed skills for staleness, conflicts,
9
- and oversized scope. Evolve skills that need it.
9
+ Assess and update skills that have new knowledge since their last
10
+ assessment. The instruction contains pre-filtered skills with their
11
+ current content and new spore IDs.
10
12
  isDefault: false
11
13
  model: claude-sonnet-4-6
12
- maxTurns: 60
13
- timeoutSeconds: 1800
14
+ maxTurns: 40
15
+ timeoutSeconds: 1200
14
16
  schedule:
15
17
  enabled: false
16
18
  intervalSeconds: 900
17
19
  runIn:
18
20
  - idle
19
21
  preCondition: has-active-skills
22
+ params:
23
+ assess_interval_hours: 24
24
+ max_skills_per_run: 5
20
25
  phases:
21
26
  - name: assess
22
27
  prompt: |
23
- Evaluate every active Myco-managed skill to determine if it
24
- needs updating.
25
-
26
- For EACH active skill (vault_skill_records action: list, status: active):
27
-
28
- 1. READ THE CURRENT SKILL CONTENT.
29
- Get the skill record (vault_skill_records action: get), then
30
- read the latest lineage entry's content_snapshot to see what
31
- the skill currently says. You MUST read the actual content
32
- before you can assess accuracy.
33
-
34
- 2. SEARCH FOR NEW KNOWLEDGE since the skill was last updated.
35
- Use vault_search_semantic with the skill's topic/keywords.
36
- Use vault_search_fts with specific file paths, function names,
37
- and technical terms mentioned in the skill.
38
- Use vault_spores to check for recent wisdom, decisions, and
39
- gotchas related to the skill's domain.
40
-
41
- Compare what you find to what the skill currently says.
42
- Does the skill miss anything important? Does it say anything
43
- that's now wrong or outdated?
44
-
45
- 3. CHECK SOURCE SPORE STATUS.
46
- For each source spore ID in the skill's source_ids, check if
47
- it's been superseded (vault_spores, status: superseded).
48
- Superseded sources mean the skill may contain outdated advice.
49
-
50
- 4. ASSESS SKILL SCOPE.
51
- Is the skill trying to cover too many distinct procedures?
52
- A skill over 400 lines or covering 3+ independent workflows
53
- is a candidate for splitting.
54
-
55
- Classify each skill — bias toward CURRENT. A rewrite has
56
- real cost (can lose valuable detail, regress triggering quality).
57
- Only classify as STALE/CONFLICTED when the delta is substantive:
58
-
59
- - **CURRENT**: Content is still accurate. Minor phrasing
60
- differences between the skill and new knowledge do NOT make
61
- it stale. If the skill already covers the topic correctly
62
- — even if newer spores phrase it differently — it is CURRENT.
63
- - **STALE**: New *factual* knowledge exists that the skill
64
- genuinely misses — a new concrete step, a changed file path,
65
- a new gotcha that would cause real failure, a new pattern
66
- that replaces one the skill teaches. The new knowledge must
67
- be specific and actionable, not a rephrasing of existing
68
- content. Note specifically WHAT is new/changed.
69
- - **CONFLICTED**: New knowledge directly contradicts the skill's
70
- current content (a decision was reversed, a pattern was
71
- abandoned, a file was deleted). Note the contradiction.
72
- - **OVERSIZED**: Covers too many distinct procedures. Note
73
- how it should be split.
74
-
75
- When in doubt, classify as CURRENT. A skill that is 90%
76
- accurate and well-structured is better left alone than
77
- rewritten with the risk of losing detail.
78
-
79
- NOTE: Skip usage-based retirement for now — usage tracking is
80
- not yet active. Do not classify skills as UNUSED.
81
-
82
- Store classifications using vault_set_state with key
83
- 'skill-evolve-classifications' and value as a JSON object:
84
- ```json
85
- {
86
- "skill-name": {
87
- "classification": "CURRENT|STALE|CONFLICTED|OVERSIZED",
88
- "rationale": "what changed and why",
89
- "new_knowledge": ["list of specific new findings"]
90
- }
91
- }
92
- ```
93
-
94
- Report classifications via vault_report.
28
+ The instruction contains skills that have new knowledge since
29
+ their last assessment. For each skill listed:
30
+
31
+ 1. Read the new spores: fetch each ID from new_spore_ids via
32
+ vault_spores. Understand what changed.
33
+
34
+ 2. Verify code references: use vault_search_fts to check 3-5
35
+ key file paths and function names from the skill content.
36
+ Are they still valid? This is bounded check specific
37
+ claims, do not search broadly.
38
+
39
+ 3. Classify:
40
+ - CURRENT new knowledge doesn't affect this skill's procedures
41
+ - STALE new knowledge changes a specific step, path, or gotcha.
42
+ Note exactly WHAT is new.
43
+ - DEPRECATED key code references are gone or the procedure
44
+ is no longer relevant. Note what's missing.
45
+
46
+ Bias toward CURRENT. A skill that is 90% accurate is better
47
+ left alone than rewritten with the risk of losing detail.
48
+
49
+ 4. Update the skill's properties with the new watermark:
50
+ vault_skill_records (action: update, id: <skill_id>,
51
+ properties: '{"last_assessed_at": <now>, "knowledge_watermark": <now>, "last_classification": "<classification>"}')
52
+
53
+ 5. Store classifications via vault_set_state
54
+ (key: skill-evolve-classifications) as JSON.
55
+
56
+ Report via vault_report.
57
+
58
+ If the instruction says "No skills need assessment", report
59
+ skip via vault_report and finish immediately.
95
60
  tools:
96
- - vault_skill_records
97
61
  - vault_spores
98
- - vault_sessions
99
62
  - vault_search_fts
100
- - vault_search_semantic
101
- - vault_read_digest
102
- - vault_state
63
+ - vault_skill_records
103
64
  - vault_set_state
104
- - vault_edges
105
65
  - vault_report
106
66
  maxTurns: 20
107
67
  required: true
@@ -111,77 +71,44 @@ phases:
111
71
  Read classifications from vault_state
112
72
  (key: skill-evolve-classifications). Parse the JSON.
113
73
 
114
- For each skill classified as STALE, CONFLICTED, or OVERSIZED:
74
+ For each skill classified as STALE or DEPRECATED:
115
75
 
116
- ## STALE or CONFLICTED Rewrite the skill
76
+ ## STALE — Targeted update
117
77
 
118
78
  1. Read the current skill content from vault_skill_records
119
- (action: get) to see the current version.
120
-
121
- 2. Gather the new knowledge: read the specific spores, sessions,
122
- or search results identified in the assessment.
123
-
124
- 3. Rewrite using vault_write_skill. The rewrite MUST:
125
- - Preserve ALL existing frontmatter fields read the current
126
- content first and carry every field forward (name, description,
127
- managed_by, user-invocable, allowed-tools). The quality gate
128
- rejects writes missing any required frontmatter field.
129
-
130
- - **DO NOT shorten the description.** The description is the
131
- PRIMARY triggering mechanism Claude Code reads it to decide
132
- whether to load the skill. A shorter description means fewer
133
- matches and worse triggering. Only change the description if
134
- it contains factually wrong information. Never condense it
135
- for brevity.
136
-
137
- - **allowed-tools must list Claude Code tool names**, NOT vault
138
- agent tools. These skills run in developer Claude Code sessions,
139
- not in the agent pipeline. Valid values are:
140
- Read, Edit, Write, Bash, Grep, Glob
141
- If the existing allowed-tools lists vault_* tools (like
142
- vault_search_fts, vault_spores, vault_state, etc.), that is
143
- WRONG replace with the appropriate Claude Code tools.
144
- Most procedural skills need: Read, Edit, Write, Bash, Grep, Glob
145
- Read-only informational skills need: Read, Bash, Grep, Glob
146
-
147
- - Preserve all content that is still accurate — do NOT
148
- restructure or rephrase sections that are correct. Only
149
- modify the specific sections affected by the new knowledge.
150
- - Incorporate the new knowledge identified in assessment
151
- - Follow the same SKILL.md format:
152
- - Prerequisites, Steps, Common Pitfalls structure
153
- - Stay under 500 lines
154
- - Include a rationale parameter explaining WHAT changed:
155
- e.g., "Updated: added hookFields normalization step from
156
- session dd5bc83a, corrected Windsurf MCP path"
157
-
158
- vault_write_skill automatically bumps the generation and
159
- creates a lineage entry with the rationale.
160
-
161
- ## OVERSIZED — Split into focused sub-skills
162
-
163
- 1. Identify distinct procedures within the skill.
164
- 2. Write each as a new skill via vault_write_skill.
165
- Each sub-skill gets its own name, description, and content.
166
- 3. Retire the parent via vault_skill_records
167
- (action: update, status: retired).
168
-
169
- ## CURRENT — No action needed. Skip.
170
-
171
- Report a summary of all actions taken via vault_report:
172
- - Which skills were updated (with rationale)
173
- - Which skills were split (into what)
174
- - Which skills were left as CURRENT
79
+ (action: get).
80
+
81
+ 2. START from the existing content as-is. Copy it verbatim.
82
+ Then make ONLY the specific changes needed — insert new
83
+ sections, update incorrect facts, add missing steps.
84
+
85
+ The diff between old and new should be MINIMAL.
86
+
87
+ Protected frontmatter rules (vault_write_skill enforces
88
+ these and will REJECT writes that violate them):
89
+ - user-invocable: copy EXACT value from existing skill
90
+ - allowed-tools: copy EXACT value from existing skill
91
+ - description: do not shorten (>10% reduction is rejected)
92
+
93
+ 3. Write via vault_write_skill with a rationale explaining
94
+ what specifically changed.
95
+
96
+ ## DEPRECATED — Retire the skill
97
+
98
+ 1. vault_skill_records (action: update, status: retired)
99
+ 2. vault_skill_records (action: delete)
100
+
101
+ ## CURRENT No action. Skip.
102
+
103
+ Report all actions via vault_report.
175
104
  tools:
176
105
  - vault_write_skill
177
106
  - vault_skill_records
178
107
  - vault_skill_candidates
179
108
  - vault_state
180
- - vault_spores
181
109
  - vault_search_fts
182
- - vault_search_semantic
183
110
  - vault_report
184
- maxTurns: 35
111
+ maxTurns: 20
185
112
  required: true
186
113
  dependsOn:
187
114
  - assess
@@ -6,11 +6,11 @@ description: >-
6
6
  agent: myco-agent
7
7
  prompt: >-
8
8
  Generate ONE project-specific skill from the next approved candidate.
9
- Process only the first approved candidate found do not batch multiple
10
- skills in a single run. The schedule will pick up the next one.
9
+ The instruction contains the candidate metadata and pre-assembled
10
+ source material. Write the skill, then validate it.
11
11
  isDefault: false
12
12
  model: claude-sonnet-4-6
13
- maxTurns: 35
13
+ maxTurns: 30
14
14
  timeoutSeconds: 900
15
15
  schedule:
16
16
  enabled: false
@@ -19,62 +19,12 @@ schedule:
19
19
  - idle
20
20
  preCondition: has-approved-candidates
21
21
  phases:
22
- - name: gather
23
- prompt: |
24
- You are generating ONE skill. Find the first approved candidate
25
- that doesn't have a skill yet.
26
-
27
- If an instruction provides a candidate ID, use that specific one.
28
- Otherwise, use vault_skill_candidates (action: list, status: approved)
29
- and pick the FIRST result. Process ONLY that one candidate —
30
- do not attempt to generate multiple skills in this run.
31
-
32
- Read the candidate. If its skill_id is set or status is 'generated',
33
- it already has a skill — report "already generated" and STOP.
34
- Do NOT skip based on similar topics. The user approved it.
35
-
36
- If no skill exists, gather ALL source material for this candidate:
37
-
38
- 1. Read each source item referenced in the candidate's source_ids.
39
- Use vault_spores to fetch spore IDs, vault_sessions to fetch
40
- session IDs. These contain the detailed knowledge.
41
-
42
- 2. Search for additional context using vault_search_semantic with
43
- the candidate's topic as the query. This may surface plans,
44
- artifacts, and sessions not in the source_ids.
45
-
46
- 3. Search vault_search_fts for specific file paths, function names,
47
- or config keys mentioned in the source material.
48
-
49
- 4. Check vault_entities for related entities — these often link
50
- to additional spores via edges.
51
-
52
- For each source, extract:
53
- - Concrete steps (what to do, in what order)
54
- - File paths and code patterns (specific to this project)
55
- - Gotchas and pitfalls (things that went wrong)
56
- - Decisions and rationale (why this approach, not another)
57
- - Prerequisites (what must be true before starting)
58
-
59
- Be thorough — the skill quality depends entirely on how much
60
- concrete detail you gather here.
61
- tools:
62
- - vault_skill_candidates
63
- - vault_spores
64
- - vault_sessions
65
- - vault_search_fts
66
- - vault_search_semantic
67
- - vault_read_digest
68
- - vault_entities
69
- - vault_edges
70
- maxTurns: 10
71
- required: true
72
-
73
22
  - name: draft
74
23
  prompt: |
75
- Write a SKILL.md from the gathered material. The skill must be a
76
- procedural how-to guide that teaches an agent how to accomplish
77
- a specific task in THIS project.
24
+ Write a SKILL.md from the source material in the instruction.
25
+ The instruction contains the candidate ID, topic, rationale,
26
+ and the full text of each source spore and session. Do NOT
27
+ call any search or read tools — the material is already here.
78
28
 
79
29
  ## SKILL.md Format
80
30
 
@@ -151,16 +101,14 @@ phases:
151
101
  - display_name: human-readable title
152
102
  - description: the frontmatter description text
153
103
  - content: the full SKILL.md including frontmatter
154
- - candidate_id: the candidate ID from the gather phase
155
- - source_ids: JSON array of source item IDs used
104
+ - candidate_id: the candidate ID from the instruction
105
+ - source_ids: JSON array of source item IDs from the instruction
156
106
  - rationale: "Initial generation from candidate survey"
157
107
  tools:
158
108
  - vault_write_skill
159
109
  - vault_skill_records
160
110
  maxTurns: 10
161
111
  required: true
162
- dependsOn:
163
- - gather
164
112
 
165
113
  - name: validate
166
114
  prompt: |
@@ -209,7 +157,7 @@ phases:
209
157
  - vault_spores
210
158
  - vault_search_fts
211
159
  - vault_report
212
- maxTurns: 8
160
+ maxTurns: 15
213
161
  required: true
214
162
  dependsOn:
215
163
  - draft