skilldrop-cli 0.16.35 → 0.16.37

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 (298) hide show
  1. package/README.md +1 -0
  2. package/agents/README.md +4 -1
  3. package/agents/docs-reviewer.md +47 -0
  4. package/agents/finding-adjudicator.md +49 -0
  5. package/agents/test-reviewer.md +52 -0
  6. package/catalogue.json +19 -7
  7. package/model-routing.json +48 -0
  8. package/package.json +1 -1
  9. package/packs/ai-engineering/skills/agent-config-review/SKILL.md +116 -0
  10. package/packs/ai-engineering/skills/agent-config-review/evals/eval_queries.json +12 -0
  11. package/packs/ai-engineering/skills/agent-config-review/evals/evals.json +75 -0
  12. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/agents/db-migrator.md +8 -0
  13. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/agents/reviewer.md +9 -0
  14. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/settings.json +48 -0
  15. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/settings.local.json +5 -0
  16. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.mcp.json +22 -0
  17. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/package.json +12 -0
  18. package/packs/ai-engineering/skills/agent-config-review/evals/files/2/.cursor/mcp.json +17 -0
  19. package/packs/ai-engineering/skills/agent-config-review/evals/files/2/config.toml +21 -0
  20. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/my-user-settings.json +11 -0
  21. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/.claude/agents/release-notes.md +13 -0
  22. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/.claude/settings.json +39 -0
  23. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/.mcp.json +18 -0
  24. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/package.json +14 -0
  25. package/packs/ai-engineering/skills/agent-config-review/evals/files/5/.github/workflows/codex-triage.yml +29 -0
  26. package/packs/ai-engineering/skills/agent-config-review/evals/files/5/AGENTS.md +16 -0
  27. package/packs/ai-engineering/skills/agent-config-review/evals/files/5/codex/config.toml +34 -0
  28. package/packs/ai-engineering/skills/agent-config-review/examples/inputs/tidewater-ingest/.claude/settings.json +22 -0
  29. package/packs/ai-engineering/skills/agent-config-review/examples/inputs/tidewater-ingest/.mcp.json +9 -0
  30. package/packs/ai-engineering/skills/agent-config-review/examples/python-repo-tighten.md +81 -0
  31. package/packs/ai-engineering/skills/agent-config-review/manifest.json +60 -0
  32. package/packs/ai-engineering/skills/agent-config-review/reference.md +205 -0
  33. package/packs/ai-engineering/skills/agent-config-review/scripts/agent_config_scan.py +989 -0
  34. package/packs/ai-engineering/skills/agent-incident-response/SKILL.md +175 -0
  35. package/packs/ai-engineering/skills/agent-incident-response/evals/eval_queries.json +14 -0
  36. package/packs/ai-engineering/skills/agent-incident-response/evals/evals.json +107 -0
  37. package/packs/ai-engineering/skills/agent-incident-response/evals/files/1/agent-session-excerpt.txt +11 -0
  38. package/packs/ai-engineering/skills/agent-incident-response/evals/files/1/ci-build-log.txt +24 -0
  39. package/packs/ai-engineering/skills/agent-incident-response/evals/files/1/incident-notes.md +19 -0
  40. package/packs/ai-engineering/skills/agent-incident-response/evals/files/2/mcp-config.json +20 -0
  41. package/packs/ai-engineering/skills/agent-incident-response/evals/files/2/session-transcript.txt +8 -0
  42. package/packs/ai-engineering/skills/agent-incident-response/evals/files/4/agent-session.log +70 -0
  43. package/packs/ai-engineering/skills/agent-incident-response/evals/files/4/infra/staging-db.tf +25 -0
  44. package/packs/ai-engineering/skills/agent-incident-response/evals/files/5/jobs/nightly-triage/job.yaml +19 -0
  45. package/packs/ai-engineering/skills/agent-incident-response/evals/files/5/jobs/nightly-triage/run.log +13 -0
  46. package/packs/ai-engineering/skills/agent-incident-response/evals/files/5/usage-export-2026-10-20.csv +13 -0
  47. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/.mcp.json +20 -0
  48. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/git-log.txt +12 -0
  49. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/notesync-excerpt.txt +30 -0
  50. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/notesync.log +15 -0
  51. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/ssh-config.txt +16 -0
  52. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/.github/workflows/ci.yml +28 -0
  53. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/SECURITY.md +8 -0
  54. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/issue-479.md +35 -0
  55. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/package.json +15 -0
  56. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/pr-482.diff +20 -0
  57. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/run-log.txt +30 -0
  58. package/packs/ai-engineering/skills/agent-incident-response/examples/injected-issue-comment.md +57 -0
  59. package/packs/ai-engineering/skills/agent-incident-response/manifest.json +55 -0
  60. package/packs/ai-engineering/skills/agent-incident-response/reference.md +152 -0
  61. package/packs/ai-engineering/skills/agent-incident-response/scripts/find_secret_exposure.py +239 -0
  62. package/packs/ai-engineering/skills/agent-incident-response/scripts/usage_split.py +194 -0
  63. package/packs/ai-engineering/skills/judge-audit/SKILL.md +157 -0
  64. package/packs/ai-engineering/skills/judge-audit/evals/eval_queries.json +11 -0
  65. package/packs/ai-engineering/skills/judge-audit/evals/evals.json +136 -0
  66. package/packs/ai-engineering/skills/judge-audit/evals/files/1/judgements.csv +321 -0
  67. package/packs/ai-engineering/skills/judge-audit/evals/files/1/notes.md +28 -0
  68. package/packs/ai-engineering/skills/judge-audit/evals/files/2/pairwise.csv +101 -0
  69. package/packs/ai-engineering/skills/judge-audit/evals/files/2/run-notes.md +16 -0
  70. package/packs/ai-engineering/skills/judge-audit/evals/files/4/grades.csv +97 -0
  71. package/packs/ai-engineering/skills/judge-audit/evals/files/5/pairwise_judgements.jsonl +120 -0
  72. package/packs/ai-engineering/skills/judge-audit/evals/files/6/rag-judge/README.md +36 -0
  73. package/packs/ai-engineering/skills/judge-audit/evals/files/6/rag-judge/judgments.csv +301 -0
  74. package/packs/ai-engineering/skills/judge-audit/evals/files/7/moderation/gold_labels.csv +101 -0
  75. package/packs/ai-engineering/skills/judge-audit/evals/files/7/moderation/run_1.jsonl +100 -0
  76. package/packs/ai-engineering/skills/judge-audit/evals/files/7/moderation/run_2.jsonl +100 -0
  77. package/packs/ai-engineering/skills/judge-audit/evals/files/8/patches.csv +241 -0
  78. package/packs/ai-engineering/skills/judge-audit/evals/files/9/adequacy_ratings.csv +151 -0
  79. package/packs/ai-engineering/skills/judge-audit/examples/summary-panel.md +70 -0
  80. package/packs/ai-engineering/skills/judge-audit/manifest.json +44 -0
  81. package/packs/ai-engineering/skills/judge-audit/reference.md +176 -0
  82. package/packs/ai-engineering/skills/judge-audit/scripts/judge_stats.py +1735 -0
  83. package/packs/converters/skills/file-to-markdown/SKILL.md +2 -1
  84. package/packs/converters/skills/file-to-markdown/evals/eval_queries.json +4 -0
  85. package/packs/converters/skills/file-to-markdown/manifest.json +2 -2
  86. package/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +253 -3
  87. package/packs/converters/skills/md-to-confluence/SKILL.md +139 -0
  88. package/packs/converters/skills/md-to-confluence/evals/eval_queries.json +42 -0
  89. package/packs/converters/skills/md-to-confluence/evals/evals.json +89 -0
  90. package/packs/converters/skills/md-to-confluence/evals/files/1/img/latency-dashboard.png +0 -0
  91. package/packs/converters/skills/md-to-confluence/evals/files/1/payments-runbook.md +60 -0
  92. package/packs/converters/skills/md-to-confluence/evals/files/2/deploy-checklist.md +33 -0
  93. package/packs/converters/skills/md-to-confluence/evals/files/3/img/after/screen.png +0 -0
  94. package/packs/converters/skills/md-to-confluence/evals/files/3/img/before/screen.png +0 -0
  95. package/packs/converters/skills/md-to-confluence/evals/files/3/release-notes-4.2.md +49 -0
  96. package/packs/converters/skills/md-to-confluence/evals/files/4/docs/img/topology.png +0 -0
  97. package/packs/converters/skills/md-to-confluence/evals/files/4/docs/ingest-pipeline-design.md +65 -0
  98. package/packs/converters/skills/md-to-confluence/evals/files/5/support/troubleshooting-sso.md +57 -0
  99. package/packs/converters/skills/md-to-confluence/examples/inputs/img/queue-depth.png +0 -0
  100. package/packs/converters/skills/md-to-confluence/examples/inputs/queue-runbook.fixed.md +21 -0
  101. package/packs/converters/skills/md-to-confluence/examples/inputs/queue-runbook.md +21 -0
  102. package/packs/converters/skills/md-to-confluence/examples/queue-runbook.md +57 -0
  103. package/packs/converters/skills/md-to-confluence/manifest.json +52 -0
  104. package/packs/converters/skills/md-to-confluence/reference.md +92 -0
  105. package/packs/converters/skills/md-to-confluence/scripts/md_to_confluence.py +821 -0
  106. package/packs/converters/skills/md-to-pptx/SKILL.md +131 -0
  107. package/packs/converters/skills/md-to-pptx/evals/eval_queries.json +12 -0
  108. package/packs/converters/skills/md-to-pptx/evals/evals.json +84 -0
  109. package/packs/converters/skills/md-to-pptx/evals/files/1/img/defect-burndown.png +0 -0
  110. package/packs/converters/skills/md-to-pptx/evals/files/1/status-report.md +75 -0
  111. package/packs/converters/skills/md-to-pptx/evals/files/3/brand.json +12 -0
  112. package/packs/converters/skills/md-to-pptx/evals/files/3/night-shift-induction.md +53 -0
  113. package/packs/converters/skills/md-to-pptx/evals/files/4/charts/ontime.png +0 -0
  114. package/packs/converters/skills/md-to-pptx/evals/files/4/qbr-q3.md +85 -0
  115. package/packs/converters/skills/md-to-pptx/evals/files/5/vendor-sync-notes.md +28 -0
  116. package/packs/converters/skills/md-to-pptx/examples/support-weekly-input.md +48 -0
  117. package/packs/converters/skills/md-to-pptx/examples/support-weekly.md +75 -0
  118. package/packs/converters/skills/md-to-pptx/examples/tickets-by-week.png +0 -0
  119. package/packs/converters/skills/md-to-pptx/manifest.json +49 -0
  120. package/packs/converters/skills/md-to-pptx/reference.md +139 -0
  121. package/packs/converters/skills/md-to-pptx/scripts/md_to_pptx.py +1841 -0
  122. package/packs/dev-team/loops/modernize/LOOP.md +124 -0
  123. package/packs/dev-team/loops/modernize/evals/eval_queries.json +9 -0
  124. package/packs/dev-team/loops/modernize/evals/evals.json +27 -0
  125. package/packs/dev-team/loops/modernize/loop.json +60 -0
  126. package/packs/dev-team/skills/behaviour-equivalence/SKILL.md +155 -0
  127. package/packs/dev-team/skills/behaviour-equivalence/evals/eval_queries.json +11 -0
  128. package/packs/dev-team/skills/behaviour-equivalence/evals/evals.json +76 -0
  129. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/cases.jsonl +12 -0
  130. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/new.jsonl +12 -0
  131. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/notes.md +15 -0
  132. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/old.jsonl +12 -0
  133. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/old_rerun.jsonl +12 -0
  134. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/pricing_v1.py +45 -0
  135. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/pricing_v2.py +65 -0
  136. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/rules.json +10 -0
  137. package/packs/dev-team/skills/behaviour-equivalence/evals/files/3/diff-summary.txt +16 -0
  138. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/diff.txt +13 -0
  139. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/fee_calc_py2.py +16 -0
  140. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/fee_calc_py3.py +24 -0
  141. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/input.csv +13 -0
  142. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/new_output.csv +13 -0
  143. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/old_output.csv +13 -0
  144. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/TEAM_NOTES.md +19 -0
  145. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/normalisation.yaml +12 -0
  146. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/recordings/new_run.jsonl +8 -0
  147. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/recordings/old_run1.jsonl +8 -0
  148. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/recordings/old_run2.jsonl +8 -0
  149. package/packs/dev-team/skills/behaviour-equivalence/examples/delivery-date.md +78 -0
  150. package/packs/dev-team/skills/behaviour-equivalence/manifest.json +33 -0
  151. package/packs/dev-team/skills/behaviour-equivalence/reference.md +97 -0
  152. package/packs/dev-team/skills/behaviour-equivalence/scripts/golden_diff.py +524 -0
  153. package/packs/dev-team/skills/behaviour-equivalence/templates/accepted.json +10 -0
  154. package/packs/dev-team/skills/behaviour-equivalence/templates/rules.json +7 -0
  155. package/packs/frontend/pack.json +61 -0
  156. package/packs/frontend/skills/bundle-size-review/SKILL.md +114 -0
  157. package/packs/frontend/skills/bundle-size-review/evals/eval_queries.json +12 -0
  158. package/packs/frontend/skills/bundle-size-review/evals/evals.json +108 -0
  159. package/packs/frontend/skills/bundle-size-review/evals/files/1/package.json +28 -0
  160. package/packs/frontend/skills/bundle-size-review/evals/files/1/src/utils/format.js +26 -0
  161. package/packs/frontend/skills/bundle-size-review/evals/files/1/stats.json +1334 -0
  162. package/packs/frontend/skills/bundle-size-review/evals/files/2/PR.md +21 -0
  163. package/packs/frontend/skills/bundle-size-review/evals/files/2/meta-after.json +440 -0
  164. package/packs/frontend/skills/bundle-size-review/evals/files/2/meta-before.json +360 -0
  165. package/packs/frontend/skills/bundle-size-review/evals/files/3/package.json +29 -0
  166. package/packs/frontend/skills/bundle-size-review/evals/files/3/stats.json +1583 -0
  167. package/packs/frontend/skills/bundle-size-review/evals/files/4/src/components/CommentBox.jsx +24 -0
  168. package/packs/frontend/skills/bundle-size-review/evals/files/4/stats/after.json +299 -0
  169. package/packs/frontend/skills/bundle-size-review/evals/files/4/stats/before.json +275 -0
  170. package/packs/frontend/skills/bundle-size-review/evals/files/5/.browserslistrc +3 -0
  171. package/packs/frontend/skills/bundle-size-review/evals/files/5/build/meta.json +371 -0
  172. package/packs/frontend/skills/bundle-size-review/evals/files/5/build.mjs +18 -0
  173. package/packs/frontend/skills/bundle-size-review/evals/files/5/package-lock.json +39 -0
  174. package/packs/frontend/skills/bundle-size-review/evals/files/5/package.json +22 -0
  175. package/packs/frontend/skills/bundle-size-review/evals/files/5/src/components/Icon.jsx +8 -0
  176. package/packs/frontend/skills/bundle-size-review/evals/files/5/src/polyfills.js +7 -0
  177. package/packs/frontend/skills/bundle-size-review/evals/files/5/src/utils/groupRows.js +4 -0
  178. package/packs/frontend/skills/bundle-size-review/evals/files/6/.browserslistrc +3 -0
  179. package/packs/frontend/skills/bundle-size-review/evals/files/6/package.json +25 -0
  180. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/App.tsx +8 -0
  181. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/chartLocales.ts +16 -0
  182. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/index.ts +8 -0
  183. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/messages/de.ts +5 -0
  184. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/messages/en.ts +5 -0
  185. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/useLocale.ts +14 -0
  186. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/main.tsx +10 -0
  187. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/pages/Home.tsx +14 -0
  188. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/pages/Reports.tsx +31 -0
  189. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/routes.tsx +17 -0
  190. package/packs/frontend/skills/bundle-size-review/evals/files/6/stats.json +1869 -0
  191. package/packs/frontend/skills/bundle-size-review/evals/files/6/vite.config.ts +13 -0
  192. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/package.json +26 -0
  193. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/src/App.tsx +27 -0
  194. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/src/pages/Analytics.tsx +10 -0
  195. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/src/pages/Users.tsx +13 -0
  196. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/stats.json +1421 -0
  197. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/webpack.config.js +25 -0
  198. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/package.json +27 -0
  199. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/App.tsx +18 -0
  200. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/index.tsx +4 -0
  201. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/pages/Home.tsx +10 -0
  202. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/pages/Product.tsx +13 -0
  203. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/stats.json +1496 -0
  204. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/webpack.config.js +26 -0
  205. package/packs/frontend/skills/bundle-size-review/evals/files/7/package.json +9 -0
  206. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/Button.css +3 -0
  207. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/Button.js +14 -0
  208. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/Chart.js +21 -0
  209. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/index.js +22 -0
  210. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/package.json +20 -0
  211. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/Button.css +3 -0
  212. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/Button.tsx +9 -0
  213. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/Chart.tsx +14 -0
  214. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/index.ts +6 -0
  215. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/tsconfig.json +14 -0
  216. package/packs/frontend/skills/bundle-size-review/examples/inputs/stats-after.json +1358 -0
  217. package/packs/frontend/skills/bundle-size-review/examples/inputs/stats-before.json +1334 -0
  218. package/packs/frontend/skills/bundle-size-review/examples/larkspur-sparkline.md +52 -0
  219. package/packs/frontend/skills/bundle-size-review/manifest.json +52 -0
  220. package/packs/frontend/skills/bundle-size-review/reference.md +147 -0
  221. package/packs/frontend/skills/bundle-size-review/scripts/bundle_stats.py +1633 -0
  222. package/packs/frontend/skills/rendering-strategy/SKILL.md +149 -0
  223. package/packs/frontend/skills/rendering-strategy/evals/eval_queries.json +38 -0
  224. package/packs/frontend/skills/rendering-strategy/evals/evals.json +77 -0
  225. package/packs/frontend/skills/rendering-strategy/evals/files/1/fernhill-app.md +40 -0
  226. package/packs/frontend/skills/rendering-strategy/evals/files/3/routes.md +33 -0
  227. package/packs/frontend/skills/rendering-strategy/evals/files/4/build-notes.txt +5 -0
  228. package/packs/frontend/skills/rendering-strategy/evals/files/4/nuxt.config.ts +19 -0
  229. package/packs/frontend/skills/rendering-strategy/evals/files/4/pages/recipes/[slug].vue +37 -0
  230. package/packs/frontend/skills/rendering-strategy/evals/files/4/routes.md +15 -0
  231. package/packs/frontend/skills/rendering-strategy/evals/files/5/routes.txt +18 -0
  232. package/packs/frontend/skills/rendering-strategy/evals/files/5/src/hooks.server.ts +14 -0
  233. package/packs/frontend/skills/rendering-strategy/evals/files/5/src/routes/(marketing)/pricing/+page.server.ts +10 -0
  234. package/packs/frontend/skills/rendering-strategy/evals/files/5/src/routes/+layout.server.ts +10 -0
  235. package/packs/frontend/skills/rendering-strategy/evals/files/5/svelte.config.js +10 -0
  236. package/packs/frontend/skills/rendering-strategy/evals/files/5/traffic.md +18 -0
  237. package/packs/frontend/skills/rendering-strategy/examples/saas-site.md +42 -0
  238. package/packs/frontend/skills/rendering-strategy/manifest.json +50 -0
  239. package/packs/frontend/skills/rendering-strategy/reference.md +116 -0
  240. package/packs/frontend/skills/rendering-strategy/scripts/render_load.py +181 -0
  241. package/packs/frontend/skills/web-performance-review/SKILL.md +106 -0
  242. package/packs/frontend/skills/web-performance-review/evals/eval_queries.json +38 -0
  243. package/packs/frontend/skills/web-performance-review/evals/evals.json +76 -0
  244. package/packs/frontend/skills/web-performance-review/evals/files/1/psi.json +1065 -0
  245. package/packs/frontend/skills/web-performance-review/evals/files/2/after.json +359 -0
  246. package/packs/frontend/skills/web-performance-review/evals/files/2/before.json +375 -0
  247. package/packs/frontend/skills/web-performance-review/evals/files/4/psi-pdp-mobile-2026-10-19.json +171 -0
  248. package/packs/frontend/skills/web-performance-review/evals/files/4/rum-inp-attribution-oct14-19.csv +6 -0
  249. package/packs/frontend/skills/web-performance-review/evals/files/4/rum-inp-daily.csv +15 -0
  250. package/packs/frontend/skills/web-performance-review/evals/files/5/crux-home-phone.json +35 -0
  251. package/packs/frontend/skills/web-performance-review/evals/files/5/lighthouse-home-mobile.json +173 -0
  252. package/packs/frontend/skills/web-performance-review/examples/quayside-article-lhr.json +480 -0
  253. package/packs/frontend/skills/web-performance-review/examples/quayside-article.md +103 -0
  254. package/packs/frontend/skills/web-performance-review/manifest.json +49 -0
  255. package/packs/frontend/skills/web-performance-review/reference.md +105 -0
  256. package/packs/frontend/skills/web-performance-review/scripts/lh_summary.py +743 -0
  257. package/packs/product-manager/skills/lean-canvas/SKILL.md +162 -0
  258. package/packs/product-manager/skills/lean-canvas/evals/eval_queries.json +42 -0
  259. package/packs/product-manager/skills/lean-canvas/evals/evals.json +82 -0
  260. package/packs/product-manager/skills/lean-canvas/evals/files/1/pawpass-notes.md +54 -0
  261. package/packs/product-manager/skills/lean-canvas/evals/files/3/lunchloop-pitch.md +30 -0
  262. package/packs/product-manager/skills/lean-canvas/evals/files/4/clubkit-notes.md +44 -0
  263. package/packs/product-manager/skills/lean-canvas/evals/files/5/cost-model.csv +5 -0
  264. package/packs/product-manager/skills/lean-canvas/evals/files/5/proposal.md +40 -0
  265. package/packs/product-manager/skills/lean-canvas/evals/files/5/stakeholder-emails.txt +18 -0
  266. package/packs/product-manager/skills/lean-canvas/examples/bike-repair.md +72 -0
  267. package/packs/product-manager/skills/lean-canvas/manifest.json +34 -0
  268. package/packs/product-manager/skills/lean-canvas/reference.md +102 -0
  269. package/packs/product-manager/skills/lean-canvas/scripts/unit_economics.py +211 -0
  270. package/packs/solution-architect/skills/api-contract-draft/SKILL.md +2 -2
  271. package/packs/solution-architect/skills/api-contract-draft/manifest.json +28 -6
  272. package/packs/solution-architect/skills/event-contract-draft/SKILL.md +167 -0
  273. package/packs/solution-architect/skills/event-contract-draft/evals/eval_queries.json +38 -0
  274. package/packs/solution-architect/skills/event-contract-draft/evals/evals.json +76 -0
  275. package/packs/solution-architect/skills/event-contract-draft/evals/files/1/order-events-brief.md +45 -0
  276. package/packs/solution-architect/skills/event-contract-draft/evals/files/4/NOTES.md +23 -0
  277. package/packs/solution-architect/skills/event-contract-draft/evals/files/4/schemas/shipment-update.json +40 -0
  278. package/packs/solution-architect/skills/event-contract-draft/evals/files/5/invoice.example.json +25 -0
  279. package/packs/solution-architect/skills/event-contract-draft/examples/order-service.asyncapi.json +246 -0
  280. package/packs/solution-architect/skills/event-contract-draft/examples/order-service.md +92 -0
  281. package/packs/solution-architect/skills/event-contract-draft/manifest.json +25 -0
  282. package/packs/solution-architect/skills/event-contract-draft/reference.md +113 -0
  283. package/packs/solution-architect/skills/event-contract-draft/scripts/check_asyncapi.py +502 -0
  284. package/packs/solution-architect/skills/event-contract-draft/templates/asyncapi-skeleton.json +144 -0
  285. package/packs/sre-oncall/skills/slo-spec/SKILL.md +161 -0
  286. package/packs/sre-oncall/skills/slo-spec/evals/eval_queries.json +38 -0
  287. package/packs/sre-oncall/skills/slo-spec/evals/evals.json +75 -0
  288. package/packs/sre-oncall/skills/slo-spec/evals/files/1/order-service.md +51 -0
  289. package/packs/sre-oncall/skills/slo-spec/evals/files/3/search-slo-status.md +30 -0
  290. package/packs/sre-oncall/skills/slo-spec/evals/files/4/alerts/payments-api.rules.yaml +16 -0
  291. package/packs/sre-oncall/skills/slo-spec/evals/files/4/docs/dependencies.md +8 -0
  292. package/packs/sre-oncall/skills/slo-spec/evals/files/4/metrics/summary-90d.md +51 -0
  293. package/packs/sre-oncall/skills/slo-spec/evals/files/5/ops-notes.md +34 -0
  294. package/packs/sre-oncall/skills/slo-spec/examples/ticket-booking.md +88 -0
  295. package/packs/sre-oncall/skills/slo-spec/manifest.json +34 -0
  296. package/packs/sre-oncall/skills/slo-spec/reference.md +113 -0
  297. package/packs/sre-oncall/skills/slo-spec/scripts/slo_math.py +449 -0
  298. package/packs/sre-oncall/skills/slo-spec/templates/slo-spec.md +35 -0
@@ -0,0 +1,136 @@
1
+ {
2
+ "skill_name": "judge-audit",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Tomás reckons our LLM judges are reliable enough to gate the reply drafter. Everything is in notes.md and judgements.csv. Can we use judge-b as the release gate from next sprint? Keep it short.",
7
+ "assertions": [
8
+ "The first lines say judge-b should not be relied on as the release gate as things stand, and name that gate as the decision",
9
+ "It does not accept the 91% agreement as evidence: it gives the chance-corrected figure (Cohen's kappa about 0.54, with about 81% agreement expected by chance) instead of raw agreement alone",
10
+ "It compares the judges with the support lead's 40 labels and reports that judge-b passes 10 of the 12 replies she failed (about 83%), with an interval or a note that 12 failures is a small base",
11
+ "It translates the gate: on her 40 replies the judges pass about 88% while she passes 70%, so an 85% judge pass rate does not mean 85% of replies are sendable",
12
+ "It reports judge-b's flip rate between trials (12 of 80, about 15%) against judge-a's (3 of 80) and says this matters for choosing the cheaper judge",
13
+ "It points out that the two judges share errors (both passed the same long replies R29–R37 that the support lead failed), so their agreement with each other does not validate them",
14
+ "It notes that passes rise with reply length while the support lead's do not, and recommends judging policy correctness as a separate criterion to gate on instead of one 'good reply' score",
15
+ "It does not invent figures, names, items or labels that are not in the files"
16
+ ]
17
+ },
18
+ {
19
+ "id": 2,
20
+ "prompt": "Growth wants to switch our onboarding emails to prompt v2 because the grader picked it 53 to 43. The setup is in run-notes.md and the raw results in pairwise.csv. Is that solid enough to ship v2 on?",
21
+ "assertions": [
22
+ "The first lines say the grader result is not enough to ship v2 on",
23
+ "It finds the grader picks whichever email is shown first about 70% of the time (67 of 96 decided comparisons)",
24
+ "It finds that v2 was shown first in 60 of the 96 decided comparisons despite the randomisation, so the raw 55% win rate is inflated by position",
25
+ "It gives an order-balanced figure of about 50% (v2 wins about 70% when shown first and about 31% when shown second), so the data shows no evidence v2 is better",
26
+ "It reports that the grader's pick changed between the two runs on about half the profiles (26 of 50)",
27
+ "It recommends judging each pair in both orders and counting a win only when it holds in both, or an equivalent fix, and says that an interval on the win rate (computed over the 50 profiles, not the 100 judgements) cannot remove the order effect",
28
+ "It notes there are no human labels, so even a consistent grader has not been shown to pick the better email",
29
+ "It does not invent numbers, profiles or human judgements that are not in the files"
30
+ ]
31
+ },
32
+ {
33
+ "id": 3,
34
+ "prompt": "Quick one. We're piloting two LLM judges to grade our support agents' ticket replies as good or poor, and the grades will feed into quarterly bonus decisions. On 20 replies the two judges agreed on 18: both said good on 16, both said poor on 2, and they split on the other 2 (one each way). That's 90% agreement, so good enough to go ahead? A couple of lines is fine.",
35
+ "assertions": [
36
+ "The first line or two say no, not for bonus decisions",
37
+ "It corrects the 90% for chance: with each judge saying good on 17 of 20, about 75% agreement is expected by chance, giving a kappa of about 0.6",
38
+ "It says 20 replies is too few to conclude, for example that the uncertainty on the agreement figure runs from near zero to near perfect",
39
+ "It says the two judges agreeing does not show either is right, and that their grades need comparing with a sample graded by a person such as a team lead or QA reviewer",
40
+ "It ties the answer to the decision: grades that affect individual people's bonuses need a much higher bar than tracking an overall trend",
41
+ "It stays short: a few lines or bullets, no long report or tables",
42
+ "It does not invent results, reply counts or statistics beyond the counts given"
43
+ ]
44
+ },
45
+ {
46
+ "id": 4,
47
+ "held_out": "2026-10-20",
48
+ "prompt": "hey, sanity check before thursday. we moved the support reply prompt to v2 and the grader model says it's way better (avg went ~3.25 -> ~4.0 on the 1-5 scale). Priya hand-scored 32 of them last week and I got a weighted kappa of 0.85 between her and the grader, so I'm thinking we just use the grader as the release gate and ship v2 to all queues. grades.csv is the export. am I good??",
49
+ "assertions": [
50
+ "Answers the actual question up front with a clear verdict: the grader should NOT be relied on to gate the v2 rollout as things stand (do-not-rely, or use-with-conditions where the conditions rule out using it alone for this v2-vs-v1 call). It does not endorse shipping on the grader's say-so.",
51
+ "Shows that the pooled quadratic-weighted kappa (about 0.85 on the 32 labelled rows) hides a split by version: the grader matches Priya exactly on 14 of 16 v1 rows but only 7 of 16 v2 rows, and on v2 it scores higher than her on 9 of 16 rows and lower on none (mean grader-minus-Priya +0.625 on v2 vs 0.00 on v1).",
52
+ "Spots the length confound: v2 replies are much longer (mean about 201 words vs about 80 for v1), and the grader's over-scoring grows with reply length (e.g. grader-minus-human error correlates positively with reply_words, r about 0.6 on the labelled rows), so the +0.77 average gain may be the grader rewarding length rather than quality.",
53
+ "Points out that on the human-labelled rows Priya's own scores show no v2 improvement (mean about 3.25 for v2 vs about 3.44 for v1), and notes that with only 16 labels per version this human difference is itself very uncertain (a CI that spans zero), so it neither proves v2 better nor proves it worse.",
54
+ "Mentions what this data cannot measure: there is a single grader run (no test-retest / flip rate) and a single human labeller (no human-human baseline), and suggests checking these rather than claiming them.",
55
+ "Gives concrete next steps that fit the Thursday deadline, e.g. hand-label a fresh random sample of v2 replies (especially long ones), re-score with a rubric or prompt that controls for length, or keep a human check on the gate, rather than a generic 'collect more data'.",
56
+ "Is sized to a quick 'am I good?' sanity check: leads with the verdict and the two or three numbers that drive it, without a long tutorial on kappa theory.",
57
+ "Invents nothing: every number, name and file it cites comes from grades.csv or the message (no made-up grader model name, extra labellers, columns, or statistics that the data doesn't support)."
58
+ ]
59
+ },
60
+ {
61
+ "id": 5,
62
+ "held_out": "2026-10-20",
63
+ "prompt": "I'm comparing our current RAG pipeline (A) against a new reranker variant (B) on 30 eval questions. Two judge models, orca-judge-large and wren-judge-small, each judged every A/B pair twice (trial 1 and trial 2). Across all 120 judgements B won 73, A won 40, 7 ties, and the two judges agree on roughly two thirds of verdicts. I have to tell the eng review on Friday whether B is a real winner or noise. Raw data is in pairwise_judgements.jsonl. Can you check whether these judges are trustworthy enough to make that call, and whether B's win is real?",
64
+ "assertions": [
65
+ "Answers both questions directly: the judges, as this experiment was run, are not trustworthy enough to declare B the winner, and B's win is not established (verdict do-not-rely, or use-with-conditions where the condition is a position-balanced rerun). It does not tell the review that B is a real winner.",
66
+ "Catches the order imbalance in the first_shown field: B was shown first on 22 of the 30 questions (88 of the 120 judgements), and each question kept the same order in both trials, so B's win rate is confounded with position.",
67
+ "Quantifies the position bias from the data: the first-shown answer won 90 of 120 judgements (75%; orca-judge-large 50/60, wren-judge-small 40/60), and B won only 6 of 32 judgements when A was shown first versus 67 of 88 when B was shown first.",
68
+ "Reports chance-corrected agreement between the two judges rather than the raw ~65% (39 of 60 paired verdicts): Cohen's kappa about 0.33 pooled (about 0.38 in trial 1, 0.29 in trial 2), or Fleiss' kappa about 0.32 across all four ratings, and calls that fair or weak agreement, not strong.",
69
+ "Reports test-retest instability from the two same-order trials: orca-judge-large changed its verdict on 8 of 30 questions and wren-judge-small on 11 of 30.",
70
+ "Treats the 30 questions, not the 120 judgements, as the unit of analysis (judgements on the same question are not independent), so any confidence interval on B's win rate is clustered or bootstrapped by question, and it explains that even an interval excluding 50% would not fix the position confound.",
71
+ "Recommends a specific fix: rerun every question in both orders (A-first and B-first), count a win only when it holds in both orders (flips count as ties), and add some expert or human labels, noting that the file has no ground-truth labels so agreement with experts cannot be checked yet.",
72
+ "Invents nothing: every count, rate and name it cites comes from pairwise_judgements.jsonl or the message; it does not make up expert labels, extra judges, or results of a rerun that hasn't happened."
73
+ ]
74
+ },
75
+ {
76
+ "id": 6,
77
+ "held_out": "2026-10-20",
78
+ "prompt": "We run a nightly relevance eval on our RAG retriever and its labels gate whether retriever changes ship. atlas-xl is the judge today, but at ~20k judgments a night finance wants the bill down. I ran all three Atlas tiers over the same 300 query-passage pairs and Priya hand-labelled 60 of them - everything, including prices and how the gate works, is in rag-judge/. Which is the cheapest judge we can switch to without making the gate meaningless? Dmitri's position is that nano agrees with xl about 80% of the time so nano is fine. Is he right?",
79
+ "assertions": [
80
+ "Answers the actual question directly: recommends atlas-m (not atlas-nano) as the cheapest judge to switch to, with conditions, and says plainly that Dmitri's '80% agreement' argument does not justify nano.",
81
+ "Reports chance-corrected agreement with Priya's 60 expert labels for each judge, matching the data to within about 0.02: Cohen's kappa ~0.80 for atlas-xl, ~0.72 for atlas-m, ~0.37-0.38 for atlas-nano (raw accuracy 55/60, 53/60, 47/60).",
82
+ "Explains why raw agreement misleads here: 42 of the 60 expert-labelled pairs (70%) are relevant, so always answering 'relevant' already scores 70%; nano's ~78% accuracy and its ~80% raw agreement with xl (kappa ~0.42 over all 300 pairs) sit close to that baseline.",
83
+ "Identifies nano's failure mode: it over-labels 'relevant' (12 of the 18 expert-irrelevant pairs judged relevant), and the false positives are concentrated on long passages (10 of 11 long irrelevant passages vs 2 of 7 short ones, using the ~400-token split in passage_tokens).",
84
+ "Connects that length bias to the decision: the planned Q1 re-chunk to ~900-token chunks would be judged by a model that favours long passages, so nano would inflate the new retriever's precision@5 and could wave it through the gate.",
85
+ "States the uncertainty from a 60-label (only 18 irrelevant) sample - e.g. wide confidence intervals on kappa or accuracy - and says the xl-vs-m difference is not clearly distinguishable on this data; recommends a concrete next step such as more expert labels (especially irrelevant and long passages) before or alongside the switch.",
86
+ "Notes what the data cannot show rather than asserting it: each judge ran once (no test-retest or flip rate), and the expert labels come from a single annotator; does not report a position-bias result for these pointwise judgments.",
87
+ "Invents nothing not in the input: no fabricated judge names, prices, label counts, extra annotators or files; any cost figures follow from the README (e.g. roughly $96/night for xl vs $22 for m and $3.60 for nano at 20k judgments)."
88
+ ]
89
+ },
90
+ {
91
+ "id": 7,
92
+ "held_out": "2026-10-20",
93
+ "prompt": "ok quick one - we ran our mod judge (sentinel-2) twice over the same 100 forum posts from the review queue and it's like 96-97% accurate vs what T&S labelled. can we turn on auto-remove for the forums monday?? files are in moderation/, sorry the run 2 export came out in a different format",
94
+ "assertions": [
95
+ "Answers the actual question directly: no, do not turn on auto-remove on this evidence (a 'do not rely on it' verdict for auto-removal), optionally offering a narrower use such as ranking or routing posts to human review.",
96
+ "Points out that only 5 of the 100 posts are violations, so a judge that flags nothing scores 95% - the 96-97% accuracy (97% run 1, 96% run 2) is barely above that baseline.",
97
+ "Reports the per-run confusion against the gold labels: each run catches 3 of 5 violations (recall 60%); run 1 has 1 false positive (precision 3/4), run 2 has 2 (precision 3/5); chance-corrected agreement with gold is moderate (Cohen's kappa ~0.65 run 1, ~0.58 run 2).",
98
+ "Joins run_1.jsonl and run_2.jsonl on the post ID (item_id vs id, flagged true/false vs verdict VIOLATION/OK) rather than by line order - run 2 is in a different row order - and gets test-retest agreement of 95/100 with Cohen's kappa ~0.42; does not report the near-zero kappa (~ -0.05) that a line-by-line comparison would produce.",
99
+ "Shows the instability where it matters: 5 posts flip between runs, including 2 real violations (fp-35782 and fp-31250), and of the 7 posts flagged in either run only 2 (fp-30923, fp-38748) were flagged both times.",
100
+ "Flags that the self-harm violation fp-34265 was missed in both runs, and that false positives (fp-36620, fp-31299, fp-31504) mean auto-remove would delete legitimate posts.",
101
+ "Quantifies how little 5 positives can show - e.g. a 95% interval on 3/5 recall spanning roughly 23% to 88% - and recommends a concrete next step such as labelling a larger, violation-enriched sample before reconsidering auto-remove.",
102
+ "Invents nothing not in the input: no fabricated post IDs, counts, policy categories, thresholds or files, and the reply stays proportionate to a quick Slack-style question (a clear verdict plus the key numbers, not a long report)."
103
+ ]
104
+ },
105
+ {
106
+ "id": 8,
107
+ "held_out": "2026-10-20",
108
+ "prompt": "quick one - our code review bot has an LLM judge that scores every generated patch 0-10 for correctness, been running since july. my manager wants to turn on auto-merge next sprint for anything the judge scores above 8. i dumped what we have into patches.csv (tests col = CI unit test result, only where the repo actually has tests; we also re-ran the judge on some patches last week, that's the rerun col). from eyeballing it the 9s and 10s basically all pass tests so i think we're good?? can u sanity check before i tell him yes",
109
+ "assertions": [
110
+ "Opens with a direct answer to 'can I tell him yes': no, not as proposed (a 'do not rely on it' or 'use only with conditions' verdict), and does not endorse auto-merging every patch scored above 8 across all repos.",
111
+ "Reads 'above 8' as scores 9-10 (or says which reading it used, or shows both >8 and >=8) and computes the decision metric from patches.csv: of the labelled patches scored 9-10, 20 of 24 passed tests (about 83%), so 'basically all pass' is wrong; it names or counts the 4 high-scored failures (PR-1101, PR-1085, PR-1139, PR-1004) that would have been auto-merged.",
112
+ "Puts that 20/24 in context with uncertainty and a chance baseline: gives a confidence interval (e.g. Wilson about 64-93%, or Clopper-Pearson about 63-95%) and compares it with the base pass rate of 107/153 labelled patches (about 70%), making the point that the judge adds only modest lift over merging blind.",
113
+ "Catches that infra-scripts has no test results at all yet supplies 15 of the 40 patches scored above 8, so the judge's precision there is unmeasured and the 20/24 figure says nothing about that repo.",
114
+ "Detects size/length bias: judge scores climb with lines_changed whether or not tests pass (e.g. rank correlation around 0.56 overall, or failing patches scoring high when large); all 4 high-scored failures are 230+ lines, while all 14 labelled patches under 200 lines that scored above 8 passed.",
115
+ "Uses the judge_score_rerun column for test-retest: of the 60 patches scored twice, only 17 got the same score and 9 land on opposite sides of the 'above 8' line; 14 were above 8 in at least one run but only 5 in both. It concludes the gate itself is unstable.",
116
+ "Handles the 4 rows whose judge_score is ERR (PR-1222, PR-1161, PR-1127, PR-1133) by excluding them and saying so, not by treating them as 0 or dropping them silently. Any conditions it proposes follow from the findings (e.g. only small patches in repos with tests, CI must still be green, two consistent judge runs, and a labelled sample from infra-scripts before including it).",
117
+ "Invents nothing: every number, patch ID, repo and test result it cites can be derived from patches.csv. It does not name or guess which LLM the bot uses, and does not claim to have run the bot or CI. The reply is sized as a sanity check (a verdict plus a handful of key numbers and conditions), not a long methodology essay."
118
+ ]
119
+ },
120
+ {
121
+ "id": 9,
122
+ "held_out": "2026-10-20",
123
+ "prompt": "I run localization QA at Halvorsen Language Services. Every segment we deliver is scored for adequacy on a 1-4 scale (1 = meaning lost, 2 = major errors, 3 = minor errors, 4 = complete) by three linguists, and any segment whose average is below 2.5 goes back to the translator for retranslation. A vendor, Quillmark, is pitching an LLM rater; their deck says it \"matches human linguists within one point 92% of the time\". We ran a pilot: adequacy_ratings.csv has 150 segments across en-de, en-es and en-ja, each rated by the three linguists we use for that language (linguist_1/2/3 are slots, not the same people across languages) and by the vendor's LLM. The steering committee meets Thursday and the question is simple: can the LLM replace one of our three linguists? I need a yes / no / yes-with-conditions answer and the evidence behind it, one page at most.",
124
+ "assertions": [
125
+ "Answers the committee's question in the first lines with one verdict. It is not an unqualified yes: either no, or yes-with-conditions where the conditions at least exclude en-ja. The whole reply fits roughly one page, as asked.",
126
+ "Takes apart the vendor's metric: it confirms LLM-linguist within-one-point agreement of about 92% (92.4% pooled) but shows the number is near-meaningless on a 4-point scale, because chance alone gives about 72-73% from these rating distributions and the linguists agree within one point about 98% of the time with each other.",
127
+ "Uses chance-corrected agreement that suits an ordinal scale (weighted kappa, or Fleiss/Krippendorff with an ordinal treatment) and benchmarks the LLM against the linguists rather than an absolute cutoff. Pooled, mean quadratic-weighted kappa is about 0.85 linguist-to-linguist versus about 0.64 LLM-to-linguist (or equivalent figures from a comparable method), so the LLM is a noticeably weaker rater than any linguist.",
128
+ "Breaks results out by language pair and flags en-ja. There, LLM-to-linguist quadratic-weighted kappa is about 0.47 versus about 0.88 between linguists (or three-linguist Fleiss kappa about 0.69 dropping to about 0.32-0.36 when the LLM replaces any one slot), while within-one agreement stays about 92% and hides the problem. It notes en-ja has only 40 segments (via an interval or an explicit sample-size caveat).",
129
+ "Notices the LLM compresses the scale and almost never says 'meaning lost': it gave a 1 only 3 times in 150 (never in en-ja), against 25-29 times per linguist slot. On the 28 segments where at least two linguists gave a 1, the LLM gave a 1 only twice.",
130
+ "Connects the agreement findings to the retranslation rule (average below 2.5): e.g. three linguists send back 44 segments, and replacing one slot with the LLM changes the send-back decision on 4-5 of the 150 segments. It also says that small number is cushioned by the two remaining linguists and does not show the LLM is as good as a human. A reply that reports agreement statistics only fails this.",
131
+ "Does not invent test-retest or position-bias numbers. It notes the pilot ran the LLM once per segment, so its stability is unknown, and recommends a repeat run (and, if relevant, a check by segment type or length) before any rollout.",
132
+ "Invents nothing: every figure, segment ID and language breakdown comes from adequacy_ratings.csv. It attributes no capabilities, model names or other claims to Quillmark beyond the one quoted in the request."
133
+ ]
134
+ }
135
+ ]
136
+ }
@@ -0,0 +1,321 @@
1
+ item,judge,trial,label,expert,length
2
+ R01,judge-a,1,pass,pass,132
3
+ R01,judge-a,2,pass,pass,132
4
+ R01,judge-b,1,pass,pass,132
5
+ R01,judge-b,2,pass,pass,132
6
+ R02,judge-a,1,pass,pass,169
7
+ R02,judge-a,2,pass,pass,169
8
+ R02,judge-b,1,pass,pass,169
9
+ R02,judge-b,2,pass,pass,169
10
+ R03,judge-a,1,pass,pass,96
11
+ R03,judge-a,2,pass,pass,96
12
+ R03,judge-b,1,pass,pass,96
13
+ R03,judge-b,2,fail,pass,96
14
+ R04,judge-a,1,pass,pass,133
15
+ R04,judge-a,2,pass,pass,133
16
+ R04,judge-b,1,pass,pass,133
17
+ R04,judge-b,2,pass,pass,133
18
+ R05,judge-a,1,fail,pass,170
19
+ R05,judge-a,2,fail,pass,170
20
+ R05,judge-b,1,fail,pass,170
21
+ R05,judge-b,2,fail,pass,170
22
+ R06,judge-a,1,pass,pass,97
23
+ R06,judge-a,2,pass,pass,97
24
+ R06,judge-b,1,pass,pass,97
25
+ R06,judge-b,2,pass,pass,97
26
+ R07,judge-a,1,pass,pass,134
27
+ R07,judge-a,2,pass,pass,134
28
+ R07,judge-b,1,pass,pass,134
29
+ R07,judge-b,2,pass,pass,134
30
+ R08,judge-a,1,pass,pass,171
31
+ R08,judge-a,2,pass,pass,171
32
+ R08,judge-b,1,pass,pass,171
33
+ R08,judge-b,2,pass,pass,171
34
+ R09,judge-a,1,pass,pass,98
35
+ R09,judge-a,2,pass,pass,98
36
+ R09,judge-b,1,pass,pass,98
37
+ R09,judge-b,2,fail,pass,98
38
+ R10,judge-a,1,pass,pass,135
39
+ R10,judge-a,2,pass,pass,135
40
+ R10,judge-b,1,pass,pass,135
41
+ R10,judge-b,2,pass,pass,135
42
+ R11,judge-a,1,pass,pass,172
43
+ R11,judge-a,2,pass,pass,172
44
+ R11,judge-b,1,pass,pass,172
45
+ R11,judge-b,2,pass,pass,172
46
+ R12,judge-a,1,pass,pass,99
47
+ R12,judge-a,2,fail,pass,99
48
+ R12,judge-b,1,pass,pass,99
49
+ R12,judge-b,2,pass,pass,99
50
+ R13,judge-a,1,pass,pass,136
51
+ R13,judge-a,2,pass,pass,136
52
+ R13,judge-b,1,pass,pass,136
53
+ R13,judge-b,2,pass,pass,136
54
+ R14,judge-a,1,pass,pass,173
55
+ R14,judge-a,2,pass,pass,173
56
+ R14,judge-b,1,pass,pass,173
57
+ R14,judge-b,2,pass,pass,173
58
+ R15,judge-a,1,pass,pass,100
59
+ R15,judge-a,2,pass,pass,100
60
+ R15,judge-b,1,pass,pass,100
61
+ R15,judge-b,2,pass,pass,100
62
+ R16,judge-a,1,pass,pass,137
63
+ R16,judge-a,2,pass,pass,137
64
+ R16,judge-b,1,pass,pass,137
65
+ R16,judge-b,2,pass,pass,137
66
+ R17,judge-a,1,fail,pass,174
67
+ R17,judge-a,2,fail,pass,174
68
+ R17,judge-b,1,pass,pass,174
69
+ R17,judge-b,2,pass,pass,174
70
+ R18,judge-a,1,pass,pass,101
71
+ R18,judge-a,2,pass,pass,101
72
+ R18,judge-b,1,pass,pass,101
73
+ R18,judge-b,2,pass,pass,101
74
+ R19,judge-a,1,pass,pass,138
75
+ R19,judge-a,2,pass,pass,138
76
+ R19,judge-b,1,pass,pass,138
77
+ R19,judge-b,2,pass,pass,138
78
+ R20,judge-a,1,pass,pass,175
79
+ R20,judge-a,2,pass,pass,175
80
+ R20,judge-b,1,pass,pass,175
81
+ R20,judge-b,2,pass,pass,175
82
+ R21,judge-a,1,pass,pass,102
83
+ R21,judge-a,2,pass,pass,102
84
+ R21,judge-b,1,pass,pass,102
85
+ R21,judge-b,2,pass,pass,102
86
+ R22,judge-a,1,pass,pass,139
87
+ R22,judge-a,2,pass,pass,139
88
+ R22,judge-b,1,fail,pass,139
89
+ R22,judge-b,2,pass,pass,139
90
+ R23,judge-a,1,pass,pass,176
91
+ R23,judge-a,2,pass,pass,176
92
+ R23,judge-b,1,pass,pass,176
93
+ R23,judge-b,2,pass,pass,176
94
+ R24,judge-a,1,pass,pass,103
95
+ R24,judge-a,2,pass,pass,103
96
+ R24,judge-b,1,pass,pass,103
97
+ R24,judge-b,2,pass,pass,103
98
+ R25,judge-a,1,pass,pass,140
99
+ R25,judge-a,2,pass,pass,140
100
+ R25,judge-b,1,pass,pass,140
101
+ R25,judge-b,2,pass,pass,140
102
+ R26,judge-a,1,pass,pass,177
103
+ R26,judge-a,2,pass,pass,177
104
+ R26,judge-b,1,fail,pass,177
105
+ R26,judge-b,2,fail,pass,177
106
+ R27,judge-a,1,pass,pass,104
107
+ R27,judge-a,2,pass,pass,104
108
+ R27,judge-b,1,pass,pass,104
109
+ R27,judge-b,2,pass,pass,104
110
+ R28,judge-a,1,pass,pass,141
111
+ R28,judge-a,2,pass,pass,141
112
+ R28,judge-b,1,pass,pass,141
113
+ R28,judge-b,2,pass,pass,141
114
+ R29,judge-a,1,pass,fail,215
115
+ R29,judge-a,2,pass,fail,215
116
+ R29,judge-b,1,pass,fail,215
117
+ R29,judge-b,2,pass,fail,215
118
+ R30,judge-a,1,pass,fail,228
119
+ R30,judge-a,2,pass,fail,228
120
+ R30,judge-b,1,pass,fail,228
121
+ R30,judge-b,2,fail,fail,228
122
+ R31,judge-a,1,pass,fail,241
123
+ R31,judge-a,2,pass,fail,241
124
+ R31,judge-b,1,pass,fail,241
125
+ R31,judge-b,2,fail,fail,241
126
+ R32,judge-a,1,pass,fail,254
127
+ R32,judge-a,2,pass,fail,254
128
+ R32,judge-b,1,pass,fail,254
129
+ R32,judge-b,2,pass,fail,254
130
+ R33,judge-a,1,pass,fail,267
131
+ R33,judge-a,2,fail,fail,267
132
+ R33,judge-b,1,pass,fail,267
133
+ R33,judge-b,2,pass,fail,267
134
+ R34,judge-a,1,pass,fail,280
135
+ R34,judge-a,2,pass,fail,280
136
+ R34,judge-b,1,pass,fail,280
137
+ R34,judge-b,2,pass,fail,280
138
+ R35,judge-a,1,pass,fail,293
139
+ R35,judge-a,2,pass,fail,293
140
+ R35,judge-b,1,pass,fail,293
141
+ R35,judge-b,2,fail,fail,293
142
+ R36,judge-a,1,pass,fail,306
143
+ R36,judge-a,2,pass,fail,306
144
+ R36,judge-b,1,pass,fail,306
145
+ R36,judge-b,2,pass,fail,306
146
+ R37,judge-a,1,pass,fail,319
147
+ R37,judge-a,2,pass,fail,319
148
+ R37,judge-b,1,pass,fail,319
149
+ R37,judge-b,2,pass,fail,319
150
+ R38,judge-a,1,fail,fail,44
151
+ R38,judge-a,2,fail,fail,44
152
+ R38,judge-b,1,pass,fail,44
153
+ R38,judge-b,2,pass,fail,44
154
+ R39,judge-a,1,fail,fail,56
155
+ R39,judge-a,2,fail,fail,56
156
+ R39,judge-b,1,fail,fail,56
157
+ R39,judge-b,2,fail,fail,56
158
+ R40,judge-a,1,fail,fail,68
159
+ R40,judge-a,2,fail,fail,68
160
+ R40,judge-b,1,fail,fail,68
161
+ R40,judge-b,2,fail,fail,68
162
+ R41,judge-a,1,pass,,163
163
+ R41,judge-a,2,pass,,163
164
+ R41,judge-b,1,pass,,163
165
+ R41,judge-b,2,pass,,163
166
+ R42,judge-a,1,pass,,216
167
+ R42,judge-a,2,pass,,216
168
+ R42,judge-b,1,pass,,216
169
+ R42,judge-b,2,pass,,216
170
+ R43,judge-a,1,pass,,119
171
+ R43,judge-a,2,pass,,119
172
+ R43,judge-b,1,pass,,119
173
+ R43,judge-b,2,pass,,119
174
+ R44,judge-a,1,fail,,52
175
+ R44,judge-a,2,fail,,52
176
+ R44,judge-b,1,fail,,52
177
+ R44,judge-b,2,fail,,52
178
+ R45,judge-a,1,pass,,225
179
+ R45,judge-a,2,pass,,225
180
+ R45,judge-b,1,pass,,225
181
+ R45,judge-b,2,pass,,225
182
+ R46,judge-a,1,pass,,128
183
+ R46,judge-a,2,pass,,128
184
+ R46,judge-b,1,pass,,128
185
+ R46,judge-b,2,pass,,128
186
+ R47,judge-a,1,pass,,181
187
+ R47,judge-a,2,pass,,181
188
+ R47,judge-b,1,pass,,181
189
+ R47,judge-b,2,pass,,181
190
+ R48,judge-a,1,pass,,234
191
+ R48,judge-a,2,pass,,234
192
+ R48,judge-b,1,pass,,234
193
+ R48,judge-b,2,fail,,234
194
+ R49,judge-a,1,pass,,137
195
+ R49,judge-a,2,pass,,137
196
+ R49,judge-b,1,pass,,137
197
+ R49,judge-b,2,pass,,137
198
+ R50,judge-a,1,pass,,190
199
+ R50,judge-a,2,pass,,190
200
+ R50,judge-b,1,pass,,190
201
+ R50,judge-b,2,pass,,190
202
+ R51,judge-a,1,pass,,93
203
+ R51,judge-a,2,pass,,93
204
+ R51,judge-b,1,pass,,93
205
+ R51,judge-b,2,pass,,93
206
+ R52,judge-a,1,pass,,146
207
+ R52,judge-a,2,pass,,146
208
+ R52,judge-b,1,pass,,146
209
+ R52,judge-b,2,fail,,146
210
+ R53,judge-a,1,pass,,199
211
+ R53,judge-a,2,pass,,199
212
+ R53,judge-b,1,pass,,199
213
+ R53,judge-b,2,pass,,199
214
+ R54,judge-a,1,pass,,102
215
+ R54,judge-a,2,pass,,102
216
+ R54,judge-b,1,pass,,102
217
+ R54,judge-b,2,pass,,102
218
+ R55,judge-a,1,pass,,155
219
+ R55,judge-a,2,pass,,155
220
+ R55,judge-b,1,pass,,155
221
+ R55,judge-b,2,pass,,155
222
+ R56,judge-a,1,pass,,208
223
+ R56,judge-a,2,pass,,208
224
+ R56,judge-b,1,pass,,208
225
+ R56,judge-b,2,pass,,208
226
+ R57,judge-a,1,pass,,111
227
+ R57,judge-a,2,pass,,111
228
+ R57,judge-b,1,pass,,111
229
+ R57,judge-b,2,pass,,111
230
+ R58,judge-a,1,pass,,164
231
+ R58,judge-a,2,pass,,164
232
+ R58,judge-b,1,pass,,164
233
+ R58,judge-b,2,pass,,164
234
+ R59,judge-a,1,fail,,61
235
+ R59,judge-a,2,fail,,61
236
+ R59,judge-b,1,fail,,61
237
+ R59,judge-b,2,fail,,61
238
+ R60,judge-a,1,pass,,120
239
+ R60,judge-a,2,pass,,120
240
+ R60,judge-b,1,pass,,120
241
+ R60,judge-b,2,pass,,120
242
+ R61,judge-a,1,pass,,173
243
+ R61,judge-a,2,pass,,173
244
+ R61,judge-b,1,pass,,173
245
+ R61,judge-b,2,fail,,173
246
+ R62,judge-a,1,pass,,226
247
+ R62,judge-a,2,pass,,226
248
+ R62,judge-b,1,pass,,226
249
+ R62,judge-b,2,pass,,226
250
+ R63,judge-a,1,pass,,129
251
+ R63,judge-a,2,pass,,129
252
+ R63,judge-b,1,pass,,129
253
+ R63,judge-b,2,pass,,129
254
+ R64,judge-a,1,pass,,182
255
+ R64,judge-a,2,pass,,182
256
+ R64,judge-b,1,pass,,182
257
+ R64,judge-b,2,pass,,182
258
+ R65,judge-a,1,pass,,235
259
+ R65,judge-a,2,pass,,235
260
+ R65,judge-b,1,pass,,235
261
+ R65,judge-b,2,pass,,235
262
+ R66,judge-a,1,fail,,70
263
+ R66,judge-a,2,fail,,70
264
+ R66,judge-b,1,pass,,70
265
+ R66,judge-b,2,fail,,70
266
+ R67,judge-a,1,pass,,191
267
+ R67,judge-a,2,pass,,191
268
+ R67,judge-b,1,pass,,191
269
+ R67,judge-b,2,pass,,191
270
+ R68,judge-a,1,pass,,94
271
+ R68,judge-a,2,pass,,94
272
+ R68,judge-b,1,pass,,94
273
+ R68,judge-b,2,pass,,94
274
+ R69,judge-a,1,pass,,147
275
+ R69,judge-a,2,pass,,147
276
+ R69,judge-b,1,pass,,147
277
+ R69,judge-b,2,pass,,147
278
+ R70,judge-a,1,pass,,200
279
+ R70,judge-a,2,fail,,200
280
+ R70,judge-b,1,pass,,200
281
+ R70,judge-b,2,pass,,200
282
+ R71,judge-a,1,pass,,58
283
+ R71,judge-a,2,pass,,58
284
+ R71,judge-b,1,fail,,58
285
+ R71,judge-b,2,fail,,58
286
+ R72,judge-a,1,pass,,156
287
+ R72,judge-a,2,pass,,156
288
+ R72,judge-b,1,pass,,156
289
+ R72,judge-b,2,pass,,156
290
+ R73,judge-a,1,pass,,209
291
+ R73,judge-a,2,pass,,209
292
+ R73,judge-b,1,pass,,209
293
+ R73,judge-b,2,fail,,209
294
+ R74,judge-a,1,pass,,112
295
+ R74,judge-a,2,pass,,112
296
+ R74,judge-b,1,pass,,112
297
+ R74,judge-b,2,pass,,112
298
+ R75,judge-a,1,pass,,165
299
+ R75,judge-a,2,pass,,165
300
+ R75,judge-b,1,pass,,165
301
+ R75,judge-b,2,pass,,165
302
+ R76,judge-a,1,pass,,218
303
+ R76,judge-a,2,pass,,218
304
+ R76,judge-b,1,pass,,218
305
+ R76,judge-b,2,pass,,218
306
+ R77,judge-a,1,pass,,66
307
+ R77,judge-a,2,pass,,66
308
+ R77,judge-b,1,fail,,66
309
+ R77,judge-b,2,fail,,66
310
+ R78,judge-a,1,pass,,174
311
+ R78,judge-a,2,pass,,174
312
+ R78,judge-b,1,pass,,174
313
+ R78,judge-b,2,pass,,174
314
+ R79,judge-a,1,pass,,227
315
+ R79,judge-a,2,pass,,227
316
+ R79,judge-b,1,pass,,227
317
+ R79,judge-b,2,fail,,227
318
+ R80,judge-a,1,pass,,130
319
+ R80,judge-a,2,pass,,130
320
+ R80,judge-b,1,pass,,130
321
+ R80,judge-b,2,pass,,130
@@ -0,0 +1,28 @@
1
+ # Reply-drafter judge — notes for the release gate
2
+
3
+ **Team:** Customer Support Tooling, Larkspur Telecom (fictional)
4
+ **Feature:** the reply drafter suggests an answer to each incoming support ticket; agents edit and send.
5
+
6
+ ## What we did
7
+
8
+ - Sampled 80 drafted replies (R01–R80) from last week's tickets.
9
+ - Two LLM judges graded every reply pass/fail against one rubric: "Is this a good reply the agent
10
+ could send as-is?" Each judge graded each reply twice (trial 1 and 2), same prompt, same settings.
11
+ - `judge-a` is the larger model.
12
+ - `judge-b` is the cheaper model, about a fifth of the cost per call.
13
+ - Our senior support lead, Maren Holt, graded R01–R40 by hand against the refund and contract
14
+ policy. She did not see the judges' grades.
15
+ - `length` is the reply's word count.
16
+
17
+ All of it is in `judgements.csv`.
18
+
19
+ ## What we want to decide
20
+
21
+ From next sprint, every prompt change to the reply drafter ships only if **`judge-b` passes at
22
+ least 85% of a fresh 80-reply sample**. `judge-b`, because it is cheaper; `judge-a` stays as a
23
+ spot check.
24
+
25
+ ## Why we think it's fine
26
+
27
+ Tomás (ML engineer): "The two judges agree on 91% of replies, so the grading is reliable. Both
28
+ pass about 89% today, so we're comfortably over the 85% bar."
@@ -0,0 +1,101 @@
1
+ item,judge,trial,winner,position,length,other_length
2
+ E01,grader-1,1,v2,A,191,149
3
+ E01,grader-1,2,v1,A,149,191
4
+ E02,grader-1,1,v2,B,152,178
5
+ E02,grader-1,2,v1,B,178,152
6
+ E03,grader-1,1,v2,A,193,137
7
+ E03,grader-1,2,v2,A,193,137
8
+ E04,grader-1,1,v1,A,166,154
9
+ E04,grader-1,2,v1,A,166,154
10
+ E05,grader-1,1,v1,A,125,195
11
+ E05,grader-1,2,v1,A,125,195
12
+ E06,grader-1,1,v2,B,156,154
13
+ E06,grader-1,2,v2,A,156,154
14
+ E07,grader-1,1,v1,B,183,197
15
+ E07,grader-1,2,tie,,,
16
+ E08,grader-1,1,v1,A,142,158
17
+ E08,grader-1,2,v1,B,142,158
18
+ E09,grader-1,1,v1,A,171,199
19
+ E09,grader-1,2,v2,A,199,171
20
+ E10,grader-1,1,v1,A,130,160
21
+ E10,grader-1,2,v2,A,160,130
22
+ E11,grader-1,1,v1,A,159,201
23
+ E11,grader-1,2,v2,A,201,159
24
+ E12,grader-1,1,v2,B,162,188
25
+ E12,grader-1,2,v2,B,162,188
26
+ E13,grader-1,1,v2,A,203,147
27
+ E13,grader-1,2,v1,B,147,203
28
+ E14,grader-1,1,v1,A,176,164
29
+ E14,grader-1,2,v1,A,176,164
30
+ E15,grader-1,1,v2,A,205,135
31
+ E15,grader-1,2,v1,A,135,205
32
+ E16,grader-1,1,v1,A,164,166
33
+ E16,grader-1,2,v2,A,166,164
34
+ E17,grader-1,1,v2,A,207,123
35
+ E17,grader-1,2,v2,A,207,123
36
+ E18,grader-1,1,v2,A,168,152
37
+ E18,grader-1,2,v1,B,152,168
38
+ E19,grader-1,1,tie,,,
39
+ E19,grader-1,2,v2,A,209,181
40
+ E20,grader-1,1,v1,A,140,170
41
+ E20,grader-1,2,v2,A,170,140
42
+ E21,grader-1,1,v2,B,211,169
43
+ E21,grader-1,2,v1,A,169,211
44
+ E22,grader-1,1,v1,A,128,172
45
+ E22,grader-1,2,v2,A,172,128
46
+ E23,grader-1,1,v2,B,213,157
47
+ E23,grader-1,2,v1,B,157,213
48
+ E24,grader-1,1,v1,B,186,174
49
+ E24,grader-1,2,v2,A,174,186
50
+ E25,grader-1,1,v1,A,145,215
51
+ E25,grader-1,2,v2,A,215,145
52
+ E26,grader-1,1,v1,A,174,176
53
+ E26,grader-1,2,v2,A,176,174
54
+ E27,grader-1,1,v2,B,217,133
55
+ E27,grader-1,2,v2,A,217,133
56
+ E28,grader-1,1,v2,A,178,162
57
+ E28,grader-1,2,v2,A,178,162
58
+ E29,grader-1,1,v2,A,219,121
59
+ E29,grader-1,2,v1,B,121,219
60
+ E30,grader-1,1,v1,B,150,180
61
+ E30,grader-1,2,v1,B,150,180
62
+ E31,grader-1,1,v1,A,179,221
63
+ E31,grader-1,2,v2,A,221,179
64
+ E32,grader-1,1,v1,B,138,182
65
+ E32,grader-1,2,v1,A,138,182
66
+ E33,grader-1,1,v1,A,167,223
67
+ E33,grader-1,2,tie,,,
68
+ E34,grader-1,1,v2,A,184,126
69
+ E34,grader-1,2,v1,B,126,184
70
+ E35,grader-1,1,v2,A,225,155
71
+ E35,grader-1,2,v2,A,225,155
72
+ E36,grader-1,1,v2,A,186,184
73
+ E36,grader-1,2,v2,A,186,184
74
+ E37,grader-1,1,v2,A,227,143
75
+ E37,grader-1,2,v2,B,227,143
76
+ E38,grader-1,1,v2,A,188,172
77
+ E38,grader-1,2,v1,A,172,188
78
+ E39,grader-1,1,v2,A,229,131
79
+ E39,grader-1,2,v2,A,229,131
80
+ E40,grader-1,1,v1,A,160,190
81
+ E40,grader-1,2,v1,B,160,190
82
+ E41,grader-1,1,v1,A,189,151
83
+ E41,grader-1,2,v2,B,151,189
84
+ E42,grader-1,1,v1,A,148,192
85
+ E42,grader-1,2,v1,B,148,192
86
+ E43,grader-1,1,v2,A,153,177
87
+ E43,grader-1,2,v2,B,153,177
88
+ E44,grader-1,1,v2,A,194,136
89
+ E44,grader-1,2,v2,B,194,136
90
+ E45,grader-1,1,tie,,,
91
+ E45,grader-1,2,v1,B,165,155
92
+ E46,grader-1,1,v1,B,124,196
93
+ E46,grader-1,2,v2,A,196,124
94
+ E47,grader-1,1,v1,B,153,157
95
+ E47,grader-1,2,v1,B,153,157
96
+ E48,grader-1,1,v2,A,198,182
97
+ E48,grader-1,2,v2,A,198,182
98
+ E49,grader-1,1,v2,A,159,141
99
+ E49,grader-1,2,v2,A,159,141
100
+ E50,grader-1,1,v2,A,200,170
101
+ E50,grader-1,2,v2,A,200,170
@@ -0,0 +1,16 @@
1
+ # Onboarding email prompt — v1 vs v2
2
+
3
+ **Team:** Growth, Quillmark (fictional)
4
+
5
+ - 50 sign-up profiles (E01–E50). For each, prompt v1 and prompt v2 each wrote a welcome email.
6
+ - One LLM grader (`grader-1`) saw both emails for a profile and picked the better one, or `tie`.
7
+ It ran twice per profile (trial 1 and 2). Which email was shown as A was randomised on every run.
8
+ - `winner` is the prompt whose email the grader picked. `position` is where that email was shown
9
+ (A first, B second). `length` is the picked email's word count; `other_length` is the other's.
10
+
11
+ Data: `pairwise.csv`.
12
+
13
+ ## Result so far
14
+
15
+ v2 won 53 comparisons, v1 won 43, 4 ties. Plan: switch production to v2 this sprint and use the
16
+ same grader setup for every future prompt change.