skilldrop-cli 1.2.0 → 1.4.0

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 (208) hide show
  1. package/README.md +5 -5
  2. package/catalogue.json +4 -4
  3. package/model-routing.json +62 -70
  4. package/package.json +1 -1
  5. package/packs/ai-engineering/loops/adopt/LOOP.md +120 -0
  6. package/packs/ai-engineering/loops/adopt/evals/eval_queries.json +10 -0
  7. package/packs/ai-engineering/loops/adopt/evals/evals.json +69 -0
  8. package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/ai-ideas.md +15 -0
  9. package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/org-context.md +27 -0
  10. package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/staff-survey.csv +11 -0
  11. package/packs/ai-engineering/loops/adopt/evals/files/adopt-sponsor-slice-blocked-by-client-data/ai-ideas.md +13 -0
  12. package/packs/ai-engineering/loops/adopt/evals/files/adopt-sponsor-slice-blocked-by-client-data/firm-context.md +23 -0
  13. package/packs/ai-engineering/loops/adopt/loop.json +53 -0
  14. package/packs/ai-engineering/loops/ship-agent/LOOP.md +128 -0
  15. package/packs/ai-engineering/loops/ship-agent/evals/eval_queries.json +10 -0
  16. package/packs/ai-engineering/loops/ship-agent/evals/evals.json +70 -0
  17. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-auto-reply-exfil-open/agent-brief.md +33 -0
  18. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-changelog-config-reopens-path/agent-brief.md +33 -0
  19. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-changelog-config-reopens-path/claude-settings.json +25 -0
  20. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-changelog-config-reopens-path/sample-merged-prs.md +30 -0
  21. package/packs/ai-engineering/loops/ship-agent/loop.json +53 -0
  22. package/packs/ai-engineering/skills/agent-adoption-stage/SKILL.md +0 -1
  23. package/packs/ai-engineering/skills/agent-adoption-stage/manifest.json +3 -4
  24. package/packs/ai-engineering/skills/ai-adoption-rollout/SKILL.md +0 -1
  25. package/packs/ai-engineering/skills/ai-adoption-rollout/manifest.json +3 -4
  26. package/packs/ai-engineering/skills/ai-readiness-assessment/SKILL.md +0 -1
  27. package/packs/ai-engineering/skills/ai-readiness-assessment/manifest.json +1 -2
  28. package/packs/ai-engineering/skills/ai-use-case-triage/manifest.json +3 -3
  29. package/packs/ai-engineering/skills/judge-audit/SKILL.md +1 -2
  30. package/packs/ai-engineering/skills/judge-audit/manifest.json +1 -2
  31. package/packs/ai-engineering/skills/llm-eval-harness/SKILL.md +1 -2
  32. package/packs/ai-engineering/skills/llm-eval-harness/manifest.json +3 -3
  33. package/packs/api-builder/skills/tool-use-schema-writer/manifest.json +2 -2
  34. package/packs/career/loops/apply/evals/evals.json +28 -0
  35. package/packs/career/loops/apply/evals/files/apply-candidate-decided-full-run/application-form.md +10 -0
  36. package/packs/career/loops/apply/evals/files/apply-candidate-decided-full-run/job-posting.md +33 -0
  37. package/packs/career/loops/apply/evals/files/apply-candidate-decided-full-run/resume.md +34 -0
  38. package/packs/career/loops/apply/evals/files/apply-fit-gate-hard-requirement/cv.md +27 -0
  39. package/packs/career/loops/apply/evals/files/apply-fit-gate-hard-requirement/warehouse-supervisor.md +30 -0
  40. package/packs/career/skills/application-form-answers/manifest.json +3 -3
  41. package/packs/career/skills/cover-letter/manifest.json +3 -3
  42. package/packs/career/skills/resume-tailor/manifest.json +3 -3
  43. package/packs/converters/skills/md-to-docx/manifest.json +3 -3
  44. package/packs/core/loops/ship-a-draft/evals/evals.json +28 -0
  45. package/packs/core/loops/ship-a-draft/evals/files/ship-a-draft-adr-from-thread/slack-thread.txt +47 -0
  46. package/packs/core/loops/ship-a-draft/evals/files/ship-a-draft-announcement-unsettled/ticket-PRD-412.md +44 -0
  47. package/packs/core/skills/output-hygiene/manifest.json +3 -3
  48. package/packs/data-analytics/loops/measure/evals/evals.json +30 -0
  49. package/packs/data-analytics/loops/measure/evals/files/measure-active-customers-dispute/schema.md +43 -0
  50. package/packs/data-analytics/loops/measure/evals/files/measure-active-customers-dispute/sql/finance_active_customers.sql +7 -0
  51. package/packs/data-analytics/loops/measure/evals/files/measure-active-customers-dispute/sql/growth_active_customers.sql +9 -0
  52. package/packs/data-analytics/loops/measure/evals/files/measure-active-customers-dispute/thread.md +30 -0
  53. package/packs/data-analytics/loops/measure/evals/files/measure-retention-dashboard/request.md +34 -0
  54. package/packs/data-analytics/loops/measure/evals/files/measure-retention-dashboard/schema.md +58 -0
  55. package/packs/data-analytics/loops/measure/evals/files/measure-retention-dashboard/sql/active_subscribers.sql +17 -0
  56. package/packs/data-analytics/loops/measure/evals/files/measure-retention-dashboard/sql/net_revenue_by_plan.sql +15 -0
  57. package/packs/data-analytics/loops/measure/evals/files/measure-retention-dashboard/sql/weekly_churn_rate.sql +34 -0
  58. package/packs/data-analytics/skills/dashboard-spec/SKILL.md +0 -1
  59. package/packs/data-analytics/skills/dashboard-spec/manifest.json +1 -2
  60. package/packs/design/skills/slide-outliner/manifest.json +2 -2
  61. package/packs/dev-team/loops/build/evals/evals.json +28 -0
  62. package/packs/dev-team/loops/build/evals/files/build-promo-codes/.github/workflows/ci.yml.fixture +19 -0
  63. package/packs/dev-team/loops/build/evals/files/build-promo-codes/cartcalc/__init__.py +4 -0
  64. package/packs/dev-team/loops/build/evals/files/build-promo-codes/cartcalc/pricing.py +47 -0
  65. package/packs/dev-team/loops/build/evals/files/build-promo-codes/pyproject.toml.fixture +9 -0
  66. package/packs/dev-team/loops/build/evals/files/build-promo-codes/story.md +61 -0
  67. package/packs/dev-team/loops/build/evals/files/build-promo-codes/tests/__init__.py +0 -0
  68. package/packs/dev-team/loops/build/evals/files/build-promo-codes/tests/test_pricing.py +49 -0
  69. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/.github/workflows/ci.yml.fixture +19 -0
  70. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/bug-report.md +25 -0
  71. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/pr-description.md +42 -0
  72. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/pyproject.toml.fixture +9 -0
  73. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/ratelimit/__init__.py +4 -0
  74. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/ratelimit/bucket.py +49 -0
  75. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/tests/__init__.py +0 -0
  76. package/packs/dev-team/loops/build/evals/files/build-rate-limiter-not-ready/tests/test_bucket.py +63 -0
  77. package/packs/dev-team/loops/modernize/evals/evals.json +30 -0
  78. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/.github/workflows/ci.yml.fixture +11 -0
  79. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/README.md +17 -0
  80. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/docs/adr/0004-late-fee-calculation.md +25 -0
  81. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/legacy/feecalc.py +74 -0
  82. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/samples/accounts_2026-10.txt +10 -0
  83. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/samples/accounts_edge.txt +11 -0
  84. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-batch-port/tests/test_feecalc_smoke.py +21 -0
  85. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/.github/workflows/ci.yml.fixture +11 -0
  86. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/PR-412.md +24 -0
  87. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/README.md +17 -0
  88. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/docs/adr/0004-late-fee-calculation.md +25 -0
  89. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/hartwell_fees/__init__.py +1 -0
  90. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/hartwell_fees/cli.py +33 -0
  91. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/hartwell_fees/extract.py +33 -0
  92. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/hartwell_fees/rules.py +39 -0
  93. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/legacy/feecalc.py +74 -0
  94. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/samples/accounts_2026-10.txt +10 -0
  95. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/samples/accounts_edge.txt +11 -0
  96. package/packs/dev-team/loops/modernize/evals/files/modernize-late-fee-rewrite-not-equivalent/tests/test_feecalc_smoke.py +21 -0
  97. package/packs/dev-team/loops/release/evals/eval_queries.json +10 -0
  98. package/packs/dev-team/loops/release/evals/evals.json +34 -0
  99. package/packs/dev-team/loops/release/evals/files/release-irreversible-tomorrow/0061_switch_to_haldrin_tokens.sql +22 -0
  100. package/packs/dev-team/loops/release/evals/files/release-irreversible-tomorrow/eng-notes.md +40 -0
  101. package/packs/dev-team/loops/release/evals/files/release-irreversible-tomorrow/merged-prs.md +13 -0
  102. package/packs/dev-team/loops/release/evals/files/release-saved-searches/merged-prs.md +13 -0
  103. package/packs/dev-team/loops/release/evals/files/release-saved-searches/readiness-evidence.md +27 -0
  104. package/packs/dev-team/loops/release/evals/files/release-saved-searches/traffic-baseline.md +23 -0
  105. package/packs/dev-team/skills/feature-implement-loop/manifest.json +2 -2
  106. package/packs/dev-team/skills/pr-description-writer/manifest.json +3 -3
  107. package/packs/dev-team/skills/pre-merge-review/manifest.json +2 -2
  108. package/packs/dev-team/skills/release-notes/manifest.json +2 -2
  109. package/packs/dev-team/skills/test-plan-generator/manifest.json +2 -2
  110. package/packs/experience-design/loops/clarify/LOOP.md +114 -0
  111. package/packs/experience-design/loops/clarify/evals/eval_queries.json +10 -0
  112. package/packs/experience-design/loops/clarify/evals/evals.json +68 -0
  113. package/packs/experience-design/loops/clarify/evals/files/clarify-garden-waste-no-complaint-data/form-fields.csv +12 -0
  114. package/packs/experience-design/loops/clarify/evals/files/clarify-garden-waste-no-complaint-data/garden-waste-page.md +29 -0
  115. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/backoffice-notes.md +14 -0
  116. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/calls-q3.csv +8 -0
  117. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/form-fields.csv +12 -0
  118. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/permit-page.md +27 -0
  119. package/packs/experience-design/loops/clarify/loop.json +35 -0
  120. package/packs/experience-design/skills/service-blueprint/manifest.json +3 -3
  121. package/packs/experience-design/skills/ux-writing/manifest.json +3 -3
  122. package/packs/grc/loops/comply/evals/evals.json +29 -0
  123. package/packs/grc/loops/comply/evals/files/comply-chat-vendor-launch/vendor-brief.md +72 -0
  124. package/packs/grc/loops/comply/evals/files/comply-loyalty-app-unowned-risks/launch-note.md +31 -0
  125. package/packs/grc/loops/comply/evals/files/comply-loyalty-app-unowned-risks/risk-register.csv +6 -0
  126. package/packs/infra-as-code/loops/provision/LOOP.md +128 -0
  127. package/packs/infra-as-code/loops/provision/evals/eval_queries.json +9 -0
  128. package/packs/infra-as-code/loops/provision/evals/evals.json +67 -0
  129. package/packs/infra-as-code/loops/provision/evals/files/provision-rds-no-plan-yet/.terraform.lock.hcl.fixture +24 -0
  130. package/packs/infra-as-code/loops/provision/evals/files/provision-rds-no-plan-yet/network.md +36 -0
  131. package/packs/infra-as-code/loops/provision/evals/files/provision-replica-plan-replaces-primary/main.tf +74 -0
  132. package/packs/infra-as-code/loops/provision/evals/files/provision-replica-plan-replaces-primary/plan.json +901 -0
  133. package/packs/infra-as-code/loops/provision/evals/files/provision-replica-plan-replaces-primary/variables.tf +47 -0
  134. package/packs/infra-as-code/loops/provision/loop.json +41 -0
  135. package/packs/infra-as-code/skills/terraform-module/manifest.json +3 -3
  136. package/packs/product-manager/loops/discover/evals/evals.json +28 -0
  137. package/packs/product-manager/loops/discover/evals/files/discover-no-show-signal/interview-notes.md +63 -0
  138. package/packs/product-manager/loops/discover/evals/files/discover-no-show-signal/support-tickets.csv +13 -0
  139. package/packs/product-manager/loops/discover/evals/files/discover-vp-loyalty-no-evidence/vp-message.txt +13 -0
  140. package/packs/product-manager/skills/user-journey-map/manifest.json +2 -2
  141. package/packs/research/loops/research/evals/evals.json +28 -0
  142. package/packs/research/loops/research/evals/files/research-ticket-spike-confounded/sources/t1-ticket-volume.md +15 -0
  143. package/packs/research/loops/research/evals/files/research-ticket-spike-confounded/sources/t2-release-notes-4-2.md +11 -0
  144. package/packs/research/loops/research/evals/files/research-ticket-spike-confounded/sources/t3-billing-migration.md +12 -0
  145. package/packs/research/loops/research/evals/files/research-ticket-spike-confounded/sources/t4-agent-poll.md +11 -0
  146. package/packs/research/loops/research/evals/files/research-ticket-spike-confounded/sources/t5-app-store-reviews.md +12 -0
  147. package/packs/research/loops/research/evals/files/research-trial-conversion-drop/sources/s1-analytics-export.md +29 -0
  148. package/packs/research/loops/research/evals/files/research-trial-conversion-drop/sources/s2-email-delivery-report.md +25 -0
  149. package/packs/research/loops/research/evals/files/research-trial-conversion-drop/sources/s3-pricing-changelog.md +9 -0
  150. package/packs/research/loops/research/evals/files/research-trial-conversion-drop/sources/s4-trial-interview-notes.md +21 -0
  151. package/packs/research/loops/research/evals/files/research-trial-conversion-drop/sources/s5-competitor-note.md +9 -0
  152. package/packs/research/loops/research/evals/files/research-trial-conversion-drop/sources/s6-weekly-growth-recap.md +7 -0
  153. package/packs/research/skills/research-plan/manifest.json +3 -3
  154. package/packs/research/skills/source-synthesis/manifest.json +3 -3
  155. package/packs/skill-engineering/skills/skill-author/manifest.json +3 -3
  156. package/packs/solution-architect/loops/design/evals/evals.json +28 -0
  157. package/packs/solution-architect/loops/design/evals/files/design-bulk-export/adr/0001-postgres-system-of-record.md +23 -0
  158. package/packs/solution-architect/loops/design/evals/files/design-bulk-export/adr/0002-background-work-via-job-queue.md +23 -0
  159. package/packs/solution-architect/loops/design/evals/files/design-bulk-export/adr/0003-tenant-isolation-row-level.md +25 -0
  160. package/packs/solution-architect/loops/design/evals/files/design-bulk-export/prd-bulk-export.md +50 -0
  161. package/packs/solution-architect/loops/design/evals/files/design-draft-prd-webhooks/adr/0002-background-work-via-job-queue.md +23 -0
  162. package/packs/solution-architect/loops/design/evals/files/design-draft-prd-webhooks/adr/0004-new-stateful-infra-needs-platform-signoff.md +22 -0
  163. package/packs/solution-architect/loops/design/evals/files/design-draft-prd-webhooks/prd-partner-webhooks.md +36 -0
  164. package/packs/solution-architect/skills/api-contract-draft/manifest.json +3 -3
  165. package/packs/solution-architect/skills/architecture-diagrams/manifest.json +3 -3
  166. package/packs/solution-architect/skills/design-doc/manifest.json +2 -2
  167. package/packs/solution-architect/skills/figma-diagrams/manifest.json +3 -3
  168. package/packs/sre-oncall/loops/operate/evals/evals.json +28 -0
  169. package/packs/sre-oncall/loops/operate/evals/files/operate-export-service-first-outage/alerts.log +22 -0
  170. package/packs/sre-oncall/loops/operate/evals/files/operate-export-service-first-outage/incident-chat.txt +27 -0
  171. package/packs/sre-oncall/loops/operate/evals/files/operate-export-service-first-outage/service-notes.md +46 -0
  172. package/packs/sre-oncall/loops/operate/evals/files/operate-incident-still-open/oncall-log.txt +17 -0
  173. package/packs/sre-oncall/loops/operate/evals/files/operate-incident-still-open/runbook-webhooks.md +38 -0
  174. package/packs/sre-oncall/skills/cloud-cost-review/SKILL.md +0 -1
  175. package/packs/sre-oncall/skills/cloud-cost-review/manifest.json +1 -2
  176. package/packs/sre-oncall/skills/delivery-metrics-report/SKILL.md +0 -1
  177. package/packs/sre-oncall/skills/delivery-metrics-report/manifest.json +1 -2
  178. package/packs/sre-oncall/skills/incident-comms/manifest.json +2 -2
  179. package/packs/sre-oncall/skills/postmortem-generator/manifest.json +2 -2
  180. package/packs/stakeholder-comms/skills/decision-log/manifest.json +2 -2
  181. package/packs/trackers/skills/team-status-report/manifest.json +3 -3
  182. package/packs/ai-engineering/skills/ai-usage-report/SKILL.md +0 -111
  183. package/packs/ai-engineering/skills/ai-usage-report/evals/eval_queries.json +0 -30
  184. package/packs/ai-engineering/skills/ai-usage-report/evals/evals.json +0 -46
  185. package/packs/ai-engineering/skills/ai-usage-report/evals/files/1/northwind-ai-events.csv +0 -4213
  186. package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/draftwell-events.csv +0 -249
  187. package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/export-note.md +0 -9
  188. package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/published-assets.csv +0 -44
  189. package/packs/ai-engineering/skills/ai-usage-report/evals/files/2/team-roster.md +0 -10
  190. package/packs/ai-engineering/skills/ai-usage-report/examples/weekly-engineering-team.md +0 -133
  191. package/packs/ai-engineering/skills/ai-usage-report/manifest.json +0 -12
  192. package/packs/ai-engineering/skills/ai-usage-report/scripts/build_report.py +0 -453
  193. package/packs/ai-engineering/skills/ai-usage-report/templates/report-per-user.md +0 -42
  194. package/packs/ai-engineering/skills/ai-usage-report/templates/report-team-rollup.md +0 -49
  195. package/packs/ai-engineering/skills/ai-usage-report/templates/usage-event-schema.md +0 -76
  196. package/packs/product-manager/skills/lean-canvas/SKILL.md +0 -162
  197. package/packs/product-manager/skills/lean-canvas/evals/eval_queries.json +0 -42
  198. package/packs/product-manager/skills/lean-canvas/evals/evals.json +0 -82
  199. package/packs/product-manager/skills/lean-canvas/evals/files/1/pawpass-notes.md +0 -54
  200. package/packs/product-manager/skills/lean-canvas/evals/files/3/lunchloop-pitch.md +0 -30
  201. package/packs/product-manager/skills/lean-canvas/evals/files/4/clubkit-notes.md +0 -44
  202. package/packs/product-manager/skills/lean-canvas/evals/files/5/cost-model.csv +0 -5
  203. package/packs/product-manager/skills/lean-canvas/evals/files/5/proposal.md +0 -40
  204. package/packs/product-manager/skills/lean-canvas/evals/files/5/stakeholder-emails.txt +0 -18
  205. package/packs/product-manager/skills/lean-canvas/examples/bike-repair.md +0 -72
  206. package/packs/product-manager/skills/lean-canvas/manifest.json +0 -34
  207. package/packs/product-manager/skills/lean-canvas/reference.md +0 -102
  208. package/packs/product-manager/skills/lean-canvas/scripts/unit_economics.py +0 -211
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-adoption-stage",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Place an engineering team on the agentic-coding adoption ladder (0 gated → 4 intent-steered) using observables like agents-in-flight per engineer and who writes the code, name the one bottleneck gating the next step, prescribe the single next unlock, and state which current guardrail must change. Use when a leader asks \"how far along are we with coding agents\", \"why has our AI adoption plateaued\", or \"what do we do next to get more out of this\". Do NOT use to assess organisational preconditions like data, policy, and culture (that's ai-readiness-assessment) or to plan a tool's human rollout (that's ai-adoption-rollout).",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -18,7 +18,6 @@
18
18
  "agents-md-generator",
19
19
  "ai-adoption-rollout",
20
20
  "ai-readiness-assessment",
21
- "ai-usage-report",
22
21
  "ai-use-case-triage",
23
22
  "devils-advocate",
24
23
  "pre-merge-review",
@@ -33,7 +32,7 @@
33
32
  "bottleneck"
34
33
  ],
35
34
  "model": {
36
- "tier": "standard",
37
- "rationale": "Places a team on a fixed 5-stage ladder from observables and routes one unlock. Bounded diagnosis against a rubric; escalate via ambiguous-input when the observables are contradictory or the distribution is heavily skewed."
35
+ "tier": "light",
36
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 79% and 86% of checks in two tier trials, against standard's 82% and heavy's 79% and 79%, within 5 points of the best both times."
38
37
  }
39
38
  }
@@ -47,7 +47,6 @@ Rollouts fail quietly. Licences get assigned, a launch email goes out, usage spi
47
47
  - ❌ Choosing which use case to roll out — that's [`ai-use-case-triage`](../ai-use-case-triage/SKILL.md).
48
48
  - ❌ Deciding whether the organisation is ready at all — that's [`ai-readiness-assessment`](../ai-readiness-assessment/SKILL.md).
49
49
  - ❌ Writing the rules for what may be put into the tool — that's [`ai-usage-policy`](../ai-usage-policy/SKILL.md).
50
- - ❌ Reporting on adoption that already happened — that's `ai-usage-report`.
51
50
 
52
51
  ## Anti-patterns to avoid
53
52
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-adoption-rollout",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Plan the human rollout of an AI tool or workflow to an organisation — sized cohorts, enablement per cohort, named champions, a comms plan that states what will not change, and an adoption gate every wave must pass before the next one opens. Use when a tool has been chosen and the question is how it reaches people without stalling or backlash. Do NOT use to phase a technical cutover (that's migration-plan) or to choose which use case to roll out (that's ai-use-case-triage).",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -14,7 +14,6 @@
14
14
  "related": [
15
15
  "ai-readiness-assessment",
16
16
  "ai-usage-policy",
17
- "ai-usage-report",
18
17
  "ai-use-case-triage",
19
18
  "migration-plan"
20
19
  ],
@@ -27,7 +26,7 @@
27
26
  "comms"
28
27
  ],
29
28
  "model": {
30
- "tier": "standard",
31
- "rationale": "Generates a phased people-rollout with gates and enablement from a stated tool and population. Structured planning against a fixed shape; escalate via ambiguous-input for large or politically contested rollouts."
29
+ "tier": "light",
30
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 79% and 71% of checks in two tier trials, against standard's 75% and heavy's 64% and 64%, within 5 points of the best both times."
32
31
  }
33
32
  }
@@ -61,7 +61,6 @@ Readiness assessments fail in one of two ways: a number with no evidence behind
61
61
  - ❌ Planning the rollout once you've decided to go — that's [`ai-adoption-rollout`](../ai-adoption-rollout/SKILL.md).
62
62
  - ❌ Writing the rules for what people may put into a tool — that's [`ai-usage-policy`](../ai-usage-policy/SKILL.md).
63
63
  - ❌ A market or competitive question ("should we enter this space?") — that's `strategy-analysis`.
64
- - ❌ Measuring adoption that has already happened — that's `ai-usage-report`.
65
64
  - ❌ **Assessing how far an engineering team's agent practice has actually got** — agents in flight, who writes the code, what still gets reviewed — that's [`agent-adoption-stage`](../agent-adoption-stage/SKILL.md). It's the orthogonal axis: this skill scores whether the *organisation* can adopt at all; that one scores how far the *practice* has got. A team can be governance-ready and stuck at stage 1, or running ten agents with no policy at all — run both when the answers disagree.
66
65
 
67
66
  ## Anti-patterns to avoid
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-readiness-assessment",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Score an organisation's or team's readiness to adopt AI tooling across six gating dimensions — data, tooling, skills, governance, process, and culture — with an evidence line per score and the blocking gaps ranked by what stops adoption first. Use when the user asks \"are we ready for AI\", wants an AI maturity or readiness baseline, or needs to know what to fix before rolling tools out. Do NOT use to pick which use cases to build (that's ai-use-case-triage) or to plan the rollout itself (that's ai-adoption-rollout).",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -15,7 +15,6 @@
15
15
  "agent-adoption-stage",
16
16
  "ai-adoption-rollout",
17
17
  "ai-usage-policy",
18
- "ai-usage-report",
19
18
  "ai-use-case-triage",
20
19
  "strategy-analysis"
21
20
  ],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-use-case-triage",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Turn a pile of candidate AI use cases into a ranked portfolio — each scored on value, feasibility, and risk with the weights shown, a recommended first slice that can prove or kill the thesis, and an explicit not-yet list with the condition that would promote each entry. Use when a team has more AI ideas than capacity and needs to choose, or asks \"where should we actually start with AI\". Do NOT use to assess whether the organisation is ready at all (that's ai-readiness-assessment) or to price a single decision (that's business-case).",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -28,7 +28,7 @@
28
28
  "pilot"
29
29
  ],
30
30
  "model": {
31
- "tier": "standard",
32
- "rationale": "Scores candidates on weighted axes and forces a rejection list. Structured comparison with stated weights; escalate via ambiguous-input when candidates are numerous or the value data is contested."
31
+ "tier": "light",
32
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 83% and 92% of checks in two tier trials, against standard's 81% and heavy's 85% and 92%, within 5 points of the best both times."
33
33
  }
34
34
  }
@@ -9,7 +9,7 @@ Decides whether a judge's scores are good enough for one named decision, from th
9
9
  themselves, and answers the question the user asked. A grader can match an expert well overall
10
10
  and still over-score the very variant it is being used to pick. This skill audits judgements that
11
11
  already exist; designing the eval set and grading plan is `llm-eval-harness`, generating eval
12
- cases for a skill is `eval-harness-generator`, and measuring AI tool usage is `ai-usage-report`.
12
+ cases for a skill is `eval-harness-generator`.
13
13
 
14
14
  ## How to respond
15
15
 
@@ -160,7 +160,6 @@ counts`, because a verdict without them is invented.
160
160
 
161
161
  - ❌ Designing the eval set, grading methods and pass bar for an LLM feature — `llm-eval-harness`
162
162
  - ❌ Generating eval cases for a skill's `evals/` folder — `eval-harness-generator`
163
- - ❌ Measuring how much teams use AI tools — `ai-usage-report`
164
163
  - ❌ Inter-rater reliability for humans only, with no model in the loop — the statistics transfer, but the bias checks here assume a model
165
164
 
166
165
  ## Anti-patterns to avoid
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "judge-audit",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Audit whether an LLM-as-judge, or a panel of judges, can be trusted for the decision its scores drive, before anyone acts on them — above all whether the judge errs differently on the variants being compared (prompt v1 vs v2, model A vs B, short vs long inputs), plus chance-corrected and weighted agreement with expert labels, precision and recall on a rare class, each run reported separately with the items that flipped, position and length bias, and confidence intervals, checked against the user's own gate or criterion and ending in a direct answer (ship or not, which judge to use). Use when the user asks \"can we trust our LLM judge\", \"is our grader reliable enough to gate releases\", \"the grader says v2 is better, can we ship it\", \"which is the cheapest judge we can switch to\", \"our two judges agree 90%, is that good\", \"can we turn on auto-remove\", \"check our judge for position bias\", or has a file of judge scores and wants to know whether to act on them.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -12,7 +12,6 @@
12
12
  "optional": []
13
13
  },
14
14
  "related": [
15
- "ai-usage-report",
16
15
  "eval-harness-generator",
17
16
  "llm-eval-harness"
18
17
  ],
@@ -5,7 +5,7 @@ description: Design an evaluation harness for an LLM-powered feature — a versi
5
5
 
6
6
  # llm-eval-harness
7
7
 
8
- Builds the measurement that turns "the new prompt feels better" into "the new prompt scores 0.91 vs 0.84 baseline, with zero regressions on the critical subset." Without it, every prompt or model change is a vibe with a deploy button. Provider-neutral by design — the harness shape is the same whether the feature runs on Claude, GPT, Gemini, or a local model; only the runner differs. Distinct from `ai-usage-report` (telemetry after the fact) and `success-metrics` (product outcomes) — this is the **dev-loop quality gate**.
8
+ Builds the measurement that turns "the new prompt feels better" into "the new prompt scores 0.91 vs 0.84 baseline, with zero regressions on the critical subset." Without it, every prompt or model change is a vibe with a deploy button. Provider-neutral by design — the harness shape is the same whether the feature runs on Claude, GPT, Gemini, or a local model; only the runner differs. Distinct from `success-metrics` (product outcomes) — this is the **dev-loop quality gate**.
9
9
 
10
10
  ## How to respond
11
11
 
@@ -64,7 +64,6 @@ Builds the measurement that turns "the new prompt feels better" into "the new pr
64
64
 
65
65
  ## When NOT to use this skill
66
66
 
67
- - ❌ Tabulating AI usage/adoption telemetry — that's `ai-usage-report`
68
67
  - ❌ Product-outcome metrics for a feature (adoption, handle time) — that's `success-metrics`
69
68
  - ❌ Picking which model/vendor to buy on price, terms or support — this measures quality on your task, which is one input to that decision
70
69
  - ❌ The provider-specific API mechanics (token counting, streaming, tool-call format) — consult the provider's own reference; this skill is the eval methodology
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "llm-eval-harness",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Design an evaluation harness for an LLM-powered feature — a versioned golden set (representative + adversarial + regression cases), the cheapest adequate grading method per case, a metric with a pre-set pass bar and regression gate, and a failure taxonomy that targets iteration. Use when the user is building or tuning an LLM feature (prompt, RAG, agent, classifier) and needs evals, a way to test prompt/model changes, or to stop shipping quality regressions on vibes.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": { "npm": [], "pip": [] },
7
7
  "env": { "required": [], "optional": [] },
8
- "related": ["ai-usage-report", "success-metrics"],
8
+ "related": ["success-metrics"],
9
9
  "tags": ["llm", "evals", "ai-engineering", "testing", "llm-as-judge", "regression-gate"],
10
- "model": { "tier": "standard", "rationale": "Methodology synthesis against a fixed decision tree and pitfall catalog. Grading-method and metric choices need judgment but are bounded; escalate via ambiguous-input on novel task types." }
10
+ "model": { "tier": "light", "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 71% and 71% of checks in two tier trials, against standard's 71% and heavy's 71% and 71%, within 5 points of the best both times." }
11
11
  }
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "tool-use-schema-writer",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Takes a function description (name, purpose, parameters) and writes a valid Anthropic tool_use JSON schema, with type annotations, required fields, and a description for each parameter. Adds a Python client.messages.create(tools=[...]) snippet only when asked. Use when wiring a Claude agent to a function or API, designing tools for a multi-agent system, or documenting an existing tool for agent consumption.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": { "npm": [], "pip": [] },
7
7
  "env": { "required": [], "optional": [] },
8
8
  "related": ["agent-loop-design", "subagent-design"],
9
9
  "tags": ["claude-api", "tool-use", "json-schema", "sdk", "agents"],
10
- "model": { "tier": "standard", "rationale": "Schema generation from a natural-language description — structured output task that fits standard tier." }
10
+ "model": { "tier": "light", "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 94% and 94% of checks in two tier trials, against standard's 96% and heavy's 97% and 97%, within 5 points of the best both times." }
11
11
  }
@@ -22,6 +22,34 @@
22
22
  "Stops at G6.1 and asks the candidate to confirm every line is true; does not submit or send anything",
23
23
  "Lists what the posting asks for that neither document claims"
24
24
  ]
25
+ },
26
+ {
27
+ "id": "apply-candidate-decided-full-run",
28
+ "held_out": "2026-11-04",
29
+ "prompt": "Help me apply for this CSM job at Quindle. The posting is job-posting.md, my CV is resume.md and the form questions are in application-form.md. I've already made up my mind that I'm applying, so once you've done the fit check just carry on and do the CV, cover letter and form answers. Closing date is Friday.",
30
+ "assertions": [
31
+ "The fit check comes first, before any CV or letter text, with each requirement marked met, partly met, not shown or not met and the resume line it rests on",
32
+ "Takes the candidate's stated decision to apply as the G6 decision and carries on through the tailored CV, cover letter and form answers in that order, rather than stopping to ask again",
33
+ "The tailored CV keeps every employer, title, date and number as in resume.md (42 accounts, £1.3M ARR, 94% retention, 15 QBR accounts, 3 saved accounts, 11 onboardings) and reports healthcare or regulated-industry experience as something it cannot claim",
34
+ "The cover letter is under a page, opens on the strongest evidence for the role, and adds no enthusiasm or facts about Quindle beyond the posting",
35
+ "Form answers follow the form's order, draft questions 1 to 4 from resume lines, and leave right to work, salary, notice period and equal-opportunities monitoring for the candidate to answer",
36
+ "Ends at the G6.1 confirm gate with the claims the candidate must check are true, and does not call the application ready to send before they confirm",
37
+ "Does not invent experience, figures or qualifications not in resume.md, such as healthcare work, a SQL certification or a notice period"
38
+ ]
39
+ },
40
+ {
41
+ "id": "apply-fit-gate-hard-requirement",
42
+ "held_out": "2026-11-04",
43
+ "prompt": "help me apply for this, closes sunday. the job is warehouse-supervisor.md and my cv is cv.md. need a cover letter and the cv sorted",
44
+ "assertions": [
45
+ "Runs the fit check first, with each requirement marked and the CV line it rests on",
46
+ "Puts the counterbalance and reach truck licences first as an essential requirement the CV does not show (it mentions only a manual pallet truck), with WMS experience not shown and warehouse or DC supervision partly met at best",
47
+ "Credits what the CV does show: teams of up to 14, leading the Thursday 22:00-06:00 replenishment crew of 6, return-to-work interviews, and the First Aid at Work certificate",
48
+ "Names the answers that would change the picture, such as whether the candidate holds or is booking the truck licences and whether they can work 4-on-4-off nights",
49
+ "Stops at the G6 gate for the candidate to decide whether to apply now that they have seen the fit check, and does not produce a tailored CV or cover letter in this run",
50
+ "Leaves the apply decision to the candidate rather than deciding it for them either way",
51
+ "Does not invent a forklift licence, warehouse experience, a named WMS or night-pattern availability not in cv.md"
52
+ ]
25
53
  }
26
54
  ]
27
55
  }
@@ -0,0 +1,10 @@
1
+ # Quindle — application form: Customer Success Manager, Mid-Market
2
+
3
+ 1. Why are you interested in this role? (max 150 words)
4
+ 2. Tell us about a time you kept a customer who was at risk of leaving. What did you do, and what happened? (max 200 words)
5
+ 3. How many accounts do you currently manage, and what is their total value?
6
+ 4. Do you have experience in healthcare or another regulated industry? If yes, please describe.
7
+ 5. Do you have the right to work in the UK? (Yes / No / I will need sponsorship)
8
+ 6. What are your salary expectations?
9
+ 7. What is your notice period?
10
+ 8. Equal opportunities monitoring (optional): gender, ethnicity, disability.
@@ -0,0 +1,33 @@
1
+ # Customer Success Manager, Mid-Market — Quindle
2
+
3
+ Remote (UK) · Full time · Closing date: Friday 6 November 2026
4
+ Apply at careers.quindle.example/jobs/csm-mm
5
+
6
+ ## About the role
7
+
8
+ Quindle makes scheduling and records software for private clinics. You'll own a book of mid-market clinic groups after they go live, keep them renewing, and find room for them to grow with us. You'll report to the Head of Customer Success.
9
+
10
+ ## What you'll do
11
+
12
+ - Own a portfolio of around 35 mid-market accounts
13
+ - Run quarterly business reviews with clinic managers and owners
14
+ - Spot at-risk accounts early from usage and health data, and build save plans
15
+ - Own renewals and work with Sales on expansion
16
+ - Feed customer needs back to Product
17
+
18
+ ## What we're looking for
19
+
20
+ **Essential**
21
+ - 4+ years in a customer-facing role at a software or subscription business, including at least 2 years managing a book of accounts
22
+ - Track record on retention or renewals, with numbers to show it
23
+ - Experience running business reviews with senior customer stakeholders
24
+ - Comfortable working day to day in a CRM
25
+
26
+ **Nice to have**
27
+ - Experience in healthcare or another regulated industry
28
+ - Basic SQL or confidence pulling your own data
29
+ - Experience onboarding new customers
30
+
31
+ ## What we offer
32
+
33
+ Salary £42,000–£50,000, 25 days holiday plus bank holidays, home office budget.
@@ -0,0 +1,34 @@
1
+ # Sam Okonedo
2
+
3
+ sam.okonedo@example.com · 07700 900123 · Bristol
4
+
5
+ ## Experience
6
+
7
+ **Account Manager — Brindle Payroll Ltd** · March 2021 – present
8
+ Payroll software for small and mid-sized businesses.
9
+ - Manage a book of 42 SMB and mid-market accounts worth £1.3M in annual recurring revenue
10
+ - Gross revenue retention of 94% across my book in 2024 (team average 89%)
11
+ - Run quarterly business reviews with finance directors and owners for my 15 largest accounts
12
+ - Turned around 3 accounts flagged red on our health score in 2025; all 3 renewed
13
+ - Led onboarding for 11 new clients after the onboarding specialist role was cut in 2023
14
+ - Keep all account notes, renewals and tasks in the team CRM
15
+
16
+ **Customer Support Team Lead — Marrow Telecom** · June 2018 – February 2021
17
+ Business broadband and phone lines.
18
+ - Led a team of 6 support agents handling business customer queries by phone, chat and email
19
+ - Team CSAT of 4.6 out of 5 over 2020
20
+ - Wrote the team's escalation guide, still in use when I left
21
+
22
+ **Customer Support Agent — Marrow Telecom** · September 2016 – May 2018
23
+
24
+ ## Education
25
+
26
+ BA (Hons) Business Management, Harbourside University (2016)
27
+
28
+ ## Training
29
+
30
+ - Introduction to SQL (online course, 2023)
31
+
32
+ ## Skills
33
+
34
+ CRM administration, Excel (pivot tables, lookups), presenting to senior stakeholders
@@ -0,0 +1,27 @@
1
+ # Lee Farrant
2
+
3
+ lee.farrant@example.com · 07700 900456 · Northampton
4
+
5
+ ## Profile
6
+
7
+ Retail shift manager with six years running teams on early, late and night shifts in a large supermarket.
8
+
9
+ ## Experience
10
+
11
+ **Shift Manager — Hollinsby Foods, Northampton superstore** · April 2020 – present
12
+ - Run early and late shifts with teams of up to 14 colleagues across grocery, chilled and checkouts
13
+ - Lead the Thursday night replenishment crew (6 colleagues, 22:00–06:00) receiving and putting away the overnight delivery
14
+ - Store stock accuracy of 98.7% at the 2025 annual stock count
15
+ - Do the rota for the grocery department (around 30 colleagues)
16
+ - Carry out return-to-work interviews and first-stage disciplinary meetings
17
+ - Use the store's handheld stock system for gap checks, deliveries and stock counts
18
+ - Move cages and pallets on the shop floor with a manual pallet truck
19
+
20
+ **Customer Assistant — Hollinsby Foods** · August 2017 – March 2020
21
+ - Night replenishment, then checkouts and customer service desk
22
+
23
+ ## Qualifications
24
+
25
+ - First Aid at Work certificate (2024)
26
+ - Food Hygiene Level 2
27
+ - GCSEs including English and Maths
@@ -0,0 +1,30 @@
1
+ # Night Shift Warehouse Supervisor — Pellbrook Distribution
2
+
3
+ Ambient distribution centre, Daventry area · Permanent · £34,500 plus night allowance
4
+ Closing date: Sunday 8 November 2026 · jobs.pellbrook.example/night-supervisor
5
+
6
+ ## The role
7
+
8
+ You'll run the night shift at our ambient distribution centre, leading a team of around 20 pickers, loaders and forklift drivers so that store orders leave on time and accurately.
9
+
10
+ Shift pattern: 4 nights on, 4 nights off, 22:00–06:00.
11
+
12
+ ## Responsibilities
13
+
14
+ - Plan and allocate labour across picking, loading and goods-in for the shift
15
+ - Hit dispatch and pick-accuracy targets
16
+ - Run shift briefings, toolbox talks and return-to-work interviews
17
+ - Carry out and record safety checks, and lead incident investigations on shift
18
+ - Cover forklift operation when the shift is short
19
+
20
+ ## Requirements
21
+
22
+ **Essential**
23
+ - Current counterbalance and reach truck licences (certificates will be checked at interview)
24
+ - At least 2 years supervising a team in a warehouse or distribution centre
25
+ - Able to work the 4-on-4-off night pattern
26
+ - Experience using a warehouse management system (WMS)
27
+
28
+ **Desirable**
29
+ - First Aid at Work certificate
30
+ - IOSH Managing Safely or equivalent
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "application-form-answers",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Prepare the answers to a job application form from the person's resume: each question in the form's own order with either a drafted answer and the resume line behind it, or a note that it is theirs alone to answer (right to work, sponsorship, salary, declarations, monitoring questions), plus the questions that could screen the application out and the ones their resume already bears on. Works for any occupation. Use when the user says \"help me fill in this application form\", \"answer these application questions\", \"what do I put for these screening questions\", or pastes the questions from an online job application.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -25,7 +25,7 @@
25
25
  "job-search"
26
26
  ],
27
27
  "model": {
28
- "tier": "standard",
29
- "rationale": "Sorts questions into three kinds and drafts short answers from the resume. The hard rule is mechanical: a declaration is never answered for the person."
28
+ "tier": "light",
29
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 88% and 94% of checks in two tier trials, against standard's 88% and heavy's 81% and 81%, within 5 points of the best both times."
30
30
  }
31
31
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cover-letter",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Write a cover letter for one job from the person's resume and the posting: under a page, opening on the strongest evidence for the role, two or three specifics matched to what the employer asked for, and no enthusiasm, company facts or experience the person didn't supply. A script lists every figure and name in the letter that their own material doesn't contain. Works for any occupation and level. Use when the user says \"write a cover letter for this job\", \"draft a covering letter\", \"write the cover note for my application\", or needs an application email to go with a resume.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -31,7 +31,7 @@
31
31
  "notes": "Reads the draft, source and posting files it is given. Writes nothing."
32
32
  },
33
33
  "model": {
34
- "tier": "standard",
35
- "rationale": "A short letter from supplied facts, with a script listing every figure and name the person's material doesn't contain."
34
+ "tier": "light",
35
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 100% and 100% of checks in two tier trials, against standard's 100% and heavy's 100% and 100%, within 5 points of the best both times."
36
36
  }
37
37
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "resume-tailor",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Tailor a resume or CV to one job posting without adding anything that isn't true: reorder, cut and reword what the person has already done so the posting's needs are answered first, keep every employer, title, date and number as it was, and report what the posting asks for that the resume cannot claim. A script lists every figure and name in the draft that the original doesn't contain. Works for any occupation and level. Use when the user says \"tailor my resume for this job\", \"adapt my CV to this posting\", \"rewrite my resume for this role\", or pastes a job description next to their resume.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -31,7 +31,7 @@
31
31
  "notes": "Reads the draft, source and posting files it is given. Writes nothing."
32
32
  },
33
33
  "model": {
34
- "tier": "standard",
35
- "rationale": "Reorders and rewords existing content against a posting, with a script listing every figure and name the original doesn't contain."
34
+ "tier": "light",
35
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 100% and 100% of checks in two tier trials, against standard's 100% and heavy's 100% and 100%, within 5 points of the best both times."
36
36
  }
37
37
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "md-to-docx",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Turn a Markdown draft into a Word document (.docx) that someone outside engineering can open, edit and track changes in, with real Heading styles so the navigation pane and table of contents work, live hyperlinks, numbered and bulleted lists, tables, code blocks, embedded images and optional brand fonts and colours, and a warning for everything that could not be carried over. Use when the user wants a Markdown file as a Word doc, says \"send this as a .docx\", \"convert to Word\", \"legal needs it in Word\", or \"make this editable for the client\".",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  "permissions": {"network": [], "commands": [], "files": "named-paths"},
41
41
  "model": {
42
- "tier": "standard",
43
- "rationale": "A stdlib script does the conversion; the model restructures the Markdown so it converts cleanly (heading levels, footnotes, HTML), reads each warning and explains the losses. Bounded editing, no open-ended generation."
42
+ "tier": "heavy",
43
+ "rationale": "Measured (RFC-0073): on its held-out evals the heavy tier met 79% and 93% of checks in two tier trials, against standard's 64% and light's 71% and 79%, more than 5 points ahead both times."
44
44
  }
45
45
  }
@@ -20,6 +20,34 @@
20
20
  "Explains that re-drafting from the same incomplete brief reproduces the same gaps",
21
21
  "Does not run output-hygiene on a draft that is about to be rewritten"
22
22
  ]
23
+ },
24
+ {
25
+ "id": "ship-a-draft-adr-from-thread",
26
+ "held_out": "2026-11-04",
27
+ "prompt": "Can you turn this Slack thread (slack-thread.txt) into a proper ADR for moving the nightly statements job? It goes to the architecture review group on Thursday and I want it finished and ready to send, not a first draft I have to fix up.",
28
+ "assertions": [
29
+ "Produces a structured intake brief from the thread before drafting, and the ADR is written from that brief",
30
+ "The month-end queue capacity question Marta raised is carried into the brief and the ADR as open or a risk, not as settled",
31
+ "The ADR records option B as the decision, option A as rejected because it does not fix the 3h40m runtime, and option C as rejected for lack of approved budget, and keeps the unchanged statement file format and idempotent retries as requirements",
32
+ "After drafting, the ADR is critiqued with findings tied to sections and a G5 verdict in the critique's own terms (such as SHIP IT, SHIP WITH CHANGES or MAJOR REWRITE)",
33
+ "Any changes the critique calls for are made before the polish pass, and the polish pass runs last, on the revised ADR",
34
+ "The final ADR carries none of the thread's machine residue: no 'Generated with ExampleAI' or 'Summarised by ExampleBot' line and no 'Hope this helps' closer",
35
+ "Does not invent figures, dates or owners not in the thread, such as a queue capacity number, a migration date or a deadline for Marta's check"
36
+ ]
37
+ },
38
+ {
39
+ "id": "ship-a-draft-announcement-unsettled",
40
+ "held_out": "2026-11-04",
41
+ "prompt": "Need the customer announcement email for scheduled exports, to go to Team plan admins. Everything's in the ticket (ticket-PRD-412.md). Marketing want final copy today so please give me something finished I can just hand over.",
42
+ "assertions": [
43
+ "The intake brief, written before any drafting, flags the launch date, the price, and whether SFTP delivery is in as unsettled in the ticket",
44
+ "The draft leaves those three as clearly marked placeholders or open items instead of picking a value",
45
+ "The critique gate does not return SHIP IT; its verdict holds the email back (such as SHIP WITH CHANGES or MAJOR REWRITE) and names the unsettled date, price and scope as the reason",
46
+ "Tells the user plainly that the email is not ready to go to customers, and who in the ticket has to settle each item: Hannah and Oskar on SFTP scope and date, finance (Gwen, after the 10 November pricing committee) on price",
47
+ "If the polish pass runs, the placeholders survive it, and the reply does not present the email as final copy",
48
+ "Does not stop to ask questions; the brief, draft and critique are delivered in this run",
49
+ "Does not invent a launch date, price or feature scope the ticket has not settled, such as stating 12 November, 26 November or $15 a month as fact"
50
+ ]
23
51
  }
24
52
  ]
25
53
  }
@@ -0,0 +1,47 @@
1
+ #reporting-eng — thread started by Priya Raman, Mon 2 Nov 2026
2
+
3
+ Priya Raman 10:12
4
+ ok we need to stop pretending the nightly statements job is fine. it failed again on the 22nd. that's twice in October (9th and 22nd), both times because reports-01 got rebooted for patching mid-run and the cron job just died. ~1,900 customers didn't get their statement until we reran it by hand at 10am
5
+
6
+ Tom Lindqvist 10:15
7
+ and it's getting slower. last night's run was 3h40m. the window is 01:00 to 06:00 UTC because the finance team pulls the statements at 06:30. at the rate customer count is growing we're going to blow the window sometime next year
8
+
9
+ Marta Szabo 10:21
10
+ options I can see:
11
+ A) keep cron on reports-01, add a second box with a lock so only one runs, plus retry on failure
12
+ B) move it onto the job queue we already run for the email service. one job per customer, workers pick them up, failed ones retry on their own
13
+ C) use the cloud provider's managed scheduler + functions
14
+
15
+ Tom Lindqvist 10:24
16
+ C is nice but there's no budget approved for it this year, I asked in September and got a no. not worth writing up as anything but rejected
17
+
18
+ Priya Raman 10:26
19
+ A fixes the reboot problem but not the runtime. it's still one process doing 3h40m of work
20
+
21
+ Tom Lindqvist 10:30
22
+ B gets us both. per-customer jobs means a reboot only kills the in-flight ones and they get retried, and we can add workers if we're getting close to the window
23
+
24
+ Marta Szabo 10:33
25
+ I'm fine with B in principle. my worry is month-end. the email service hammers the same queue on the 1st of every month (invoice emails). if statements and invoice emails land on the same night, does the queue keep up? I don't actually know its capacity
26
+
27
+ Priya Raman 10:35
28
+ can you find out?
29
+
30
+ Marta Szabo 10:36
31
+ I'll check with platform
32
+
33
+ Jonas Weber 10:52
34
+ dropping in the AI summary of the thread from the meeting notes bot, in case it helps:
35
+
36
+ > **Summary:** The team is evaluating three options for the nightly statements job. Option B (job queue) is the leading candidate because it addresses both reliability and runtime. Option C is rejected due to budget. Open question: queue capacity at month-end.
37
+ > Hope this helps! Let me know if you need anything else.
38
+ > — Summarised by ExampleBot · Generated with ExampleAI (notes.example.com)
39
+
40
+ Priya Raman 11:02
41
+ so B, pending Marta's capacity check. we also need to keep the output the same, finance's import breaks if the statement file format changes. I'll write it up as an ADR for architecture review
42
+
43
+ Tom Lindqvist 11:04
44
+ 👍 one more thing for the ADR: we'd need idempotent jobs, because a retried job must not send the same customer two statements
45
+
46
+ Priya Raman 11:05
47
+ yep
@@ -0,0 +1,44 @@
1
+ # PRD-412 — Launch: scheduled exports for Team plan
2
+
3
+ **Type:** Launch **Status:** In progress **Reporter:** Hannah Ito (Product) **Assignee:** Hannah Ito
4
+ **Labels:** team-plan, exports, launch-q4
5
+
6
+ ## Description
7
+
8
+ Team plan customers can set up a recurring export (daily, weekly or monthly) of their project data as CSV, delivered by email link or to an SFTP server they own. Replaces the manual "Export all" button that customers currently run by hand.
9
+
10
+ Top customer asks (from the feedback board):
11
+ - "We export every Monday for our finance team. Please let us schedule it." — 41 upvotes
12
+ - "Need this to land on our SFTP so our BI tool can pick it up" — 17 upvotes
13
+ - "Weekly CSV by email would be enough for us" — 12 upvotes
14
+
15
+ What's in:
16
+ - Daily / weekly / monthly schedules, choose the time of day
17
+ - CSV format, same columns as today's manual export
18
+ - Delivery by emailed download link (link valid 7 days)
19
+ - Delivery to customer SFTP — see comments
20
+
21
+ Help-centre article: help.example.com/scheduled-exports (draft, not published)
22
+
23
+ ## Comments
24
+
25
+ **Hannah Ito (Product)** — 20 Oct
26
+ Target launch Nov 12. Marketing will send the announcement email to Team plan admins on launch day.
27
+
28
+ **Oskar Brenner (Eng lead)** — 22 Oct
29
+ Nov 12 isn't realistic with SFTP in. Email delivery is done and in QA. SFTP destination still needs key management and the retry logic. If we cut SFTP from v1, earliest is Nov 26. With SFTP, I can't give a date yet.
30
+
31
+ **Hannah Ito (Product)** — 23 Oct
32
+ SFTP is the thing the bigger customers asked for, I don't want to launch without it. Let's discuss.
33
+
34
+ **Oskar Brenner (Eng lead)** — 23 Oct
35
+ Fine, but then the date moves. Need a decision from you.
36
+
37
+ **Hannah Ito (Product)** — 27 Oct
38
+ Pricing proposal: add-on at $15/month per workspace. Sent to finance.
39
+
40
+ **Gwen Adeyemi (Finance)** — 29 Oct
41
+ Not approved yet. We're also looking at including it in Team at no extra charge as a retention play. Will have an answer after the pricing committee on Nov 10.
42
+
43
+ **Hannah Ito (Product)** — 3 Nov
44
+ Marketing is asking for final copy for the announcement. Can someone draft it?
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "output-hygiene",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Review agent-written text before it ships and strip the machine artifacts it carries — invisible Unicode, non-breaking spaces, homoglyphs, harness-added provenance trailers, trailing chat closers — then flag the prose tells a script cannot catch, each quoted with a rewrite. Use when the user wants to clean up AI-generated output, asks to remove a Claude watermark, attribution footer, or \"Generated with\" line, wants a draft that does not read as machine-written, or needs a pre-ship hygiene pass on a document, commit message, or pasted chat answer.",
5
5
  "entrypoint": "SKILL.md",
6
6
  "deps": {
@@ -28,7 +28,7 @@
28
28
  ],
29
29
  "permissions": {"network": [], "commands": [], "files": "named-paths", "notes": "Writes only with --fix, which rewrites the files it was given, in place."},
30
30
  "model": {
31
- "tier": "standard",
32
- "rationale": "The mechanical pass is a deterministic script; the model does bounded rewriting of flagged prose against a fixed tell list, not adversarial review."
31
+ "tier": "light",
32
+ "rationale": "Measured (RFC-0073): on its held-out evals the light tier met 100% and 100% of checks in two tier trials, against standard's 92% and heavy's 100% and 92%, within 5 points of the best both times."
33
33
  }
34
34
  }