@goondocks/myco 0.20.2 → 0.21.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/bin/myco-run +68 -7
- package/dist/agent-eval-YK2VP2S4.js +356 -0
- package/dist/agent-eval-YK2VP2S4.js.map +1 -0
- package/dist/{agent-run-X25Q2A6T.js → agent-run-GEJBD2YD.js} +10 -8
- package/dist/{agent-run-X25Q2A6T.js.map → agent-run-GEJBD2YD.js.map} +1 -1
- package/dist/{agent-tasks-7B6OFERB.js → agent-tasks-5XSRGTRX.js} +10 -8
- package/dist/{agent-tasks-7B6OFERB.js.map → agent-tasks-5XSRGTRX.js.map} +1 -1
- package/dist/{chunk-OD4AA7PV.js → chunk-53RPGOEN.js} +56 -8
- package/dist/chunk-53RPGOEN.js.map +1 -0
- package/dist/chunk-54SXG5HF.js +26 -0
- package/dist/chunk-54SXG5HF.js.map +1 -0
- package/dist/{chunk-XATDZX7U.js → chunk-6ALVMIB4.js} +19 -5
- package/dist/{chunk-XATDZX7U.js.map → chunk-6ALVMIB4.js.map} +1 -1
- package/dist/{chunk-FLLBJLHM.js → chunk-6C6QZ4PM.js} +9 -5
- package/dist/chunk-6C6QZ4PM.js.map +1 -0
- package/dist/{chunk-CCRGY3QW.js → chunk-AUIXX33A.js} +24 -95
- package/dist/chunk-AUIXX33A.js.map +1 -0
- package/dist/chunk-CISWUP5W.js +101 -0
- package/dist/chunk-CISWUP5W.js.map +1 -0
- package/dist/{chunk-MYOZLMB2.js → chunk-DTWUHHFI.js} +576 -20
- package/dist/chunk-DTWUHHFI.js.map +1 -0
- package/dist/chunk-EEOJWLMP.js +582 -0
- package/dist/chunk-EEOJWLMP.js.map +1 -0
- package/dist/{chunk-XG5RRUYF.js → chunk-ENZR5NG7.js} +2 -2
- package/dist/{chunk-6RFZWV4R.js → chunk-FCJ5JV54.js} +1 -1
- package/dist/{chunk-6RFZWV4R.js.map → chunk-FCJ5JV54.js.map} +1 -1
- package/dist/{chunk-US4LNCAT.js → chunk-IPPMYQ2Y.js} +5 -1
- package/dist/chunk-IPPMYQ2Y.js.map +1 -0
- package/dist/{chunk-VVNL26WX.js → chunk-KTTSXYEK.js} +22 -10
- package/dist/chunk-KTTSXYEK.js.map +1 -0
- package/dist/chunk-LQIPXVDH.js +17 -0
- package/dist/chunk-LQIPXVDH.js.map +1 -0
- package/dist/{chunk-DCSGJ7W4.js → chunk-N2DGFACQ.js} +3 -3
- package/dist/chunk-N7Z3LUEZ.js +858 -0
- package/dist/chunk-N7Z3LUEZ.js.map +1 -0
- package/dist/{chunk-2PDWCDKY.js → chunk-NFO7BRCO.js} +10 -7
- package/dist/{chunk-2PDWCDKY.js.map → chunk-NFO7BRCO.js.map} +1 -1
- package/dist/{chunk-Q36VMZST.js → chunk-OTQH5KZW.js} +89 -38
- package/dist/chunk-OTQH5KZW.js.map +1 -0
- package/dist/chunk-OUJSQSKE.js +113 -0
- package/dist/chunk-OUJSQSKE.js.map +1 -0
- package/dist/chunk-OZ3FBAK5.js +50 -0
- package/dist/chunk-OZ3FBAK5.js.map +1 -0
- package/dist/chunk-QATYARI5.js +408 -0
- package/dist/chunk-QATYARI5.js.map +1 -0
- package/dist/{chunk-KESLPBKV.js → chunk-QDLVIW2O.js} +4 -4
- package/dist/{chunk-5XIVBO25.js → chunk-QLLBJEM7.js} +6 -2
- package/dist/chunk-QLLBJEM7.js.map +1 -0
- package/dist/{chunk-EVDQKYCG.js → chunk-RQSJLWP4.js} +13 -2
- package/dist/chunk-RQSJLWP4.js.map +1 -0
- package/dist/{chunk-BPRIYNLE.js → chunk-TKAJ3JVF.js} +3 -3
- package/dist/chunk-TSM6VESW.js +25 -0
- package/dist/chunk-TSM6VESW.js.map +1 -0
- package/dist/{chunk-6X2ERTQV.js → chunk-USVFEWYL.js} +6 -4
- package/dist/{chunk-6X2ERTQV.js.map → chunk-USVFEWYL.js.map} +1 -1
- package/dist/{chunk-JZGN33AY.js → chunk-VRI56337.js} +4 -4
- package/dist/chunk-X2IRGXGF.js +14103 -0
- package/dist/chunk-X2IRGXGF.js.map +1 -0
- package/dist/{chunk-FMRZ26U5.js → chunk-X3IGT5RV.js} +5 -2
- package/dist/{chunk-FMRZ26U5.js.map → chunk-X3IGT5RV.js.map} +1 -1
- package/dist/{chunk-KHT24OWC.js → chunk-YDUOSRGD.js} +8 -94
- package/dist/{chunk-KHT24OWC.js.map → chunk-YDUOSRGD.js.map} +1 -1
- package/dist/{chunk-NGROSFOH.js → chunk-Z66IT5KL.js} +14 -9
- package/dist/chunk-Z66IT5KL.js.map +1 -0
- package/dist/{cli-GGPWH4UO.js → cli-HSLIG7EX.js} +50 -43
- package/dist/cli-HSLIG7EX.js.map +1 -0
- package/dist/{client-YXQUTXVZ.js → client-Z43DNLJH.js} +4 -4
- package/dist/{config-OMCYHG2S.js → config-VC4ACP42.js} +6 -4
- package/dist/{config-OMCYHG2S.js.map → config-VC4ACP42.js.map} +1 -1
- package/dist/{detect-PXNM6TA7.js → detect-7NUD5B5R.js} +2 -2
- package/dist/{detect-providers-5KOPZ7J2.js → detect-providers-ILLQZROY.js} +4 -4
- package/dist/{doctor-5JXJ36KA.js → doctor-HJCWHAU4.js} +49 -16
- package/dist/doctor-HJCWHAU4.js.map +1 -0
- package/dist/executor-DO6QFC6G.js +45 -0
- package/dist/{init-LMYOVZAV.js → init-4KVK7W2E.js} +16 -14
- package/dist/{init-LMYOVZAV.js.map → init-4KVK7W2E.js.map} +1 -1
- package/dist/{installer-FS257JRZ.js → installer-N4UTEACX.js} +6 -4
- package/dist/{llm-TH4NLIRM.js → llm-AGVEF5XD.js} +5 -4
- package/dist/{loader-CQYTFHEW.js → loader-LX7TFRM6.js} +5 -3
- package/dist/{loader-NOMBJUPW.js → loader-UDNUMEDA.js} +5 -3
- package/dist/{main-YTBVRTBI.js → main-4J4QZZTZ.js} +2518 -656
- package/dist/main-4J4QZZTZ.js.map +1 -0
- package/dist/{open-HG2DX6RN.js → open-7TXJQM3H.js} +10 -8
- package/dist/{open-HG2DX6RN.js.map → open-7TXJQM3H.js.map} +1 -1
- package/dist/{post-compact-JSECI44W.js → post-compact-7AEFVCZS.js} +8 -8
- package/dist/{post-tool-use-POGPTJBA.js → post-tool-use-TZINWWDH.js} +11 -9
- package/dist/post-tool-use-TZINWWDH.js.map +1 -0
- package/dist/{post-tool-use-failure-OT7BFWQW.js → post-tool-use-failure-TCFEU2GI.js} +8 -8
- package/dist/{pre-compact-OXVODKH4.js → pre-compact-LO2VZCGR.js} +8 -8
- package/dist/{provider-check-43LAMSMH.js → provider-check-ZEV5P4KM.js} +4 -4
- package/dist/{registry-U4CHXK6R.js → registry-F3THYC5M.js} +6 -4
- package/dist/{remove-N7ZPELFU.js → remove-F77AAALE.js} +12 -10
- package/dist/{remove-N7ZPELFU.js.map → remove-F77AAALE.js.map} +1 -1
- package/dist/{restart-ADG5GBTB.js → restart-UEFDPMLT.js} +11 -9
- package/dist/{restart-ADG5GBTB.js.map → restart-UEFDPMLT.js.map} +1 -1
- package/dist/{search-AHZEUNRR.js → search-NHNVUAQQ.js} +11 -9
- package/dist/{search-AHZEUNRR.js.map → search-NHNVUAQQ.js.map} +1 -1
- package/dist/{server-AGVYZVP5.js → server-AZJSTQEK.js} +369 -270
- package/dist/server-AZJSTQEK.js.map +1 -0
- package/dist/{session-6IU4AXYP.js → session-3HLC5KOD.js} +11 -9
- package/dist/{session-6IU4AXYP.js.map → session-3HLC5KOD.js.map} +1 -1
- package/dist/{session-end-FT27DWYZ.js → session-end-FS46UARX.js} +7 -7
- package/dist/session-start-46KPFV2H.js +134 -0
- package/dist/session-start-46KPFV2H.js.map +1 -0
- package/dist/{setup-llm-77MP4I2G.js → setup-llm-JMWSNQ2C.js} +11 -9
- package/dist/{setup-llm-77MP4I2G.js.map → setup-llm-JMWSNQ2C.js.map} +1 -1
- package/dist/src/agent/definitions/agent.yaml +9 -5
- package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +115 -0
- package/dist/src/agent/definitions/tasks/cortex-prompt-builder.yaml +67 -0
- package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -1
- package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
- package/dist/src/agent/definitions/tasks/review-session.yaml +10 -39
- package/dist/src/agent/definitions/tasks/skill-evolve.yaml +181 -25
- package/dist/src/agent/definitions/tasks/skill-generate.yaml +21 -7
- package/dist/src/agent/definitions/tasks/skill-survey.yaml +2 -6
- package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
- package/dist/src/agent/definitions/tasks/title-summary.yaml +12 -19
- package/dist/src/agent/definitions/tasks/{full-intelligence.yaml → vault-evolve.yaml} +74 -129
- package/dist/src/agent/definitions/tasks/vault-seed.yaml +370 -0
- package/dist/src/agent/prompts/agent.md +12 -38
- 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/claude-code.yaml +4 -0
- package/dist/src/symbionts/manifests/opencode.yaml +7 -0
- package/dist/src/symbionts/manifests/pi.yaml +22 -0
- package/dist/src/symbionts/templates/agents-starter.md +1 -1
- package/dist/src/symbionts/templates/pi/package.json +6 -0
- package/dist/src/symbionts/templates/pi/plugin.ts +559 -0
- package/dist/{stats-NVPWOYTE.js → stats-MKMETHMA.js} +11 -9
- package/dist/{stats-NVPWOYTE.js.map → stats-MKMETHMA.js.map} +1 -1
- package/dist/{stop-ZPIKVLH4.js → stop-OUEX6KA4.js} +7 -7
- package/dist/{stop-failure-2PX67YJC.js → stop-failure-2BWVNZEG.js} +8 -8
- package/dist/{subagent-start-UUE6EHQD.js → subagent-start-J4VV6DEE.js} +8 -8
- package/dist/{subagent-stop-KQWWWPE6.js → subagent-stop-JMLVEPIA.js} +8 -8
- package/dist/{task-completed-WMHOFQ7B.js → task-completed-65CHMMKA.js} +8 -8
- package/dist/{team-LRZ6GTQK.js → team-U2LDKIS4.js} +7 -5
- package/dist/{turns-YFNI5CQC.js → turns-HU2CTZAP.js} +2 -2
- package/dist/ui/assets/index-BUGor9dk.js +842 -0
- package/dist/ui/assets/index-_OP4ifzH.css +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/{update-O6V4RC4W.js → update-ZSHVXWSQ.js} +12 -10
- package/dist/{update-O6V4RC4W.js.map → update-ZSHVXWSQ.js.map} +1 -1
- package/dist/{user-prompt-submit-N36KUPHI.js → user-prompt-submit-APMO6FVU.js} +10 -9
- package/dist/{user-prompt-submit-N36KUPHI.js.map → user-prompt-submit-APMO6FVU.js.map} +1 -1
- package/dist/{verify-LXPV7NYG.js → verify-R76ZFJSZ.js} +8 -5
- package/dist/{verify-LXPV7NYG.js.map → verify-R76ZFJSZ.js.map} +1 -1
- package/dist/{version-XMPPJQHR.js → version-TXPPS3L5.js} +2 -2
- package/dist/version-TXPPS3L5.js.map +1 -0
- package/package.json +3 -1
- package/skills/myco/SKILL.md +16 -1
- package/skills/myco/references/cli-usage.md +1 -1
- package/skills/myco-rules/SKILL.md +94 -0
- package/skills/{rules → myco-rules}/references/rules-bad-example.md +1 -1
- package/skills/{rules → myco-rules}/references/rules-good-example.md +1 -1
- package/dist/chunk-4YFKBL3F.js +0 -195
- package/dist/chunk-4YFKBL3F.js.map +0 -1
- package/dist/chunk-5XIVBO25.js.map +0 -1
- package/dist/chunk-CCRGY3QW.js.map +0 -1
- package/dist/chunk-CUDIZJY7.js +0 -36
- package/dist/chunk-CUDIZJY7.js.map +0 -1
- package/dist/chunk-EVDQKYCG.js.map +0 -1
- package/dist/chunk-FLLBJLHM.js.map +0 -1
- package/dist/chunk-MYOZLMB2.js.map +0 -1
- package/dist/chunk-NGROSFOH.js.map +0 -1
- package/dist/chunk-OD4AA7PV.js.map +0 -1
- package/dist/chunk-Q36VMZST.js.map +0 -1
- package/dist/chunk-US4LNCAT.js.map +0 -1
- package/dist/chunk-UYMFCYBF.js +0 -2326
- package/dist/chunk-UYMFCYBF.js.map +0 -1
- package/dist/chunk-VVNL26WX.js.map +0 -1
- package/dist/cli-GGPWH4UO.js.map +0 -1
- package/dist/doctor-5JXJ36KA.js.map +0 -1
- package/dist/executor-HWW2QNZQ.js +0 -2472
- package/dist/executor-HWW2QNZQ.js.map +0 -1
- package/dist/main-YTBVRTBI.js.map +0 -1
- package/dist/post-tool-use-POGPTJBA.js.map +0 -1
- package/dist/server-AGVYZVP5.js.map +0 -1
- package/dist/session-start-LAFICHII.js +0 -189
- package/dist/session-start-LAFICHII.js.map +0 -1
- package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +0 -93
- package/dist/ui/assets/index-C2JuNtRB.css +0 -1
- package/dist/ui/assets/index-JLVaQKV2.js +0 -832
- package/skills/myco-curate/SKILL.md +0 -86
- package/skills/rules/SKILL.md +0 -214
- /package/dist/{chunk-XG5RRUYF.js.map → chunk-ENZR5NG7.js.map} +0 -0
- /package/dist/{chunk-DCSGJ7W4.js.map → chunk-N2DGFACQ.js.map} +0 -0
- /package/dist/{chunk-KESLPBKV.js.map → chunk-QDLVIW2O.js.map} +0 -0
- /package/dist/{chunk-BPRIYNLE.js.map → chunk-TKAJ3JVF.js.map} +0 -0
- /package/dist/{chunk-JZGN33AY.js.map → chunk-VRI56337.js.map} +0 -0
- /package/dist/{client-YXQUTXVZ.js.map → client-Z43DNLJH.js.map} +0 -0
- /package/dist/{detect-PXNM6TA7.js.map → detect-7NUD5B5R.js.map} +0 -0
- /package/dist/{detect-providers-5KOPZ7J2.js.map → detect-providers-ILLQZROY.js.map} +0 -0
- /package/dist/{installer-FS257JRZ.js.map → executor-DO6QFC6G.js.map} +0 -0
- /package/dist/{llm-TH4NLIRM.js.map → installer-N4UTEACX.js.map} +0 -0
- /package/dist/{loader-CQYTFHEW.js.map → llm-AGVEF5XD.js.map} +0 -0
- /package/dist/{loader-NOMBJUPW.js.map → loader-LX7TFRM6.js.map} +0 -0
- /package/dist/{provider-check-43LAMSMH.js.map → loader-UDNUMEDA.js.map} +0 -0
- /package/dist/{post-compact-JSECI44W.js.map → post-compact-7AEFVCZS.js.map} +0 -0
- /package/dist/{post-tool-use-failure-OT7BFWQW.js.map → post-tool-use-failure-TCFEU2GI.js.map} +0 -0
- /package/dist/{pre-compact-OXVODKH4.js.map → pre-compact-LO2VZCGR.js.map} +0 -0
- /package/dist/{registry-U4CHXK6R.js.map → provider-check-ZEV5P4KM.js.map} +0 -0
- /package/dist/{team-LRZ6GTQK.js.map → registry-F3THYC5M.js.map} +0 -0
- /package/dist/{session-end-FT27DWYZ.js.map → session-end-FS46UARX.js.map} +0 -0
- /package/dist/{stop-ZPIKVLH4.js.map → stop-OUEX6KA4.js.map} +0 -0
- /package/dist/{stop-failure-2PX67YJC.js.map → stop-failure-2BWVNZEG.js.map} +0 -0
- /package/dist/{subagent-start-UUE6EHQD.js.map → subagent-start-J4VV6DEE.js.map} +0 -0
- /package/dist/{subagent-stop-KQWWWPE6.js.map → subagent-stop-JMLVEPIA.js.map} +0 -0
- /package/dist/{task-completed-WMHOFQ7B.js.map → task-completed-65CHMMKA.js.map} +0 -0
- /package/dist/{turns-YFNI5CQC.js.map → team-U2LDKIS4.js.map} +0 -0
- /package/dist/{version-XMPPJQHR.js.map → turns-HU2CTZAP.js.map} +0 -0
|
@@ -2,17 +2,20 @@ name: skill-evolve
|
|
|
2
2
|
displayName: Skill Evolution
|
|
3
3
|
description: >-
|
|
4
4
|
Evaluate and evolve existing Myco-managed skills. Assesses content
|
|
5
|
-
freshness
|
|
6
|
-
|
|
5
|
+
freshness against new spores AND codebase drift from refactors,
|
|
6
|
+
identifies merge and narrowness opportunities, and autonomously
|
|
7
|
+
consolidates the skill inventory.
|
|
7
8
|
agent: myco-agent
|
|
8
9
|
prompt: >-
|
|
9
|
-
Assess and evolve skills that have new knowledge
|
|
10
|
-
overlap. The instruction contains pre-filtered skills
|
|
11
|
-
content, new spore IDs, and pre-computed similarity
|
|
10
|
+
Assess and evolve skills that have new knowledge, codebase drift,
|
|
11
|
+
or structural overlap. The instruction contains pre-filtered skills
|
|
12
|
+
with their content, new spore IDs, and pre-computed similarity
|
|
13
|
+
analysis; the verify phase fact-checks the broader active skill
|
|
14
|
+
set against the codebase.
|
|
12
15
|
isDefault: false
|
|
13
|
-
|
|
14
|
-
maxTurns:
|
|
15
|
-
timeoutSeconds:
|
|
16
|
+
reasoningLevel: default
|
|
17
|
+
maxTurns: 72
|
|
18
|
+
timeoutSeconds: 2400
|
|
16
19
|
schedule:
|
|
17
20
|
enabled: false
|
|
18
21
|
intervalSeconds: 900
|
|
@@ -25,7 +28,7 @@ params:
|
|
|
25
28
|
max_skills_per_run: 8
|
|
26
29
|
phases:
|
|
27
30
|
- name: inventory
|
|
28
|
-
|
|
31
|
+
reasoningLevel: low
|
|
29
32
|
prompt: |
|
|
30
33
|
The instruction contains pre-computed structural analysis of
|
|
31
34
|
all active skills. Two mechanical signals are provided:
|
|
@@ -81,13 +84,145 @@ phases:
|
|
|
81
84
|
required: true
|
|
82
85
|
readOnly: true
|
|
83
86
|
|
|
87
|
+
- name: verify
|
|
88
|
+
reasoningLevel: default
|
|
89
|
+
prompt: |
|
|
90
|
+
Fact-check active skills against the actual codebase. This phase
|
|
91
|
+
catches silent drift from refactors that didn't produce spores —
|
|
92
|
+
e.g., a file was renamed, a function was removed, a pattern was
|
|
93
|
+
replaced — so the spore-driven assessment in the next phase would
|
|
94
|
+
otherwise leave the skill's stale content in place.
|
|
95
|
+
|
|
96
|
+
## Selection
|
|
97
|
+
|
|
98
|
+
List active skills via vault_skill_records (action: list,
|
|
99
|
+
status: active). Prioritize up to 3 skills with the OLDEST
|
|
100
|
+
`last_verified_at` in properties (missing/zero counts as oldest,
|
|
101
|
+
so never-verified skills sort to the front). If fewer than 3
|
|
102
|
+
active skills exist, verify them all. This watermark is
|
|
103
|
+
independent of `last_assessed_at` — it rotates verify coverage
|
|
104
|
+
even when assess never touches the skill, which is the whole
|
|
105
|
+
point: skills that never get new spores still need to be
|
|
106
|
+
fact-checked for silent refactor drift. Full rotation time
|
|
107
|
+
scales with the active skill count divided by 3, so a larger
|
|
108
|
+
skill inventory naturally stretches the verify cadence.
|
|
109
|
+
|
|
110
|
+
Skills flagged by the inventory phase (merge_candidates or
|
|
111
|
+
narrow_candidates in vault_state:skill-evolve-inventory) can be
|
|
112
|
+
skipped here — they're already going to be rewritten in act.
|
|
113
|
+
|
|
114
|
+
## Per-skill procedure
|
|
115
|
+
|
|
116
|
+
For each selected skill:
|
|
117
|
+
|
|
118
|
+
1. Read full content via vault_skill_records (action: get).
|
|
119
|
+
2. Identify the 3-5 most LOAD-BEARING concrete claims. A claim
|
|
120
|
+
is load-bearing if the procedure depends on it being true.
|
|
121
|
+
Examples:
|
|
122
|
+
- "Edit `packages/myco/src/db/schema.ts`" — path claim
|
|
123
|
+
- "Call `setFocusedPanel()`" — identifier claim
|
|
124
|
+
- "The daemon restarts executor on SIGHUP" — behavior claim
|
|
125
|
+
Skip generic advice ("use good naming"), tool names that are
|
|
126
|
+
universal (e.g., `grep`), and illustrative code snippets that
|
|
127
|
+
aren't literal file content.
|
|
128
|
+
3. Verify each claim with the cheapest tool that answers it:
|
|
129
|
+
- **Path claim** → fs_read with a narrow line window (e.g.,
|
|
130
|
+
start_line=1, end_line=30). ENOENT or unrelated content =
|
|
131
|
+
MISSING/OUTDATED. For a DIRECTORY path, use fs_list or
|
|
132
|
+
fs_tree instead — fs_read on a directory returns an error
|
|
133
|
+
and burns a turn.
|
|
134
|
+
- **Identifier claim** → code_grep for the symbol with a
|
|
135
|
+
path+glob filter. Zero hits in expected location = MISSING.
|
|
136
|
+
- **Behavior claim** → code_grep for signature patterns that
|
|
137
|
+
would implement it. Zero hits = MISSING.
|
|
138
|
+
|
|
139
|
+
HARD LIMIT: **at most 2 tool calls per claim**, and **at most
|
|
140
|
+
4 claims per skill**, so ~8 filesystem calls per skill
|
|
141
|
+
absolute maximum. If your first grep returns too many hits
|
|
142
|
+
or the wrong ones, DO NOT refine and retry — accept
|
|
143
|
+
INCONCLUSIVE and move on. Exploratory refinement is exactly
|
|
144
|
+
how this phase burned through budget on earlier runs.
|
|
145
|
+
|
|
146
|
+
4. Categorize each claim: VERIFIED / MISSING / OUTDATED /
|
|
147
|
+
INCONCLUSIVE. INCONCLUSIVE is fine when the claim is too
|
|
148
|
+
fuzzy to verify cheaply — don't burn turns on it.
|
|
149
|
+
|
|
150
|
+
5. Aggregate for the skill:
|
|
151
|
+
- confidence: high (>=80% verified), medium, or low
|
|
152
|
+
- severity: none / minor (1 cosmetic miss) / major
|
|
153
|
+
(load-bearing miss) / critical (most refs gone)
|
|
154
|
+
|
|
155
|
+
6. Update the skill's verify watermark REGARDLESS of severity —
|
|
156
|
+
skipping this step on severity=none would make verify re-pick
|
|
157
|
+
the same skill forever. Example call:
|
|
158
|
+
|
|
159
|
+
vault_skill_records({
|
|
160
|
+
action: "update",
|
|
161
|
+
id: "<the-skill-uuid>",
|
|
162
|
+
properties: "{\"last_verified_at\": 1776580022}"
|
|
163
|
+
})
|
|
164
|
+
|
|
165
|
+
`properties` is a JSON string, merged into the skill's existing
|
|
166
|
+
properties. Any recent epoch-seconds integer works as the
|
|
167
|
+
timestamp — this is a rotation cursor, not an audit timestamp.
|
|
168
|
+
|
|
169
|
+
## Budget discipline
|
|
170
|
+
|
|
171
|
+
Total budget for this phase: {{max_turns}} turns covering ALL
|
|
172
|
+
selected skills combined. Plan per-skill budget as roughly
|
|
173
|
+
`{{max_turns}} / skills_selected` turns. Recommended shape:
|
|
174
|
+
1 content read + up to 4 claim checks × up to 2 tool calls +
|
|
175
|
+
1 watermark write. Stop verifying a skill as soon as severity
|
|
176
|
+
is clear — finding one MISSING load-bearing claim is enough
|
|
177
|
+
to flag the skill; don't check remaining claims.
|
|
178
|
+
|
|
179
|
+
Prefer narrow fs_read windows (start/end lines) over whole-file
|
|
180
|
+
reads. Prefer code_grep with a path/glob filter over an open grep.
|
|
181
|
+
When a tool returns "Not a file" or zero matches, accept that
|
|
182
|
+
answer and move on — do not retry with adjusted args.
|
|
183
|
+
|
|
184
|
+
Tools available for this phase: {{phase_tools}}.
|
|
185
|
+
|
|
186
|
+
## Store results
|
|
187
|
+
|
|
188
|
+
Store via vault_set_state (key: skill-evolve-drift) as JSON:
|
|
189
|
+
{
|
|
190
|
+
"verified_at": <epoch-seconds>,
|
|
191
|
+
"reports": [
|
|
192
|
+
{
|
|
193
|
+
"skill_id": "...",
|
|
194
|
+
"name": "...",
|
|
195
|
+
"severity": "none|minor|major|critical",
|
|
196
|
+
"confidence": "high|medium|low",
|
|
197
|
+
"notes": "Short: what's missing or outdated.",
|
|
198
|
+
"load_bearing_misses": ["claim 1", "claim 2"]
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
Report via vault_report. If no active skills are selectable
|
|
204
|
+
(e.g., all were flagged by inventory for merge), store an empty
|
|
205
|
+
reports array and report skip.
|
|
206
|
+
tools:
|
|
207
|
+
- vault_skill_records
|
|
208
|
+
- vault_set_state
|
|
209
|
+
- vault_report
|
|
210
|
+
- fs_read
|
|
211
|
+
- fs_list
|
|
212
|
+
- code_grep
|
|
213
|
+
maxTurns: 24
|
|
214
|
+
required: true
|
|
215
|
+
dependsOn:
|
|
216
|
+
- inventory
|
|
217
|
+
|
|
84
218
|
- name: assess
|
|
85
|
-
|
|
219
|
+
reasoningLevel: default
|
|
86
220
|
prompt: |
|
|
87
|
-
Read
|
|
88
|
-
|
|
221
|
+
Read two pre-computed inputs from vault_state:
|
|
222
|
+
- key: skill-evolve-inventory (merge/narrow candidates)
|
|
223
|
+
- key: skill-evolve-drift (codebase verification reports)
|
|
89
224
|
|
|
90
|
-
There are
|
|
225
|
+
There are THREE sources of skills to assess:
|
|
91
226
|
|
|
92
227
|
**A. Skills with new knowledge** — listed in the instruction
|
|
93
228
|
with descriptions and new spore IDs (full content is NOT in
|
|
@@ -98,8 +233,8 @@ phases:
|
|
|
98
233
|
get, id: "<name>") and verify 2-3 code references via
|
|
99
234
|
vault_search_fts. Skip content reads for skills where
|
|
100
235
|
the new spores are clearly unrelated.
|
|
101
|
-
3. Check the inventory
|
|
102
|
-
for merge or
|
|
236
|
+
3. Check the inventory AND drift analyses: is this skill also
|
|
237
|
+
flagged for merge, narrowness, or codebase drift?
|
|
103
238
|
|
|
104
239
|
**B. Inventory-flagged skills** — merge_candidates and
|
|
105
240
|
narrow_candidates from the inventory analysis. These may NOT
|
|
@@ -109,12 +244,30 @@ phases:
|
|
|
109
244
|
2. Verify the inventory's merge/narrow recommendation by
|
|
110
245
|
reading both skills' content.
|
|
111
246
|
|
|
112
|
-
|
|
247
|
+
**C. Drift-flagged skills** — reports from the verify phase with
|
|
248
|
+
severity of `minor`, `major`, or `critical`. These may NOT appear
|
|
249
|
+
in the instruction (no new spores) but need attention because
|
|
250
|
+
their content no longer matches the codebase. For each drift
|
|
251
|
+
report not already covered above:
|
|
252
|
+
1. Read the skill's content via vault_skill_records (action: get).
|
|
253
|
+
2. Trust the verify phase's load_bearing_misses as the STALE
|
|
254
|
+
detail set. You do NOT need to re-run fs_read/code_grep —
|
|
255
|
+
the verify phase already did that work. Only re-check if
|
|
256
|
+
the verify report's confidence is low.
|
|
257
|
+
3. Major/critical severity with confidence high/medium should
|
|
258
|
+
classify as STALE (or DEPRECATED if the entire subsystem
|
|
259
|
+
described is gone). Minor severity may stay CURRENT unless
|
|
260
|
+
combined with new-spore evidence.
|
|
261
|
+
|
|
262
|
+
For ALL skills from all three sources, classify with one of:
|
|
113
263
|
- CURRENT — still accurate, no changes needed.
|
|
114
|
-
- STALE — new knowledge changes specific
|
|
115
|
-
or gotchas. Note exactly WHAT is new
|
|
264
|
+
- STALE — new knowledge OR drift report changes specific
|
|
265
|
+
steps, paths, or gotchas. Note exactly WHAT is new or
|
|
266
|
+
wrong (cite the drift report's load_bearing_misses if
|
|
267
|
+
that's the driver).
|
|
116
268
|
- DEPRECATED — key code references are gone or the
|
|
117
269
|
procedure is no longer relevant. Note what's missing.
|
|
270
|
+
Drift severity=critical is the strongest signal here.
|
|
118
271
|
- MERGE — overlaps significantly with another skill
|
|
119
272
|
(from inventory analysis). Note the TARGET skill to
|
|
120
273
|
merge into.
|
|
@@ -122,10 +275,11 @@ phases:
|
|
|
122
275
|
inventory analysis). Note the BROADER skill to absorb
|
|
123
276
|
into.
|
|
124
277
|
|
|
125
|
-
Bias toward CURRENT. A skill that is 90%
|
|
126
|
-
better left alone than rewritten with risk of
|
|
127
|
-
|
|
128
|
-
|
|
278
|
+
Bias toward CURRENT for cosmetic issues. A skill that is 90%
|
|
279
|
+
accurate is better left alone than rewritten with risk of
|
|
280
|
+
losing detail. Do NOT bias toward CURRENT when a drift report
|
|
281
|
+
flags load-bearing misses with high confidence — that's
|
|
282
|
+
exactly the refactor-drift case this pipeline exists to catch.
|
|
129
283
|
|
|
130
284
|
5. Update the skill's properties with the new watermark:
|
|
131
285
|
vault_skill_records (action: update, id: <skill_id>,
|
|
@@ -143,8 +297,9 @@ phases:
|
|
|
143
297
|
Report via vault_report.
|
|
144
298
|
|
|
145
299
|
If the instruction says "No skills need assessment" AND the
|
|
146
|
-
inventory has no merge/narrow candidates
|
|
147
|
-
|
|
300
|
+
inventory has no merge/narrow candidates AND the drift report
|
|
301
|
+
has no minor+ severity entries, report skip via vault_report
|
|
302
|
+
and finish.
|
|
148
303
|
tools:
|
|
149
304
|
- vault_spores
|
|
150
305
|
- vault_search_fts
|
|
@@ -155,9 +310,10 @@ phases:
|
|
|
155
310
|
required: true
|
|
156
311
|
dependsOn:
|
|
157
312
|
- inventory
|
|
313
|
+
- verify
|
|
158
314
|
|
|
159
315
|
- name: act
|
|
160
|
-
|
|
316
|
+
reasoningLevel: low
|
|
161
317
|
prompt: |
|
|
162
318
|
Read classifications from vault_state
|
|
163
319
|
(key: skill-evolve-classifications). Parse the JSON.
|
|
@@ -10,8 +10,8 @@ prompt: >-
|
|
|
10
10
|
The instruction contains the candidate metadata and pre-assembled
|
|
11
11
|
source material. Stage the skill, validate it, then finalize it.
|
|
12
12
|
isDefault: false
|
|
13
|
-
|
|
14
|
-
maxTurns:
|
|
13
|
+
reasoningLevel: default
|
|
14
|
+
maxTurns: 32
|
|
15
15
|
timeoutSeconds: 900
|
|
16
16
|
schedule:
|
|
17
17
|
enabled: false
|
|
@@ -177,9 +177,22 @@ phases:
|
|
|
177
177
|
staging path's dedup gate already ran on your description;
|
|
178
178
|
this is a sanity check on the procedural content itself.
|
|
179
179
|
|
|
180
|
-
7. **Accuracy
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
7. **Accuracy (codebase-grounded):** Identify the 3-5 most
|
|
181
|
+
LOAD-BEARING concrete claims — paths, function/class names,
|
|
182
|
+
patterns the procedure depends on — and verify each against
|
|
183
|
+
the actual source:
|
|
184
|
+
- **Path claim** → `fs_read` (narrow window). ENOENT or
|
|
185
|
+
unrelated content = FAIL.
|
|
186
|
+
- **Identifier claim** → `code_grep` with a path+glob filter.
|
|
187
|
+
Zero hits in the expected location = FAIL.
|
|
188
|
+
- **Behavior claim** → `code_grep` for signature patterns
|
|
189
|
+
that would implement it. Zero hits = FAIL.
|
|
190
|
+
Budget 1-2 tool calls per claim.
|
|
191
|
+
|
|
192
|
+
If any load-bearing claim FAILS, treat as a criterion failure
|
|
193
|
+
and re-stage with corrected content. Do not finalize a skill
|
|
194
|
+
whose load-bearing paths can't be verified against the
|
|
195
|
+
current codebase — that's how hallucinated paths ship.
|
|
183
196
|
|
|
184
197
|
## If criteria fail
|
|
185
198
|
|
|
@@ -216,9 +229,10 @@ phases:
|
|
|
216
229
|
- vault_skill_records
|
|
217
230
|
- vault_skill_candidates
|
|
218
231
|
- vault_spores
|
|
219
|
-
- vault_search_fts
|
|
220
232
|
- vault_report
|
|
221
|
-
|
|
233
|
+
- fs_read
|
|
234
|
+
- code_grep
|
|
235
|
+
maxTurns: 18
|
|
222
236
|
required: true
|
|
223
237
|
dependsOn:
|
|
224
238
|
- draft
|
|
@@ -9,7 +9,7 @@ prompt: >-
|
|
|
9
9
|
Survey the vault knowledge graph for procedural domain candidates.
|
|
10
10
|
The instruction contains pre-assembled vault context.
|
|
11
11
|
isDefault: false
|
|
12
|
-
|
|
12
|
+
reasoningLevel: default
|
|
13
13
|
maxTurns: 35
|
|
14
14
|
timeoutSeconds: 1800
|
|
15
15
|
schedule:
|
|
@@ -72,8 +72,6 @@ phases:
|
|
|
72
72
|
a domain you spotted in the digest
|
|
73
73
|
- vault_spores to read full content of high-signal spores
|
|
74
74
|
summarized in the baseline
|
|
75
|
-
- vault_entities for components with high mention counts
|
|
76
|
-
that might anchor a domain
|
|
77
75
|
|
|
78
76
|
Do NOT exhaustively paginate or search every keyword.
|
|
79
77
|
You have ~12 tool calls — use them purposefully.
|
|
@@ -89,8 +87,6 @@ phases:
|
|
|
89
87
|
Store your domain clusters in working notes for the next phase.
|
|
90
88
|
tools:
|
|
91
89
|
- vault_spores
|
|
92
|
-
- vault_entities
|
|
93
|
-
- vault_edges
|
|
94
90
|
- vault_sessions
|
|
95
91
|
- vault_search_fts
|
|
96
92
|
- vault_search_semantic
|
|
@@ -99,7 +95,7 @@ phases:
|
|
|
99
95
|
readOnly: true
|
|
100
96
|
|
|
101
97
|
- name: synthesize-evaluate
|
|
102
|
-
|
|
98
|
+
reasoningLevel: default
|
|
103
99
|
prompt: |
|
|
104
100
|
The explore phase identified procedural domain clusters from
|
|
105
101
|
the vault. Now evaluate each and create candidates for domains
|
|
@@ -13,9 +13,9 @@ description: >
|
|
|
13
13
|
title and informative summary.
|
|
14
14
|
agent: myco-agent
|
|
15
15
|
isDefault: false
|
|
16
|
-
|
|
16
|
+
reasoningLevel: low
|
|
17
17
|
maxTurns: 15
|
|
18
|
-
timeoutSeconds:
|
|
18
|
+
timeoutSeconds: 300
|
|
19
19
|
|
|
20
20
|
prompt: |
|
|
21
21
|
Generate or update session titles and summaries. Budget: ~12 turns.
|
|
@@ -28,27 +28,24 @@ prompt: |
|
|
|
28
28
|
|
|
29
29
|
**If a target session ID is specified above:**
|
|
30
30
|
Always process it — the user explicitly requested regeneration.
|
|
31
|
-
Call `
|
|
32
|
-
title/summary
|
|
33
|
-
|
|
34
|
-
unprocessed). Do NOT skip even if there are no new unprocessed batches.
|
|
31
|
+
Call `vault_session_summary_material` with `session_id: <target session>`
|
|
32
|
+
to get the current title/summary plus the compact ordered prompt-batch arc.
|
|
33
|
+
Do NOT skip even if there are no new unprocessed batches.
|
|
35
34
|
|
|
36
35
|
**If no target session specified (automatic run):**
|
|
37
36
|
Call `vault_unprocessed` with `include_active: true` — titles are needed
|
|
38
37
|
mid-flight, not just after a session completes. Group by session_id —
|
|
39
|
-
each session with unprocessed batches needs its summary updated.
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
each session with unprocessed batches needs its summary updated. For each
|
|
39
|
+
session, call `vault_session_summary_material`. If no sessions have
|
|
40
|
+
unprocessed batches, report "skip" and finish.
|
|
42
41
|
|
|
43
42
|
## Phase 2 — Update Each Session (budget: 8 turns)
|
|
44
43
|
|
|
45
44
|
For each session to process:
|
|
46
45
|
1. Read the EXISTING title and summary — context from prior runs.
|
|
47
|
-
2. Read the session's prompt
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
This is your PRIMARY source — read through the full set to understand
|
|
51
|
-
the complete arc of work.
|
|
46
|
+
2. Read the session's compact prompt-batch arc — user_prompt +
|
|
47
|
+
response_summary. This is your PRIMARY source — read through the full
|
|
48
|
+
set to understand the complete arc of work.
|
|
52
49
|
3. Generate a title and summary from the full session content.
|
|
53
50
|
4. Call `vault_update_session` with BOTH title and summary.
|
|
54
51
|
|
|
@@ -81,10 +78,6 @@ prompt: |
|
|
|
81
78
|
|
|
82
79
|
toolOverrides:
|
|
83
80
|
- vault_unprocessed
|
|
84
|
-
-
|
|
85
|
-
- vault_spores
|
|
86
|
-
- vault_search_fts
|
|
87
|
-
- vault_state
|
|
81
|
+
- vault_session_summary_material
|
|
88
82
|
- vault_update_session
|
|
89
|
-
- vault_set_state
|
|
90
83
|
- vault_report
|