freeharness 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +108 -0
  3. package/README.md +134 -0
  4. package/canonical/HARVEST.yaml +858 -0
  5. package/canonical/PROVENANCE.yaml +740 -0
  6. package/canonical/agents/README.md +95 -0
  7. package/canonical/agents/agentic-architect.md +18 -0
  8. package/canonical/agents/database-reviewer.md +41 -0
  9. package/canonical/agents/explorer-ai-engineer-analyst.md +65 -0
  10. package/canonical/agents/pr-reviewer.md +96 -0
  11. package/canonical/agents/python-reviewer.md +55 -0
  12. package/canonical/agents/report-formatter.md +19 -0
  13. package/canonical/agents/security-reviewer.md +53 -0
  14. package/canonical/agents/test-writer.md +34 -0
  15. package/canonical/commands/fh-context.md +37 -0
  16. package/canonical/evals/promptfoo.redteam.yaml +108 -0
  17. package/canonical/hooks/cost-prices.json +14 -0
  18. package/canonical/hooks/freeharness-auto-memory.mjs +158 -0
  19. package/canonical/hooks/freeharness-config-guard.mjs +162 -0
  20. package/canonical/hooks/freeharness-context-monitor.mjs +198 -0
  21. package/canonical/hooks/freeharness-converge.mjs +227 -0
  22. package/canonical/hooks/freeharness-cost-tracker.mjs +1027 -0
  23. package/canonical/hooks/freeharness-memory-guard.mjs +57 -0
  24. package/canonical/hooks/freeharness-output-pruner.mjs +333 -0
  25. package/canonical/hooks/freeharness-precompact.mjs +323 -0
  26. package/canonical/hooks/freeharness-repeat-tool.mjs +208 -0
  27. package/canonical/hooks/freeharness-security-guidance.mjs +164 -0
  28. package/canonical/hooks/freeharness-session-start +583 -0
  29. package/canonical/hooks/hooks.auto-memory.claude-code.json +16 -0
  30. package/canonical/hooks/hooks.claude-code.json +17 -0
  31. package/canonical/hooks/hooks.config-guard.claude-code.json +16 -0
  32. package/canonical/hooks/hooks.context-monitor.claude-code.json +15 -0
  33. package/canonical/hooks/hooks.converge.claude-code.json +15 -0
  34. package/canonical/hooks/hooks.cost-tracker.claude-code.json +37 -0
  35. package/canonical/hooks/hooks.memory-guard.claude-code.json +16 -0
  36. package/canonical/hooks/hooks.output-pruner.claude-code.json +16 -0
  37. package/canonical/hooks/hooks.precompact.claude-code.json +15 -0
  38. package/canonical/hooks/hooks.repeat-tool.claude-code.json +25 -0
  39. package/canonical/hooks/hooks.security-guidance.claude-code.json +16 -0
  40. package/canonical/mcp/servers.json +20 -0
  41. package/canonical/openspec/config.base.yaml +89 -0
  42. package/canonical/openspec/schema.spec-driven.yaml +277 -0
  43. package/canonical/openspec/templates/data-contract.md +36 -0
  44. package/canonical/openspec/templates/design.md +84 -0
  45. package/canonical/openspec/templates/eval-plan.md +33 -0
  46. package/canonical/openspec/templates/follow-ups.md +2 -0
  47. package/canonical/openspec/templates/proposal.md +45 -0
  48. package/canonical/openspec/templates/spec.md +42 -0
  49. package/canonical/openspec/templates/tasks.md +38 -0
  50. package/canonical/profiles/local-llamacpp.LOCAL-MODELS.md +47 -0
  51. package/canonical/profiles/local-llamacpp.json +27 -0
  52. package/canonical/profiles/local-ollama.json +20 -0
  53. package/canonical/profiles/mcp.json +91 -0
  54. package/canonical/rules/CLAUDE.md +78 -0
  55. package/canonical/rules/project-CLAUDE.template.md +62 -0
  56. package/canonical/rules/routing.md +20 -0
  57. package/canonical/rules/safety.md +41 -0
  58. package/canonical/settings/settings.cache-hygiene.claude-code.json +5 -0
  59. package/canonical/skills/agent-evaluation/SKILL.md +102 -0
  60. package/canonical/skills/agent-evaluation/assets/evaluation_report_template.md +206 -0
  61. package/canonical/skills/agent-evaluation/evals/cases.yaml +106 -0
  62. package/canonical/skills/agent-evaluation/references/dataset-preparation.md +351 -0
  63. package/canonical/skills/agent-evaluation/references/scorers-constraints.md +165 -0
  64. package/canonical/skills/agent-evaluation/references/scorers.md +431 -0
  65. package/canonical/skills/agent-evaluation/references/setup-guide.md +252 -0
  66. package/canonical/skills/agent-evaluation/references/tracing-integration.md +164 -0
  67. package/canonical/skills/agent-evaluation/references/troubleshooting.md +514 -0
  68. package/canonical/skills/agent-evaluation/scripts/analyze_results.py +462 -0
  69. package/canonical/skills/agent-evaluation/scripts/create_dataset_template.py +382 -0
  70. package/canonical/skills/agent-evaluation/scripts/list_datasets.py +273 -0
  71. package/canonical/skills/agent-evaluation/scripts/run_evaluation_template.py +309 -0
  72. package/canonical/skills/agent-evaluation/scripts/setup_mlflow.py +353 -0
  73. package/canonical/skills/agent-evaluation/scripts/utils/__init__.py +27 -0
  74. package/canonical/skills/agent-evaluation/scripts/utils/env_validation.py +123 -0
  75. package/canonical/skills/agent-evaluation/scripts/utils/tracing_utils.py +108 -0
  76. package/canonical/skills/agent-evaluation/scripts/validate_agent_tracing.py +148 -0
  77. package/canonical/skills/agent-evaluation/scripts/validate_auth.py +240 -0
  78. package/canonical/skills/agent-evaluation/scripts/validate_environment.py +185 -0
  79. package/canonical/skills/agent-evaluation/scripts/validate_tracing_runtime.py +318 -0
  80. package/canonical/skills/agentic-architecture/SKILL.md +41 -0
  81. package/canonical/skills/agentic-architecture/evals/cases.yaml +94 -0
  82. package/canonical/skills/agentic-architecture/reference/context-engineering.md +75 -0
  83. package/canonical/skills/agentic-architecture/reference/patterns.md +76 -0
  84. package/canonical/skills/agentic-architecture/reference/reliability-observability.md +94 -0
  85. package/canonical/skills/agentic-architecture/reference/review-framework.md +59 -0
  86. package/canonical/skills/code-review/SKILL.md +52 -0
  87. package/canonical/skills/code-review/evals/cases.yaml +197 -0
  88. package/canonical/skills/git-workflow/SKILL.md +41 -0
  89. package/canonical/skills/git-workflow/evals/cases.yaml +92 -0
  90. package/canonical/skills/local-code/SKILL.md +24 -0
  91. package/canonical/skills/local-code/evals/cases.yaml +85 -0
  92. package/canonical/skills/local-code/scripts/query_llama.py +68 -0
  93. package/canonical/skills/report-formatting/SKILL.md +62 -0
  94. package/canonical/skills/report-formatting/evals/cases.yaml +83 -0
  95. package/canonical/skills/report-formatting/reference/ARCHITECTURE.md +135 -0
  96. package/canonical/skills/report-formatting/reference/HELPERS.md +120 -0
  97. package/canonical/skills/report-formatting/reference/PPTX.md +136 -0
  98. package/canonical/skills/report-formatting/reference/RELEASE.md +99 -0
  99. package/canonical/skills/report-formatting/reference/TEMPLATES.md +48 -0
  100. package/canonical/skills/report-formatting/reference/authoring.md +66 -0
  101. package/canonical/skills/report-formatting/scripts/architecture-template.md +271 -0
  102. package/canonical/skills/report-formatting/scripts/assets/claro-logo.png +0 -0
  103. package/canonical/skills/report-formatting/scripts/assets/claro-wordmark.svg +1 -0
  104. package/canonical/skills/report-formatting/scripts/build-architecture.js +57 -0
  105. package/canonical/skills/report-formatting/scripts/build-md-claro.js +224 -0
  106. package/canonical/skills/report-formatting/scripts/build-release.js +51 -0
  107. package/canonical/skills/report-formatting/scripts/check-env.js +58 -0
  108. package/canonical/skills/report-formatting/scripts/docmodel.js +283 -0
  109. package/canonical/skills/report-formatting/scripts/example-build.js +119 -0
  110. package/canonical/skills/report-formatting/scripts/example_build_ArchitectureReview_docx.js +195 -0
  111. package/canonical/skills/report-formatting/scripts/example_build_ExecutiveReport_docx.js +114 -0
  112. package/canonical/skills/report-formatting/scripts/package.json +17 -0
  113. package/canonical/skills/report-formatting/scripts/pptx/example_build_StatusReport_pptx.py +223 -0
  114. package/canonical/skills/report-formatting/scripts/pptx/example_build_WeeklyStatus_pptx.py +245 -0
  115. package/canonical/skills/report-formatting/scripts/pptx/pptx_office.py +144 -0
  116. package/canonical/skills/report-formatting/scripts/pptx/requirements.txt +7 -0
  117. package/canonical/skills/report-formatting/scripts/pptx/status_report_blocks.py +193 -0
  118. package/canonical/skills/report-formatting/scripts/pptx/theme_claro_pptx.py +473 -0
  119. package/canonical/skills/report-formatting/scripts/release-template.md +80 -0
  120. package/canonical/skills/report-formatting/scripts/render-mermaid.js +105 -0
  121. package/canonical/skills/report-formatting/scripts/theme-claro.js +403 -0
  122. package/canonical/skills/subagent-driven-development/SKILL.md +60 -0
  123. package/canonical/skills/subagent-driven-development/evals/cases.yaml +208 -0
  124. package/canonical/skills/subagent-driven-development/reference/brief.md +91 -0
  125. package/canonical/skills/subagent-driven-development/reference/handoff.md +118 -0
  126. package/canonical/skills/subagent-driven-development/scripts/validate-handoff.mjs +850 -0
  127. package/canonical/skills/systematic-debugging/SKILL.md +44 -0
  128. package/canonical/skills/systematic-debugging/evals/cases.yaml +90 -0
  129. package/canonical/skills/test-driven-development/SKILL.md +42 -0
  130. package/canonical/skills/test-driven-development/evals/cases.yaml +86 -0
  131. package/canonical/skills/test-driven-development/reference/writing-good-tests.md +52 -0
  132. package/canonical/skills/verification-before-completion/SKILL.md +53 -0
  133. package/canonical/skills/verification-before-completion/evals/cases.yaml +107 -0
  134. package/dist/adapters/content/language-lint.d.ts +46 -0
  135. package/dist/adapters/content/language-lint.js +191 -0
  136. package/dist/adapters/harness/claude-code.d.ts +57 -0
  137. package/dist/adapters/harness/claude-code.js +385 -0
  138. package/dist/adapters/harness/index.d.ts +3 -0
  139. package/dist/adapters/harness/index.js +17 -0
  140. package/dist/adapters/harness/opencode.d.ts +7 -0
  141. package/dist/adapters/harness/opencode.js +166 -0
  142. package/dist/adapters/harness/plugin.d.ts +22 -0
  143. package/dist/adapters/harness/plugin.js +257 -0
  144. package/dist/adapters/memory/doctor.d.ts +480 -0
  145. package/dist/adapters/memory/doctor.js +1217 -0
  146. package/dist/adapters/memory/vendored.d.ts +150 -0
  147. package/dist/adapters/memory/vendored.js +487 -0
  148. package/dist/adapters/package/node.d.ts +9 -0
  149. package/dist/adapters/package/node.js +20 -0
  150. package/dist/adapters/prompt/readline.d.ts +19 -0
  151. package/dist/adapters/prompt/readline.js +53 -0
  152. package/dist/adapters/sync/diff.d.ts +43 -0
  153. package/dist/adapters/sync/diff.js +380 -0
  154. package/dist/cli/cleanup.d.ts +86 -0
  155. package/dist/cli/cleanup.js +382 -0
  156. package/dist/cli/cost.d.ts +304 -0
  157. package/dist/cli/cost.js +501 -0
  158. package/dist/cli/doctor.d.ts +205 -0
  159. package/dist/cli/doctor.js +654 -0
  160. package/dist/cli/executor.d.ts +5 -0
  161. package/dist/cli/executor.js +48 -0
  162. package/dist/cli/plugin-validate.d.ts +37 -0
  163. package/dist/cli/plugin-validate.js +256 -0
  164. package/dist/cli/prefix.d.ts +68 -0
  165. package/dist/cli/prefix.js +218 -0
  166. package/dist/cli/profile.d.ts +170 -0
  167. package/dist/cli/profile.js +285 -0
  168. package/dist/cli/runner.d.ts +10 -0
  169. package/dist/cli/runner.js +27 -0
  170. package/dist/cli/uninstall.d.ts +65 -0
  171. package/dist/cli/uninstall.js +147 -0
  172. package/dist/index.d.ts +8 -0
  173. package/dist/index.js +989 -0
  174. package/dist/infra/dogfood.d.ts +31 -0
  175. package/dist/infra/dogfood.js +51 -0
  176. package/dist/infra/fsutil.d.ts +40 -0
  177. package/dist/infra/fsutil.js +143 -0
  178. package/dist/infra/manifest.d.ts +76 -0
  179. package/dist/infra/manifest.js +92 -0
  180. package/dist/infra/paths.d.ts +19 -0
  181. package/dist/infra/paths.js +74 -0
  182. package/dist/infra/routing.d.ts +4 -0
  183. package/dist/infra/routing.js +7 -0
  184. package/node_modules/@freeharness/core/dist/context.d.ts +30 -0
  185. package/node_modules/@freeharness/core/dist/context.js +1 -0
  186. package/node_modules/@freeharness/core/dist/index.d.ts +5 -0
  187. package/node_modules/@freeharness/core/dist/index.js +6 -0
  188. package/node_modules/@freeharness/core/dist/planner.d.ts +13 -0
  189. package/node_modules/@freeharness/core/dist/planner.js +18 -0
  190. package/node_modules/@freeharness/core/dist/ports.d.ts +90 -0
  191. package/node_modules/@freeharness/core/dist/ports.js +1 -0
  192. package/node_modules/@freeharness/core/dist/registry.d.ts +41 -0
  193. package/node_modules/@freeharness/core/dist/registry.js +124 -0
  194. package/node_modules/@freeharness/core/dist/tiers.d.ts +30 -0
  195. package/node_modules/@freeharness/core/dist/tiers.js +99 -0
  196. package/node_modules/@freeharness/core/package.json +34 -0
  197. package/node_modules/@freeharness/sdd/PROVENANCE.yaml +175 -0
  198. package/node_modules/@freeharness/sdd/dist/src/bin/openspec.d.ts +2 -0
  199. package/node_modules/@freeharness/sdd/dist/src/bin/openspec.js +166 -0
  200. package/node_modules/@freeharness/sdd/dist/src/index.d.ts +14 -0
  201. package/node_modules/@freeharness/sdd/dist/src/index.js +11 -0
  202. package/node_modules/@freeharness/sdd/dist/src/init.d.ts +39 -0
  203. package/node_modules/@freeharness/sdd/dist/src/init.js +190 -0
  204. package/node_modules/@freeharness/sdd/dist/src/root-resolver.d.ts +8 -0
  205. package/node_modules/@freeharness/sdd/dist/src/root-resolver.js +32 -0
  206. package/node_modules/@freeharness/sdd/dist/src/shim/archive.d.ts +81 -0
  207. package/node_modules/@freeharness/sdd/dist/src/shim/archive.js +483 -0
  208. package/node_modules/@freeharness/sdd/dist/src/shim/context.d.ts +4 -0
  209. package/node_modules/@freeharness/sdd/dist/src/shim/context.js +48 -0
  210. package/node_modules/@freeharness/sdd/dist/src/shim/follow-up.d.ts +57 -0
  211. package/node_modules/@freeharness/sdd/dist/src/shim/follow-up.js +279 -0
  212. package/node_modules/@freeharness/sdd/dist/src/shim/instructions.d.ts +67 -0
  213. package/node_modules/@freeharness/sdd/dist/src/shim/instructions.js +460 -0
  214. package/node_modules/@freeharness/sdd/dist/src/shim/list.d.ts +5 -0
  215. package/node_modules/@freeharness/sdd/dist/src/shim/list.js +95 -0
  216. package/node_modules/@freeharness/sdd/dist/src/shim/new-change.d.ts +6 -0
  217. package/node_modules/@freeharness/sdd/dist/src/shim/new-change.js +150 -0
  218. package/node_modules/@freeharness/sdd/dist/src/shim/schemas.d.ts +4 -0
  219. package/node_modules/@freeharness/sdd/dist/src/shim/schemas.js +23 -0
  220. package/node_modules/@freeharness/sdd/dist/src/shim/shared.d.ts +56 -0
  221. package/node_modules/@freeharness/sdd/dist/src/shim/shared.js +140 -0
  222. package/node_modules/@freeharness/sdd/dist/src/shim/status.d.ts +8 -0
  223. package/node_modules/@freeharness/sdd/dist/src/shim/status.js +85 -0
  224. package/node_modules/@freeharness/sdd/dist/src/shim/validate.d.ts +6 -0
  225. package/node_modules/@freeharness/sdd/dist/src/shim/validate.js +229 -0
  226. package/node_modules/@freeharness/sdd/dist/src/validate-change.d.ts +40 -0
  227. package/node_modules/@freeharness/sdd/dist/src/validate-change.js +114 -0
  228. package/node_modules/@freeharness/sdd/dist/src/validate.d.ts +24 -0
  229. package/node_modules/@freeharness/sdd/dist/src/validate.js +72 -0
  230. package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/specs-apply.d.ts +130 -0
  231. package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/specs-apply.js +981 -0
  232. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-metadata.d.ts +46 -0
  233. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-metadata.js +128 -0
  234. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-status-policy.d.ts +26 -0
  235. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-status-policy.js +32 -0
  236. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/file-system.d.ts +50 -0
  237. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/file-system.js +394 -0
  238. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/global-config.d.ts +15 -0
  239. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/global-config.js +49 -0
  240. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/graph.d.ts +71 -0
  241. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/graph.js +164 -0
  242. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/index.d.ts +11 -0
  243. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/index.js +21 -0
  244. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/instruction-loader.d.ts +102 -0
  245. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/instruction-loader.js +230 -0
  246. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/outputs.d.ts +18 -0
  247. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/outputs.js +138 -0
  248. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/resolver.d.ts +82 -0
  249. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/resolver.js +333 -0
  250. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/schema.d.ts +12 -0
  251. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/schema.js +110 -0
  252. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/state.d.ts +11 -0
  253. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/state.js +32 -0
  254. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/task-progress.d.ts +33 -0
  255. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/task-progress.js +149 -0
  256. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/types.d.ts +39 -0
  257. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/types.js +49 -0
  258. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/claude.d.ts +12 -0
  259. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/claude.js +31 -0
  260. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/index.d.ts +10 -0
  261. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/index.js +10 -0
  262. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/opencode.d.ts +12 -0
  263. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/opencode.js +26 -0
  264. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/generator.d.ts +28 -0
  265. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/generator.js +41 -0
  266. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/index.d.ts +23 -0
  267. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/index.js +25 -0
  268. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/invocation.d.ts +72 -0
  269. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/invocation.js +76 -0
  270. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/registry.d.ts +39 -0
  271. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/registry.js +53 -0
  272. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/types.d.ts +62 -0
  273. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/types.js +7 -0
  274. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/yaml.d.ts +35 -0
  275. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/yaml.js +47 -0
  276. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-references.d.ts +33 -0
  277. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-references.js +55 -0
  278. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/allowed-tools.d.ts +11 -0
  279. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/allowed-tools.js +11 -0
  280. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/skill-generation.d.ts +48 -0
  281. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/skill-generation.js +99 -0
  282. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/skill-templates.d.ts +19 -0
  283. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/skill-templates.js +18 -0
  284. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/types.d.ts +18 -0
  285. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/types.js +4 -0
  286. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/apply-change.d.ts +19 -0
  287. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/apply-change.js +207 -0
  288. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/archive-change.d.ts +12 -0
  289. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/archive-change.js +409 -0
  290. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/bulk-archive-change.d.ts +9 -0
  291. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/bulk-archive-change.js +673 -0
  292. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/continue-change.d.ts +9 -0
  293. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/continue-change.js +230 -0
  294. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/explore.d.ts +12 -0
  295. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/explore.js +550 -0
  296. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/feedback.d.ts +8 -0
  297. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/feedback.js +107 -0
  298. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/ff-change.d.ts +12 -0
  299. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/ff-change.js +228 -0
  300. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/new-change.d.ts +9 -0
  301. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/new-change.js +147 -0
  302. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/onboard.d.ts +9 -0
  303. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/onboard.js +571 -0
  304. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/propose.d.ts +12 -0
  305. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/propose.js +322 -0
  306. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/store-selection.d.ts +7 -0
  307. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/store-selection.js +7 -0
  308. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/sync-specs.d.ts +9 -0
  309. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/sync-specs.js +518 -0
  310. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/update-change.d.ts +9 -0
  311. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/update-change.js +176 -0
  312. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/verify-change.d.ts +9 -0
  313. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/verify-change.js +344 -0
  314. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/constants.d.ts +39 -0
  315. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/constants.js +54 -0
  316. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/delta-resolution.d.ts +35 -0
  317. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/delta-resolution.js +171 -0
  318. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/change-parser.d.ts +27 -0
  319. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/change-parser.js +210 -0
  320. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/code-fence.d.ts +14 -0
  321. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/code-fence.js +48 -0
  322. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/markdown-parser.d.ts +22 -0
  323. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/markdown-parser.js +186 -0
  324. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-blocks.d.ts +65 -0
  325. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-blocks.js +409 -0
  326. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-text.d.ts +55 -0
  327. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-text.js +98 -0
  328. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/spec-structure.d.ts +8 -0
  329. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/spec-structure.js +77 -0
  330. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/purpose-placeholder.d.ts +44 -0
  331. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/purpose-placeholder.js +116 -0
  332. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/base.schema.d.ts +12 -0
  333. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/base.schema.js +17 -0
  334. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/change.schema.d.ts +72 -0
  335. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/change.schema.js +30 -0
  336. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/index.d.ts +3 -0
  337. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/index.js +3 -0
  338. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/spec.schema.d.ts +17 -0
  339. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/spec.schema.js +14 -0
  340. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/spec-discovery.d.ts +39 -0
  341. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/spec-discovery.js +114 -0
  342. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-lines.d.ts +45 -0
  343. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-lines.js +105 -0
  344. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-numbering.d.ts +15 -0
  345. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-numbering.js +56 -0
  346. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/types.d.ts +17 -0
  347. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/types.js +1 -0
  348. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/validator.d.ts +94 -0
  349. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/validator.js +756 -0
  350. package/node_modules/@freeharness/sdd/package.json +57 -0
  351. package/node_modules/@freeharness/sdd/vendor/openspec/LICENSE.upstream +22 -0
  352. package/node_modules/@freeharness/sdd/vendor/openspec/assets/schema.upstream.yaml +232 -0
  353. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/README.md +19 -0
  354. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-apply-change/SKILL.md +187 -0
  355. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-archive-change/SKILL.md +181 -0
  356. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-bulk-archive-change/SKILL.md +338 -0
  357. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-continue-change/SKILL.md +117 -0
  358. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-explore/SKILL.md +342 -0
  359. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-ff-change/SKILL.md +116 -0
  360. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-new-change/SKILL.md +76 -0
  361. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-onboard/SKILL.md +560 -0
  362. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-propose/SKILL.md +162 -0
  363. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-sync-specs/SKILL.md +261 -0
  364. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-update-change/SKILL.md +90 -0
  365. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-verify-change/SKILL.md +174 -0
  366. package/package.json +70 -0
  367. package/provenance/canonical.PROVENANCE.yaml +740 -0
  368. package/provenance/claude-mem.LICENSE.upstream +202 -0
  369. package/provenance/memory.PROVENANCE.yaml +399 -0
  370. package/provenance/sdd.PROVENANCE.yaml +175 -0
  371. package/vendor-licenses/caveman.LICENSE +27 -0
  372. package/vendor-licenses/deepseek-harness.LICENSE +21 -0
  373. package/vendor-licenses/ecc.LICENSE +21 -0
  374. package/vendor-licenses/pi.LICENSE +21 -0
  375. package/vendor-licenses/superpowers.LICENSE +21 -0
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: agent-evaluation
3
+ description: Use when benchmarking a GenAI agent or RAG pipeline: retrieval quality, tool-call accuracy, response quality, regression between prompt or model versions. Builds MLflow 3.8+ eval datasets, scorers and tracing, and reads the resulting metrics. Not for unit tests of plain code.
4
+ disable-model-invocation: true
5
+ context: fork
6
+ agent: general-purpose
7
+ model: standard
8
+ ---
9
+
10
+ # Agent Evaluation Protocol (MLflow)
11
+
12
+ <role>
13
+ Autonomous evaluation worker running as a fork: no conversation history, no access to the
14
+ caller's context. Execute one MLflow GenAI evaluation end to end from `$ARGUMENTS` alone and
15
+ return a compact result. Never echo raw JSON dumps, individual trace payloads or CLI logs
16
+ into the reply; write extensive payloads to disk instead.
17
+ </role>
18
+
19
+ <arguments>
20
+ `$ARGUMENTS` carries three required inputs and one optional, in this order:
21
+ 1. Entry point: the agent or pipeline's module and function (`package.module:function`).
22
+ 2. Dataset: an existing dataset name, or a test-cases file/source to build one from.
23
+ 3. Output directory: where the raw results and the report are written, resolved against the
24
+ project root before any `cd`.
25
+ 4. Eval-plan (optional): path to an `eval-plan.md` holding the Pass/Fail thresholds. Without
26
+ it, every metric reports `threshold: none` and `n/a` in place of Pass/Fail; never invent a
27
+ threshold.
28
+
29
+ Stop with one usage line and do nothing else when the entry point or the output directory
30
+ is missing:
31
+ `Usage: /agent-evaluation <entry-point> <dataset-name-or-source> <output-dir> [eval-plan.md]`
32
+ </arguments>
33
+
34
+ <prerequisites>
35
+ - Environment: MLflow >= 3.8.0.
36
+ - Execution standard: run every command via `uv run`.
37
+ - Output hygiene: redirect stderr when capturing structured output (`2>/dev/null > file.json`).
38
+ - Docs access: query `https://mlflow.org/docs/latest/llms.txt` via WebFetch for current APIs;
39
+ never invent a signature.
40
+ </prerequisites>
41
+
42
+ <workflow>
43
+ Claude Code prints "Base directory for this skill: <path>" when the skill loads. The
44
+ worker's own cwd is the project root, not that path: prefix every `scripts/*.py` command
45
+ below with the skill's base directory, or `cd` into it first, before running one. The
46
+ output-directory argument stays resolved against the project before that `cd`, never
47
+ against the skill's base directory; every result and the report are written there.
48
+
49
+ ## Phase 1: Environment and Tracing Verification
50
+ 1. `uv run python scripts/validate_environment.py` runs `mlflow doctor` plus the version, env
51
+ var and connectivity checks. Below MLflow 3.8.0, install with the version spec quoted so
52
+ the shell does not read `>=3.8.0` as a redirect: `uv pip install 'mlflow>=3.8.0'`.
53
+ 2. `uv run python scripts/validate_auth.py` checks Databricks or LLM-provider credentials
54
+ before any expensive call; on failure, `references/setup-guide.md` has the manual setup.
55
+ 3. `uv run python scripts/setup_mlflow.py` auto-detects Databricks or a local server, finds
56
+ or creates the experiment, and prints `MLFLOW_TRACKING_URI` / `MLFLOW_EXPERIMENT_ID` to
57
+ export; `references/setup-guide.md` covers the manual fallback for the remaining cases.
58
+ 4. Confirm the entry point is instrumented (`mlflow.<library>.autolog()` before its imports,
59
+ `@mlflow.trace` on the entry point). Run `uv run python scripts/validate_tracing_runtime.py
60
+ --module <module> --entry-point <function>` for an auto-detected check, or fill in the
61
+ TODOs of `scripts/validate_agent_tracing.py` and run it for a single-query check.
62
+ `references/tracing-integration.md` is authoritative for adding tracing; if traces are
63
+ still missing after following it, stop and read `references/troubleshooting.md`.
64
+
65
+ ## Phase 2: Dataset and Scorer Preparation
66
+ 1. `uv run python scripts/list_datasets.py --format json` checks for a reusable dataset
67
+ before creating one; `references/dataset-preparation.md` covers diversity and sizing.
68
+ 2. When no suitable dataset exists, `uv run python scripts/create_dataset_template.py
69
+ --test-cases-file <file>` (add `--catalog --schema --table` on Databricks Unity Catalog).
70
+ The generated `inputs` dict keys must match the entry point's parameter names exactly.
71
+ 3. Discover scorers through the documentation protocol (WebFetch llms.txt), never
72
+ `mlflow scorers list -b`; `references/scorers.md` covers built-in versus custom scorers
73
+ and registration. A custom judge follows `references/scorers-constraints.md`: `{{trace}}`
74
+ cannot mix with `{{inputs}}`/`{{outputs}}`, return values are "yes"/"no", and the
75
+ instructions carry at least one template variable.
76
+
77
+ ## Phase 3: Evaluation Run and Analysis
78
+ 1. `uv run python scripts/run_evaluation_template.py --module <module> --entry-point
79
+ <function> --dataset-name <dataset>` generates the run script from the template; execute
80
+ the generated script, then run the `mlflow traces evaluate` command it prints, redirecting
81
+ its output to `<output-dir>/evaluation_results.json` (the output-dir argument, not cwd).
82
+ 2. `uv run python scripts/analyze_results.py <output-dir>/evaluation_results.json --output
83
+ <output-dir>/evaluation_report.md` computes the pass rate per scorer and writes the report
84
+ following `assets/evaluation_report_template.md`.
85
+ 3. On a null or unexpected scorer output, or a high failure rate, read
86
+ `references/troubleshooting.md` before treating the run as final.
87
+ </workflow>
88
+
89
+ <output_contract>
90
+ Write every extensive payload to disk under the output directory (resolved against the
91
+ project root, never the skill's base directory), never into the reply:
92
+ - Raw results: `<output-dir>/evaluation_results.json`
93
+ - Final report: `<output-dir>/evaluation_report.md`
94
+
95
+ Each metric's threshold comes only from the eval-plan argument; with no eval-plan, report
96
+ `threshold: none` and `n/a` in place of Pass/Fail, never an invented threshold.
97
+
98
+ Reply in under 4,000 characters: the report path, then one line per scorer naming its
99
+ metric, threshold and Pass/Fail (for example `Correctness: 82% (threshold 80%) - Pass`, or
100
+ `Correctness: 82% (threshold: none) - n/a` with no eval-plan).
101
+ Never include raw JSON, individual trace payloads or CLI log output in the reply.
102
+ </output_contract>
@@ -0,0 +1,206 @@
1
+ # Agent Evaluation Report
2
+
3
+ **Agent**: [Agent Name]
4
+ **Date**: [YYYY-MM-DD]
5
+ **Evaluator**: [Name]
6
+ **Dataset**: [Dataset Name] ([N] queries)
7
+
8
+ ## Executive Summary
9
+
10
+ [1-2 paragraph summary of key findings, overall performance, and main recommendations]
11
+
12
+ ## Evaluation Setup
13
+
14
+ **Configuration**:
15
+
16
+ - **Tracking URI**: [URI]
17
+ - **Experiment ID**: [ID]
18
+ - **Dataset**: [Name] ([N] queries)
19
+ - **MLflow Version**: [version]
20
+
21
+ **Scorers Used**:
22
+
23
+ 1. **[Scorer 1 Name]**: [Brief description of what it evaluates]
24
+ 2. **[Scorer 2 Name]**: [Brief description]
25
+ 3. **[Scorer 3 Name]**: [Brief description]
26
+ 4. ...
27
+
28
+ ## Results Overview
29
+
30
+ ### Overall Performance
31
+
32
+ | Scorer | Pass Rate | Passed/Total | Grade |
33
+ | ------------------- | --------- | ------------ | ----------- |
34
+ | [Scorer 1] | [X]% | [Y]/[Z] | [A/B/C/F] |
35
+ | [Scorer 2] | [X]% | [Y]/[Z] | [A/B/C/F] |
36
+ | [Scorer 3] | [X]% | [Y]/[Z] | [A/B/C/F] |
37
+ | **Overall Average** | **[X]%** | **-** | **[Grade]** |
38
+
39
+ **Grading Scale**: A (90-100%), B (80-89%), C (70-79%), D (60-69%), F (<60%)
40
+
41
+ ### Performance Distribution
42
+
43
+ ```
44
+ █████████░░ 90% [Scorer 1]
45
+ ███████░░░░ 70% [Scorer 2]
46
+ ████████░░░ 80% [Scorer 3]
47
+ ```
48
+
49
+ ## Detailed Findings
50
+
51
+ ### [Scorer 1 Name]
52
+
53
+ **Performance**: [Pass rate]% ([Passed]/[Total])
54
+ **Grade**: [A/B/C/D/F]
55
+
56
+ **Strengths**:
57
+
58
+ - [What worked well - specific examples]
59
+ - [Another strength]
60
+
61
+ **Issues**:
62
+
63
+ - [What didn't work - specific examples]
64
+ - [Another issue]
65
+
66
+ **Example Failures**:
67
+
68
+ 1. **Query**: "[failing query]"
69
+
70
+ - **Issue**: [Why it failed]
71
+ - **Trace**: [trace_id or link]
72
+
73
+ 2. **Query**: "[another failing query]"
74
+ - **Issue**: [Why it failed]
75
+ - **Trace**: [trace_id or link]
76
+
77
+ ### [Scorer 2 Name]
78
+
79
+ [Same structure as above]
80
+
81
+ ### [Scorer 3 Name]
82
+
83
+ [Same structure as above]
84
+
85
+ ## Failure Pattern Analysis
86
+
87
+ ### Pattern 1: [Pattern Name]
88
+
89
+ **Description**: [What is the pattern]
90
+
91
+ **Frequency**: [N queries affected] ([X]% of failures)
92
+
93
+ **Affected Queries**:
94
+
95
+ - "[example query 1]"
96
+ - "[example query 2]"
97
+ - "[example query 3]"
98
+
99
+ **Root Cause**: [Why this pattern occurs]
100
+
101
+ **Impact**: [Severity/importance]
102
+
103
+ ### Pattern 2: [Pattern Name]
104
+
105
+ [Same structure as above]
106
+
107
+ ### Pattern 3: [Pattern Name]
108
+
109
+ [Same structure as above]
110
+
111
+ ## Recommendations
112
+
113
+ ### Immediate Actions (High Priority)
114
+
115
+ 1. **[Action Item 1]**
116
+
117
+ - **Issue**: [What problem this addresses]
118
+ - **Expected Impact**: [What will improve]
119
+ - **Effort**: [Low/Medium/High]
120
+
121
+ 2. **[Action Item 2]**
122
+ - **Issue**: [What problem this addresses]
123
+ - **Expected Impact**: [What will improve]
124
+ - **Effort**: [Low/Medium/High]
125
+
126
+ ### Short-Term Improvements (Medium Priority)
127
+
128
+ 1. **[Action Item 3]**
129
+
130
+ - **Issue**: [What problem this addresses]
131
+ - **Expected Impact**: [What will improve]
132
+ - **Effort**: [Low/Medium/High]
133
+
134
+ 2. **[Action Item 4]**
135
+ - **Issue**: [What problem this addresses]
136
+ - **Expected Impact**: [What will improve]
137
+ - **Effort**: [Low/Medium/High]
138
+
139
+ ### Long-Term Enhancements (Low Priority)
140
+
141
+ 1. **[Enhancement 1]**: [Description and expected impact]
142
+ 2. **Enhancement 2]**: [Description and expected impact]
143
+
144
+ ## Dataset Analysis
145
+
146
+ **Size**: [N] queries
147
+ **Diversity**: [High/Medium/Low]
148
+
149
+ **Query Distribution**:
150
+
151
+ - Short queries (<10 words): [N] ([X]%)
152
+ - Medium queries (10-20 words): [N] ([X]%)
153
+ - Long queries (>20 words): [N] ([X]%)
154
+
155
+ **Coverage Assessment**:
156
+
157
+ - ✓ [Covered capability 1]
158
+ - ✓ [Covered capability 2]
159
+ - ✗ [Missing capability 1] - **Consider adding queries for this**
160
+ - ✗ [Missing capability 2] - **Consider adding queries for this**
161
+
162
+ ## Next Steps
163
+
164
+ 1. **Address immediate actions** listed above
165
+ 2. **Re-evaluate** after implementing fixes
166
+ 3. **Expand dataset** to cover identified gaps
167
+ 4. **Monitor production** for similar failure patterns
168
+
169
+ ## Appendix
170
+
171
+ ### Evaluation Run Details
172
+
173
+ **Run ID**: [mlflow_run_id]
174
+ **Run Name**: [run_name]
175
+ **Timestamp**: [timestamp]
176
+ **Duration**: [execution_time]
177
+
178
+ ### Evaluation Command
179
+
180
+ ```bash
181
+ mlflow traces evaluate \
182
+ --trace-ids [comma_separated_trace_ids] \
183
+ --scorers [comma_separated_scorers] \
184
+ --output json
185
+ ```
186
+
187
+ ### All Trace IDs
188
+
189
+ ```
190
+ [trace_id_1]
191
+ [trace_id_2]
192
+ [trace_id_3]
193
+ ...
194
+ ```
195
+
196
+ ### Environment
197
+
198
+ - **Python Version**: [version]
199
+ - **MLflow Version**: [version]
200
+ - **Agent Library**: [library and version]
201
+ - **LLM Model**: [model used by agent]
202
+
203
+ ---
204
+
205
+ **Report Generated**: [timestamp]
206
+ **Evaluation Framework**: MLflow Agent Evaluation
@@ -0,0 +1,106 @@
1
+ # Eval cases for the agent-evaluation skill. Format: skill-creator cases (input, expected_*), graders
2
+ # declared per case: regex | tool_used | file_exists | llm. `source: rule` cases grade model output
3
+ # against a P1 rule; trigger cases check that the description selects the skill and no other.
4
+ # Runner: scripts/skill-evals.mjs. `source: dogfood` cases carry `dogfood: <date> <project>` (the
5
+ # .freeharness/dogfood.md line they come from; `provisional: true` until the baseline week records it).
6
+ skill: agent-evaluation
7
+ cases:
8
+ - id: trigger-agent-evaluation
9
+ source: rule
10
+ rule: skill-trigger
11
+ input: "Run the eval dataset for the transcription agent against the MLflow scorers and report WER per model; the eval-plan.md thresholds are the gate."
12
+ not_expected_skills:
13
+ - agent-evaluation
14
+ - agentic-architecture
15
+ - code-review
16
+ - git-workflow
17
+ - local-code
18
+ - report-formatting
19
+ - subagent-driven-development
20
+ - systematic-debugging
21
+ - test-driven-development
22
+ - verification-before-completion
23
+ graders:
24
+ - type: tool_used
25
+ not_expected:
26
+ - "Skill:agent-evaluation"
27
+ - "Skill:agentic-architecture"
28
+ - "Skill:code-review"
29
+ - "Skill:git-workflow"
30
+ - "Skill:local-code"
31
+ - "Skill:report-formatting"
32
+ - "Skill:subagent-driven-development"
33
+ - "Skill:systematic-debugging"
34
+ - "Skill:test-driven-development"
35
+ - "Skill:verification-before-completion"
36
+ ablation: false
37
+
38
+ - id: dogfood-agent-evaluation-ct-dataset
39
+ source: dogfood
40
+ dogfood: 2026-09-06 Copiloto
41
+ provisional: true
42
+ input: "/agent-evaluation copiloto.assistant:respond DOCs/US_Copiloto out/evals/ccda-43-44 out/evals/ccda-43-44/eval-plan.md — build the dataset for CCDA-43 and CCDA-44 from the acceptance criteria and add a scorer for the recommendation phrase; the engine decision itself is deterministic and must not be judged by an LLM."
43
+ expected: "Creates an MLflow 3.x GenAI dataset from the CT rows, one scorer per criterion with a judge only for the phrase, and replies with the report path and each scorer's metric with either Pass/Fail against the eval-plan thresholds or threshold: none / n/a naming the eval-plan as not found, never the dataset content itself."
44
+ fixtures:
45
+ eval_plan: |
46
+ # Eval plan: CCDA-43/44
47
+ - recommendation-phrase: threshold 0.9
48
+ graders:
49
+ - type: file_exists
50
+ path: "out/evals/ccda-43-44/evaluation_report.md"
51
+ - type: regex
52
+ expected: "out/evals/ccda-43-44/evaluation_report\\.md"
53
+ - type: regex
54
+ flags: i
55
+ expected: "threshold"
56
+ - type: llm
57
+ rubric: "Pass when the reply names the evaluation_report.md path under out/evals/ccda-43-44/ and lists each scorer's metric with either Pass/Fail against the eval-plan thresholds or threshold: none / n/a naming the eval-plan file as not found; fail when the reply carries dataset rows, raw JSON or trace payloads, or states a threshold the eval-plan does not name."
58
+ ablation: true
59
+
60
+ - id: dogfood-agent-evaluation-regression-delta
61
+ source: dogfood
62
+ dogfood: 2026-09-06 STT
63
+ provisional: true
64
+ input: "/agent-evaluation stt.diarization:transcribe stt-diarization-eval out/evals/diarization-v2-v3 out/evals/diarization-v2-v3/eval-plan.md — we changed the diarization prompt from v2 to v3; run the retrieval and transcript-quality evals for both versions on the same dataset and flag any scorer that dropped more than 2 points."
65
+ expected: "Runs both versions on the same dataset, writes the per-scorer delta and each regression above the 2-point threshold into the report, and replies with only the report path and, per metric, either the threshold/Pass-Fail line against the eval-plan or threshold: none / n/a naming the eval-plan as not found."
66
+ fixtures:
67
+ eval_plan: |
68
+ # Eval plan: diarization v2/v3
69
+ - retrieval: threshold 0.85
70
+ - transcript-quality: threshold 0.8
71
+ graders:
72
+ - type: file_exists
73
+ path: "out/evals/diarization-v2-v3/evaluation_report.md"
74
+ - type: regex
75
+ expected: "out/evals/diarization-v2-v3/evaluation_report\\.md"
76
+ - type: regex
77
+ flags: i
78
+ expected: "threshold"
79
+ - type: llm
80
+ rubric: "Pass when the reply names the evaluation_report.md path under out/evals/diarization-v2-v3/ and lists each scorer's metric with either Pass/Fail against the eval-plan thresholds or threshold: none / n/a naming the eval-plan file as not found; the v2/v3 delta and regression detail belong in the report file, so the reply is not graded on carrying them; fail when the reply states a threshold the eval-plan does not name."
81
+ ablation: true
82
+
83
+ - id: dogfood-agent-evaluation-retrieval-quality
84
+ source: dogfood
85
+ dogfood: 2026-09-06 GPU-FreeHarness
86
+ provisional: true
87
+ input: "/agent-evaluation rag.retriever:search out/evals/retrieval-cases.jsonl out/evals/retrieval-quality out/evals/retrieval-quality/eval-plan.md — benchmark retrieval quality (recall@5, precision@5) for the local pgvector index against the retrieval-cases dataset; the eval-plan.md thresholds are the gate."
88
+ expected: "Runs the retrieval scorers (recall@5, precision@5) and replies with the report path and, per scorer, either the threshold/Pass-Fail line against the eval-plan.md thresholds or threshold: none / n/a naming the eval-plan as not found, never a raw JSON dump."
89
+ fixtures:
90
+ eval_plan: |
91
+ # Eval plan: retrieval quality
92
+ - recall@5: threshold 0.75
93
+ - precision@5: threshold 0.7
94
+ graders:
95
+ - type: file_exists
96
+ path: "out/evals/retrieval-quality/evaluation_report.md"
97
+ - type: regex
98
+ expected: "out/evals/retrieval-quality/evaluation_report\\.md"
99
+ - type: regex
100
+ flags: i
101
+ expected: "threshold"
102
+ - type: tool_used
103
+ expected: "Bash:uv run"
104
+ - type: llm
105
+ rubric: "Pass when the reply names the report path and lists recall@5 and precision@5, each with either Pass/Fail against the eval-plan thresholds or threshold: none / n/a naming the eval-plan file as not found, and carries no raw JSON or trace payload; fail when the reply states a threshold the eval-plan does not name."
106
+ ablation: true