@kodax-ai/kodax 0.7.97-alpha.9 → 0.7.97-beta.2

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 (234) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +170 -29
  3. package/README_CN.md +116 -17
  4. package/config-templates/config.example.jsonc +2 -3
  5. package/dist/artifacts/skills/artifact-review/SKILL.md +44 -7
  6. package/dist/builtin/code-review/SKILL.md +5 -17
  7. package/dist/builtin/git-workflow/SKILL.md +9 -8
  8. package/dist/builtin/skill-creator/SKILL.md +38 -108
  9. package/dist/builtin/skill-creator/references/evaluation.md +50 -0
  10. package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +2 -0
  11. package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +6 -3
  12. package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +2 -0
  13. package/dist/builtin/skill-creator/scripts/compare-runs.js +6 -3
  14. package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +2 -0
  15. package/dist/builtin/skill-creator/scripts/grade-evals.js +6 -3
  16. package/dist/builtin/skill-creator/scripts/run-eval.js +3 -3
  17. package/dist/builtin/skill-creator/scripts/run-loop.js +2 -1
  18. package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +2 -0
  19. package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +3 -1
  20. package/dist/builtin/skill-creator/scripts/utils.d.ts +1 -1
  21. package/dist/builtin/skill-creator/scripts/utils.js +8 -0
  22. package/dist/builtin/tdd/SKILL.md +24 -40
  23. package/dist/builtin/visual-review/SKILL.md +7 -3
  24. package/dist/chunks/agent-DS7M57WD.js +2 -0
  25. package/dist/chunks/agent-adapter-TLWGGK3V.js +2 -0
  26. package/dist/chunks/argument-completer-OGCXKTRQ.js +2 -0
  27. package/dist/chunks/bedrock-native-Z5VNWF5U.js +4 -0
  28. package/dist/chunks/cell-LV7MNPNQ.js +2 -0
  29. package/dist/chunks/chunk-2HH5AS7E.js +1157 -0
  30. package/dist/chunks/chunk-3CP7AUWY.js +2 -0
  31. package/dist/chunks/chunk-45ZP2YHG.js +2 -0
  32. package/dist/chunks/chunk-4Y6U7AH4.js +9 -0
  33. package/dist/chunks/chunk-52EN2777.js +2 -0
  34. package/dist/chunks/{chunk-HXCY52Z2.js → chunk-53CJDQS2.js} +1 -1
  35. package/dist/chunks/{chunk-JNB2FL6P.js → chunk-5MUVRFMU.js} +1 -1
  36. package/dist/chunks/chunk-65652LR4.js +2 -0
  37. package/dist/chunks/chunk-6TITQQAI.js +351 -0
  38. package/dist/chunks/chunk-AGUM5SWX.js +2 -0
  39. package/dist/chunks/chunk-BBZWF2EA.js +2 -0
  40. package/dist/chunks/chunk-C6JGLEYD.js +2 -0
  41. package/dist/chunks/chunk-D36OIMV7.js +142 -0
  42. package/dist/chunks/chunk-D425EZGC.js +2 -0
  43. package/dist/chunks/chunk-D5OW7UD5.js +2 -0
  44. package/dist/chunks/chunk-DCE7XQUG.js +2 -0
  45. package/dist/chunks/chunk-DV5YPYLW.js +10 -0
  46. package/dist/chunks/chunk-EISRVOBJ.js +4 -0
  47. package/dist/chunks/chunk-EPK6EWRI.js +12 -0
  48. package/dist/chunks/chunk-F6GJXQNA.js +29 -0
  49. package/dist/chunks/chunk-GJXOTOZB.js +465 -0
  50. package/dist/chunks/chunk-GZUWQZJD.js +2 -0
  51. package/dist/chunks/chunk-I325ER7D.js +2 -0
  52. package/dist/chunks/chunk-ISLK6R2P.js +2 -0
  53. package/dist/chunks/chunk-J2L2NK6E.js +366 -0
  54. package/dist/chunks/chunk-JAF2YLZO.js +14 -0
  55. package/dist/chunks/chunk-KDLOPBFZ.js +2 -0
  56. package/dist/chunks/chunk-KDSO7V4O.js +5 -0
  57. package/dist/chunks/chunk-KE2NBMAP.js +20 -0
  58. package/dist/chunks/chunk-MCDZNQWD.js +634 -0
  59. package/dist/chunks/chunk-NSR4RW2F.js +3 -0
  60. package/dist/chunks/chunk-OGTRDK4Q.js +359 -0
  61. package/dist/chunks/chunk-P55RJIOG.js +18 -0
  62. package/dist/chunks/chunk-P7OJRV5Z.js +2 -0
  63. package/dist/chunks/chunk-QP47JIWP.js +3 -0
  64. package/dist/chunks/chunk-QSZCR5GC.js +190 -0
  65. package/dist/chunks/chunk-R2HTPDI7.js +2 -0
  66. package/dist/chunks/chunk-R42S4BLA.js +2 -0
  67. package/dist/chunks/chunk-RYBUYHDL.js +5 -0
  68. package/dist/chunks/chunk-SDPZFH6M.js +4 -0
  69. package/dist/chunks/chunk-SK3RRGHJ.js +142 -0
  70. package/dist/chunks/chunk-TQ475LOI.js +2 -0
  71. package/dist/chunks/chunk-UF3GZ5PO.js +2 -0
  72. package/dist/chunks/chunk-UL6YIT4M.js +2 -0
  73. package/dist/chunks/chunk-V2XJSFFE.js +19 -0
  74. package/dist/chunks/chunk-V4WSBIXB.js +2 -0
  75. package/dist/chunks/chunk-V5RCDBKU.js +2 -0
  76. package/dist/chunks/{chunk-FX4R5PB3.js → chunk-W2CWO4PQ.js} +1 -1
  77. package/dist/chunks/chunk-W33QJA3M.js +2 -0
  78. package/dist/chunks/chunk-WMMESRP3.js +9 -0
  79. package/dist/chunks/chunk-WWPVEK6B.js +127 -0
  80. package/dist/chunks/chunk-X5M7TLJV.js +2 -0
  81. package/dist/chunks/chunk-XDMNJW6J.js +42 -0
  82. package/dist/chunks/{chunk-L22BDZGE.js → chunk-XZSFUGPN.js} +1 -1
  83. package/dist/chunks/client-LTIFNED5.js +2 -0
  84. package/dist/chunks/compaction-config-ECMOFP5H.js +2 -0
  85. package/dist/chunks/{construction-bootstrap-XBHM6NON.js → construction-bootstrap-OAZKGI5Y.js} +1 -1
  86. package/dist/chunks/devtools-MVOFT6N7.js +2 -0
  87. package/dist/chunks/devtools-TXYDDL2A.js +2 -0
  88. package/dist/chunks/dist-5J53DGAO.js +2 -0
  89. package/dist/chunks/errors-ER7ZRPWC.js +2 -0
  90. package/dist/chunks/google-native-WLL27OV7.js +2 -0
  91. package/dist/chunks/host-65E5NM5P.js +2 -0
  92. package/dist/chunks/mistral-native-JXPIDDYZ.js +5 -0
  93. package/dist/chunks/model-DZF6URW3.js +2 -0
  94. package/dist/chunks/permission-YVVMLQ5I.js +2 -0
  95. package/dist/chunks/pi-messages-5LLOZH57.js +16 -0
  96. package/dist/chunks/readline-helpers-UZXWBRXQ.js +2 -0
  97. package/dist/chunks/responses-websocket-Y4N5GXD3.js +2 -0
  98. package/dist/chunks/run-manager-ZFACIZM2.js +2 -0
  99. package/dist/chunks/running-session-Q5Y6A2QV.js +2 -0
  100. package/dist/chunks/skills-TJP6BLZJ.js +2 -0
  101. package/dist/chunks/tool-dispatch-MLM3QTSU.js +2 -0
  102. package/dist/chunks/utils-2QNMYRGA.js +2 -0
  103. package/dist/generated-config-templates.json +6 -0
  104. package/dist/index.d.ts +34 -32
  105. package/dist/index.js +6 -6
  106. package/dist/kodax_bootstrap.js +4 -2
  107. package/dist/kodax_cli.js +1755 -2979
  108. package/dist/kodax_doctor.js +3 -0
  109. package/dist/kodax_resume.js +30 -30
  110. package/dist/manual-topics.json +2211 -0
  111. package/dist/native/darwin-arm64/kodax-text-transaction.node +0 -0
  112. package/dist/native/darwin-arm64/manifest.json +1 -1
  113. package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
  114. package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
  115. package/dist/native/win32-x64/manifest.json +2 -2
  116. package/dist/one-shot-task.js +2 -0
  117. package/dist/provider-auth-cli.js +16 -0
  118. package/dist/provider-capabilities.json +560 -40
  119. package/dist/runtime-daemon-schema.json +1 -0
  120. package/dist/sandbox-network-broker.js +260 -795
  121. package/dist/script-cell.js +1 -0
  122. package/dist/script-worker.cjs +2189 -0
  123. package/dist/sdk-a2a.d.ts +23 -22
  124. package/dist/sdk-a2a.js +6 -8
  125. package/dist/sdk-agent.d.ts +125 -98
  126. package/dist/sdk-agent.js +1 -1
  127. package/dist/sdk-client.d.ts +16 -10
  128. package/dist/sdk-client.js +1 -1
  129. package/dist/sdk-coding.d.ts +109 -80
  130. package/dist/sdk-coding.js +1 -1
  131. package/dist/sdk-experimental-memory.d.ts +3 -3
  132. package/dist/sdk-experimental-memory.js +1 -1
  133. package/dist/sdk-llm.d.ts +265 -14
  134. package/dist/sdk-llm.js +1 -1
  135. package/dist/sdk-mcp.d.ts +3 -3
  136. package/dist/sdk-mcp.js +1 -1
  137. package/dist/sdk-media.d.ts +41 -166
  138. package/dist/sdk-media.js +1 -1
  139. package/dist/sdk-repl.d.ts +81 -51
  140. package/dist/sdk-repl.js +2 -2
  141. package/dist/sdk-runtime.d.ts +216 -2989
  142. package/dist/sdk-runtime.js +1 -1
  143. package/dist/sdk-sandbox.js +1 -1
  144. package/dist/sdk-session.d.ts +15 -14
  145. package/dist/sdk-session.js +1 -1
  146. package/dist/sdk-skills.d.ts +2 -2
  147. package/dist/sdk-skills.js +1 -1
  148. package/dist/semantic-worker.js +121 -75
  149. package/dist/static-text.json +371 -0
  150. package/dist/storage-repair-cli.js +3 -0
  151. package/dist/types-chunks/auth-file.d-ovsHEqD4.d.ts +178 -0
  152. package/dist/types-chunks/{bash-prefix-extractor.d-DFH463j2.d.ts → bash-prefix-extractor.d-CJliu5-D.d.ts} +326 -168
  153. package/dist/types-chunks/{capability-learning.d-B4pxKwP4.d.ts → capability-learning.d-BXDEOON2.d.ts} +4 -4
  154. package/dist/types-chunks/{capability.d-DOF3r0fJ.d.ts → capability.d-DapzKxy3.d.ts} +1 -1
  155. package/dist/types-chunks/{capsule.d-CwpmHGFB.d.ts → capsule.d-EMwSALqK.d.ts} +5 -5
  156. package/dist/types-chunks/{client-contract-CRm9ZpL2.d.ts → client-contract-B7q69yMA.d.ts} +265 -67
  157. package/dist/types-chunks/{controller.d-B4GyqWri.d.ts → controller.d-C0SAuNKu.d.ts} +1 -1
  158. package/dist/types-chunks/{controller.d-P3H97ddz.d.ts → controller.d-D-hPLKaA.d.ts} +71 -11
  159. package/dist/types-chunks/{cost-tracker.d-BeaenODW.d.ts → cost-tracker.d-D1CTx-IO.d.ts} +37 -7
  160. package/dist/types-chunks/{base.d-ZBOdjDUT.d.ts → errors.d-D73qdYbS.d.ts} +91 -74
  161. package/dist/types-chunks/{history-retrieval.d-BzKWDjzG.d.ts → history-retrieval.d-BwEUR9cb.d.ts} +2 -2
  162. package/dist/types-chunks/{manager.d-C8OlTe2J.d.ts → manager.d-BMH8Q6TV.d.ts} +1 -1
  163. package/dist/types-chunks/{manifest.d-COreAnXG.d.ts → manifest.d-YE3-AIeO.d.ts} +1 -1
  164. package/dist/types-chunks/{provider-credential-context.d-BH2OaB1b.d.ts → provider-credential-context.d-Dw-sWcnu.d.ts} +11 -2
  165. package/dist/types-chunks/{provider-request-observation.d-C_bEqr4m.d.ts → provider-request-observation.d-CNe9vse3.d.ts} +4 -2
  166. package/dist/types-chunks/{public-api.d-BLmqDi73.d.ts → public-api.d-BhDU643p.d.ts} +13 -10
  167. package/dist/types-chunks/queue-BxQhqhFM.d.ts +166 -0
  168. package/dist/types-chunks/{resolver.d-DLY01RHx.d.ts → resolver.d-DrkpD8wY.d.ts} +142 -103
  169. package/dist/types-chunks/{review-inbox.d-BTLDdpG2.d.ts → review-inbox.d-Bgt46S7L.d.ts} +16 -3
  170. package/dist/types-chunks/{review-packet.d-Crra1Q7t.d.ts → review-packet.d-ChOfJaNI.d.ts} +7 -7
  171. package/dist/types-chunks/{run-manager.d-DmS1edk4.d.ts → run-manager.d-ChzguipG.d.ts} +48 -12
  172. package/dist/types-chunks/{runtime-client-info-BBBxdU8V.d.ts → runtime-client-info-P_mRDG7j.d.ts} +93 -7
  173. package/dist/types-chunks/runtime-event-BW5Pla7a.d.ts +48 -0
  174. package/dist/types-chunks/sdk-runtime-cDe7qmN3.d.ts +2244 -0
  175. package/dist/types-chunks/{sdk-session-DipY_CCd.d.ts → sdk-session-D3pcSbnA.d.ts} +13 -4
  176. package/dist/types-chunks/{sdk-skills-DokfOoJF.d.ts → sdk-skills-C-UA1A6I.d.ts} +3 -1
  177. package/dist/types-chunks/{side-query.d-DTrhVd_r.d.ts → side-query.d-UFKdWSw7.d.ts} +4 -4
  178. package/dist/types-chunks/{types.d-Jxj49rqO.d.ts → skill-invocation-error.d-gsNNDnnt.d.ts} +24 -14
  179. package/dist/types-chunks/task-results.d-XMdWq0eA.d.ts +15 -0
  180. package/dist/types-chunks/{trusted-repl-entry-B1cb7lAn.d.ts → trusted-repl-entry-Bbkd2HlO.d.ts} +10 -10
  181. package/dist/types-chunks/{types.d-BjOq57-z.d.ts → types.d-Bi8iUd6x.d.ts} +248 -4
  182. package/dist/types-chunks/{types.d-NyCB6ztO.d.ts → types.d-BlXTogOo.d.ts} +24 -13
  183. package/dist/types-chunks/types.d-BvEGNdN-.d.ts +131 -0
  184. package/dist/types-chunks/{types.d-Cb8RdrjU.d.ts → types.d-D8qQjMeo.d.ts} +5 -1
  185. package/dist/types-chunks/{utils.d-Bt6USYa5.d.ts → utils.d-CxHyBvO6.d.ts} +11 -7
  186. package/dist/windows-native-scripts.json +5 -0
  187. package/docs/ARTIFACT_SDK.md +8 -0
  188. package/docs/CLIENT_CONTRACT.md +195 -9
  189. package/docs/SDK_MIGRATION.md +887 -2
  190. package/docs/SPACE_SDK_SEAMS.md +255 -2
  191. package/package.json +33 -6
  192. package/public_docs/README.md +27 -2
  193. package/public_docs/configuration/config-files.md +6 -0
  194. package/public_docs/configuration/custom-providers.md +62 -0
  195. package/public_docs/configuration/providers.md +238 -3
  196. package/public_docs/configuration/sandbox.md +30 -0
  197. package/public_docs/getting-started/quickstart.md +10 -1
  198. package/public_docs/sdk/embedder-guide.md +476 -206
  199. package/dist/chunks/agent-C7MMIRIH.js +0 -2
  200. package/dist/chunks/argument-completer-WIQAV5GP.js +0 -2
  201. package/dist/chunks/chunk-2AM3FRQ7.js +0 -137
  202. package/dist/chunks/chunk-2TBKGO2Q.js +0 -497
  203. package/dist/chunks/chunk-35P7QL2Q.js +0 -2
  204. package/dist/chunks/chunk-5DQTOU2E.js +0 -69
  205. package/dist/chunks/chunk-7NH5BGE4.js +0 -350
  206. package/dist/chunks/chunk-AWYO4MH3.js +0 -635
  207. package/dist/chunks/chunk-CIPS75XZ.js +0 -260
  208. package/dist/chunks/chunk-CRQWSDHV.js +0 -429
  209. package/dist/chunks/chunk-HD5BDOPC.js +0 -2
  210. package/dist/chunks/chunk-JXZMES45.js +0 -12
  211. package/dist/chunks/chunk-KJSZTP5N.js +0 -2
  212. package/dist/chunks/chunk-KYHMB6XR.js +0 -431
  213. package/dist/chunks/chunk-ONUPGMER.js +0 -2
  214. package/dist/chunks/chunk-P42PHZWC.js +0 -351
  215. package/dist/chunks/chunk-SHG3EIH5.js +0 -19
  216. package/dist/chunks/chunk-UH6VOCVP.js +0 -2
  217. package/dist/chunks/chunk-V26LAWJY.js +0 -2
  218. package/dist/chunks/chunk-WOHHMGEF.js +0 -394
  219. package/dist/chunks/chunk-WONYJBAA.js +0 -2
  220. package/dist/chunks/chunk-XJWNIFC2.js +0 -298
  221. package/dist/chunks/chunk-XMWTEVFZ.js +0 -1481
  222. package/dist/chunks/chunk-YJTIPSNW.js +0 -22
  223. package/dist/chunks/chunk-YVBBU6K5.js +0 -5
  224. package/dist/chunks/client-XFASU74S.js +0 -2
  225. package/dist/chunks/compaction-config-JZNGDKWW.js +0 -2
  226. package/dist/chunks/devtools-CD6KSIHE.js +0 -2
  227. package/dist/chunks/devtools-XR5F2C6T.js +0 -2
  228. package/dist/chunks/dist-M4HLQAX7.js +0 -2
  229. package/dist/chunks/dist-ZLR4OTDD.js +0 -2
  230. package/dist/chunks/host-EHVJWNGS.js +0 -2
  231. package/dist/chunks/readline-helpers-KIDMSK76.js +0 -2
  232. package/dist/chunks/run-manager-HNGIYMG7.js +0 -2
  233. package/dist/chunks/tool-dispatch-ON33NJR5.js +0 -2
  234. package/dist/chunks/utils-RHR6YHB2.js +0 -2
@@ -1,16 +1,53 @@
1
1
  ---
2
2
  name: artifact-review
3
- description: Author, import, repair and visually review PPTX with the optional Artifact SDK and require current evidence for other visual tasks.
3
+ description: Use already registered Artifact tools to create/edit PPTX or render and inspect supported PPTX, PDF, DOCX and image artifacts. Apply this adapter when the task uses artifact_* tools; use visual-review for general visual methods, websites, video or unsupported formats.
4
4
  ---
5
5
 
6
- Use artifact_capabilities to inspect runtime preparation. If Chromium is missing, artifact_prepare installs the pinned runtime through normal managed permissions. Use artifact_create/open/edit/export for PPTX content and artifact_render for current exported pixels. Geometry is in inches. Editing requires object IDs and the current sourceHash; output is always a new file.
6
+ # Artifact tool adapter
7
7
 
8
- Review actual returned images. `ready` means evidence is prepared, never visual approval. Check every required page in batches of at most four. Look for clipping, overlap, missing images, wrong alignment, unreadable text and rendering differences. After repair, render the new output; old-source evidence cannot approve a new revision. Report path, hash, page coverage and remaining limitations.
8
+ ## Available tools and preparation
9
9
 
10
- Lightweight rendering needs compatible Chromium, not PowerPoint or LibreOffice. Missing dependencies, unsupported objects, missing fonts/resources, animations and transitions remain unverified for affected requirements. LibreOffice is optional static conversion; static pixels never verify animation.
10
+ Use the current registered tool catalog and artifact_capabilities. When runtime
11
+ preparation is needed, use artifact_prepare within the task's existing authorization
12
+ and normal managed Host permissions. If preparation is denied or unavailable,
13
+ report the affected scope as unverified and continue useful checks. Installation
14
+ outside that managed mechanism needs separate authorization. Missing tools do not
15
+ authorize registering a new adapter, expanding access or inventing a tool result.
11
16
 
12
- Use artifact_open for actual format/source identity. artifact_render supports PPTX/PDF/DOCX pages and PNG/JPEG/WebP/SVG pixels. DOCX pagination belongs to the render layout; its lightweight candidate always retains unverified Word/WPS fidelity. It does not require LibreOffice. Native PDF records each page's actual dimensions and rotation. artifact_read_evidence checks returned source/dependencies, raster provenance, hash and geometry before delivering the PNG.
17
+ Use visual-review for the general evidence method. This Skill supplies Artifact
18
+ parameters and format limits; avoid repeating a second full review process.
13
19
 
14
- artifact_capture requires kind-matched locators: static region; paginated page; interactive target/state/viewport/sequence; temporal time. Local HTML supports only loaded state and sequence 0 at the requested viewport; native/live surfaces require their existing authorized owner. SVG temporal capture samples actual SMIL seconds, not CSS/script animation. Spreadsheet native display/calculation, video/GIF/audio, EPUB and 3D/CAD remain unsupported by this default runtime. Use existing authorized tools when present and state actual coverage; never fabricate states, continuous coverage or a pass when adapter, vision or evidence is missing.
20
+ ## Author and edit
15
21
 
16
- The main agent owns repair. If independent review is required, a static reviewer receives frozen pixels and requirements with read-only tools. Interactive testing needs narrowly authorized interaction tools; keep readOnly policy. Rendering uses normal KodaX managed permissions, sandbox, cancellation and settlement. Do not create a verifier daemon, notifications or configuration.
22
+ Use artifact_create/open/edit/export for supported PPTX work. Geometry is in inches;
23
+ edits require object IDs and the current sourceHash. Output is a new file. Respect
24
+ review-only requests. Use artifact_open to establish actual format and source identity.
25
+
26
+ ## Render and inspect
27
+
28
+ artifact_render supports PPTX/PDF/DOCX pages and PNG/JPEG/WebP/SVG pixels. Inspect
29
+ actual returned images, at most four pages per batch. `ready` means evidence is
30
+ prepared, never visual approval. Check clipping, overlap, missing resources,
31
+ alignment and legibility. After edits, render the new source; old evidence cannot
32
+ approve a new revision. Report source hash, actual coverage and unverified scope.
33
+
34
+ artifact_read_evidence validates source/dependencies, raster provenance, hash and
35
+ geometry before returning PNG evidence. artifact_capture uses kind-matched locators:
36
+ static region; paginated page; interactive target/state/viewport/sequence; temporal
37
+ time. A receipt or image path does not establish that pixels were inspected.
38
+
39
+ ## Limits and fallback
40
+
41
+ Lightweight rendering uses compatible Chromium, not PowerPoint or LibreOffice.
42
+ DOCX lightweight pagination remains unverified for Word/WPS fidelity. Native PDF
43
+ retains each page's dimensions and rotation. Missing fonts/resources and unsupported
44
+ objects remain unverified for affected requirements; optional static conversion
45
+ cannot verify animation or transitions.
46
+
47
+ Local HTML capture supports loaded state and sequence 0 at the requested viewport.
48
+ Native/live surfaces need their existing authorized owner. SVG temporal capture
49
+ samples actual SMIL seconds, not CSS/script animation. Spreadsheet native display
50
+ and calculation, video/GIF/audio, EPUB and 3D/CAD are unsupported by this default
51
+ adapter. Use existing authorized tools when available; report the exact remaining
52
+ gap without fabricating states or continuous coverage. Keep normal sandbox,
53
+ cancellation and settlement; no verifier daemon or separate completion API.
@@ -2,7 +2,7 @@
2
2
  name: code-review
3
3
  description: 审查代码、diff、提交或当前 git 改动,重点发现 bug、行为回归、边界条件遗漏、安全风险、性能问题和缺失测试。当用户提到 code review、review 这段代码、帮我看看改动有没有问题、审查 PR/提交时使用;不要用于单纯解释代码或直接实现需求。
4
4
  user-invocable: true
5
- allowed-tools: "Read, Grep, Glob, Bash(npm:*, node:*, npx:*)"
5
+ allowed-tools: "Read, Grep, Glob, Bash(git status, git status *, git diff, git diff *, git log, git log *, git show, git show *, git ls-files, git ls-files *, git rev-parse, git rev-parse *, git ls-tree, git ls-tree *, git blame, git blame *, git cat-file *, npm *, node *, npx *)"
6
6
  argument-hint: "[file-or-directory]"
7
7
  compatibility: "Works best in a git repository or when the review target is provided explicitly."
8
8
  ---
@@ -14,8 +14,10 @@ compatibility: "Works best in a git repository or when the review target is prov
14
14
  ## 范围判定
15
15
 
16
16
  - 如果提供了 `$ARGUMENTS`,审查对应文件、目录、diff 或提交范围。
17
- - 如果没有提供参数,优先审查当前 git 改动;如果不在 git 仓库中,就明确说明缺少范围并请求更具体的目标。
17
+ - 如果没有提供参数,先用 git status 清点任务相关的已暂存、未暂存与未跟踪文件,分别读取 staged/unstaged diff,并用 Read 检查相关未跟踪文件。一次 git diff 不代表审完全部改动。
18
+ - PR/提交范围使用明确基线,只审该范围,不混入当前工作区的无关修改;不在仓库且没有目标时才补齐范围。
18
19
  - 在下结论前,尽量查看相邻实现、调用方、测试和相关配置,避免脱离上下文的误报。
20
+ - review-only 只报告,不编辑实现或暂存文件。测试前查看脚本副作用,沿用宿主授权;不为审查自动运行安装、--fix 或破坏性 Git 命令。
19
21
 
20
22
  ## 审查重点
21
23
 
@@ -39,23 +41,9 @@ compatibility: "Works best in a git repository or when the review target is prov
39
41
  - 具体文件和行号
40
42
  - 为什么这是问题,可能造成什么影响
41
43
  - 建议的修复方向
42
- - 如果没有发现值得报告的问题,明确写 `No findings.`,然后补充剩余风险或测试空白。
44
+ - 如果没有发现值得报告的问题,明确写 `No findings.`,并说明实际覆盖和未验证范围;不能暗示未运行的测试已通过。
43
45
  - 需要时再追加 `## Open Questions` 或 `## Change Summary`,但不要用总体打分或“亮点”冲淡问题。
44
46
 
45
- ## 输出模板
46
-
47
- ```markdown
48
- ## Findings
49
- - [High] Title — `path/to/file.ts:42`
50
- Why it matters and what to change.
51
-
52
- ## Open Questions
53
- - Optional clarification or assumption.
54
-
55
- ## Change Summary
56
- - Optional short summary only after findings.
57
- ```
58
-
59
47
  ## 使用示例
60
48
 
61
49
  - `/code-review src/auth.ts` - 审查单个文件
@@ -2,10 +2,9 @@
2
2
  name: git-workflow
3
3
  description: 执行明确的 Git 操作,例如查看状态、提交、建分支、push、stash 或创建 PR。只有在用户明确要求实际执行这些 Git 操作时才使用;不要用于单纯解释 Git 概念或讨论策略。
4
4
  user-invocable: true
5
- disable-model-invocation: true
6
- allowed-tools: "Read, Grep, Glob, Bash(git:*, gh:*)"
5
+ allowed-tools: "Read, Grep, Glob, Bash(git *, gh *, node *)"
7
6
  argument-hint: "[status|commit|branch|push|pr|stash] [args]"
8
- compatibility: "Requires a Git repository. Pull request creation works best when GitHub CLI (gh) is installed and authenticated."
7
+ compatibility: "Requires Git for local operations. Remote actions use an available, authorized hosting tool and the repository's authentication rules."
9
8
  ---
10
9
 
11
10
  # Git Workflow Skill
@@ -15,8 +14,8 @@ compatibility: "Requires a Git repository. Pull request creation works best when
15
14
  ## 总流程
16
15
 
17
16
  1. 先检查仓库状态,例如 `git status --short --branch`,必要时补充 `git diff --stat`、`git diff --cached`、`git log --oneline`。
18
- 2. 根据第一个参数判断操作类型;如果用户表达明确,就直接执行对应流程。
19
- 3. 对会改写历史、删除数据或影响远程分支的操作,先说明风险;只有在用户明确要求时才继续。
17
+ 2. 从自然语言或参数确定操作类型与文件范围;沿用当前会话已有的授权,明确的 commit/push 请求直接推进。
18
+ 3. 历史改写、强推或删除须有对应授权;普通已授权提交和推送不重复确认。宿主授权与执行策略始终生效。
20
19
  4. 所有 Git 命令都使用非交互方式执行。
21
20
 
22
21
  ## 支持的操作
@@ -41,7 +40,7 @@ compatibility: "Requires a Git repository. Pull request creation works best when
41
40
 
42
41
  ### branch
43
42
  - `create` / `new`: 创建新分支。除非用户指定,否则遵循仓库已有命名风格。
44
- - `switch` / `checkout`: 切换分支前,先检查当前工作区是否干净。
43
+ - `switch` / `checkout`: 先检查工作区;只有会覆盖或混入当前改动时才处理冲突,保留无关修改。
45
44
  - `list`: 列出本地/远程分支,并在有帮助时指出当前分支。
46
45
  - `delete` / `remove`: 仅在删除条件安全且用户请求明确时执行。
47
46
 
@@ -53,7 +52,9 @@ compatibility: "Requires a Git repository. Pull request creation works best when
53
52
  ### pr
54
53
  - 检查当前分支是否已 push,必要时先推送。
55
54
  - 基于 diff 和提交历史生成简洁的 PR 标题与描述。
56
- - 使用 `gh pr create` 前确认 `gh` 可用且已认证;否则清楚说明阻塞点。
55
+ - 使用当前宿主和 Skill 策略允许的、已经授权的 Git 托管连接器、CLI 或 API;遵守仓库认证约定,不回显凭据、不主动切换认证或交互登录。
56
+ - 没有可用的 `gh` 时,声明允许经 Node 调用托管 API;仅为当前已授权的 Git 操作使用现有凭据,仍通过普通 Host 授权与沙箱。不要假定任意连接器工具都已被当前 Skill 策略放行。
57
+ - `gh` 可用时可用 `gh pr create`,但它不是所有宿主的前提。没有允许的创建路径时,保留已完成的提交与推送,说明缺少的能力。
57
58
 
58
59
  ### stash
59
60
  - `save`: 有上下文时附带说明性消息。
@@ -65,7 +66,7 @@ compatibility: "Requires a Git repository. Pull request creation works best when
65
66
 
66
67
  - 不要使用 `git reset --hard`、`git checkout --`、`git clean -fd`、`git commit --amend`、强推、历史改写等危险操作,除非用户明确要求。
67
68
  - 不要回滚、覆盖或丢弃用户的无关改动。
68
- - 遇到脏工作区、冲突、无 upstream、权限不足、缺少 `gh` 等阻塞时,要先解释现状再继续。
69
+ - 按实际操作处理冲突、无 upstream 或权限不足;脏工作区及缺少 `gh` 本身不阻塞所有 Git 任务。
69
70
  - 对“合并分支”“rebase”“cherry-pick”等这里没有明确定义的操作,如果用户明确提出,可以按 Git 最佳实践执行,但要先说明风险和计划。
70
71
 
71
72
  ## 汇报方式
@@ -1,127 +1,57 @@
1
1
  ---
2
2
  name: skill-creator
3
- description: 创建、重写、迁移和优化 KodaX/Agent Skills。当用户想新建 skill、把外部 skill 迁移到 KodaX、改进触发描述、整理 supporting files、设计评测用例、补齐 grading/benchmark/review/comparison 流程或验证 skill 结构时使用。即使用户没有明确说“skill”,只要目标是在沉淀可复用的代理工作流、提示词或脚本能力,也应该使用这个 skill。
3
+ description: 创建、修改、迁移、验证或打包 Skill,或优化其描述与评测时使用;也用于把已有工作流沉淀成可反复调用的代理能力。不用于普通一次性写作、代码实现或仅使用某项既有 Skill 完成业务任务。
4
4
  user-invocable: true
5
- allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(node:*, npm:*, npx:*)"
5
+ allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(node *, npm *, npx *)"
6
6
  argument-hint: "[skill-name-or-task]"
7
- compatibility: "Optimized for KodaX and Agent Skills style directories. Bundled helper scripts use Node.js instead of Python."
7
+ compatibility: "KodaX/Agent Skills directories; helpers are plain Node ESM. Model evaluation needs a separately configured, authorized SDK Provider."
8
8
  ---
9
9
 
10
10
  # Skill Creator
11
11
 
12
- 把用户的工作流整理成一个可维护、可触发、可评估的 skill。优先适配 KodaX 的 skill 运行方式,而不是逐字复制外部平台的实现。
12
+ 复用当前会话已有的目标、样例、范围和授权,区分用户要创建/修改、验证、打包还是
13
+ 评测。仅补齐会改变结果的缺失信息;小改描述不必扩展成完整模型评测。
13
14
 
14
- ## 何时使用
15
+ 下面的 scripts/ 与 references/ 都相对本 Skill 目录。保留目标工作区语境,执行
16
+ helper 时给脚本路径和目标路径,不假定当前目录就是 Skill 目录。
15
17
 
16
- - 用户要新建 skill,或把一次对话里的工作流沉淀成 skill。
17
- - 用户要改已有 skill 的触发描述、结构、supporting files 或提示词。
18
- - 用户要把 Claude / Anthropic / 其他平台的 skill 移植到 KodaX。
19
- - 用户要为 skill 设计测试提示、评估结构、人工 review 流程或 benchmark 汇总。
18
+ ## 创建、修改与迁移
20
19
 
21
- ## 工作方式
20
+ - 新建时先起草,或用 `node scripts/init-skill.js <name> --path <skills-dir>` 初始化,
21
+ 再按真实任务填写;已有 Skill 在原目录做必要修改。验证-only 只报告问题,不改文件。
22
+ - description 写任务与调用边界;默认开放模型发现。只有用户要求显式调用时才设
23
+ `disable-model-invocation: true`。每个已启用 Skill 仍接受 `/<name>` 和 `/skill:<name>`;
24
+ `user-invocable` 是兼容字段,不是执行权限。
25
+ - SKILL.md 保留共同方法和分支入口。机械步骤放 scripts/,分支细节放 references/,
26
+ 模板放 assets/;只有实际需要时才新增支持文件。内置脚本使用 plain Node ESM `.js`,
27
+ `.ts` 需要相应构建链,不能假定被直接复制的 TypeScript 可以执行。
28
+ - allowed-tools 遵守当前宿主契约,例如 `Bash(npm *, node *)` 匹配完整命令文本,
29
+ 不是 `npm:*` 冒号前缀。Skill 声明不会授予宿主权限,仍执行原有授权与沙箱检查。
30
+ - 移植时核对工具、路径、依赖和事件语义,保留真正可用的行为。记录可核实的来源
31
+ URL、revision、许可与改写范围;未核实的来源明确标未知,不追认一个上游版本。
22
32
 
23
- ### 1. 先收敛目标
33
+ 完成后用 `node scripts/quick-validate.js <skill-dir>` 做结构检查,并核对正例、相邻
34
+ 任务反例及支持文件引用。结构通过不等于真实触发或脚本执行已验证。交付实际修改
35
+ 和证据;工具不足时继续有依据的起草/检查,明确未运行部分。
24
36
 
25
- 先明确四件事:
26
- 1. 这个 skill 要解决什么任务。
27
- 2. 什么时候应该触发,什么时候不应该触发。
28
- 3. 输出是什么形态。
29
- 4. 是否需要评测和人工 review。
37
+ ## 打包与分享
30
38
 
31
- 如果用户已经给了样例对话、提示词或外部 skill 仓库,先从已有材料里提炼,不要重复让用户描述。
39
+ `node scripts/package-skill.js <skill-dir> --output <file.skill>` 校验并生成归档。
40
+ 用户只要分享包时,交付归档和验证结果即可,不默认安装到个人技能库。
32
41
 
33
- ### 2. 适配 KodaX,而不是照抄外部 skill
42
+ 需要验证安装链路时,用临时隔离目录:
43
+ `node scripts/install-skill.js <file.skill> --dest <isolated-dir>`,再检查解包内容和引用。
44
+ 仅在任务要求真实安装时写入用户指定目录,沿用已有授权;不以 --force 绕过同名冲突。
34
45
 
35
- 迁移外部 skill 时,拆成三类:
36
- - 可直接复用:SKILL.md 的思路、评测结构、参考文档组织方式。
37
- - 需要改写:路径约定、触发描述、支持的 frontmatter 字段、命令示例。
38
- - 不要硬搬:强依赖 Claude Code、`claude -p`、Cowork、Python stdlib 或专有事件流的部分。
46
+ ## 评测或优化描述
39
47
 
40
- 如果外部 skill 依赖特定宿主能力,优先改成 KodaX 当前能承接的手工流程或 Node 工具,而不是留下名不副实的说明。
48
+ 先读 [评测方法与命令](references/evaluation.md),只执行需要的分支。
41
49
 
42
- ### 3. 写 KodaX 风格的 skill
50
+ - quick-validate 是结构检查;run-trigger-eval 是单条描述的**语义筛查**,不是实际触发率。
51
+ - 真实触发需使用实际注册、可见的完整 catalog 和真实 skill 工具定义,记录是否真的
52
+ 调用了 skill;包含自然语言正例和相邻任务反例,不能以判断题分数代替调用证据。
53
+ - run-eval 是独立 SDK 执行,必须明确 Provider、model、cwd、输入/输出路径与预算;
54
+ 不自动继承 Space 当前会话凭据或工具。没有已授权模型能力时仍可完成静态工作。
43
55
 
44
- - `description` 要写“做什么 + 什么时候用”,并稍微主动一点,避免 under-trigger。
45
- - `SKILL.md` 负责主流程,不要把所有细节都塞进去。
46
- - 重复性、机械性、易出错的步骤,放到 `scripts/`。
47
- - 大块参考资料放到 `references/`。
48
- - 模板或静态文件放到 `assets/`。
49
- - 如果某个专家流程只服务这个 skill,可以放进 `agents/`,但先把它当私有 contract,不要自动上升成全局产品概念。
50
- - `description` 同时决定模型发现。自然语言只会看到未设置 `disable-model-invocation: true` 的 name/description。
51
- - 需要只在显式 slash 后加载时,写 `disable-model-invocation: true`。这只关闭模型 catalog 与模型 `skill` 工具。
52
- - 每个已启用 Skill 都接受 `/<name>` 和 `/skill:<name>`。
53
- - token 可在 query 头部或中间。后续文本是 Skill 参数。
54
- - `user-invocable` 只保留解析兼容。不要把它当成执行权限:宿主忽略该字段后,作者会误以为 `false` 能禁止 slash/SDK 调用。
55
-
56
- ### 4. Bundled scripts 默认用 Node.js
57
-
58
- KodaX 当前会把 builtin skill 目录直接复制到 `dist/`。因此:
59
-
60
- - skill 内的可执行脚本默认使用 plain Node ESM `.js`。
61
- - 只有在你同时修改了构建链、确保脚本会被编译时,才在 skill 内使用 `.ts`。
62
- - 如果用户只是想“改成 node/typescript”,默认先落成 Node `.js`,这是最稳妥的内建交付方式。
63
-
64
- ### 5. 先验证,再评估
65
-
66
- 起草完成后,优先按下面的顺序推进:
67
-
68
- 1. 用 `node scripts/quick-validate.js <skill-dir>` 做结构检查。
69
- 2. 如果还没有 skill 骨架,用 `node scripts/init-skill.js <skill-name> --path <skills-dir>` 初始化。
70
- 3. 设计 2 到 3 个真实用户会说的测试提示。
71
- 4. 如果要跑端到端 skill eval,把提示整理到 `evals/evals.json`,再用 `node scripts/run-eval.js --skill-path <skill-dir> --evals <evals.json> --workspace <iteration-dir>` 生成 `with_skill` / `without_skill` workspace。
72
- 5. 如果要补第 3 阶段的专家评测流,先用 `node scripts/grade-evals.js <workspace>` 生成 `grading.json`,再用 `node scripts/aggregate-benchmark.js <workspace> --skill-name <name>` 聚合 benchmark,用 `node scripts/analyze-benchmark.js <workspace>` 产出分析结论,用 `node scripts/compare-runs.js <workspace>` 做 blind comparison。
73
- 6. 如果要评估 description 的触发效果,再用 `node scripts/run-trigger-eval.js --skill-path <skill-dir> --evals <evals.json>` 跑一轮触发评测。
74
- 7. 如果要迭代 description,可以用 `node scripts/improve-description.js --skill-path <skill-dir> --eval-results <results.json>` 生成候选描述,或用 `node scripts/run-loop.js --skill-path <skill-dir> --evals <evals.json> --workspace <workspace-dir>` 跑多轮优化。
75
- 8. 如果需要人工 review,把运行结果整理到 workspace,再用 `node scripts/generate-review.js <workspace> --static <html-file>` 或本地服务模式生成 review 页面。
76
- 9. 如果要分享给别的 KodaX/Agent Skills 风格环境,用 `node scripts/package-skill.js <skill-dir>` 打包,再用 `node scripts/install-skill.js <archive-or-dir>` 验证安装链路。
77
-
78
- ## 评估建议
79
-
80
- - 客观任务:优先写断言、grading 结构和 benchmark。
81
- - 主观任务:优先给人类 review 页面,再用 comparator 做 blind comparison,而不是强行只看单一分数。
82
- - 描述优化:先整理误触发/漏触发样例,再跑 `run-trigger-eval`,需要时再用 `improve-description` 或 `run-loop` 迭代。
83
- - 如果需要专家提示词,把 `agents/grader.md`、`agents/analyzer.md`、`agents/comparator.md` 当作私有专家 contract 使用,不要先把它们产品化成通用 swarm 概念。
84
-
85
- ## 输出要求
86
-
87
- 默认给出:
88
- - 修改后的 `SKILL.md`
89
- - 新增或更新的 supporting files
90
- - 简短的 trigger/eval 样例
91
- - 还没覆盖的风险或后续建议
92
-
93
- 如果用户是在移植外部 skill,还要额外说明:
94
- - 哪些能力已经迁移
95
- - 哪些能力因为宿主差异被删减或改写
96
- - 哪些部分后续值得继续产品化
97
-
98
- ## 可用工具
99
-
100
- - `agents/grader.md`:给 `grade-evals.js` 使用的专家评分契约。
101
- - `agents/analyzer.md`:给 `analyze-benchmark.js` 使用的分析契约。
102
- - `agents/comparator.md`:给 `compare-runs.js` 使用的盲比契约。
103
- - `scripts/quick-validate.js`:校验 skill 结构和 frontmatter。
104
- - `scripts/init-skill.js`:初始化一个新的 skill 骨架,并可一并创建 `evals/evals.json`。
105
- - `scripts/run-eval.js`:运行端到端 skill eval,生成 `with_skill` / `without_skill` workspace 结果。
106
- - `scripts/grade-evals.js`:消费 workspace,给每个 run 生成 `grading.json` 与 `grading-summary.json`。
107
- - `scripts/aggregate-benchmark.js`:聚合 `grading.json` / `timing.json` 生成 `benchmark.json` 与 `benchmark.md`。
108
- - `scripts/analyze-benchmark.js`:基于 benchmark 和 grading 产出 `analysis.json` 与 `analysis.md`。
109
- - `scripts/compare-runs.js`:对两个 config 做 blind comparison,生成 `comparison.json` 与 `comparison.md`。
110
- - `scripts/run-trigger-eval.js`:对 description 做 KodaX 原生触发评测,检查误触发和漏触发。
111
- - `scripts/improve-description.js`:基于评测结果生成新的 description 候选。
112
- - `scripts/run-loop.js`:把触发评测和 description 改写串成可重复的多轮优化流程。
113
- - `scripts/generate-review.js`:把 workspace 结果生成静态或本地服务版 HTML review 页面。
114
- - `scripts/package-skill.js`:把 skill 目录打成 `.skill` 归档,便于分享与分发。
115
- - `scripts/install-skill.js`:把 `.skill` 归档或目录安装到目标 skills 目录。
116
- - `references/schemas.md`:评测相关 JSON 结构参考。
117
-
118
- 这里的 description eval、loop、grading、analysis、comparison 和 packaging 都已经是 KodaX 原生实现,不再依赖 Anthropic 的 Python 脚本或 Claude Code 专有宿主能力。
119
-
120
- ## 使用示例
121
-
122
- - `/skill:skill-creator 把这个 Claude skill 迁移成 KodaX builtin`
123
- - `/skill:skill-creator 新建一个 release-notes skill`
124
- - `/skill:skill-creator 优化现有 skill 的 description 和 evals`
125
- - `/skill:skill-creator 给这个 skill 补 trigger eval、grading、benchmark、comparison 和 review 流程`
126
- - `/skill:skill-creator 把这个 skill 打成可分享的 .skill 包`
127
- - `/skill:skill-creator 初始化一个新 skill 骨架并生成 eval workspace`
56
+ 需要运行结果评审时再加载 agents/grader.md、agents/analyzer.md 或 agents/comparator.md;
57
+ 它们是该流程的私有契约,不需要创建通用 swarm 或独立后台任务。
@@ -0,0 +1,50 @@
1
+ # 按证据选择评测
2
+
3
+ ## 结构与描述语义筛查
4
+
5
+ `node scripts/quick-validate.js <skill-dir>` 只检查结构/frontmatter。
6
+ `node scripts/run-trigger-eval.js --skill-path <skill-dir> --evals <cases.json> --provider <provider> --model <model> --runs-per-query 1`
7
+ 让模型仅根据一条 name/description/query 判断“应该使用吗”。输出的 precision/recall
8
+ 是描述判断统计,没有竞争 catalog、真实工具调用或可见性执行证据;metadata 会标明
9
+ 这是 description_semantic_screening,以及该 Skill 是否开放模型目录。
10
+
11
+ improve-description.js 根据结果生成候选;run-loop.js 串联筛查与改写。按需要限定
12
+ --max-iterations、--runs-per-query;只有明确要求写回时用 --write-best。改了评分器时
13
+ 重读已有 raw,不能为了得到好分数无限重跑。不要把这些脚本的分数写成产品召回率。
14
+
15
+ ## 真实触发
16
+
17
+ 用产品相同的完整 Skill catalog、可见性和工具定义观察自然语言请求后的实际
18
+ skill 调用。保留请求、目录/工具的版本、原始响应、调用参数和未调用证据。覆盖
19
+ 正例、邻近 Skill 的 near-miss、无关请求;否定回答中提到技能名不等于调用它。
20
+ 描述被隐藏、工具未提供或环境不同的实验,不能证明生产模型发现正确。
21
+
22
+ ## 执行 smoke
23
+
24
+ run-eval.js 通过公开 Skill SDK 加载/展开内容,使用独立 SDK 运行 with_skill /
25
+ without_skill;它不是重放当前 Space 会话。先明确当前环境中已授权的 provider/model
26
+ 与凭据来源、输入文件和隔离 cwd;不要假定会继承产品会话的凭据、工具或工作目录。
27
+
28
+ 示例(脚本路径相对本 Skill,路径含空格时按当前 Shell 引号规则处理):
29
+
30
+ ```text
31
+ node scripts/run-eval.js --skill-path <skill-dir> --evals <evals.json> --workspace <iteration-dir> --provider <provider> --model <model> --cwd <isolated-workspace> --runs 1 --max-iter 6
32
+ ```
33
+
34
+ 先用少量 case 验证脚本和任务有效。执行 smoke 与描述筛查、真实选择是不同证据,
35
+ 端到端自由执行不能独自支持提示词优劣结论。冻结 case/config/runs/迭代上限,统计
36
+ 实际调用与 token/费用;max-iter 不等于物理 Provider 请求上限。遵守当前项目的
37
+ 预算与原始输出保留约定,超时与失败留存,不能盲目追加请求。
38
+
39
+ ## 需要时再评审运行结果
40
+
41
+ - `grade-evals.js <workspace> --provider <provider> --model <model>` 读取各 run,写 grading。
42
+ - `aggregate-benchmark.js <workspace> --skill-name <name>` 聚合 grading/timing,不调用模型。
43
+ - `analyze-benchmark.js <workspace> --provider <provider> --model <model>` 形成有局限性说明的分析。
44
+ - `compare-runs.js <workspace> --provider <provider> --model <model>` 盲比两个 config。
45
+ - `generate-review.js <workspace> --static <review.html>` 生成静态人工评审页。
46
+
47
+ 按任务加载 agents/ 中的对应契约和 [schemas.md](schemas.md)。报告任务有效性、差异、
48
+ 失败归因、未验证范围及建议,不能用单一总分替代判断。若只做打包或静态修改,
49
+ 不运行这些独立模型流程。当前 helper 为 KodaX 本地维护;没有锁定的外部版本时,
50
+ 不要用外部最新代码覆盖当前宿主适配或声称已完成上游同步。
@@ -6,6 +6,8 @@ export interface AnalyzeBenchmarkOptions {
6
6
  skillName?: string;
7
7
  provider?: string;
8
8
  model?: string;
9
+ effort?: string;
10
+ /** @deprecated Use effort. */
9
11
  reasoningMode?: string;
10
12
  maxIter?: number;
11
13
  cwd?: string;
@@ -123,8 +123,8 @@ async function defaultRunAnalyst(prompt, options) {
123
123
  provider: options.provider ?? 'anthropic',
124
124
  model: options.model,
125
125
  maxIter: options.maxIter ?? 20,
126
- reasoningMode: options.reasoningMode ?? 'balanced',
127
- thinking: options.reasoningMode ? options.reasoningMode !== 'off' : true,
126
+ effort: options.effort ?? (options.reasoningMode ? undefined : 'medium'),
127
+ reasoningMode: options.reasoningMode,
128
128
  context: {
129
129
  gitRoot: path.resolve(options.cwd ?? options.workspaceDir ?? process.cwd()),
130
130
  },
@@ -232,7 +232,8 @@ function parseArgs(argv) {
232
232
  skillName: undefined,
233
233
  provider: 'anthropic',
234
234
  model: undefined,
235
- reasoningMode: 'balanced',
235
+ effort: undefined,
236
+ reasoningMode: undefined,
236
237
  maxIter: 20,
237
238
  cwd: process.cwd(),
238
239
  };
@@ -251,6 +252,8 @@ function parseArgs(argv) {
251
252
  args.provider = argv[++index];
252
253
  } else if (token === '--model' && argv[index + 1]) {
253
254
  args.model = argv[++index];
255
+ } else if (token === '--effort' && argv[index + 1]) {
256
+ args.effort = argv[++index];
254
257
  } else if (token === '--reasoning' && argv[index + 1]) {
255
258
  args.reasoningMode = argv[++index];
256
259
  } else if (token === '--max-iter' && argv[index + 1]) {
@@ -6,6 +6,8 @@ export interface CompareWorkspaceOptions {
6
6
  markdownPath?: string;
7
7
  provider?: string;
8
8
  model?: string;
9
+ effort?: string;
10
+ /** @deprecated Use effort. */
9
11
  reasoningMode?: string;
10
12
  maxIter?: number;
11
13
  maxPairs?: number;
@@ -124,8 +124,8 @@ async function defaultRunComparator(prompt, options) {
124
124
  provider: options.provider ?? 'anthropic',
125
125
  model: options.model,
126
126
  maxIter: options.maxIter ?? 20,
127
- reasoningMode: options.reasoningMode ?? 'balanced',
128
- thinking: options.reasoningMode ? options.reasoningMode !== 'off' : true,
127
+ effort: options.effort ?? (options.reasoningMode ? undefined : 'medium'),
128
+ reasoningMode: options.reasoningMode,
129
129
  context: {
130
130
  gitRoot: path.resolve(options.cwd ?? options.workspaceDir ?? process.cwd()),
131
131
  },
@@ -273,7 +273,8 @@ function parseArgs(argv) {
273
273
  markdownPath: undefined,
274
274
  provider: 'anthropic',
275
275
  model: undefined,
276
- reasoningMode: 'balanced',
276
+ effort: undefined,
277
+ reasoningMode: undefined,
277
278
  maxIter: 20,
278
279
  maxPairs: undefined,
279
280
  cwd: process.cwd(),
@@ -293,6 +294,8 @@ function parseArgs(argv) {
293
294
  args.provider = argv[++index];
294
295
  } else if (token === '--model' && argv[index + 1]) {
295
296
  args.model = argv[++index];
297
+ } else if (token === '--effort' && argv[index + 1]) {
298
+ args.effort = argv[++index];
296
299
  } else if (token === '--reasoning' && argv[index + 1]) {
297
300
  args.reasoningMode = argv[++index];
298
301
  } else if (token === '--max-iter' && argv[index + 1]) {
@@ -2,6 +2,8 @@ export interface GradeWorkspaceOptions {
2
2
  workspaceDir: string;
3
3
  provider?: string;
4
4
  model?: string;
5
+ effort?: string;
6
+ /** @deprecated Use effort. */
5
7
  reasoningMode?: string;
6
8
  maxIter?: number;
7
9
  cwd?: string;
@@ -216,8 +216,8 @@ async function defaultRunJudge(prompt, options) {
216
216
  provider: options.provider ?? 'anthropic',
217
217
  model: options.model,
218
218
  maxIter: options.maxIter ?? 20,
219
- reasoningMode: options.reasoningMode ?? 'balanced',
220
- thinking: options.reasoningMode ? options.reasoningMode !== 'off' : true,
219
+ effort: options.effort ?? (options.reasoningMode ? undefined : 'medium'),
220
+ reasoningMode: options.reasoningMode,
221
221
  context: {
222
222
  gitRoot: path.resolve(options.cwd ?? options.workspaceDir ?? process.cwd()),
223
223
  },
@@ -351,7 +351,8 @@ function parseArgs(argv) {
351
351
  workspaceDir: argv[2] ?? '',
352
352
  provider: 'anthropic',
353
353
  model: undefined,
354
- reasoningMode: 'balanced',
354
+ effort: undefined,
355
+ reasoningMode: undefined,
355
356
  maxIter: 20,
356
357
  cwd: process.cwd(),
357
358
  overwrite: false,
@@ -364,6 +365,8 @@ function parseArgs(argv) {
364
365
  args.provider = argv[++index];
365
366
  } else if (token === '--model' && argv[index + 1]) {
366
367
  args.model = argv[++index];
368
+ } else if (token === '--effort' && argv[index + 1]) {
369
+ args.effort = argv[++index];
367
370
  } else if (token === '--reasoning' && argv[index + 1]) {
368
371
  args.reasoningMode = argv[++index];
369
372
  } else if (token === '--max-iter' && argv[index + 1]) {
@@ -3,9 +3,7 @@
3
3
  import { readFile, writeFile } from 'node:fs/promises';
4
4
  import path from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
- import { expandSkillForLLM } from '../../../skill-expander.js';
7
- import { loadFullSkill } from '../../../skill-loader.js';
8
- import { ensureDirectory, loadKodaXSDK } from './utils.js';
6
+ import { ensureDirectory, loadKodaXSDK, loadKodaXSkills } from './utils.js';
9
7
 
10
8
  function normalizeAssertion(assertion) {
11
9
  if (typeof assertion === 'string') {
@@ -124,6 +122,7 @@ async function defaultRunAgent(prompt, options) {
124
122
 
125
123
  async function prepareConfigPrompt(configName, skill, taskPrompt, options) {
126
124
  if (configName === 'with_skill') {
125
+ const { expandSkillForLLM } = await loadKodaXSkills();
127
126
  const expanded = await expandSkillForLLM(
128
127
  skill,
129
128
  taskPrompt,
@@ -196,6 +195,7 @@ export async function runEvalWorkspace(
196
195
  options,
197
196
  runner = defaultRunAgent
198
197
  ) {
198
+ const { loadFullSkill } = await loadKodaXSkills();
199
199
  const skill = await loadFullSkill(path.resolve(options.skillPath), 'user');
200
200
  if (!skill) {
201
201
  throw new Error(`Failed to load skill from ${options.skillPath}`);
@@ -3,7 +3,7 @@
3
3
  import { readFile, writeFile } from 'node:fs/promises';
4
4
  import path from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
- import { loadSkill, pathExists, writeSkill } from './utils.js';
6
+ import { ensureDirectory, loadSkill, pathExists, writeSkill } from './utils.js';
7
7
  import { improveDescription } from './improve-description.js';
8
8
  import { runTriggerEval } from './run-trigger-eval.js';
9
9
 
@@ -73,6 +73,7 @@ export async function runDescriptionLoop(
73
73
  ...dependencies,
74
74
  };
75
75
  const skill = await loadSkill(options.skillPath);
76
+ await ensureDirectory(options.workspaceDir);
76
77
  const evalFile = JSON.parse(await readFile(options.evalsPath, 'utf8'));
77
78
  const allEvals = Array.isArray(evalFile.evals) ? evalFile.evals : [];
78
79
  const { train, test } = splitEvalSet(allEvals, options.holdout, options.seed);
@@ -33,6 +33,8 @@ export interface TriggerEvalReport {
33
33
  model?: string | null;
34
34
  runs_per_query: number;
35
35
  trigger_threshold: number;
36
+ evaluation_kind: 'description_semantic_screening';
37
+ model_catalog_visible: boolean;
36
38
  note: string;
37
39
  };
38
40
  }
@@ -149,7 +149,9 @@ export async function runTriggerEval(options, runner = defaultRunPrompt) {
149
149
  model: options.model ?? null,
150
150
  runs_per_query: runsPerQuery,
151
151
  trigger_threshold: threshold,
152
- note: 'This is a KodaX-native description eval, not a Claude Code tool-trace replay.',
152
+ evaluation_kind: 'description_semantic_screening',
153
+ model_catalog_visible: skill.frontmatter['disable-model-invocation'] !== true,
154
+ note: 'Single-description semantic screening; not observed Skill tool selection from a competing catalog.',
153
155
  },
154
156
  };
155
157
  }
@@ -1,3 +1,3 @@
1
1
  export declare function setKodaXSDKForSkillCreator(
2
- sdk: Readonly<Record<string, unknown>>,
2
+ sdk: Readonly<Record<string, unknown>> | null,
3
3
  ): void;
@@ -33,6 +33,14 @@ import YAML from 'yaml';
33
33
 
34
34
  let _cachedSdk = null;
35
35
 
36
+ /** Published single-package entry, or the standalone Agent's public Skill API. */
37
+ export async function loadKodaXSkills() {
38
+ const here = path.dirname(fileURLToPath(import.meta.url));
39
+ const bundled = path.resolve(here, '../../../sdk-skills.js');
40
+ if (existsSync(bundled)) return import(pathToFileURL(bundled).href);
41
+ return import('@kodax-ai/agent/capabilities/skills');
42
+ }
43
+
36
44
  export function setKodaXSDKForSkillCreator(sdk) {
37
45
  _cachedSdk = sdk;
38
46
  }