codymaster 4.4.5 → 4.5.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 (197) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +29 -14
  3. package/commands/demo.md +1 -1
  4. package/dist/context-bus.js +70 -0
  5. package/dist/context-db.js +265 -0
  6. package/dist/continuity.js +12 -0
  7. package/dist/file-watcher.js +79 -0
  8. package/dist/index.js +152 -1
  9. package/dist/l0-indexer.js +158 -0
  10. package/dist/mcp-context-server.js +400 -0
  11. package/dist/migrate-json-to-sqlite.js +126 -0
  12. package/dist/skill-chain.js +19 -3
  13. package/dist/token-budget.js +108 -0
  14. package/dist/uri-resolver.js +203 -0
  15. package/package.json +5 -1
  16. package/scripts/gate-0-secrets.js +63 -0
  17. package/scripts/gate-1-syntax.js +53 -0
  18. package/scripts/gate-5-dist-verify.js +55 -0
  19. package/scripts/gate-6-smoke-test.js +30 -0
  20. package/scripts/index-codebase.sh +552 -0
  21. package/scripts/mcp-bridge.js +284 -0
  22. package/scripts/postinstall.js +301 -0
  23. package/scripts/security-fixer.js +143 -0
  24. package/scripts/security-scan.js +55 -0
  25. package/scripts/test-gemini.js +13 -0
  26. package/scripts/todo-bridge.js +112 -0
  27. package/skills/_shared/helpers.md +50 -14
  28. package/skills/cm-autopilot/SKILL.md +29 -0
  29. package/skills/cm-autopilot/scripts/autopilot.py +190 -0
  30. package/skills/cm-continuity/SKILL.md +90 -28
  31. package/skills/cm-skill-chain/SKILL.md +47 -1
  32. package/skills/cm-start/SKILL.md +11 -2
  33. package/skills/boxme-git-config/SKILL.md +0 -56
  34. package/skills/boxme-local-dev/SKILL.md +0 -66
  35. package/skills/jobs-to-be-done/SKILL.md +0 -266
  36. package/skills/jobs-to-be-done/references/case-studies.md +0 -154
  37. package/skills/jobs-to-be-done/references/competitive-strategy.md +0 -280
  38. package/skills/jobs-to-be-done/references/diagnostics.md +0 -158
  39. package/skills/jobs-to-be-done/references/innovation-process.md +0 -392
  40. package/skills/jobs-to-be-done/references/organizational-change.md +0 -328
  41. package/skills/marketplace-report-crawler/SKILL.md +0 -176
  42. package/skills/marketplace-report-crawler/config/accounts.json +0 -41
  43. package/skills/marketplace-report-crawler/config/report-types.json +0 -422
  44. package/skills/marketplace-report-crawler/config/sessions.json +0 -3
  45. package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +0 -102
  46. package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +0 -114
  47. package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +0 -94
  48. package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +0 -272
  49. package/skills/marketplace-report-crawler/scripts/crawl-runner.js +0 -281
  50. package/skills/marketplace-report-crawler/scripts/session-check.sh +0 -72
  51. package/skills/marketplace-report-crawler/scripts/session-manager.sh +0 -349
  52. package/skills/marketplace-report-crawler/scripts/setup-folders.sh +0 -83
  53. package/skills/medical-research/SKILL.md +0 -194
  54. package/skills/medical-research/scripts/evidence_checker.py +0 -288
  55. package/skills/mom-test/SKILL.md +0 -267
  56. package/skills/mom-test/references/avoiding-bad-data.md +0 -221
  57. package/skills/mom-test/references/case-studies.md +0 -306
  58. package/skills/mom-test/references/commitment-advancement.md +0 -219
  59. package/skills/mom-test/references/finding-conversations.md +0 -251
  60. package/skills/mom-test/references/processing-learning.md +0 -256
  61. package/skills/mom-test/references/question-patterns.md +0 -198
  62. package/skills/pandasai-analytics/SKILL.md +0 -251
  63. package/skills/release-it/SKILL.md +0 -235
  64. package/skills/release-it/references/anti-patterns.md +0 -279
  65. package/skills/release-it/references/capacity-planning.md +0 -285
  66. package/skills/release-it/references/chaos-engineering.md +0 -325
  67. package/skills/release-it/references/deployment-strategies.md +0 -331
  68. package/skills/release-it/references/observability.md +0 -301
  69. package/skills/release-it/references/stability-patterns.md +0 -355
  70. package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +0 -37
  71. package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +0 -34
  72. package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +0 -51
  73. package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +0 -39
  74. package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +0 -52
  75. package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +0 -25
  76. package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +0 -31
  77. package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +0 -25
  78. package/skills/skill-creator-ultra/README.md +0 -1242
  79. package/skills/skill-creator-ultra/SKILL.md +0 -388
  80. package/skills/skill-creator-ultra/agents/analyzer.md +0 -274
  81. package/skills/skill-creator-ultra/agents/comparator.md +0 -202
  82. package/skills/skill-creator-ultra/agents/grader.md +0 -223
  83. package/skills/skill-creator-ultra/assets/eval_review.html +0 -146
  84. package/skills/skill-creator-ultra/eval-viewer/generate_review.py +0 -471
  85. package/skills/skill-creator-ultra/eval-viewer/viewer.html +0 -1325
  86. package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +0 -109
  87. package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +0 -116
  88. package/skills/skill-creator-ultra/examples/example_api_docs.md +0 -189
  89. package/skills/skill-creator-ultra/examples/example_db_migration.md +0 -253
  90. package/skills/skill-creator-ultra/examples/example_git_commit.md +0 -111
  91. package/skills/skill-creator-ultra/install.ps1 +0 -289
  92. package/skills/skill-creator-ultra/install.sh +0 -313
  93. package/skills/skill-creator-ultra/phases/phase1_interview.md +0 -202
  94. package/skills/skill-creator-ultra/phases/phase2_extract.md +0 -55
  95. package/skills/skill-creator-ultra/phases/phase3_detect.md +0 -57
  96. package/skills/skill-creator-ultra/phases/phase4_generate.md +0 -543
  97. package/skills/skill-creator-ultra/phases/phase5_test.md +0 -319
  98. package/skills/skill-creator-ultra/phases/phase6_eval.md +0 -301
  99. package/skills/skill-creator-ultra/phases/phase7_iterate.md +0 -103
  100. package/skills/skill-creator-ultra/phases/phase8_optimize.md +0 -113
  101. package/skills/skill-creator-ultra/resources/advanced_patterns.md +0 -499
  102. package/skills/skill-creator-ultra/resources/anti_patterns.md +0 -376
  103. package/skills/skill-creator-ultra/resources/blueprints.md +0 -498
  104. package/skills/skill-creator-ultra/resources/checklist.md +0 -243
  105. package/skills/skill-creator-ultra/resources/composition_cookbook.md +0 -291
  106. package/skills/skill-creator-ultra/resources/description_optimization.md +0 -90
  107. package/skills/skill-creator-ultra/resources/eval_guide.md +0 -133
  108. package/skills/skill-creator-ultra/resources/industry_questions.md +0 -189
  109. package/skills/skill-creator-ultra/resources/interview_questions.md +0 -200
  110. package/skills/skill-creator-ultra/resources/pattern_detection.md +0 -200
  111. package/skills/skill-creator-ultra/resources/prompt_engineering.md +0 -531
  112. package/skills/skill-creator-ultra/resources/schemas.md +0 -430
  113. package/skills/skill-creator-ultra/resources/script_integration.md +0 -593
  114. package/skills/skill-creator-ultra/resources/scripts_guide.md +0 -339
  115. package/skills/skill-creator-ultra/resources/skill_template.md +0 -124
  116. package/skills/skill-creator-ultra/resources/skill_writing_guide.md +0 -634
  117. package/skills/skill-creator-ultra/resources/versioning_guide.md +0 -193
  118. package/skills/skill-creator-ultra/scripts/ci_eval.py +0 -200
  119. package/skills/skill-creator-ultra/scripts/package_skill.py +0 -165
  120. package/skills/skill-creator-ultra/scripts/simulate_skill.py +0 -398
  121. package/skills/skill-creator-ultra/scripts/skill_audit.py +0 -611
  122. package/skills/skill-creator-ultra/scripts/skill_compare.py +0 -265
  123. package/skills/skill-creator-ultra/scripts/skill_export.py +0 -334
  124. package/skills/skill-creator-ultra/scripts/skill_scaffold.py +0 -403
  125. package/skills/skill-creator-ultra/scripts/skill_stats.py +0 -339
  126. package/skills/skill-creator-ultra/scripts/validate_skill.py +0 -411
  127. package/skills/tailwind-mastery/SKILL.md +0 -229
  128. package/skills/vercel-react-best-practices/AGENTS.md +0 -3373
  129. package/skills/vercel-react-best-practices/README.md +0 -123
  130. package/skills/vercel-react-best-practices/SKILL.md +0 -143
  131. package/skills/vercel-react-best-practices/rules/_sections.md +0 -46
  132. package/skills/vercel-react-best-practices/rules/_template.md +0 -28
  133. package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  134. package/skills/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
  135. package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
  136. package/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
  137. package/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -80
  138. package/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -51
  139. package/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
  140. package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
  141. package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -59
  142. package/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
  143. package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
  144. package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  145. package/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
  146. package/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
  147. package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
  148. package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
  149. package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
  150. package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
  151. package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
  152. package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
  153. package/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
  154. package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
  155. package/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
  156. package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
  157. package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
  158. package/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
  159. package/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
  160. package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
  161. package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
  162. package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
  163. package/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
  164. package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  165. package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
  166. package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
  167. package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  168. package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  169. package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  170. package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
  171. package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
  172. package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
  173. package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  174. package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
  175. package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
  176. package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  177. package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
  178. package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
  179. package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  180. package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  181. package/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
  182. package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  183. package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
  184. package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  185. package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
  186. package/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
  187. package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
  188. package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  189. package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
  190. package/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
  191. package/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
  192. package/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
  193. package/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
  194. package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -142
  195. package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
  196. package/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
  197. package/skills/web-design-guidelines/SKILL.md +0 -39
@@ -1,430 +0,0 @@
1
- # JSON Schemas
2
-
3
- This document defines the JSON schemas used by skill-creator.
4
-
5
- ---
6
-
7
- ## evals.json
8
-
9
- Defines the evals for a skill. Located at `evals/evals.json` within the skill directory.
10
-
11
- ```json
12
- {
13
- "skill_name": "example-skill",
14
- "evals": [
15
- {
16
- "id": 1,
17
- "prompt": "User's example prompt",
18
- "expected_output": "Description of expected result",
19
- "files": ["evals/files/sample1.pdf"],
20
- "expectations": [
21
- "The output includes X",
22
- "The skill used script Y"
23
- ]
24
- }
25
- ]
26
- }
27
- ```
28
-
29
- **Fields:**
30
- - `skill_name`: Name matching the skill's frontmatter
31
- - `evals[].id`: Unique integer identifier
32
- - `evals[].prompt`: The task to execute
33
- - `evals[].expected_output`: Human-readable description of success
34
- - `evals[].files`: Optional list of input file paths (relative to skill root)
35
- - `evals[].expectations`: List of verifiable statements
36
-
37
- ---
38
-
39
- ## history.json
40
-
41
- Tracks version progression in Improve mode. Located at workspace root.
42
-
43
- ```json
44
- {
45
- "started_at": "2026-01-15T10:30:00Z",
46
- "skill_name": "pdf",
47
- "current_best": "v2",
48
- "iterations": [
49
- {
50
- "version": "v0",
51
- "parent": null,
52
- "expectation_pass_rate": 0.65,
53
- "grading_result": "baseline",
54
- "is_current_best": false
55
- },
56
- {
57
- "version": "v1",
58
- "parent": "v0",
59
- "expectation_pass_rate": 0.75,
60
- "grading_result": "won",
61
- "is_current_best": false
62
- },
63
- {
64
- "version": "v2",
65
- "parent": "v1",
66
- "expectation_pass_rate": 0.85,
67
- "grading_result": "won",
68
- "is_current_best": true
69
- }
70
- ]
71
- }
72
- ```
73
-
74
- **Fields:**
75
- - `started_at`: ISO timestamp of when improvement started
76
- - `skill_name`: Name of the skill being improved
77
- - `current_best`: Version identifier of the best performer
78
- - `iterations[].version`: Version identifier (v0, v1, ...)
79
- - `iterations[].parent`: Parent version this was derived from
80
- - `iterations[].expectation_pass_rate`: Pass rate from grading
81
- - `iterations[].grading_result`: "baseline", "won", "lost", or "tie"
82
- - `iterations[].is_current_best`: Whether this is the current best version
83
-
84
- ---
85
-
86
- ## grading.json
87
-
88
- Output from the grader agent. Located at `<run-dir>/grading.json`.
89
-
90
- ```json
91
- {
92
- "expectations": [
93
- {
94
- "text": "The output includes the name 'John Smith'",
95
- "passed": true,
96
- "evidence": "Found in transcript Step 3: 'Extracted names: John Smith, Sarah Johnson'"
97
- },
98
- {
99
- "text": "The spreadsheet has a SUM formula in cell B10",
100
- "passed": false,
101
- "evidence": "No spreadsheet was created. The output was a text file."
102
- }
103
- ],
104
- "summary": {
105
- "passed": 2,
106
- "failed": 1,
107
- "total": 3,
108
- "pass_rate": 0.67
109
- },
110
- "execution_metrics": {
111
- "tool_calls": {
112
- "Read": 5,
113
- "Write": 2,
114
- "Bash": 8
115
- },
116
- "total_tool_calls": 15,
117
- "total_steps": 6,
118
- "errors_encountered": 0,
119
- "output_chars": 12450,
120
- "transcript_chars": 3200
121
- },
122
- "timing": {
123
- "executor_duration_seconds": 165.0,
124
- "grader_duration_seconds": 26.0,
125
- "total_duration_seconds": 191.0
126
- },
127
- "claims": [
128
- {
129
- "claim": "The form has 12 fillable fields",
130
- "type": "factual",
131
- "verified": true,
132
- "evidence": "Counted 12 fields in field_info.json"
133
- }
134
- ],
135
- "user_notes_summary": {
136
- "uncertainties": ["Used 2023 data, may be stale"],
137
- "needs_review": [],
138
- "workarounds": ["Fell back to text overlay for non-fillable fields"]
139
- },
140
- "eval_feedback": {
141
- "suggestions": [
142
- {
143
- "assertion": "The output includes the name 'John Smith'",
144
- "reason": "A hallucinated document that mentions the name would also pass"
145
- }
146
- ],
147
- "overall": "Assertions check presence but not correctness."
148
- }
149
- }
150
- ```
151
-
152
- **Fields:**
153
- - `expectations[]`: Graded expectations with evidence
154
- - `summary`: Aggregate pass/fail counts
155
- - `execution_metrics`: Tool usage and output size (from executor's metrics.json)
156
- - `timing`: Wall clock timing (from timing.json)
157
- - `claims`: Extracted and verified claims from the output
158
- - `user_notes_summary`: Issues flagged by the executor
159
- - `eval_feedback`: (optional) Improvement suggestions for the evals, only present when the grader identifies issues worth raising
160
-
161
- ---
162
-
163
- ## metrics.json
164
-
165
- Output from the executor agent. Located at `<run-dir>/outputs/metrics.json`.
166
-
167
- ```json
168
- {
169
- "tool_calls": {
170
- "Read": 5,
171
- "Write": 2,
172
- "Bash": 8,
173
- "Edit": 1,
174
- "Glob": 2,
175
- "Grep": 0
176
- },
177
- "total_tool_calls": 18,
178
- "total_steps": 6,
179
- "files_created": ["filled_form.pdf", "field_values.json"],
180
- "errors_encountered": 0,
181
- "output_chars": 12450,
182
- "transcript_chars": 3200
183
- }
184
- ```
185
-
186
- **Fields:**
187
- - `tool_calls`: Count per tool type
188
- - `total_tool_calls`: Sum of all tool calls
189
- - `total_steps`: Number of major execution steps
190
- - `files_created`: List of output files created
191
- - `errors_encountered`: Number of errors during execution
192
- - `output_chars`: Total character count of output files
193
- - `transcript_chars`: Character count of transcript
194
-
195
- ---
196
-
197
- ## timing.json
198
-
199
- Wall clock timing for a run. Located at `<run-dir>/timing.json`.
200
-
201
- **How to capture:** When a subagent task completes, the task notification includes `total_tokens` and `duration_ms`. Save these immediately — they are not persisted anywhere else and cannot be recovered after the fact.
202
-
203
- ```json
204
- {
205
- "total_tokens": 84852,
206
- "duration_ms": 23332,
207
- "total_duration_seconds": 23.3,
208
- "executor_start": "2026-01-15T10:30:00Z",
209
- "executor_end": "2026-01-15T10:32:45Z",
210
- "executor_duration_seconds": 165.0,
211
- "grader_start": "2026-01-15T10:32:46Z",
212
- "grader_end": "2026-01-15T10:33:12Z",
213
- "grader_duration_seconds": 26.0
214
- }
215
- ```
216
-
217
- ---
218
-
219
- ## benchmark.json
220
-
221
- Output from Benchmark mode. Located at `benchmarks/<timestamp>/benchmark.json`.
222
-
223
- ```json
224
- {
225
- "metadata": {
226
- "skill_name": "pdf",
227
- "skill_path": "/path/to/pdf",
228
- "executor_model": "claude-sonnet-4-20250514",
229
- "analyzer_model": "most-capable-model",
230
- "timestamp": "2026-01-15T10:30:00Z",
231
- "evals_run": [1, 2, 3],
232
- "runs_per_configuration": 3
233
- },
234
-
235
- "runs": [
236
- {
237
- "eval_id": 1,
238
- "eval_name": "Ocean",
239
- "configuration": "with_skill",
240
- "run_number": 1,
241
- "result": {
242
- "pass_rate": 0.85,
243
- "passed": 6,
244
- "failed": 1,
245
- "total": 7,
246
- "time_seconds": 42.5,
247
- "tokens": 3800,
248
- "tool_calls": 18,
249
- "errors": 0
250
- },
251
- "expectations": [
252
- {"text": "...", "passed": true, "evidence": "..."}
253
- ],
254
- "notes": [
255
- "Used 2023 data, may be stale",
256
- "Fell back to text overlay for non-fillable fields"
257
- ]
258
- }
259
- ],
260
-
261
- "run_summary": {
262
- "with_skill": {
263
- "pass_rate": {"mean": 0.85, "stddev": 0.05, "min": 0.80, "max": 0.90},
264
- "time_seconds": {"mean": 45.0, "stddev": 12.0, "min": 32.0, "max": 58.0},
265
- "tokens": {"mean": 3800, "stddev": 400, "min": 3200, "max": 4100}
266
- },
267
- "without_skill": {
268
- "pass_rate": {"mean": 0.35, "stddev": 0.08, "min": 0.28, "max": 0.45},
269
- "time_seconds": {"mean": 32.0, "stddev": 8.0, "min": 24.0, "max": 42.0},
270
- "tokens": {"mean": 2100, "stddev": 300, "min": 1800, "max": 2500}
271
- },
272
- "delta": {
273
- "pass_rate": "+0.50",
274
- "time_seconds": "+13.0",
275
- "tokens": "+1700"
276
- }
277
- },
278
-
279
- "notes": [
280
- "Assertion 'Output is a PDF file' passes 100% in both configurations - may not differentiate skill value",
281
- "Eval 3 shows high variance (50% ± 40%) - may be flaky or model-dependent",
282
- "Without-skill runs consistently fail on table extraction expectations",
283
- "Skill adds 13s average execution time but improves pass rate by 50%"
284
- ]
285
- }
286
- ```
287
-
288
- **Fields:**
289
- - `metadata`: Information about the benchmark run
290
- - `skill_name`: Name of the skill
291
- - `timestamp`: When the benchmark was run
292
- - `evals_run`: List of eval names or IDs
293
- - `runs_per_configuration`: Number of runs per config (e.g. 3)
294
- - `runs[]`: Individual run results
295
- - `eval_id`: Numeric eval identifier
296
- - `eval_name`: Human-readable eval name (used as section header in the viewer)
297
- - `configuration`: Must be `"with_skill"` or `"without_skill"` (the viewer uses this exact string for grouping and color coding)
298
- - `run_number`: Integer run number (1, 2, 3...)
299
- - `result`: Nested object with `pass_rate`, `passed`, `total`, `time_seconds`, `tokens`, `errors`
300
- - `run_summary`: Statistical aggregates per configuration
301
- - `with_skill` / `without_skill`: Each contains `pass_rate`, `time_seconds`, `tokens` objects with `mean` and `stddev` fields
302
- - `delta`: Difference strings like `"+0.50"`, `"+13.0"`, `"+1700"`
303
- - `notes`: Freeform observations from the analyzer
304
-
305
- **Important:** The viewer reads these field names exactly. Using `config` instead of `configuration`, or putting `pass_rate` at the top level of a run instead of nested under `result`, will cause the viewer to show empty/zero values. Always reference this schema when generating benchmark.json manually.
306
-
307
- ---
308
-
309
- ## comparison.json
310
-
311
- Output from blind comparator. Located at `<grading-dir>/comparison-N.json`.
312
-
313
- ```json
314
- {
315
- "winner": "A",
316
- "reasoning": "Output A provides a complete solution with proper formatting and all required fields. Output B is missing the date field and has formatting inconsistencies.",
317
- "rubric": {
318
- "A": {
319
- "content": {
320
- "correctness": 5,
321
- "completeness": 5,
322
- "accuracy": 4
323
- },
324
- "structure": {
325
- "organization": 4,
326
- "formatting": 5,
327
- "usability": 4
328
- },
329
- "content_score": 4.7,
330
- "structure_score": 4.3,
331
- "overall_score": 9.0
332
- },
333
- "B": {
334
- "content": {
335
- "correctness": 3,
336
- "completeness": 2,
337
- "accuracy": 3
338
- },
339
- "structure": {
340
- "organization": 3,
341
- "formatting": 2,
342
- "usability": 3
343
- },
344
- "content_score": 2.7,
345
- "structure_score": 2.7,
346
- "overall_score": 5.4
347
- }
348
- },
349
- "output_quality": {
350
- "A": {
351
- "score": 9,
352
- "strengths": ["Complete solution", "Well-formatted", "All fields present"],
353
- "weaknesses": ["Minor style inconsistency in header"]
354
- },
355
- "B": {
356
- "score": 5,
357
- "strengths": ["Readable output", "Correct basic structure"],
358
- "weaknesses": ["Missing date field", "Formatting inconsistencies", "Partial data extraction"]
359
- }
360
- },
361
- "expectation_results": {
362
- "A": {
363
- "passed": 4,
364
- "total": 5,
365
- "pass_rate": 0.80,
366
- "details": [
367
- {"text": "Output includes name", "passed": true}
368
- ]
369
- },
370
- "B": {
371
- "passed": 3,
372
- "total": 5,
373
- "pass_rate": 0.60,
374
- "details": [
375
- {"text": "Output includes name", "passed": true}
376
- ]
377
- }
378
- }
379
- }
380
- ```
381
-
382
- ---
383
-
384
- ## analysis.json
385
-
386
- Output from post-hoc analyzer. Located at `<grading-dir>/analysis.json`.
387
-
388
- ```json
389
- {
390
- "comparison_summary": {
391
- "winner": "A",
392
- "winner_skill": "path/to/winner/skill",
393
- "loser_skill": "path/to/loser/skill",
394
- "comparator_reasoning": "Brief summary of why comparator chose winner"
395
- },
396
- "winner_strengths": [
397
- "Clear step-by-step instructions for handling multi-page documents",
398
- "Included validation script that caught formatting errors"
399
- ],
400
- "loser_weaknesses": [
401
- "Vague instruction 'process the document appropriately' led to inconsistent behavior",
402
- "No script for validation, agent had to improvise"
403
- ],
404
- "instruction_following": {
405
- "winner": {
406
- "score": 9,
407
- "issues": ["Minor: skipped optional logging step"]
408
- },
409
- "loser": {
410
- "score": 6,
411
- "issues": [
412
- "Did not use the skill's formatting template",
413
- "Invented own approach instead of following step 3"
414
- ]
415
- }
416
- },
417
- "improvement_suggestions": [
418
- {
419
- "priority": "high",
420
- "category": "instructions",
421
- "suggestion": "Replace 'process the document appropriately' with explicit steps",
422
- "expected_impact": "Would eliminate ambiguity that caused inconsistent behavior"
423
- }
424
- ],
425
- "transcript_insights": {
426
- "winner_execution_pattern": "Read skill -> Followed 5-step process -> Used validation script",
427
- "loser_execution_pattern": "Read skill -> Unclear on approach -> Tried 3 different methods"
428
- }
429
- }
430
- ```