@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.
- package/README.md +14 -22
- package/bin/myco-run +15 -2
- package/dist/{agent-run-7AYHXIEF.js → agent-run-I4O2K2CK.js} +7 -7
- package/dist/{agent-tasks-UUIFKBD4.js → agent-tasks-UOW5BQIB.js} +7 -7
- package/dist/{chunk-XD3NEN3Q.js → chunk-2V7HR7HB.js} +2 -2
- package/dist/chunk-44PZCAYS.js +107 -0
- package/dist/chunk-44PZCAYS.js.map +1 -0
- package/dist/{chunk-DT42247G.js → chunk-75AZFBFW.js} +3 -3
- package/dist/{chunk-RMJPQZGF.js → chunk-C3EGL5JX.js} +755 -266
- package/dist/chunk-C3EGL5JX.js.map +1 -0
- package/dist/{chunk-7DAH5GLC.js → chunk-CKJAWZQE.js} +5 -1
- package/dist/chunk-CKJAWZQE.js.map +1 -0
- package/dist/{chunk-ML6GTPZU.js → chunk-CML4MCYF.js} +2 -2
- package/dist/{chunk-UTLWSKDV.js → chunk-CURS2TNP.js} +45 -4
- package/dist/chunk-CURS2TNP.js.map +1 -0
- package/dist/{chunk-EBIYONNZ.js → chunk-DPSLJ242.js} +34 -2
- package/dist/chunk-DPSLJ242.js.map +1 -0
- package/dist/{chunk-BZDZORVP.js → chunk-LSP5HYOO.js} +19 -16
- package/dist/chunk-LSP5HYOO.js.map +1 -0
- package/dist/{chunk-NUSTG3BH.js → chunk-N75GMQGA.js} +3 -3
- package/dist/{chunk-F6C4IC6R.js → chunk-NI23QCHB.js} +3 -3
- package/dist/{chunk-C3C5QVLK.js → chunk-O3TRN3RC.js} +2 -2
- package/dist/{chunk-3NCVCGUZ.js → chunk-RAV5YMRU.js} +3 -3
- package/dist/{chunk-25WHTV4N.js → chunk-RIDSOQDR.js} +21 -7
- package/dist/chunk-RIDSOQDR.js.map +1 -0
- package/dist/{chunk-HPZ7YAMA.js → chunk-TCSVDQF5.js} +1130 -195
- package/dist/chunk-TCSVDQF5.js.map +1 -0
- package/dist/{chunk-CTF7TQMJ.js → chunk-TLK46KKD.js} +14 -4
- package/dist/chunk-TLK46KKD.js.map +1 -0
- package/dist/{chunk-IGBHLFV5.js → chunk-TOER6RNC.js} +22 -2
- package/dist/chunk-TOER6RNC.js.map +1 -0
- package/dist/{chunk-ZSJPI5MS.js → chunk-TZAXQKO6.js} +6 -2
- package/dist/chunk-TZAXQKO6.js.map +1 -0
- package/dist/{chunk-RKPTMHED.js → chunk-U3J2DDSR.js} +2 -2
- package/dist/{chunk-SI5BBQAT.js → chunk-W7WENJ6F.js} +2 -2
- package/dist/{chunk-VVGZL2HX.js → chunk-WYOE4IAX.js} +153 -15
- package/dist/{chunk-VVGZL2HX.js.map → chunk-WYOE4IAX.js.map} +1 -1
- package/dist/{chunk-XZWFMMJR.js → chunk-XWOQL4XN.js} +3 -3
- package/dist/{chunk-5ZISXCDC.js → chunk-YZPI2Y3E.js} +39 -5
- package/dist/chunk-YZPI2Y3E.js.map +1 -0
- package/dist/{cli-WJVYP2QT.js → cli-D3TJYJ2U.js} +40 -40
- package/dist/{client-LZ3ZR4HC.js → client-4LLEXLVK.js} +4 -4
- package/dist/{config-ZQIMG3FB.js → config-DA4IUVFL.js} +3 -3
- package/dist/{detect-NJ2OREDP.js → detect-SZ2KDUF4.js} +2 -2
- package/dist/{detect-providers-C64L3QET.js → detect-providers-PSVKXTWE.js} +4 -4
- package/dist/{doctor-XEPBNHM3.js → doctor-KCTXPX5D.js} +12 -12
- package/dist/{executor-NXKJU5KW.js → executor-UYIZC3L5.js} +93 -285
- package/dist/executor-UYIZC3L5.js.map +1 -0
- package/dist/{init-BHVQAQ27.js → init-QFNBKKDC.js} +13 -13
- package/dist/{installer-45ZLP2RP.js → installer-BWJED3ED.js} +2 -2
- package/dist/{llm-KTD6SR55.js → llm-SMA5ZEAW.js} +4 -4
- package/dist/{loader-SHRKUKOS.js → loader-Q3P3R4UP.js} +3 -3
- package/dist/{loader-NEX3UF6U.js → loader-SKKUMT5C.js} +3 -3
- package/dist/{main-YFVBIRRK.js → main-5THODR77.js} +751 -257
- package/dist/main-5THODR77.js.map +1 -0
- package/dist/{open-2U7ZRGA3.js → open-7737CSPN.js} +7 -7
- package/dist/{post-compact-QIBMEWL3.js → post-compact-2TJ5FPZH.js} +7 -7
- package/dist/{post-tool-use-ICGFXDVY.js → post-tool-use-FRTSICC3.js} +6 -6
- package/dist/{post-tool-use-failure-C7TLH3XQ.js → post-tool-use-failure-KYO2NCNB.js} +7 -7
- package/dist/{pre-compact-IF7K4TQK.js → pre-compact-J6GCJEJR.js} +7 -7
- package/dist/{provider-check-LTLQ6BUZ.js → provider-check-AE3L5Z6R.js} +4 -4
- package/dist/{registry-TFQ22Z7N.js → registry-O2NZLO3V.js} +4 -4
- package/dist/{remove-FBGM2QVJ.js → remove-3WZZC7AX.js} +9 -9
- package/dist/{resolution-events-HGKIJOTA.js → resolution-events-XWYLLDRK.js} +4 -4
- package/dist/{restart-TQEECRNW.js → restart-HUHEFOXU.js} +8 -8
- package/dist/{search-NN5FC4Z6.js → search-ZGN3LDXG.js} +8 -8
- package/dist/{server-XMWJ4GF7.js → server-PTXLVVEE.js} +4 -4
- package/dist/{session-GLPAFYPO.js → session-7VV3IQMO.js} +9 -9
- package/dist/{session-end-TI3ILRBC.js → session-end-SMU55UCM.js} +6 -6
- package/dist/{session-start-PJLJDVJJ.js → session-start-NIMWEOIZ.js} +29 -13
- package/dist/session-start-NIMWEOIZ.js.map +1 -0
- package/dist/{setup-llm-AQSWLXCZ.js → setup-llm-7S3VPAPN.js} +8 -8
- package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
- package/dist/src/agent/definitions/tasks/full-intelligence.yaml +10 -0
- package/dist/src/agent/definitions/tasks/skill-evolve.yaml +163 -49
- package/dist/src/agent/definitions/tasks/skill-generate.yaml +44 -27
- package/dist/src/agent/definitions/tasks/skill-survey.yaml +132 -138
- package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
- package/dist/src/cli.js +1 -1
- package/dist/src/daemon/main.js +1 -1
- package/dist/src/hooks/post-tool-use.js +1 -1
- package/dist/src/hooks/session-end.js +1 -1
- package/dist/src/hooks/session-start.js +1 -1
- package/dist/src/hooks/stop.js +1 -1
- package/dist/src/hooks/user-prompt-submit.js +1 -1
- package/dist/src/mcp/server.js +1 -1
- package/dist/src/symbionts/manifests/codex.yaml +85 -0
- package/dist/src/symbionts/templates/claude-code/hooks.json +12 -12
- package/dist/src/symbionts/templates/claude-code/settings.json +3 -3
- package/dist/src/symbionts/templates/codex/hooks.json +4 -4
- package/dist/src/symbionts/templates/cursor/hooks.json +9 -9
- package/dist/src/symbionts/templates/cursor/settings.json +2 -2
- package/dist/src/symbionts/templates/gemini/hooks.json +6 -6
- package/dist/src/symbionts/templates/gemini/settings.json +2 -2
- package/dist/src/symbionts/templates/myco-run.cjs +44 -0
- package/dist/src/symbionts/templates/opencode/settings.json +2 -2
- package/dist/src/symbionts/templates/vscode-copilot/hooks.json +7 -7
- package/dist/src/symbionts/templates/vscode-copilot/settings.json +2 -2
- package/dist/src/symbionts/templates/windsurf/hooks.json +4 -4
- package/dist/src/symbionts/templates/windsurf/settings.json +2 -2
- package/dist/src/worker/package-lock.json +4338 -0
- package/dist/src/worker/package.json +5 -0
- package/dist/src/worker/src/index.ts +58 -65
- package/dist/src/worker/src/mcp/auth.ts +65 -0
- package/dist/src/worker/src/mcp/server.ts +53 -0
- package/dist/src/worker/src/mcp/tools/context.ts +13 -0
- package/dist/src/worker/src/mcp/tools/get.ts +15 -0
- package/dist/src/worker/src/mcp/tools/graph.ts +35 -0
- package/dist/src/worker/src/mcp/tools/search.ts +32 -0
- package/dist/src/worker/src/mcp/tools/sessions.ts +24 -0
- package/dist/src/worker/src/mcp/tools/skills.ts +16 -0
- package/dist/src/worker/src/mcp/tools/team.ts +9 -0
- package/dist/src/worker/src/schema.ts +5 -1
- package/dist/src/worker/src/search-helpers.ts +70 -0
- package/dist/src/worker/wrangler.toml +9 -0
- package/dist/{stats-BISBIBXZ.js → stats-GEOQ2DFF.js} +9 -9
- package/dist/{stop-47BJ42EO.js → stop-7AKYBJJ2.js} +6 -6
- package/dist/{stop-failure-VU5BTLWX.js → stop-failure-NLE2EURG.js} +7 -7
- package/dist/{subagent-start-SPTKQRHU.js → subagent-start-LBNZF2TG.js} +7 -7
- package/dist/{subagent-stop-UU75BYLC.js → subagent-stop-B2Z5GYAB.js} +7 -7
- package/dist/{task-completed-MVDO7TZF.js → task-completed-PO5TETJ7.js} +7 -7
- package/dist/{team-7X64J4Y6.js → team-DPNP2RN7.js} +97 -14
- package/dist/team-DPNP2RN7.js.map +1 -0
- package/dist/ui/assets/{index-rpmSpJpm.js → index-CiI1fwas.js} +120 -120
- package/dist/ui/index.html +1 -1
- package/dist/{update-DA7VEXOS.js → update-WBWB5URU.js} +18 -9
- package/dist/update-WBWB5URU.js.map +1 -0
- package/dist/{user-prompt-submit-ADZ4NTVO.js → user-prompt-submit-IZJC3NV7.js} +30 -7
- package/dist/user-prompt-submit-IZJC3NV7.js.map +1 -0
- package/dist/{verify-QYSERHF7.js → verify-FNSP62I3.js} +5 -5
- package/dist/{version-A72TAL2J.js → version-QEVU66NT.js} +2 -2
- package/package.json +7 -7
- package/dist/chunk-25WHTV4N.js.map +0 -1
- package/dist/chunk-5ZISXCDC.js.map +0 -1
- package/dist/chunk-7DAH5GLC.js.map +0 -1
- package/dist/chunk-BZDZORVP.js.map +0 -1
- package/dist/chunk-CTF7TQMJ.js.map +0 -1
- package/dist/chunk-EBIYONNZ.js.map +0 -1
- package/dist/chunk-HPZ7YAMA.js.map +0 -1
- package/dist/chunk-IGBHLFV5.js.map +0 -1
- package/dist/chunk-RMJPQZGF.js.map +0 -1
- package/dist/chunk-UTLWSKDV.js.map +0 -1
- package/dist/chunk-ZSJPI5MS.js.map +0 -1
- package/dist/executor-NXKJU5KW.js.map +0 -1
- package/dist/main-YFVBIRRK.js.map +0 -1
- package/dist/session-start-PJLJDVJJ.js.map +0 -1
- package/dist/src/symbionts/templates/hook-guard.cjs +0 -19
- package/dist/team-7X64J4Y6.js.map +0 -1
- package/dist/update-DA7VEXOS.js.map +0 -1
- package/dist/user-prompt-submit-ADZ4NTVO.js.map +0 -1
- /package/dist/{agent-run-7AYHXIEF.js.map → agent-run-I4O2K2CK.js.map} +0 -0
- /package/dist/{agent-tasks-UUIFKBD4.js.map → agent-tasks-UOW5BQIB.js.map} +0 -0
- /package/dist/{chunk-XD3NEN3Q.js.map → chunk-2V7HR7HB.js.map} +0 -0
- /package/dist/{chunk-DT42247G.js.map → chunk-75AZFBFW.js.map} +0 -0
- /package/dist/{chunk-ML6GTPZU.js.map → chunk-CML4MCYF.js.map} +0 -0
- /package/dist/{chunk-NUSTG3BH.js.map → chunk-N75GMQGA.js.map} +0 -0
- /package/dist/{chunk-F6C4IC6R.js.map → chunk-NI23QCHB.js.map} +0 -0
- /package/dist/{chunk-C3C5QVLK.js.map → chunk-O3TRN3RC.js.map} +0 -0
- /package/dist/{chunk-3NCVCGUZ.js.map → chunk-RAV5YMRU.js.map} +0 -0
- /package/dist/{chunk-RKPTMHED.js.map → chunk-U3J2DDSR.js.map} +0 -0
- /package/dist/{chunk-SI5BBQAT.js.map → chunk-W7WENJ6F.js.map} +0 -0
- /package/dist/{chunk-XZWFMMJR.js.map → chunk-XWOQL4XN.js.map} +0 -0
- /package/dist/{cli-WJVYP2QT.js.map → cli-D3TJYJ2U.js.map} +0 -0
- /package/dist/{client-LZ3ZR4HC.js.map → client-4LLEXLVK.js.map} +0 -0
- /package/dist/{config-ZQIMG3FB.js.map → config-DA4IUVFL.js.map} +0 -0
- /package/dist/{detect-NJ2OREDP.js.map → detect-SZ2KDUF4.js.map} +0 -0
- /package/dist/{detect-providers-C64L3QET.js.map → detect-providers-PSVKXTWE.js.map} +0 -0
- /package/dist/{doctor-XEPBNHM3.js.map → doctor-KCTXPX5D.js.map} +0 -0
- /package/dist/{init-BHVQAQ27.js.map → init-QFNBKKDC.js.map} +0 -0
- /package/dist/{installer-45ZLP2RP.js.map → installer-BWJED3ED.js.map} +0 -0
- /package/dist/{llm-KTD6SR55.js.map → llm-SMA5ZEAW.js.map} +0 -0
- /package/dist/{loader-NEX3UF6U.js.map → loader-Q3P3R4UP.js.map} +0 -0
- /package/dist/{loader-SHRKUKOS.js.map → loader-SKKUMT5C.js.map} +0 -0
- /package/dist/{open-2U7ZRGA3.js.map → open-7737CSPN.js.map} +0 -0
- /package/dist/{post-compact-QIBMEWL3.js.map → post-compact-2TJ5FPZH.js.map} +0 -0
- /package/dist/{post-tool-use-ICGFXDVY.js.map → post-tool-use-FRTSICC3.js.map} +0 -0
- /package/dist/{post-tool-use-failure-C7TLH3XQ.js.map → post-tool-use-failure-KYO2NCNB.js.map} +0 -0
- /package/dist/{pre-compact-IF7K4TQK.js.map → pre-compact-J6GCJEJR.js.map} +0 -0
- /package/dist/{provider-check-LTLQ6BUZ.js.map → provider-check-AE3L5Z6R.js.map} +0 -0
- /package/dist/{registry-TFQ22Z7N.js.map → registry-O2NZLO3V.js.map} +0 -0
- /package/dist/{remove-FBGM2QVJ.js.map → remove-3WZZC7AX.js.map} +0 -0
- /package/dist/{resolution-events-HGKIJOTA.js.map → resolution-events-XWYLLDRK.js.map} +0 -0
- /package/dist/{restart-TQEECRNW.js.map → restart-HUHEFOXU.js.map} +0 -0
- /package/dist/{search-NN5FC4Z6.js.map → search-ZGN3LDXG.js.map} +0 -0
- /package/dist/{server-XMWJ4GF7.js.map → server-PTXLVVEE.js.map} +0 -0
- /package/dist/{session-GLPAFYPO.js.map → session-7VV3IQMO.js.map} +0 -0
- /package/dist/{session-end-TI3ILRBC.js.map → session-end-SMU55UCM.js.map} +0 -0
- /package/dist/{setup-llm-AQSWLXCZ.js.map → setup-llm-7S3VPAPN.js.map} +0 -0
- /package/dist/{stats-BISBIBXZ.js.map → stats-GEOQ2DFF.js.map} +0 -0
- /package/dist/{stop-47BJ42EO.js.map → stop-7AKYBJJ2.js.map} +0 -0
- /package/dist/{stop-failure-VU5BTLWX.js.map → stop-failure-NLE2EURG.js.map} +0 -0
- /package/dist/{subagent-start-SPTKQRHU.js.map → subagent-start-LBNZF2TG.js.map} +0 -0
- /package/dist/{subagent-stop-UU75BYLC.js.map → subagent-stop-B2Z5GYAB.js.map} +0 -0
- /package/dist/{task-completed-MVDO7TZF.js.map → task-completed-PO5TETJ7.js.map} +0 -0
- /package/dist/{verify-QYSERHF7.js.map → verify-FNSP62I3.js.map} +0 -0
- /package/dist/{version-A72TAL2J.js.map → version-QEVU66NT.js.map} +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
name: skill-evolve
|
|
2
2
|
displayName: Skill Evolution
|
|
3
3
|
description: >-
|
|
4
|
-
Evaluate and evolve existing Myco-managed skills
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Evaluate and evolve existing Myco-managed skills. Assesses content
|
|
5
|
+
freshness, identifies merge and narrowness opportunities, and
|
|
6
|
+
autonomously consolidates the skill inventory.
|
|
7
7
|
agent: myco-agent
|
|
8
8
|
prompt: >-
|
|
9
|
-
Assess and
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
Assess and evolve skills that have new knowledge or structural
|
|
10
|
+
overlap. The instruction contains pre-filtered skills with their
|
|
11
|
+
content, new spore IDs, and pre-computed similarity analysis.
|
|
12
12
|
isDefault: false
|
|
13
13
|
model: claude-sonnet-4-6
|
|
14
|
-
maxTurns:
|
|
15
|
-
timeoutSeconds:
|
|
14
|
+
maxTurns: 48
|
|
15
|
+
timeoutSeconds: 1800
|
|
16
16
|
schedule:
|
|
17
17
|
enabled: false
|
|
18
18
|
intervalSeconds: 900
|
|
@@ -21,75 +21,161 @@ schedule:
|
|
|
21
21
|
preCondition: has-active-skills
|
|
22
22
|
params:
|
|
23
23
|
assess_interval_hours: 24
|
|
24
|
-
max_skills_per_run:
|
|
24
|
+
max_skills_per_run: 8
|
|
25
25
|
phases:
|
|
26
|
-
- name:
|
|
26
|
+
- name: inventory
|
|
27
|
+
model: claude-haiku-4-5-20251001
|
|
27
28
|
prompt: |
|
|
28
|
-
The instruction contains
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
1.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
The instruction contains pre-computed structural analysis of
|
|
30
|
+
all active skills. Two mechanical signals are provided:
|
|
31
|
+
|
|
32
|
+
1. **Narrow skills** — skills with <2 H2 sections are flagged
|
|
33
|
+
as mechanically narrow. These are NOT broad enough for
|
|
34
|
+
standalone domain status.
|
|
35
|
+
|
|
36
|
+
2. **Overlap pairs** — skill pairs with similar descriptions
|
|
37
|
+
OR overlapping H2 headings are flagged with scores.
|
|
38
|
+
|
|
39
|
+
## Your job: validate and assign targets
|
|
40
|
+
|
|
41
|
+
For each **mechanically narrow** skill:
|
|
42
|
+
- Confirm it is genuinely narrow (not a false positive, e.g.,
|
|
43
|
+
a debugging playbook with one long section is not narrow).
|
|
44
|
+
- Identify which broader skill it should be absorbed into.
|
|
45
|
+
Look at the heading lists to find the best domain match.
|
|
46
|
+
|
|
47
|
+
For each **overlap pair**:
|
|
48
|
+
- Confirm the overlap is real (not just shared vocabulary).
|
|
49
|
+
- If real, decide merge direction: which skill is the target
|
|
50
|
+
(broader, higher generation) and which is the source.
|
|
51
|
+
|
|
52
|
+
If no skills are flagged as narrow and no overlap pairs exist,
|
|
53
|
+
skip to storing an empty analysis.
|
|
54
|
+
|
|
55
|
+
## Store results
|
|
56
|
+
|
|
57
|
+
Store via vault_set_state (key: skill-evolve-inventory) as:
|
|
58
|
+
{
|
|
59
|
+
"merge_candidates": [
|
|
60
|
+
{ "source": "skill-name-a", "target": "skill-name-b",
|
|
61
|
+
"reason": "..." }
|
|
62
|
+
],
|
|
63
|
+
"narrow_candidates": [
|
|
64
|
+
{ "skill": "skill-name", "absorb_into": "broader-skill",
|
|
65
|
+
"reason": "..." }
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
Only override the mechanical signals when you have clear
|
|
70
|
+
evidence that the flag is wrong. The default is to act on
|
|
71
|
+
the mechanical flags, not to find reasons to keep everything.
|
|
38
72
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
73
|
+
If the instruction says "No skills need assessment", report
|
|
74
|
+
skip via vault_report and finish.
|
|
75
|
+
tools:
|
|
76
|
+
- vault_skill_records
|
|
77
|
+
- vault_set_state
|
|
78
|
+
- vault_report
|
|
79
|
+
maxTurns: 8
|
|
80
|
+
required: true
|
|
81
|
+
readOnly: true
|
|
48
82
|
|
|
49
|
-
|
|
83
|
+
- name: assess
|
|
84
|
+
model: claude-sonnet-4-6
|
|
85
|
+
prompt: |
|
|
86
|
+
Read the inventory analysis from vault_state
|
|
87
|
+
(key: skill-evolve-inventory).
|
|
88
|
+
|
|
89
|
+
There are TWO sources of skills to assess:
|
|
90
|
+
|
|
91
|
+
**A. Skills with new knowledge** — listed in the instruction
|
|
92
|
+
with descriptions and new spore IDs (full content is NOT in
|
|
93
|
+
the instruction — read it on-demand). For each:
|
|
94
|
+
1. Read new spores via vault_spores. Understand what changed.
|
|
95
|
+
2. Only if the new spores suggest a procedural change, read
|
|
96
|
+
the skill's full content via vault_skill_records (action:
|
|
97
|
+
get, id: "<name>") and verify 2-3 code references via
|
|
98
|
+
vault_search_fts. Skip content reads for skills where
|
|
99
|
+
the new spores are clearly unrelated.
|
|
100
|
+
3. Check the inventory analysis: is this skill also flagged
|
|
101
|
+
for merge or narrowness?
|
|
102
|
+
|
|
103
|
+
**B. Inventory-flagged skills** — merge_candidates and
|
|
104
|
+
narrow_candidates from the inventory analysis. These may NOT
|
|
105
|
+
appear in the instruction (they may have no new knowledge).
|
|
106
|
+
For each flagged skill not already covered above:
|
|
107
|
+
1. Read its content via vault_skill_records (action: get).
|
|
108
|
+
2. Verify the inventory's merge/narrow recommendation by
|
|
109
|
+
reading both skills' content.
|
|
110
|
+
|
|
111
|
+
For ALL skills from both sources, classify with one of:
|
|
112
|
+
- CURRENT — still accurate, no changes needed.
|
|
113
|
+
- STALE — new knowledge changes specific steps, paths,
|
|
114
|
+
or gotchas. Note exactly WHAT is new.
|
|
115
|
+
- DEPRECATED — key code references are gone or the
|
|
116
|
+
procedure is no longer relevant. Note what's missing.
|
|
117
|
+
- MERGE — overlaps significantly with another skill
|
|
118
|
+
(from inventory analysis). Note the TARGET skill to
|
|
119
|
+
merge into.
|
|
120
|
+
- NARROW — too specific for standalone status (from
|
|
121
|
+
inventory analysis). Note the BROADER skill to absorb
|
|
122
|
+
into.
|
|
123
|
+
|
|
124
|
+
Bias toward CURRENT. A skill that is 90% accurate is
|
|
125
|
+
better left alone than rewritten with risk of losing detail.
|
|
126
|
+
Only classify MERGE/NARROW when the inventory analysis
|
|
127
|
+
supports it AND you agree after reading the content.
|
|
128
|
+
|
|
129
|
+
5. Update the skill's properties with the new watermark:
|
|
50
130
|
vault_skill_records (action: update, id: <skill_id>,
|
|
51
|
-
properties: '{"last_assessed_at": <now>,
|
|
131
|
+
properties: '{"last_assessed_at": <now>,
|
|
132
|
+
"knowledge_watermark": <now>,
|
|
133
|
+
"last_classification": "<classification>"}')
|
|
52
134
|
|
|
53
|
-
|
|
54
|
-
(key: skill-evolve-classifications) as JSON
|
|
135
|
+
6. Store classifications via vault_set_state
|
|
136
|
+
(key: skill-evolve-classifications) as JSON:
|
|
137
|
+
[{ "skill_id": "...", "name": "...",
|
|
138
|
+
"classification": "...",
|
|
139
|
+
"target_skill": "..." (for MERGE/NARROW),
|
|
140
|
+
"details": "..." }]
|
|
55
141
|
|
|
56
142
|
Report via vault_report.
|
|
57
143
|
|
|
58
|
-
If the instruction says "No skills need assessment"
|
|
59
|
-
|
|
144
|
+
If the instruction says "No skills need assessment" AND the
|
|
145
|
+
inventory has no merge/narrow candidates, report skip via
|
|
146
|
+
vault_report and finish.
|
|
60
147
|
tools:
|
|
61
148
|
- vault_spores
|
|
62
149
|
- vault_search_fts
|
|
63
150
|
- vault_skill_records
|
|
64
151
|
- vault_set_state
|
|
65
152
|
- vault_report
|
|
66
|
-
maxTurns:
|
|
153
|
+
maxTurns: 18
|
|
67
154
|
required: true
|
|
155
|
+
dependsOn:
|
|
156
|
+
- inventory
|
|
68
157
|
|
|
69
|
-
- name:
|
|
158
|
+
- name: act
|
|
159
|
+
model: claude-haiku-4-5-20251001
|
|
70
160
|
prompt: |
|
|
71
161
|
Read classifications from vault_state
|
|
72
162
|
(key: skill-evolve-classifications). Parse the JSON.
|
|
73
163
|
|
|
74
|
-
For each skill
|
|
164
|
+
For each classified skill, take the appropriate action:
|
|
165
|
+
|
|
166
|
+
## CURRENT — No action. Skip.
|
|
75
167
|
|
|
76
168
|
## STALE — Targeted update
|
|
77
169
|
|
|
78
170
|
1. Read the current skill content from vault_skill_records
|
|
79
171
|
(action: get).
|
|
80
|
-
|
|
81
172
|
2. START from the existing content as-is. Copy it verbatim.
|
|
82
|
-
Then make ONLY the specific changes needed
|
|
83
|
-
sections, update incorrect facts, add missing steps.
|
|
84
|
-
|
|
173
|
+
Then make ONLY the specific changes needed.
|
|
85
174
|
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):
|
|
175
|
+
Protected frontmatter rules (enforced by vault_write_skill):
|
|
89
176
|
- user-invocable: copy EXACT value from existing skill
|
|
90
177
|
- allowed-tools: copy EXACT value from existing skill
|
|
91
178
|
- description: do not shorten (>10% reduction is rejected)
|
|
92
|
-
|
|
93
179
|
3. Write via vault_write_skill with a rationale explaining
|
|
94
180
|
what specifically changed.
|
|
95
181
|
|
|
@@ -98,17 +184,45 @@ phases:
|
|
|
98
184
|
1. vault_skill_records (action: update, status: retired)
|
|
99
185
|
2. vault_skill_records (action: delete)
|
|
100
186
|
|
|
101
|
-
##
|
|
187
|
+
## MERGE — Absorb into target skill
|
|
188
|
+
|
|
189
|
+
1. Read BOTH skills' full content from vault_skill_records
|
|
190
|
+
(action: get) — the source and the target.
|
|
191
|
+
2. Write MERGED content to the TARGET skill via
|
|
192
|
+
vault_write_skill. The merged skill should:
|
|
193
|
+
- Keep the target skill's name and frontmatter
|
|
194
|
+
- Incorporate the source skill's procedures as new sections
|
|
195
|
+
- Preserve all concrete file paths, code patterns, and
|
|
196
|
+
gotchas from both skills
|
|
197
|
+
- Have a coherent structure (not just concatenation)
|
|
198
|
+
Protected frontmatter rules apply to the target.
|
|
199
|
+
3. Rationale should explain: "Merged <source> into <target>:
|
|
200
|
+
<what was added>."
|
|
201
|
+
4. Delete the SOURCE skill: vault_skill_records (action: delete)
|
|
202
|
+
This cascades (lineage, usage, linked candidates).
|
|
203
|
+
|
|
204
|
+
## NARROW — Absorb into broader skill
|
|
205
|
+
|
|
206
|
+
Same as MERGE: read both, write merged content to the broader
|
|
207
|
+
skill, delete the narrow one. The narrow skill becomes a section
|
|
208
|
+
within the broader skill.
|
|
209
|
+
|
|
210
|
+
## Important
|
|
211
|
+
|
|
212
|
+
- Process MERGE/NARROW actions AFTER STALE updates, so you're
|
|
213
|
+
merging already-refreshed content.
|
|
214
|
+
- If vault_write_skill rejects a merge (e.g., dedup gate trips),
|
|
215
|
+
check the error and adjust content. If truly blocked, skip
|
|
216
|
+
and report the issue.
|
|
102
217
|
|
|
103
218
|
Report all actions via vault_report.
|
|
104
219
|
tools:
|
|
105
220
|
- vault_write_skill
|
|
106
221
|
- vault_skill_records
|
|
107
222
|
- vault_skill_candidates
|
|
108
|
-
- vault_state
|
|
109
223
|
- vault_search_fts
|
|
110
224
|
- vault_report
|
|
111
|
-
maxTurns:
|
|
225
|
+
maxTurns: 18
|
|
112
226
|
required: true
|
|
113
227
|
dependsOn:
|
|
114
228
|
- assess
|
|
@@ -33,34 +33,40 @@ phases:
|
|
|
33
33
|
---
|
|
34
34
|
name: myco:kebab-case-name
|
|
35
35
|
description: |
|
|
36
|
-
One paragraph
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
#
|
|
46
|
+
# Domain Title
|
|
47
47
|
|
|
48
|
-
Brief context paragraph (2-3 sentences) explaining
|
|
49
|
-
|
|
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
|
-
##
|
|
55
|
+
## Procedure A: [Name]
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
Each step should reference specific files in this project.
|
|
57
|
+
Steps for the first major procedure in this domain.
|
|
59
58
|
|
|
60
|
-
##
|
|
59
|
+
## Procedure B: [Name]
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
|
|
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."
|
|
84
|
-
|
|
85
|
-
- **Stay under
|
|
86
|
-
- **Use concrete file paths** from this project
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|