skilldrop-cli 0.13.2 → 0.13.3

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 (403) hide show
  1. package/README.md +82 -80
  2. package/agents/README.md +3 -3
  3. package/bin/skilldrop.js +78 -17
  4. package/catalogue.json +111 -0
  5. package/contracts/catalogue.schema.json +32 -0
  6. package/contracts/loop.schema.json +2 -2
  7. package/contracts/pack.schema.json +34 -34
  8. package/package.json +3 -4
  9. package/packs/ai-engineering/pack.json +22 -0
  10. package/{skills → packs/ai-engineering/skills}/agent-adoption-stage/SKILL.md +2 -2
  11. package/packs/claude-api/pack.json +21 -0
  12. package/{skills → packs/claude-api/skills}/eval-harness-generator/SKILL.md +2 -2
  13. package/{skills → packs/claude-api/skills}/eval-harness-generator/manifest.json +1 -1
  14. package/{loops → packs/core/loops}/ship-a-draft/LOOP.md +1 -1
  15. package/packs/core/pack.json +21 -0
  16. package/{skills → packs/core/skills}/council-review/SKILL.md +1 -1
  17. package/{skills → packs/core/skills}/council-review/reference.md +2 -2
  18. package/{loops → packs/dev-team/loops}/build/LOOP.md +3 -3
  19. package/{loops → packs/dev-team/loops}/build/loop.json +1 -1
  20. package/{loops → packs/dev-team/loops}/release/LOOP.md +2 -2
  21. package/packs/dev-team/pack.json +22 -0
  22. package/{skills → packs/dev-team/skills}/agents-md-generator/reference.md +1 -1
  23. package/{skills → packs/dev-team/skills}/contribution-wizard/SKILL.md +5 -5
  24. package/{skills → packs/dev-team/skills}/contribution-wizard/manifest.json +1 -1
  25. package/{skills → packs/dev-team/skills}/devils-advocate/SKILL.md +1 -1
  26. package/{skills → packs/dev-team/skills}/pre-merge-review/SKILL.md +1 -1
  27. package/{loops → packs/product-manager/loops}/discover/LOOP.md +3 -3
  28. package/packs/product-manager/pack.json +22 -0
  29. package/{loops → packs/solution-architect/loops}/design/LOOP.md +2 -2
  30. package/packs/solution-architect/pack.json +22 -0
  31. package/{loops → packs/sre-oncall/loops}/operate/LOOP.md +1 -1
  32. package/packs/sre-oncall/pack.json +22 -0
  33. package/packs/stakeholder-comms/pack.json +22 -0
  34. package/{skills → packs/stakeholder-comms/skills}/deck-builder/SKILL.md +1 -1
  35. package/packs.json +0 -229
  36. /package/{skills → packs/ai-engineering/skills}/agent-adoption-stage/evals/eval_queries.json +0 -0
  37. /package/{skills → packs/ai-engineering/skills}/agent-adoption-stage/evals/evals.json +0 -0
  38. /package/{skills → packs/ai-engineering/skills}/agent-adoption-stage/manifest.json +0 -0
  39. /package/{skills → packs/ai-engineering/skills}/agent-budget/SKILL.md +0 -0
  40. /package/{skills → packs/ai-engineering/skills}/agent-budget/evals/eval_queries.json +0 -0
  41. /package/{skills → packs/ai-engineering/skills}/agent-budget/evals/evals.json +0 -0
  42. /package/{skills → packs/ai-engineering/skills}/agent-budget/manifest.json +0 -0
  43. /package/{skills → packs/ai-engineering/skills}/agent-budget/templates/budget-spec.md +0 -0
  44. /package/{skills → packs/ai-engineering/skills}/agent-loop-design/SKILL.md +0 -0
  45. /package/{skills → packs/ai-engineering/skills}/agent-loop-design/evals/eval_queries.json +0 -0
  46. /package/{skills → packs/ai-engineering/skills}/agent-loop-design/evals/evals.json +0 -0
  47. /package/{skills → packs/ai-engineering/skills}/agent-loop-design/manifest.json +0 -0
  48. /package/{skills → packs/ai-engineering/skills}/agent-loop-design/templates/loop-spec.md +0 -0
  49. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/SKILL.md +0 -0
  50. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/evals/eval_queries.json +0 -0
  51. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/evals/evals.json +0 -0
  52. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/examples/support-triage-agent.md +0 -0
  53. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/manifest.json +0 -0
  54. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/reference.md +0 -0
  55. /package/{skills → packs/ai-engineering/skills}/agent-threat-model/templates/agent-threat-model.md +0 -0
  56. /package/{skills → packs/ai-engineering/skills}/ai-adoption-rollout/SKILL.md +0 -0
  57. /package/{skills → packs/ai-engineering/skills}/ai-adoption-rollout/evals/eval_queries.json +0 -0
  58. /package/{skills → packs/ai-engineering/skills}/ai-adoption-rollout/evals/evals.json +0 -0
  59. /package/{skills → packs/ai-engineering/skills}/ai-adoption-rollout/manifest.json +0 -0
  60. /package/{skills → packs/ai-engineering/skills}/ai-readiness-assessment/SKILL.md +0 -0
  61. /package/{skills → packs/ai-engineering/skills}/ai-readiness-assessment/evals/eval_queries.json +0 -0
  62. /package/{skills → packs/ai-engineering/skills}/ai-readiness-assessment/evals/evals.json +0 -0
  63. /package/{skills → packs/ai-engineering/skills}/ai-readiness-assessment/manifest.json +0 -0
  64. /package/{skills → packs/ai-engineering/skills}/ai-usage-policy/SKILL.md +0 -0
  65. /package/{skills → packs/ai-engineering/skills}/ai-usage-policy/evals/eval_queries.json +0 -0
  66. /package/{skills → packs/ai-engineering/skills}/ai-usage-policy/evals/evals.json +0 -0
  67. /package/{skills → packs/ai-engineering/skills}/ai-usage-policy/manifest.json +0 -0
  68. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/SKILL.md +0 -0
  69. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/examples/weekly-engineering-team.md +0 -0
  70. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/manifest.json +0 -0
  71. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/scripts/build_report.py +0 -0
  72. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/templates/report-per-user.md +0 -0
  73. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/templates/report-team-rollup.md +0 -0
  74. /package/{skills → packs/ai-engineering/skills}/ai-usage-report/templates/usage-event-schema.md +0 -0
  75. /package/{skills → packs/ai-engineering/skills}/ai-use-case-triage/SKILL.md +0 -0
  76. /package/{skills → packs/ai-engineering/skills}/ai-use-case-triage/evals/eval_queries.json +0 -0
  77. /package/{skills → packs/ai-engineering/skills}/ai-use-case-triage/evals/evals.json +0 -0
  78. /package/{skills → packs/ai-engineering/skills}/ai-use-case-triage/manifest.json +0 -0
  79. /package/{skills → packs/ai-engineering/skills}/llm-eval-harness/SKILL.md +0 -0
  80. /package/{skills → packs/ai-engineering/skills}/llm-eval-harness/manifest.json +0 -0
  81. /package/{skills → packs/ai-engineering/skills}/llm-eval-harness/reference.md +0 -0
  82. /package/{skills → packs/ai-engineering/skills}/llm-eval-harness/templates/eval-plan.md +0 -0
  83. /package/{skills → packs/ai-engineering/skills}/llm-eval-harness/templates/golden-case.jsonl +0 -0
  84. /package/{skills → packs/ai-engineering/skills}/subagent-design/SKILL.md +0 -0
  85. /package/{skills → packs/ai-engineering/skills}/subagent-design/evals/eval_queries.json +0 -0
  86. /package/{skills → packs/ai-engineering/skills}/subagent-design/evals/evals.json +0 -0
  87. /package/{skills → packs/ai-engineering/skills}/subagent-design/manifest.json +0 -0
  88. /package/{skills → packs/ai-engineering/skills}/subagent-design/templates/orchestration-plan.md +0 -0
  89. /package/{skills → packs/claude-api/skills}/prompt-caching-advisor/SKILL.md +0 -0
  90. /package/{skills → packs/claude-api/skills}/prompt-caching-advisor/manifest.json +0 -0
  91. /package/{skills → packs/claude-api/skills}/token-budget-estimator/SKILL.md +0 -0
  92. /package/{skills → packs/claude-api/skills}/token-budget-estimator/manifest.json +0 -0
  93. /package/{skills → packs/claude-api/skills}/tool-use-schema-writer/SKILL.md +0 -0
  94. /package/{skills → packs/claude-api/skills}/tool-use-schema-writer/manifest.json +0 -0
  95. /package/{loops → packs/core/loops}/ship-a-draft/evals/eval_queries.json +0 -0
  96. /package/{loops → packs/core/loops}/ship-a-draft/evals/evals.json +0 -0
  97. /package/{loops → packs/core/loops}/ship-a-draft/loop.json +0 -0
  98. /package/{skills → packs/core/skills}/brief-intake/SKILL.md +0 -0
  99. /package/{skills → packs/core/skills}/brief-intake/evals/eval_queries.json +0 -0
  100. /package/{skills → packs/core/skills}/brief-intake/evals/evals.json +0 -0
  101. /package/{skills → packs/core/skills}/brief-intake/manifest.json +0 -0
  102. /package/{skills → packs/core/skills}/brief-intake/templates/brief-adr.md +0 -0
  103. /package/{skills → packs/core/skills}/brief-intake/templates/brief-decision-log.md +0 -0
  104. /package/{skills → packs/core/skills}/brief-intake/templates/brief-deck.md +0 -0
  105. /package/{skills → packs/core/skills}/brief-intake/templates/brief-design-doc.md +0 -0
  106. /package/{skills → packs/core/skills}/brief-intake/templates/brief-exec-summary.md +0 -0
  107. /package/{skills → packs/core/skills}/brief-intake/templates/brief-generic.md +0 -0
  108. /package/{skills → packs/core/skills}/brief-intake/templates/brief-runbook.md +0 -0
  109. /package/{skills → packs/core/skills}/brief-intake/templates/brief-tech-comparison.md +0 -0
  110. /package/{skills → packs/core/skills}/council-review/evals/eval_queries.json +0 -0
  111. /package/{skills → packs/core/skills}/council-review/evals/evals.json +0 -0
  112. /package/{skills → packs/core/skills}/council-review/examples/redis-cache-decision.md +0 -0
  113. /package/{skills → packs/core/skills}/council-review/manifest.json +0 -0
  114. /package/{skills → packs/core/skills}/council-review/seats/architect.md +0 -0
  115. /package/{skills → packs/core/skills}/council-review/seats/bench.md +0 -0
  116. /package/{skills → packs/core/skills}/council-review/seats/operator.md +0 -0
  117. /package/{skills → packs/core/skills}/council-review/seats/pragmatist.md +0 -0
  118. /package/{skills → packs/core/skills}/council-review/seats/security-engineer.md +0 -0
  119. /package/{skills → packs/core/skills}/council-review/seats/user-advocate.md +0 -0
  120. /package/{skills → packs/core/skills}/council-review/templates/council-review.md +0 -0
  121. /package/{skills → packs/core/skills}/doc-critique/SKILL.md +0 -0
  122. /package/{skills → packs/core/skills}/doc-critique/evals/eval_queries.json +0 -0
  123. /package/{skills → packs/core/skills}/doc-critique/evals/evals.json +0 -0
  124. /package/{skills → packs/core/skills}/doc-critique/examples/design-doc-critique.md +0 -0
  125. /package/{skills → packs/core/skills}/doc-critique/manifest.json +0 -0
  126. /package/{skills → packs/core/skills}/doc-critique/rubrics/adr.md +0 -0
  127. /package/{skills → packs/core/skills}/doc-critique/rubrics/decision-log.md +0 -0
  128. /package/{skills → packs/core/skills}/doc-critique/rubrics/deck.md +0 -0
  129. /package/{skills → packs/core/skills}/doc-critique/rubrics/design-doc.md +0 -0
  130. /package/{skills → packs/core/skills}/doc-critique/rubrics/exec-summary.md +0 -0
  131. /package/{skills → packs/core/skills}/doc-critique/rubrics/generic.md +0 -0
  132. /package/{skills → packs/core/skills}/doc-critique/rubrics/runbook.md +0 -0
  133. /package/{skills → packs/core/skills}/doc-critique/rubrics/tech-comparison.md +0 -0
  134. /package/{skills → packs/core/skills}/doc-critique/templates/critique.md +0 -0
  135. /package/{skills → packs/core/skills}/output-hygiene/SKILL.md +0 -0
  136. /package/{skills → packs/core/skills}/output-hygiene/evals/eval_queries.json +0 -0
  137. /package/{skills → packs/core/skills}/output-hygiene/evals/evals.json +0 -0
  138. /package/{skills → packs/core/skills}/output-hygiene/manifest.json +0 -0
  139. /package/{skills → packs/core/skills}/output-hygiene/reference.md +0 -0
  140. /package/{skills → packs/core/skills}/output-hygiene/scripts/scrub.py +0 -0
  141. /package/{loops → packs/dev-team/loops}/build/evals/eval_queries.json +0 -0
  142. /package/{loops → packs/dev-team/loops}/build/evals/evals.json +0 -0
  143. /package/{loops → packs/dev-team/loops}/release/loop.json +0 -0
  144. /package/{skills → packs/dev-team/skills}/accessibility-audit/SKILL.md +0 -0
  145. /package/{skills → packs/dev-team/skills}/accessibility-audit/examples/login-form.md +0 -0
  146. /package/{skills → packs/dev-team/skills}/accessibility-audit/manifest.json +0 -0
  147. /package/{skills → packs/dev-team/skills}/accessibility-audit/reference.md +0 -0
  148. /package/{skills → packs/dev-team/skills}/agents-md-generator/SKILL.md +0 -0
  149. /package/{skills → packs/dev-team/skills}/agents-md-generator/evals/eval_queries.json +0 -0
  150. /package/{skills → packs/dev-team/skills}/agents-md-generator/evals/evals.json +0 -0
  151. /package/{skills → packs/dev-team/skills}/agents-md-generator/manifest.json +0 -0
  152. /package/{skills → packs/dev-team/skills}/agents-md-generator/templates/agents-md.md +0 -0
  153. /package/{skills → packs/dev-team/skills}/bug-triage/SKILL.md +0 -0
  154. /package/{skills → packs/dev-team/skills}/bug-triage/evals/eval_queries.json +0 -0
  155. /package/{skills → packs/dev-team/skills}/bug-triage/evals/evals.json +0 -0
  156. /package/{skills → packs/dev-team/skills}/bug-triage/manifest.json +0 -0
  157. /package/{skills → packs/dev-team/skills}/bug-triage/templates/bug-ticket.md +0 -0
  158. /package/{skills → packs/dev-team/skills}/devils-advocate/evals/eval_queries.json +0 -0
  159. /package/{skills → packs/dev-team/skills}/devils-advocate/evals/evals.json +0 -0
  160. /package/{skills → packs/dev-team/skills}/devils-advocate/examples/rate-limiter-review.md +0 -0
  161. /package/{skills → packs/dev-team/skills}/devils-advocate/lenses/adversarial-review.md +0 -0
  162. /package/{skills → packs/dev-team/skills}/devils-advocate/lenses/edge-cases.md +0 -0
  163. /package/{skills → packs/dev-team/skills}/devils-advocate/lenses/future-proofing.md +0 -0
  164. /package/{skills → packs/dev-team/skills}/devils-advocate/lenses/test-coverage.md +0 -0
  165. /package/{skills → packs/dev-team/skills}/devils-advocate/manifest.json +0 -0
  166. /package/{skills → packs/dev-team/skills}/devils-advocate/templates/challenge.md +0 -0
  167. /package/{skills → packs/dev-team/skills}/feature-implement-loop/SKILL.md +0 -0
  168. /package/{skills → packs/dev-team/skills}/feature-implement-loop/manifest.json +0 -0
  169. /package/{skills → packs/dev-team/skills}/launch-readiness/SKILL.md +0 -0
  170. /package/{skills → packs/dev-team/skills}/launch-readiness/evals/eval_queries.json +0 -0
  171. /package/{skills → packs/dev-team/skills}/launch-readiness/evals/evals.json +0 -0
  172. /package/{skills → packs/dev-team/skills}/launch-readiness/examples/schema-change-revise.md +0 -0
  173. /package/{skills → packs/dev-team/skills}/launch-readiness/manifest.json +0 -0
  174. /package/{skills → packs/dev-team/skills}/launch-readiness/templates/readiness-report.md +0 -0
  175. /package/{skills → packs/dev-team/skills}/migration-plan/SKILL.md +0 -0
  176. /package/{skills → packs/dev-team/skills}/migration-plan/evals/eval_queries.json +0 -0
  177. /package/{skills → packs/dev-team/skills}/migration-plan/evals/evals.json +0 -0
  178. /package/{skills → packs/dev-team/skills}/migration-plan/manifest.json +0 -0
  179. /package/{skills → packs/dev-team/skills}/migration-plan/templates/migration-plan.md +0 -0
  180. /package/{skills → packs/dev-team/skills}/pre-merge-review/evals/eval_queries.json +0 -0
  181. /package/{skills → packs/dev-team/skills}/pre-merge-review/evals/evals.json +0 -0
  182. /package/{skills → packs/dev-team/skills}/pre-merge-review/examples/pre-merge-verdict.md +0 -0
  183. /package/{skills → packs/dev-team/skills}/pre-merge-review/manifest.json +0 -0
  184. /package/{skills → packs/dev-team/skills}/pre-merge-review/scripts/gate.py +0 -0
  185. /package/{skills → packs/dev-team/skills}/release-notes/SKILL.md +0 -0
  186. /package/{skills → packs/dev-team/skills}/release-notes/manifest.json +0 -0
  187. /package/{skills → packs/dev-team/skills}/release-notes/templates/release-notes.md +0 -0
  188. /package/{skills → packs/dev-team/skills}/sonar-onboard/SKILL.md +0 -0
  189. /package/{skills → packs/dev-team/skills}/sonar-onboard/evals/eval_queries.json +0 -0
  190. /package/{skills → packs/dev-team/skills}/sonar-onboard/evals/evals.json +0 -0
  191. /package/{skills → packs/dev-team/skills}/sonar-onboard/manifest.json +0 -0
  192. /package/{skills → packs/dev-team/skills}/sonar-onboard/reference.md +0 -0
  193. /package/{skills → packs/dev-team/skills}/sonar-onboard/templates/github-actions-sonar-server.yml.tmpl +0 -0
  194. /package/{skills → packs/dev-team/skills}/sonar-onboard/templates/github-actions-sonarcloud.yml.tmpl +0 -0
  195. /package/{skills → packs/dev-team/skills}/sonar-onboard/templates/readme-snippet.md +0 -0
  196. /package/{skills → packs/dev-team/skills}/sonar-onboard/templates/sonar-project.properties.tmpl +0 -0
  197. /package/{skills → packs/dev-team/skills}/sonar-review/SKILL.md +0 -0
  198. /package/{skills → packs/dev-team/skills}/sonar-review/evals/eval_queries.json +0 -0
  199. /package/{skills → packs/dev-team/skills}/sonar-review/evals/evals.json +0 -0
  200. /package/{skills → packs/dev-team/skills}/sonar-review/lenses/bugs.md +0 -0
  201. /package/{skills → packs/dev-team/skills}/sonar-review/lenses/code-smells.md +0 -0
  202. /package/{skills → packs/dev-team/skills}/sonar-review/lenses/coverage-and-duplication.md +0 -0
  203. /package/{skills → packs/dev-team/skills}/sonar-review/lenses/security-hotspots.md +0 -0
  204. /package/{skills → packs/dev-team/skills}/sonar-review/lenses/vulnerabilities.md +0 -0
  205. /package/{skills → packs/dev-team/skills}/sonar-review/manifest.json +0 -0
  206. /package/{skills → packs/dev-team/skills}/sonar-review/reference.md +0 -0
  207. /package/{skills → packs/dev-team/skills}/sonar-review/templates/report.md +0 -0
  208. /package/{skills → packs/dev-team/skills}/test-plan-generator/SKILL.md +0 -0
  209. /package/{skills → packs/dev-team/skills}/test-plan-generator/evals/eval_queries.json +0 -0
  210. /package/{skills → packs/dev-team/skills}/test-plan-generator/evals/evals.json +0 -0
  211. /package/{skills → packs/dev-team/skills}/test-plan-generator/manifest.json +0 -0
  212. /package/{skills → packs/dev-team/skills}/test-plan-generator/templates/test-plan.md +0 -0
  213. /package/{skills → packs/dev-team/skills}/user-story-splitter/SKILL.md +0 -0
  214. /package/{skills → packs/dev-team/skills}/user-story-splitter/evals/eval_queries.json +0 -0
  215. /package/{skills → packs/dev-team/skills}/user-story-splitter/evals/evals.json +0 -0
  216. /package/{skills → packs/dev-team/skills}/user-story-splitter/examples/notifications-epic.md +0 -0
  217. /package/{skills → packs/dev-team/skills}/user-story-splitter/manifest.json +0 -0
  218. /package/{skills → packs/dev-team/skills}/user-story-splitter/templates/story.md +0 -0
  219. /package/{loops → packs/product-manager/loops}/discover/evals/eval_queries.json +0 -0
  220. /package/{loops → packs/product-manager/loops}/discover/evals/evals.json +0 -0
  221. /package/{loops → packs/product-manager/loops}/discover/loop.json +0 -0
  222. /package/{skills → packs/product-manager/skills}/business-case/SKILL.md +0 -0
  223. /package/{skills → packs/product-manager/skills}/business-case/examples/build-vs-buy-flags.md +0 -0
  224. /package/{skills → packs/product-manager/skills}/business-case/manifest.json +0 -0
  225. /package/{skills → packs/product-manager/skills}/business-case/templates/business-case.md +0 -0
  226. /package/{skills → packs/product-manager/skills}/okr-cascade/SKILL.md +0 -0
  227. /package/{skills → packs/product-manager/skills}/okr-cascade/evals/eval_queries.json +0 -0
  228. /package/{skills → packs/product-manager/skills}/okr-cascade/evals/evals.json +0 -0
  229. /package/{skills → packs/product-manager/skills}/okr-cascade/manifest.json +0 -0
  230. /package/{skills → packs/product-manager/skills}/okr-cascade/templates/okr-cascade.md +0 -0
  231. /package/{skills → packs/product-manager/skills}/prd-draft/SKILL.md +0 -0
  232. /package/{skills → packs/product-manager/skills}/prd-draft/evals/eval_queries.json +0 -0
  233. /package/{skills → packs/product-manager/skills}/prd-draft/evals/evals.json +0 -0
  234. /package/{skills → packs/product-manager/skills}/prd-draft/manifest.json +0 -0
  235. /package/{skills → packs/product-manager/skills}/prd-draft/templates/prd.md +0 -0
  236. /package/{skills → packs/product-manager/skills}/prfaq/SKILL.md +0 -0
  237. /package/{skills → packs/product-manager/skills}/prfaq/evals/eval_queries.json +0 -0
  238. /package/{skills → packs/product-manager/skills}/prfaq/evals/evals.json +0 -0
  239. /package/{skills → packs/product-manager/skills}/prfaq/manifest.json +0 -0
  240. /package/{skills → packs/product-manager/skills}/prfaq/templates/prfaq.md +0 -0
  241. /package/{skills → packs/product-manager/skills}/requirements-interview/SKILL.md +0 -0
  242. /package/{skills → packs/product-manager/skills}/requirements-interview/evals/eval_queries.json +0 -0
  243. /package/{skills → packs/product-manager/skills}/requirements-interview/evals/evals.json +0 -0
  244. /package/{skills → packs/product-manager/skills}/requirements-interview/manifest.json +0 -0
  245. /package/{skills → packs/product-manager/skills}/requirements-interview/templates/interview-kit.md +0 -0
  246. /package/{skills → packs/product-manager/skills}/strategy-analysis/SKILL.md +0 -0
  247. /package/{skills → packs/product-manager/skills}/strategy-analysis/evals/eval_queries.json +0 -0
  248. /package/{skills → packs/product-manager/skills}/strategy-analysis/evals/evals.json +0 -0
  249. /package/{skills → packs/product-manager/skills}/strategy-analysis/examples/market-entry-tows.md +0 -0
  250. /package/{skills → packs/product-manager/skills}/strategy-analysis/manifest.json +0 -0
  251. /package/{skills → packs/product-manager/skills}/success-metrics/SKILL.md +0 -0
  252. /package/{skills → packs/product-manager/skills}/success-metrics/evals/eval_queries.json +0 -0
  253. /package/{skills → packs/product-manager/skills}/success-metrics/evals/evals.json +0 -0
  254. /package/{skills → packs/product-manager/skills}/success-metrics/manifest.json +0 -0
  255. /package/{skills → packs/product-manager/skills}/success-metrics/templates/metrics-plan.md +0 -0
  256. /package/{skills → packs/product-manager/skills}/user-journey-map/SKILL.md +0 -0
  257. /package/{skills → packs/product-manager/skills}/user-journey-map/evals/eval_queries.json +0 -0
  258. /package/{skills → packs/product-manager/skills}/user-journey-map/evals/evals.json +0 -0
  259. /package/{skills → packs/product-manager/skills}/user-journey-map/examples/b2b-saas-onboarding.md +0 -0
  260. /package/{skills → packs/product-manager/skills}/user-journey-map/manifest.json +0 -0
  261. /package/{skills → packs/product-manager/skills}/user-journey-map/templates/journey-map.md +0 -0
  262. /package/{loops → packs/solution-architect/loops}/design/evals/eval_queries.json +0 -0
  263. /package/{loops → packs/solution-architect/loops}/design/evals/evals.json +0 -0
  264. /package/{loops → packs/solution-architect/loops}/design/loop.json +0 -0
  265. /package/{skills → packs/solution-architect/skills}/adr-generator/SKILL.md +0 -0
  266. /package/{skills → packs/solution-architect/skills}/adr-generator/evals/eval_queries.json +0 -0
  267. /package/{skills → packs/solution-architect/skills}/adr-generator/evals/evals.json +0 -0
  268. /package/{skills → packs/solution-architect/skills}/adr-generator/manifest.json +0 -0
  269. /package/{skills → packs/solution-architect/skills}/adr-generator/templates/madr.md +0 -0
  270. /package/{skills → packs/solution-architect/skills}/adr-generator/templates/nygard.md +0 -0
  271. /package/{skills → packs/solution-architect/skills}/api-contract-draft/SKILL.md +0 -0
  272. /package/{skills → packs/solution-architect/skills}/api-contract-draft/evals/eval_queries.json +0 -0
  273. /package/{skills → packs/solution-architect/skills}/api-contract-draft/evals/evals.json +0 -0
  274. /package/{skills → packs/solution-architect/skills}/api-contract-draft/manifest.json +0 -0
  275. /package/{skills → packs/solution-architect/skills}/api-contract-draft/reference.md +0 -0
  276. /package/{skills → packs/solution-architect/skills}/api-contract-draft/templates/openapi-skeleton.yaml +0 -0
  277. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/SKILL.md +0 -0
  278. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/evals/eval_queries.json +0 -0
  279. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/evals/evals.json +0 -0
  280. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/examples/aws-three-tier.md +0 -0
  281. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/examples/c4-container-saas.md +0 -0
  282. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/examples/microservices-sequence.md +0 -0
  283. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/manifest.json +0 -0
  284. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/templates/c4-container.puml +0 -0
  285. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/templates/mermaid-aws.md +0 -0
  286. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/templates/mermaid-flowchart.md +0 -0
  287. /package/{skills → packs/solution-architect/skills}/architecture-diagrams/templates/mermaid-sequence.md +0 -0
  288. /package/{skills → packs/solution-architect/skills}/data-contract/SKILL.md +0 -0
  289. /package/{skills → packs/solution-architect/skills}/data-contract/evals/eval_queries.json +0 -0
  290. /package/{skills → packs/solution-architect/skills}/data-contract/evals/evals.json +0 -0
  291. /package/{skills → packs/solution-architect/skills}/data-contract/manifest.json +0 -0
  292. /package/{skills → packs/solution-architect/skills}/data-contract/reference.md +0 -0
  293. /package/{skills → packs/solution-architect/skills}/data-contract/templates/data-contract.md +0 -0
  294. /package/{skills → packs/solution-architect/skills}/db-schema-design/SKILL.md +0 -0
  295. /package/{skills → packs/solution-architect/skills}/db-schema-design/evals/eval_queries.json +0 -0
  296. /package/{skills → packs/solution-architect/skills}/db-schema-design/evals/evals.json +0 -0
  297. /package/{skills → packs/solution-architect/skills}/db-schema-design/manifest.json +0 -0
  298. /package/{skills → packs/solution-architect/skills}/db-schema-design/reference.md +0 -0
  299. /package/{skills → packs/solution-architect/skills}/db-schema-design/templates/schema-design.md +0 -0
  300. /package/{skills → packs/solution-architect/skills}/design-doc/SKILL.md +0 -0
  301. /package/{skills → packs/solution-architect/skills}/design-doc/evals/eval_queries.json +0 -0
  302. /package/{skills → packs/solution-architect/skills}/design-doc/evals/evals.json +0 -0
  303. /package/{skills → packs/solution-architect/skills}/design-doc/manifest.json +0 -0
  304. /package/{skills → packs/solution-architect/skills}/design-doc/templates/design-doc.md +0 -0
  305. /package/{skills → packs/solution-architect/skills}/figma-diagrams/SKILL.md +0 -0
  306. /package/{skills → packs/solution-architect/skills}/figma-diagrams/evals/eval_queries.json +0 -0
  307. /package/{skills → packs/solution-architect/skills}/figma-diagrams/evals/evals.json +0 -0
  308. /package/{skills → packs/solution-architect/skills}/figma-diagrams/manifest.json +0 -0
  309. /package/{skills → packs/solution-architect/skills}/figma-diagrams/reference.md +0 -0
  310. /package/{skills → packs/solution-architect/skills}/figma-diagrams/requirements.txt +0 -0
  311. /package/{skills → packs/solution-architect/skills}/figma-diagrams/scripts/_figma_client.py +0 -0
  312. /package/{skills → packs/solution-architect/skills}/figma-diagrams/scripts/frame_to_mermaid.py +0 -0
  313. /package/{skills → packs/solution-architect/skills}/figma-diagrams/scripts/inspect_file.py +0 -0
  314. /package/{skills → packs/solution-architect/skills}/figma-diagrams/scripts/list_comments.py +0 -0
  315. /package/{skills → packs/solution-architect/skills}/figma-diagrams/scripts/post_comment.py +0 -0
  316. /package/{skills → packs/solution-architect/skills}/figma-diagrams/templates/figjam-import.json +0 -0
  317. /package/{skills → packs/solution-architect/skills}/nfr-spec/SKILL.md +0 -0
  318. /package/{skills → packs/solution-architect/skills}/nfr-spec/evals/eval_queries.json +0 -0
  319. /package/{skills → packs/solution-architect/skills}/nfr-spec/evals/evals.json +0 -0
  320. /package/{skills → packs/solution-architect/skills}/nfr-spec/manifest.json +0 -0
  321. /package/{skills → packs/solution-architect/skills}/nfr-spec/reference.md +0 -0
  322. /package/{skills → packs/solution-architect/skills}/nfr-spec/templates/nfr-spec.md +0 -0
  323. /package/{skills → packs/solution-architect/skills}/reverse-architecture/SKILL.md +0 -0
  324. /package/{skills → packs/solution-architect/skills}/reverse-architecture/evals/eval_queries.json +0 -0
  325. /package/{skills → packs/solution-architect/skills}/reverse-architecture/evals/evals.json +0 -0
  326. /package/{skills → packs/solution-architect/skills}/reverse-architecture/manifest.json +0 -0
  327. /package/{skills → packs/solution-architect/skills}/reverse-architecture/reference.md +0 -0
  328. /package/{skills → packs/solution-architect/skills}/reverse-architecture/templates/description.md +0 -0
  329. /package/{skills → packs/solution-architect/skills}/reverse-architecture/templates/extraction.md +0 -0
  330. /package/{skills → packs/solution-architect/skills}/tech-comparison-matrix/SKILL.md +0 -0
  331. /package/{skills → packs/solution-architect/skills}/tech-comparison-matrix/examples/queue-selection.md +0 -0
  332. /package/{skills → packs/solution-architect/skills}/tech-comparison-matrix/manifest.json +0 -0
  333. /package/{skills → packs/solution-architect/skills}/tech-comparison-matrix/templates/matrix.md +0 -0
  334. /package/{skills → packs/solution-architect/skills}/threat-model/SKILL.md +0 -0
  335. /package/{skills → packs/solution-architect/skills}/threat-model/evals/eval_queries.json +0 -0
  336. /package/{skills → packs/solution-architect/skills}/threat-model/evals/evals.json +0 -0
  337. /package/{skills → packs/solution-architect/skills}/threat-model/examples/document-upload.md +0 -0
  338. /package/{skills → packs/solution-architect/skills}/threat-model/manifest.json +0 -0
  339. /package/{skills → packs/solution-architect/skills}/threat-model/reference.md +0 -0
  340. /package/{loops → packs/sre-oncall/loops}/operate/evals/eval_queries.json +0 -0
  341. /package/{loops → packs/sre-oncall/loops}/operate/evals/evals.json +0 -0
  342. /package/{loops → packs/sre-oncall/loops}/operate/loop.json +0 -0
  343. /package/{skills → packs/sre-oncall/skills}/capacity-cost-model/SKILL.md +0 -0
  344. /package/{skills → packs/sre-oncall/skills}/capacity-cost-model/manifest.json +0 -0
  345. /package/{skills → packs/sre-oncall/skills}/capacity-cost-model/reference.md +0 -0
  346. /package/{skills → packs/sre-oncall/skills}/capacity-cost-model/templates/cost-model.md +0 -0
  347. /package/{skills → packs/sre-oncall/skills}/incident-comms/SKILL.md +0 -0
  348. /package/{skills → packs/sre-oncall/skills}/incident-comms/evals/eval_queries.json +0 -0
  349. /package/{skills → packs/sre-oncall/skills}/incident-comms/evals/evals.json +0 -0
  350. /package/{skills → packs/sre-oncall/skills}/incident-comms/manifest.json +0 -0
  351. /package/{skills → packs/sre-oncall/skills}/incident-comms/reference.md +0 -0
  352. /package/{skills → packs/sre-oncall/skills}/incident-comms/templates/messages.md +0 -0
  353. /package/{skills → packs/sre-oncall/skills}/observability-plan/SKILL.md +0 -0
  354. /package/{skills → packs/sre-oncall/skills}/observability-plan/evals/eval_queries.json +0 -0
  355. /package/{skills → packs/sre-oncall/skills}/observability-plan/evals/evals.json +0 -0
  356. /package/{skills → packs/sre-oncall/skills}/observability-plan/manifest.json +0 -0
  357. /package/{skills → packs/sre-oncall/skills}/observability-plan/reference.md +0 -0
  358. /package/{skills → packs/sre-oncall/skills}/observability-plan/templates/observability-plan.md +0 -0
  359. /package/{skills → packs/sre-oncall/skills}/postmortem-generator/SKILL.md +0 -0
  360. /package/{skills → packs/sre-oncall/skills}/postmortem-generator/evals/eval_queries.json +0 -0
  361. /package/{skills → packs/sre-oncall/skills}/postmortem-generator/evals/evals.json +0 -0
  362. /package/{skills → packs/sre-oncall/skills}/postmortem-generator/manifest.json +0 -0
  363. /package/{skills → packs/sre-oncall/skills}/postmortem-generator/templates/postmortem.md +0 -0
  364. /package/{skills → packs/sre-oncall/skills}/runbook-generator/SKILL.md +0 -0
  365. /package/{skills → packs/sre-oncall/skills}/runbook-generator/evals/eval_queries.json +0 -0
  366. /package/{skills → packs/sre-oncall/skills}/runbook-generator/evals/evals.json +0 -0
  367. /package/{skills → packs/sre-oncall/skills}/runbook-generator/manifest.json +0 -0
  368. /package/{skills → packs/sre-oncall/skills}/runbook-generator/templates/runbook.md +0 -0
  369. /package/{skills → packs/stakeholder-comms/skills}/audience-profile/SKILL.md +0 -0
  370. /package/{skills → packs/stakeholder-comms/skills}/audience-profile/evals/eval_queries.json +0 -0
  371. /package/{skills → packs/stakeholder-comms/skills}/audience-profile/evals/evals.json +0 -0
  372. /package/{skills → packs/stakeholder-comms/skills}/audience-profile/manifest.json +0 -0
  373. /package/{skills → packs/stakeholder-comms/skills}/audience-profile/reference.md +0 -0
  374. /package/{skills → packs/stakeholder-comms/skills}/decision-log/SKILL.md +0 -0
  375. /package/{skills → packs/stakeholder-comms/skills}/decision-log/evals/eval_queries.json +0 -0
  376. /package/{skills → packs/stakeholder-comms/skills}/decision-log/evals/evals.json +0 -0
  377. /package/{skills → packs/stakeholder-comms/skills}/decision-log/manifest.json +0 -0
  378. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/evals/eval_queries.json +0 -0
  379. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/evals/evals.json +0 -0
  380. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/examples/exec-board-update.md +0 -0
  381. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/examples/templated-brand-deck.md +0 -0
  382. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/manifest.json +0 -0
  383. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/reference.md +0 -0
  384. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/requirements.txt +0 -0
  385. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/scripts/build_deck.py +0 -0
  386. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/templates/deck-spec.json +0 -0
  387. /package/{skills → packs/stakeholder-comms/skills}/deck-builder/templates/palettes.json +0 -0
  388. /package/{skills → packs/stakeholder-comms/skills}/exec-summary/SKILL.md +0 -0
  389. /package/{skills → packs/stakeholder-comms/skills}/exec-summary/evals/eval_queries.json +0 -0
  390. /package/{skills → packs/stakeholder-comms/skills}/exec-summary/evals/evals.json +0 -0
  391. /package/{skills → packs/stakeholder-comms/skills}/exec-summary/manifest.json +0 -0
  392. /package/{skills → packs/stakeholder-comms/skills}/exec-summary/templates/exec-summary.md +0 -0
  393. /package/{skills → packs/stakeholder-comms/skills}/guide-builder/SKILL.md +0 -0
  394. /package/{skills → packs/stakeholder-comms/skills}/guide-builder/examples/local-setup-guide.md +0 -0
  395. /package/{skills → packs/stakeholder-comms/skills}/guide-builder/manifest.json +0 -0
  396. /package/{skills → packs/stakeholder-comms/skills}/guide-builder/templates/api-reference.md +0 -0
  397. /package/{skills → packs/stakeholder-comms/skills}/guide-builder/templates/design-walkthrough.md +0 -0
  398. /package/{skills → packs/stakeholder-comms/skills}/guide-builder/templates/setup-guide.md +0 -0
  399. /package/{skills → packs/stakeholder-comms/skills}/slide-outliner/SKILL.md +0 -0
  400. /package/{skills → packs/stakeholder-comms/skills}/slide-outliner/evals/eval_queries.json +0 -0
  401. /package/{skills → packs/stakeholder-comms/skills}/slide-outliner/evals/evals.json +0 -0
  402. /package/{skills → packs/stakeholder-comms/skills}/slide-outliner/manifest.json +0 -0
  403. /package/{skills → packs/stakeholder-comms/skills}/slide-outliner/templates/deck-outline.md +0 -0
package/README.md CHANGED
@@ -20,7 +20,7 @@ Every skill is a plain `SKILL.md` folder — the [**Agent Skills open standard**
20
20
 
21
21
  ## How skilldrop works
22
22
 
23
- skilldrop ships **loops**, not just parts. A loop is a named sequence of stages over existing skills with a gate between them: [`loops/<name>/LOOP.md`](loops/) is what an agent reads, `loop.json` is the machine-readable contract ([RFC-0028](docs/rfcs/0028-loops-as-a-primitive.md)). **Nothing comes out of a loop until it passes that loop's gate.**
23
+ skilldrop ships **loops**, not just parts. A loop is a named sequence of stages over existing skills with a gate between them: [`packs/<pack>/loops/<name>/LOOP.md`](packs/) is what an agent reads, `loop.json` is the machine-readable contract ([RFC-0028](docs/rfcs/0028-loops-as-a-primitive.md)). **Nothing comes out of a loop until it passes that loop's gate.**
24
24
 
25
25
  A loop *sequences* skills — it never contains one. Every skill stays independently installable and runnable on its own, which is what keeps a single-folder copy working in Cursor, Kiro, or Aider.
26
26
 
@@ -28,17 +28,17 @@ Five loops cover the lifecycle, and they are separated by **reversibility** —
28
28
 
29
29
  | Loop | Takes | Gate | Produces | Mistake costs |
30
30
  |---|---|---|---|---|
31
- | [`discover`](loops/discover/LOOP.md) | interviews, journeys, a strategy question | **G0** human — a person ratifies the brief | a ratified requirement | a re-brief |
32
- | [`design`](loops/design/LOOP.md) | a ratified requirement | **G1** review — `council-review`'s panel | a recorded decision (ADR) | months, unwound in code |
33
- | [`build`](loops/build/LOOP.md) | an agreed requirement or triaged defect | **G2** mechanical — `pre-merge-review`'s gate script decides | merged code | a revert |
34
- | [`release`](loops/release/LOOP.md) | merged code | **G2.5** review — `launch-readiness` on evidence; **G2.6** human go/no-go | a live, reversible rollout | users and data, often irreversible |
35
- | [`operate`](loops/operate/LOOP.md) | a shipped service | **G3** human — the incident is closed | a postmortem and runbook deltas | live users, irreversible |
31
+ | [`discover`](packs/product-manager/loops/discover/LOOP.md) | interviews, journeys, a strategy question | **G0** human — a person ratifies the brief | a ratified requirement | a re-brief |
32
+ | [`design`](packs/solution-architect/loops/design/LOOP.md) | a ratified requirement | **G1** review — `council-review`'s panel | a recorded decision (ADR) | months, unwound in code |
33
+ | [`build`](packs/dev-team/loops/build/LOOP.md) | an agreed requirement or triaged defect | **G2** mechanical — `pre-merge-review`'s gate script decides | merged code | a revert |
34
+ | [`release`](packs/dev-team/loops/release/LOOP.md) | merged code | **G2.5** review — `launch-readiness` on evidence; **G2.6** human go/no-go | a live, reversible rollout | users and data, often irreversible |
35
+ | [`operate`](packs/sre-oncall/loops/operate/LOOP.md) | a shipped service | **G3** human — the incident is closed | a postmortem and runbook deltas | live users, irreversible |
36
36
 
37
37
  Plus one **wrapper**, which is not a lifecycle stage but the two passes either side of *any* generator:
38
38
 
39
39
  | Wrapper | Takes | Gate | Produces |
40
40
  |---|---|---|---|
41
- | [`ship-a-draft`](loops/ship-a-draft/LOOP.md) | raw notes, a transcript, a ticket | **G4** review — `doc-critique`'s verdict | a stakeholder-ready artifact |
41
+ | [`ship-a-draft`](packs/core/loops/ship-a-draft/LOOP.md) | raw notes, a transcript, a ticket | **G4** review — `doc-critique`'s verdict | a stakeholder-ready artifact |
42
42
 
43
43
  Every gate emits a verdict from one shared vocabulary ([`contracts/terminals.json`](contracts/terminals.json)) in five classes — pass, conditional, revise, redirect, blocked — so `READY`, `PROCEED` and `SHIP IT` are recognisably the same kind of answer. Both diagrams render on GitHub; the Mermaid sources live in [`docs/`](docs/) for easy re-rendering.
44
44
 
@@ -112,7 +112,7 @@ flowchart LR
112
112
 
113
113
  ### `build` — a requirement to merged code
114
114
 
115
- A vertical slice becomes shippable code through a self-correcting loop, gated by a script whose exit code decides. The inner generate-challenge cycle is the [`feature-implement-loop`](skills/feature-implement-loop/SKILL.md) skill.
115
+ A vertical slice becomes shippable code through a self-correcting loop, gated by a script whose exit code decides. The inner generate-challenge cycle is the [`feature-implement-loop`](packs/dev-team/skills/feature-implement-loop/SKILL.md) skill.
116
116
 
117
117
  <!-- loop:build:start -->
118
118
 
@@ -250,9 +250,9 @@ flowchart LR
250
250
 
251
251
  | Skill | What it does |
252
252
  |---|---|
253
- | [`brief-intake`](skills/brief-intake/SKILL.md) | Upstream collector. Takes raw mess — a Slack thread, meeting transcript, ticket, email chain, paragraph of notes — and emits a structured brief shaped for whichever downstream skill comes next (ADR, design doc, runbook, exec summary, deck, comparison matrix, decision log). Every field is tagged `[explicit] / [implied] / [inferred] / [missing]` with verbatim quotes from the source. |
254
- | [`doc-critique`](skills/doc-critique/SKILL.md) | Counterpart reviewer. Takes an existing doc (ADR, design doc, runbook, exec summary, comparison matrix, deck, decision log) and produces a structured critique against the same rubrics the generators enforce — verdict + severity-tagged findings (blocker / major / minor / nit) with quoted evidence and concrete fixes, plus a "what's working" section. |
255
- | [`output-hygiene`](skills/output-hygiene/SKILL.md) | Pre-ship surface pass. Runs a stdlib-only script over agent-written text to find what the machine put there — invisible Unicode, non-breaking spaces, homoglyphs, harness-added provenance trailers, trailing chat closers — reporting each with its codepoint and line, then sweeps the prose for the tells a script cannot see and quotes every one with a rewrite. Separates what is safe to auto-apply from what needs a decision, and holds the provenance class where an academic, employer, or contribution policy requires disclosure. |
253
+ | [`brief-intake`](packs/core/skills/brief-intake/SKILL.md) | Upstream collector. Takes raw mess — a Slack thread, meeting transcript, ticket, email chain, paragraph of notes — and emits a structured brief shaped for whichever downstream skill comes next (ADR, design doc, runbook, exec summary, deck, comparison matrix, decision log). Every field is tagged `[explicit] / [implied] / [inferred] / [missing]` with verbatim quotes from the source. |
254
+ | [`doc-critique`](packs/core/skills/doc-critique/SKILL.md) | Counterpart reviewer. Takes an existing doc (ADR, design doc, runbook, exec summary, comparison matrix, deck, decision log) and produces a structured critique against the same rubrics the generators enforce — verdict + severity-tagged findings (blocker / major / minor / nit) with quoted evidence and concrete fixes, plus a "what's working" section. |
255
+ | [`output-hygiene`](packs/core/skills/output-hygiene/SKILL.md) | Pre-ship surface pass. Runs a stdlib-only script over agent-written text to find what the machine put there — invisible Unicode, non-breaking spaces, homoglyphs, harness-added provenance trailers, trailing chat closers — reporting each with its codepoint and line, then sweeps the prose for the tells a script cannot see and quotes every one with a rewrite. Separates what is safe to auto-apply from what needs a decision, and holds the provenance class where an academic, employer, or contribution policy requires disclosure. |
256
256
 
257
257
  ### Planning & delivery
258
258
 
@@ -260,18 +260,18 @@ Skills for the SDLC steps around the code itself — turning raw requirements in
260
260
 
261
261
  | Skill | What it does |
262
262
  |---|---|
263
- | [`capacity-cost-model`](skills/capacity-cost-model/SKILL.md) | Build a capacity and cost model for a service or feature — sized from a **demand driver and its growth curve**, never from a chosen instance count. Everything expressed as **unit economics** (cost per request / tenant / GB, so it projects and optimizes); peak-vs-average and headroom written as explicit money-vs-incident decisions; cost at **1×/3×/10× with the scaling cliffs named** (tier jumps, cross-AZ egress, single-node→sharded) instead of a linear extrapolation that hides them; the **forgotten line items** checklisted (egress, observability ingestion, backups×retention×copies, non-prod, always-on NAT/LB) because their absence is what makes a model land 40% low; cost-drivers ranked; ranges not false precision; and a unit-cost-at-scale check that flags rising per-unit cost as an architecture problem. |
264
- | [`business-case`](skills/business-case/SKILL.md) | Business case for a build/buy/defer investment decision, written so a sponsor can approve, challenge, or kill it on its merits. **Option 0 (do nothing) always present and costed**; every benefit is a re-runnable calculation with sourced inputs and a confidence tag (adjective benefits don't survive); all three cost layers per option — build, run (the year-2+ layer where cases go to die), and opportunity with the displaced work named; **ranges instead of false precision** ("327% ROI" from three guesses fails the doc); the **flip-assumption** identified with a de-risking step when confidence is low; a singular committal recommendation that states the runner-up's best argument fairly; and the ask in the first 40 words. |
265
- | [`requirements-interview`](skills/requirements-interview/SKILL.md) | Per-stakeholder interview kits for feature discovery — sponsor, end users, ops/support, security/legal, finance — built only for stakeholders holding *open* unknowns. ≤7 questions per kit ranked by design impact, each annotated with the decision it informs and how the answer moves the design; problems-and-the-past phrasing only ("the last time", never "would you use…"); a mandatory **kill-question** per script with what a kill-answer looks like; and an assumptions-to-validate ledger where every assumption has a falsification condition (or gets flagged as needing data/prototype instead). Notes flow to `brief-intake` → `prd-draft`. |
266
- | [`prd-draft`](skills/prd-draft/SKILL.md) | Draft a Product Requirements Document from a feature idea or `brief-intake` output — the missing link before design starts. Problem statement with **zero solution nouns** (tested: could it justify a different solution than the one in everyone's head?), personas specific enough to find one, a measurable "we'll know it worked when" line per goal, testable MoSCoW-prioritized requirements with a mandatory Won't-have list, **minimum 3 non-goals** (the scope-creep firewall), open questions with owners and dates, and every claim tagged `[reported by …]` / `[data: …]` / `[assumption]`. Sized for a 30-minute read; hands off to `user-story-splitter`, `nfr-spec`, `success-metrics`, and `design-doc`. |
267
- | [`nfr-spec`](skills/nfr-spec/SKILL.md) | Sweep a feature through the full non-functional-requirements catalog — performance, throughput, availability/SLO, durability/DR, privacy/retention, accessibility, i18n, observability, operability, compatibility, cost. Every category lands in exactly one of three states: measurable target with a verification method, explicit n/a with a reason, or archetype default tagged `[assumption]` — silence is forbidden, and the output ledger proves the sweep happened. Targets are calibrated by system archetype and the "what happens if it's down for an hour" answer (anti-five-nines-cargo-cult); retention/deletion is first-class per data class; observability is written as 3am questions, not tool names. Feeds `design-doc`, `test-plan-generator`, and `threat-model`. |
268
- | [`success-metrics`](skills/success-metrics/SKILL.md) | Define how a feature's success will be measured *before* it's built. Exactly one primary metric — an outcome, not an output or vanity count — with baseline, target, and timeframe (no baseline? measuring it becomes milestone 1); leading indicators for steering; guardrails with current values and alert thresholds; a **counter-metric** naming how the primary could be gamed and what catches it; an instrumentation plan where every metric maps to a named event marked exists/must-build (must-build = launch blocker, not fast-follow); and a **pre-committed, action-shaped decision rule** so a missed target triggers an agreed action instead of a "directionally positive" debate. |
269
- | [`user-story-splitter`](skills/user-story-splitter/SKILL.md) | Split an epic, feature request, or PRD chunk into independently shippable vertical-slice user stories — SPIDR slicing patterns, walking-skeleton-first build order, 3–7 Gherkin acceptance criteria per story (always including an edge case), tagged `[assumption]`s, and an explicit "out of scope / not covered" ledger so nothing silently disappears. Each emitted story is shaped to hand straight to `feature-implement-loop`. |
270
- | [`test-plan-generator`](skills/test-plan-generator/SKILL.md) | Generate a risk-based test plan for a feature, PR, or release. Risks ranked likelihood × impact before any test case is written (effort tracks priority); each case pushed to the lowest pyramid level that catches the failure (unit > integration > e2e, with e2e placement justified); every acceptance criterion mapped in a coverage table; edge-case taxonomy sweep (boundaries, idempotency, concurrency, dependency failure, timezones, …); observable entry/exit criteria; and a mandatory "Not tested — accepted risks" section. Takes `user-story-splitter` output, a diff/PR, or a prose brief. |
271
- | [`release-notes`](skills/release-notes/SKILL.md) | Turn git history between two refs (default: last tag → HEAD) into two artifacts: customer-facing release notes rewritten in reader benefits — no commit-speak, no ticket IDs, no "various improvements" — and an internal Keep-a-Changelog version with a commit hash on every line. Breaking changes hoisted to the top of both with an "Action required" line (detected via `!:` markers, removed public API, migration files, major bumps); internal noise (refactors, CI, deps) never leaks into customer notes; vague commits land in a "Needs review" list instead of being guessed at. |
272
- | [`bug-triage`](skills/bug-triage/SKILL.md) | Turn a vague bug report ("it's broken on mobile sometimes") into a ticket an engineer can start without contacting the reporter: searchable symptom-plus-condition title, numbered repro steps from a clean state (or an explicit "no repro yet" with the exact diagnostics to collect), expected-vs-actual with the verbatim error string, every claim tagged `[reported]` / `[verified]` / `[assumption]`, severity and priority judged independently (S4/P1 is a legitimate combination), ≤3 hypotheses each with a 5-minute check, and duplicate-search hints. One bug per ticket — multi-symptom reports get split. |
273
- | [`migration-plan`](skills/migration-plan/SKILL.md) | Phased migration/rollout plan (schema change with live backfill, API version, datastore/auth/platform swap) built on the parallel-change pattern: expand → migrate → contract. One change per phase (a failed phase implicates exactly one thing); every phase carries an observable gate with bake time, a tested rollback with an explicit data story, and a blast radius; at most one **named point of no return**; backfill specified idempotent + resumable + rate-limited with 3-depth parity checks; dual-write requires a named reconciler; the contract phase gets a date and an owner so "we'll remove the old path later" actually happens. |
274
- | [`launch-readiness`](skills/launch-readiness/SKILL.md) | Go/no-go readiness report for a merged change before it reaches users. It lists the change's own failure modes first, then judges seven checks in order: rollback, detection, response, measured NFR targets, data & privacy, comms, staged exposure. Each row is met / not met / n/a-with-reason, with an evidence link and an owner role, and a row with no evidence is `not met`. The verdict (PROCEED / PROCEED WITH CONDITIONS / REVISE / BLOCKED) follows mechanically from the rows, and a missing rollback blocks on its own. Gaps go to `migration-plan`, `observability-plan` or `runbook-generator` instead of being drafted inline. The `ready` stage of the `release` loop. |
263
+ | [`capacity-cost-model`](packs/sre-oncall/skills/capacity-cost-model/SKILL.md) | Build a capacity and cost model for a service or feature — sized from a **demand driver and its growth curve**, never from a chosen instance count. Everything expressed as **unit economics** (cost per request / tenant / GB, so it projects and optimizes); peak-vs-average and headroom written as explicit money-vs-incident decisions; cost at **1×/3×/10× with the scaling cliffs named** (tier jumps, cross-AZ egress, single-node→sharded) instead of a linear extrapolation that hides them; the **forgotten line items** checklisted (egress, observability ingestion, backups×retention×copies, non-prod, always-on NAT/LB) because their absence is what makes a model land 40% low; cost-drivers ranked; ranges not false precision; and a unit-cost-at-scale check that flags rising per-unit cost as an architecture problem. |
264
+ | [`business-case`](packs/product-manager/skills/business-case/SKILL.md) | Business case for a build/buy/defer investment decision, written so a sponsor can approve, challenge, or kill it on its merits. **Option 0 (do nothing) always present and costed**; every benefit is a re-runnable calculation with sourced inputs and a confidence tag (adjective benefits don't survive); all three cost layers per option — build, run (the year-2+ layer where cases go to die), and opportunity with the displaced work named; **ranges instead of false precision** ("327% ROI" from three guesses fails the doc); the **flip-assumption** identified with a de-risking step when confidence is low; a singular committal recommendation that states the runner-up's best argument fairly; and the ask in the first 40 words. |
265
+ | [`requirements-interview`](packs/product-manager/skills/requirements-interview/SKILL.md) | Per-stakeholder interview kits for feature discovery — sponsor, end users, ops/support, security/legal, finance — built only for stakeholders holding *open* unknowns. ≤7 questions per kit ranked by design impact, each annotated with the decision it informs and how the answer moves the design; problems-and-the-past phrasing only ("the last time", never "would you use…"); a mandatory **kill-question** per script with what a kill-answer looks like; and an assumptions-to-validate ledger where every assumption has a falsification condition (or gets flagged as needing data/prototype instead). Notes flow to `brief-intake` → `prd-draft`. |
266
+ | [`prd-draft`](packs/product-manager/skills/prd-draft/SKILL.md) | Draft a Product Requirements Document from a feature idea or `brief-intake` output — the missing link before design starts. Problem statement with **zero solution nouns** (tested: could it justify a different solution than the one in everyone's head?), personas specific enough to find one, a measurable "we'll know it worked when" line per goal, testable MoSCoW-prioritized requirements with a mandatory Won't-have list, **minimum 3 non-goals** (the scope-creep firewall), open questions with owners and dates, and every claim tagged `[reported by …]` / `[data: …]` / `[assumption]`. Sized for a 30-minute read; hands off to `user-story-splitter`, `nfr-spec`, `success-metrics`, and `design-doc`. |
267
+ | [`nfr-spec`](packs/solution-architect/skills/nfr-spec/SKILL.md) | Sweep a feature through the full non-functional-requirements catalog — performance, throughput, availability/SLO, durability/DR, privacy/retention, accessibility, i18n, observability, operability, compatibility, cost. Every category lands in exactly one of three states: measurable target with a verification method, explicit n/a with a reason, or archetype default tagged `[assumption]` — silence is forbidden, and the output ledger proves the sweep happened. Targets are calibrated by system archetype and the "what happens if it's down for an hour" answer (anti-five-nines-cargo-cult); retention/deletion is first-class per data class; observability is written as 3am questions, not tool names. Feeds `design-doc`, `test-plan-generator`, and `threat-model`. |
268
+ | [`success-metrics`](packs/product-manager/skills/success-metrics/SKILL.md) | Define how a feature's success will be measured *before* it's built. Exactly one primary metric — an outcome, not an output or vanity count — with baseline, target, and timeframe (no baseline? measuring it becomes milestone 1); leading indicators for steering; guardrails with current values and alert thresholds; a **counter-metric** naming how the primary could be gamed and what catches it; an instrumentation plan where every metric maps to a named event marked exists/must-build (must-build = launch blocker, not fast-follow); and a **pre-committed, action-shaped decision rule** so a missed target triggers an agreed action instead of a "directionally positive" debate. |
269
+ | [`user-story-splitter`](packs/dev-team/skills/user-story-splitter/SKILL.md) | Split an epic, feature request, or PRD chunk into independently shippable vertical-slice user stories — SPIDR slicing patterns, walking-skeleton-first build order, 3–7 Gherkin acceptance criteria per story (always including an edge case), tagged `[assumption]`s, and an explicit "out of scope / not covered" ledger so nothing silently disappears. Each emitted story is shaped to hand straight to `feature-implement-loop`. |
270
+ | [`test-plan-generator`](packs/dev-team/skills/test-plan-generator/SKILL.md) | Generate a risk-based test plan for a feature, PR, or release. Risks ranked likelihood × impact before any test case is written (effort tracks priority); each case pushed to the lowest pyramid level that catches the failure (unit > integration > e2e, with e2e placement justified); every acceptance criterion mapped in a coverage table; edge-case taxonomy sweep (boundaries, idempotency, concurrency, dependency failure, timezones, …); observable entry/exit criteria; and a mandatory "Not tested — accepted risks" section. Takes `user-story-splitter` output, a diff/PR, or a prose brief. |
271
+ | [`release-notes`](packs/dev-team/skills/release-notes/SKILL.md) | Turn git history between two refs (default: last tag → HEAD) into two artifacts: customer-facing release notes rewritten in reader benefits — no commit-speak, no ticket IDs, no "various improvements" — and an internal Keep-a-Changelog version with a commit hash on every line. Breaking changes hoisted to the top of both with an "Action required" line (detected via `!:` markers, removed public API, migration files, major bumps); internal noise (refactors, CI, deps) never leaks into customer notes; vague commits land in a "Needs review" list instead of being guessed at. |
272
+ | [`bug-triage`](packs/dev-team/skills/bug-triage/SKILL.md) | Turn a vague bug report ("it's broken on mobile sometimes") into a ticket an engineer can start without contacting the reporter: searchable symptom-plus-condition title, numbered repro steps from a clean state (or an explicit "no repro yet" with the exact diagnostics to collect), expected-vs-actual with the verbatim error string, every claim tagged `[reported]` / `[verified]` / `[assumption]`, severity and priority judged independently (S4/P1 is a legitimate combination), ≤3 hypotheses each with a 5-minute check, and duplicate-search hints. One bug per ticket — multi-symptom reports get split. |
273
+ | [`migration-plan`](packs/dev-team/skills/migration-plan/SKILL.md) | Phased migration/rollout plan (schema change with live backfill, API version, datastore/auth/platform swap) built on the parallel-change pattern: expand → migrate → contract. One change per phase (a failed phase implicates exactly one thing); every phase carries an observable gate with bake time, a tested rollback with an explicit data story, and a blast radius; at most one **named point of no return**; backfill specified idempotent + resumable + rate-limited with 3-depth parity checks; dual-write requires a named reconciler; the contract phase gets a date and an owner so "we'll remove the old path later" actually happens. |
274
+ | [`launch-readiness`](packs/dev-team/skills/launch-readiness/SKILL.md) | Go/no-go readiness report for a merged change before it reaches users. It lists the change's own failure modes first, then judges seven checks in order: rollback, detection, response, measured NFR targets, data & privacy, comms, staged exposure. Each row is met / not met / n/a-with-reason, with an evidence link and an owner role, and a row with no evidence is `not met`. The verdict (PROCEED / PROCEED WITH CONDITIONS / REVISE / BLOCKED) follows mechanically from the rows, and a missing rollback blocks on its own. Gaps go to `migration-plan`, `observability-plan` or `runbook-generator` instead of being drafted inline. The `ready` stage of the `release` loop. |
275
275
 
276
276
  ### Product strategy
277
277
 
@@ -279,46 +279,46 @@ Skills for the direction-setting layer above any single feature — testing whet
279
279
 
280
280
  | Skill | What it does |
281
281
  |---|---|
282
- | [`prfaq`](skills/prfaq/SKILL.md) | Write an Amazon-style PR/FAQ — the launch press release for a product that doesn't exist yet, plus customer and internal FAQs that force the hard questions before engineering starts. Problem stated in the customer's words (no jargon-laundering); solution names a **mechanism**, not a category; an **adoption hypothesis** with a behavioral first-success event (never "ships to beta" — that's the team's action, not the customer's); at least one customer-FAQ answer concedes a real trade-off; the internal FAQ names the riskiest assumption, a concrete acquisition path, a success metric that counts the first-success event, and a **kill condition**. Zero spec content — hands off to `prd-draft` or `business-case` if the idea survives. |
283
- | [`strategy-analysis`](skills/strategy-analysis/SKILL.md) | Run a strategy framework — SWOT/TOWS, Porter's Five Forces, or PESTLE — chosen to fit the question, not the request (a "SWOT" that's really "should we enter this market" gets Five Forces suggested). Every cell must be **specific, evidence-tagged, and carry a so-what** — horoscope cells ("strong team") are banned; SWOT never ships without TOWS crossings; every Five Forces rating names the mechanism (who holds the power and why). Ends with **ranked, action-shaped implications** tied to a named decision and a verdict that takes a side and states what would change it. |
284
- | [`okr-cascade`](skills/okr-cascade/SKILL.md) | Cascade company OKRs to team level with the two things cascades usually hide: a **ranked gap registry** (objectives no team credibly owns) and a **causal metric tree** (Mermaid) connecting every team KR to the north-star via a written causal sentence. Output KRs flagged at intake ("launch v2" → what outcome does it serve?); every team KR scorable 0.0–1.0 and measurable at the team's own scope; no alignment theater (teams with no credible contribution to an objective simply don't appear under it); company OKRs kept verbatim so the roll-up stays honest. Org-level counterpart to `success-metrics`, which takes each team KR into full feature-level measurement design. |
282
+ | [`prfaq`](packs/product-manager/skills/prfaq/SKILL.md) | Write an Amazon-style PR/FAQ — the launch press release for a product that doesn't exist yet, plus customer and internal FAQs that force the hard questions before engineering starts. Problem stated in the customer's words (no jargon-laundering); solution names a **mechanism**, not a category; an **adoption hypothesis** with a behavioral first-success event (never "ships to beta" — that's the team's action, not the customer's); at least one customer-FAQ answer concedes a real trade-off; the internal FAQ names the riskiest assumption, a concrete acquisition path, a success metric that counts the first-success event, and a **kill condition**. Zero spec content — hands off to `prd-draft` or `business-case` if the idea survives. |
283
+ | [`strategy-analysis`](packs/product-manager/skills/strategy-analysis/SKILL.md) | Run a strategy framework — SWOT/TOWS, Porter's Five Forces, or PESTLE — chosen to fit the question, not the request (a "SWOT" that's really "should we enter this market" gets Five Forces suggested). Every cell must be **specific, evidence-tagged, and carry a so-what** — horoscope cells ("strong team") are banned; SWOT never ships without TOWS crossings; every Five Forces rating names the mechanism (who holds the power and why). Ends with **ranked, action-shaped implications** tied to a named decision and a verdict that takes a side and states what would change it. |
284
+ | [`okr-cascade`](packs/product-manager/skills/okr-cascade/SKILL.md) | Cascade company OKRs to team level with the two things cascades usually hide: a **ranked gap registry** (objectives no team credibly owns) and a **causal metric tree** (Mermaid) connecting every team KR to the north-star via a written causal sentence. Output KRs flagged at intake ("launch v2" → what outcome does it serve?); every team KR scorable 0.0–1.0 and measurable at the team's own scope; no alignment theater (teams with no credible contribution to an objective simply don't appear under it); company OKRs kept verbatim so the roll-up stays honest. Org-level counterpart to `success-metrics`, which takes each team KR into full feature-level measurement design. |
285
285
 
286
286
  ### Dev workflow
287
287
 
288
288
  | Skill | What it does |
289
289
  |---|---|
290
- | [`feature-implement-loop`](skills/feature-implement-loop/SKILL.md) | Implement a feature/story so it ends up *verified*, not just generated. Takes a description + acceptance criteria, writes code and tests, then runs a review panel (delegating to the `devils-advocate`, `security-reviewer`, and `code-quality` subagents in parallel where available, sweeping the lenses inline elsewhere) to find gaps — broken edge cases, baked-in assumptions, acceptance criteria with no asserting test — and re-generates to close them. Loops until the review is clean or a hard 3-round cap is hit, then reports status (`VERIFIED` / `VERIFIED WITH OPEN ITEMS` / `BLOCKED`), an acceptance-criteria coverage table, and a per-round log. The build-cycle counterpart to the artifact pipeline. |
291
- | [`pre-merge-review`](skills/pre-merge-review/SKILL.md) | Gate an existing change before merge with **one** command that fires the whole review fleet: a deterministic **mechanical gate** (`scripts/gate.py` runs the project's lint + typecheck + tests; its exit code decides — un-bypassable) **and** the three-reviewer panel — `devils-advocate` (correctness), `security-reviewer` (exploitability), `code-quality` (craft) — dispatched in parallel, then a single **READY / NOT READY** verdict (READY only when the gate is green *and* no blocker/major stands). Where `feature-implement-loop` *generates* and loops, this *judges* a diff you already have; design disagreements escalate to `council-review`. |
292
- | [`devils-advocate`](skills/devils-advocate/SKILL.md) | Adversarial review of *just-generated* code, run right after an agent (or human) declares a feature done. Sweeps four lenses — edge cases the first pass missed, assumptions baked in that won't survive 6 months, what a staff engineer would push back on in review (concurrency, error handling, security, observability, blast radius), and test-coverage gaps. Produces severity-tagged findings (blocker / major / minor / nit) with file:line evidence, reproducible scenarios, and concrete fixes — plus a "what's solid" section. The code counterpart to `doc-critique`. |
293
- | [`council-review`](skills/council-review/SKILL.md) | The "Claude Council." Convenes five distinct senior-engineer personas — 🏛 Architect, 🔒 Security, 🛠 Operator/SRE, ⚖️ Pragmatist, 👤 User-Advocate (plus optional bench seats: Performance, Cost, Data & Migration, Accessibility, Compliance) — to deliberate a decision, design, or code change. Each seat takes an independent stance (🟢 support / 🟡 conditions / 🔴 oppose / ⚪ abstain) with evidence; the genuine disagreements surface as named **cruxes**; a **Chair** issues a reconciled verdict (PROCEED / WITH CONDITIONS / REVISE / RECONSIDER / SPLIT) that names the tradeoff chosen, records dissent, and states what would change the decision. Where `devils-advocate` is one voice, the council is many that can disagree. Use for architecture decisions, risky changes before merge, RFC scrutiny, "should we adopt X?", or a pre-mortem. |
294
- | [`threat-model`](skills/threat-model/SKILL.md) | STRIDE threat model from a design doc, architecture description, or `reverse-architecture` output — *before* the code exists. Establishes assets / entry points / trust boundaries first, runs STRIDE per boundary crossing, and writes every threat as a concrete actor → path → result scenario (severity 🟥/🟧/🟨/⚪ calibrated to *this* system's assets, not CVSS theater). Credits existing mitigations as verified-vs-assumed, attaches a verification step to every recommendation, and forces the two classic blind-spot sweeps: authz (tenant→tenant, authn ≠ authz) and insider/compromised-credential. Design-phase counterpart to `devils-advocate`. |
295
- | [`accessibility-audit`](skills/accessibility-audit/SKILL.md) | Adversarial WCAG 2.2 AA audit of a UI — component code, page markup, screenshot, or a described flow. The UI counterpart to `devils-advocate`: every finding cites a **specific success criterion** (number + name + level), names the **user group and assistive tech it blocks** (no victim, no finding), is severity-tagged by task-completion impact (🟥 blocker → ⚪ nit), and carries a concrete fix. Computes real contrast ratios (not eyeballing), sweeps the high-yield checks scanners miss (focus order, name/role/value, alt-text *quality*, error recovery, reflow, target size), tags each finding `[auto]` vs `[manual]` so CI-gateable issues are split from the human-only ones, and states the input's coverage limits — a screenshot audit never claims keyboard operability passes. Ships the WCAG catalog and a worked example. |
296
- | [`sonar-onboard`](skills/sonar-onboard/SKILL.md) | One-shot scaffold to make a repo Sonar-compliant. Supports both **SonarQube server** (self-hosted) and **SonarCloud** (SaaS) — user picks at setup. Emits `sonar-project.properties` with language-detected source/test/coverage paths, a GitHub Actions workflow that runs the scanner on push + PR and blocks merge on quality-gate failure, and a README snippet documenting the gate. |
297
- | [`sonar-review`](skills/sonar-review/SKILL.md) | Per-change Sonar compliance review. Runs the scanner against the current branch, fetches the quality-gate verdict + issues + security hotspots from the Sonar API, and produces a structured markdown report scoped to changed files: gate PASS/FAIL on top, then severity-tagged findings (🟥 blocker / 🟧 critical / 🟨 major / ⚪ minor) grouped into five lenses (bugs, vulnerabilities, security hotspots, code smells, coverage + duplication), each with file:line, the Sonar rule ID, why it matters, and a concrete fix. Auto-detects server vs cloud from `sonar-project.properties`. Sister skill to `devils-advocate`. |
290
+ | [`feature-implement-loop`](packs/dev-team/skills/feature-implement-loop/SKILL.md) | Implement a feature/story so it ends up *verified*, not just generated. Takes a description + acceptance criteria, writes code and tests, then runs a review panel (delegating to the `devils-advocate`, `security-reviewer`, and `code-quality` subagents in parallel where available, sweeping the lenses inline elsewhere) to find gaps — broken edge cases, baked-in assumptions, acceptance criteria with no asserting test — and re-generates to close them. Loops until the review is clean or a hard 3-round cap is hit, then reports status (`VERIFIED` / `VERIFIED WITH OPEN ITEMS` / `BLOCKED`), an acceptance-criteria coverage table, and a per-round log. The build-cycle counterpart to the artifact pipeline. |
291
+ | [`pre-merge-review`](packs/dev-team/skills/pre-merge-review/SKILL.md) | Gate an existing change before merge with **one** command that fires the whole review fleet: a deterministic **mechanical gate** (`scripts/gate.py` runs the project's lint + typecheck + tests; its exit code decides — un-bypassable) **and** the three-reviewer panel — `devils-advocate` (correctness), `security-reviewer` (exploitability), `code-quality` (craft) — dispatched in parallel, then a single **READY / NOT READY** verdict (READY only when the gate is green *and* no blocker/major stands). Where `feature-implement-loop` *generates* and loops, this *judges* a diff you already have; design disagreements escalate to `council-review`. |
292
+ | [`devils-advocate`](packs/dev-team/skills/devils-advocate/SKILL.md) | Adversarial review of *just-generated* code, run right after an agent (or human) declares a feature done. Sweeps four lenses — edge cases the first pass missed, assumptions baked in that won't survive 6 months, what a staff engineer would push back on in review (concurrency, error handling, security, observability, blast radius), and test-coverage gaps. Produces severity-tagged findings (blocker / major / minor / nit) with file:line evidence, reproducible scenarios, and concrete fixes — plus a "what's solid" section. The code counterpart to `doc-critique`. |
293
+ | [`council-review`](packs/core/skills/council-review/SKILL.md) | The "Claude Council." Convenes five distinct senior-engineer personas — 🏛 Architect, 🔒 Security, 🛠 Operator/SRE, ⚖️ Pragmatist, 👤 User-Advocate (plus optional bench seats: Performance, Cost, Data & Migration, Accessibility, Compliance) — to deliberate a decision, design, or code change. Each seat takes an independent stance (🟢 support / 🟡 conditions / 🔴 oppose / ⚪ abstain) with evidence; the genuine disagreements surface as named **cruxes**; a **Chair** issues a reconciled verdict (PROCEED / WITH CONDITIONS / REVISE / RECONSIDER / SPLIT) that names the tradeoff chosen, records dissent, and states what would change the decision. Where `devils-advocate` is one voice, the council is many that can disagree. Use for architecture decisions, risky changes before merge, RFC scrutiny, "should we adopt X?", or a pre-mortem. |
294
+ | [`threat-model`](packs/solution-architect/skills/threat-model/SKILL.md) | STRIDE threat model from a design doc, architecture description, or `reverse-architecture` output — *before* the code exists. Establishes assets / entry points / trust boundaries first, runs STRIDE per boundary crossing, and writes every threat as a concrete actor → path → result scenario (severity 🟥/🟧/🟨/⚪ calibrated to *this* system's assets, not CVSS theater). Credits existing mitigations as verified-vs-assumed, attaches a verification step to every recommendation, and forces the two classic blind-spot sweeps: authz (tenant→tenant, authn ≠ authz) and insider/compromised-credential. Design-phase counterpart to `devils-advocate`. |
295
+ | [`accessibility-audit`](packs/dev-team/skills/accessibility-audit/SKILL.md) | Adversarial WCAG 2.2 AA audit of a UI — component code, page markup, screenshot, or a described flow. The UI counterpart to `devils-advocate`: every finding cites a **specific success criterion** (number + name + level), names the **user group and assistive tech it blocks** (no victim, no finding), is severity-tagged by task-completion impact (🟥 blocker → ⚪ nit), and carries a concrete fix. Computes real contrast ratios (not eyeballing), sweeps the high-yield checks scanners miss (focus order, name/role/value, alt-text *quality*, error recovery, reflow, target size), tags each finding `[auto]` vs `[manual]` so CI-gateable issues are split from the human-only ones, and states the input's coverage limits — a screenshot audit never claims keyboard operability passes. Ships the WCAG catalog and a worked example. |
296
+ | [`sonar-onboard`](packs/dev-team/skills/sonar-onboard/SKILL.md) | One-shot scaffold to make a repo Sonar-compliant. Supports both **SonarQube server** (self-hosted) and **SonarCloud** (SaaS) — user picks at setup. Emits `sonar-project.properties` with language-detected source/test/coverage paths, a GitHub Actions workflow that runs the scanner on push + PR and blocks merge on quality-gate failure, and a README snippet documenting the gate. |
297
+ | [`sonar-review`](packs/dev-team/skills/sonar-review/SKILL.md) | Per-change Sonar compliance review. Runs the scanner against the current branch, fetches the quality-gate verdict + issues + security hotspots from the Sonar API, and produces a structured markdown report scoped to changed files: gate PASS/FAIL on top, then severity-tagged findings (🟥 blocker / 🟧 critical / 🟨 major / ⚪ minor) grouped into five lenses (bugs, vulnerabilities, security hotspots, code smells, coverage + duplication), each with file:line, the Sonar rule ID, why it matters, and a concrete fix. Auto-detects server vs cloud from `sonar-project.properties`. Sister skill to `devils-advocate`. |
298
298
 
299
299
  ### Diagrams
300
300
 
301
301
  | Skill | What it does |
302
302
  |---|---|
303
- | [`architecture-diagrams`](skills/architecture-diagrams/SKILL.md) | Turn a written description of a system into a renderable Mermaid, PlantUML, or C4 diagram. Supports AWS / Azure / GCP cloud shapes, sequence flows, container diagrams, and ER models. |
304
- | [`reverse-architecture`](skills/reverse-architecture/SKILL.md) | Reverse-engineer a system's "as-is" architecture from existing code, IaC (Terraform / CloudFormation / CDK / Pulumi / Bicep), Kubernetes manifests, docker-compose, package manifests, database schema, or OpenAPI. Emits a structured node/edge extraction, a written description suitable for `architecture-diagrams`, and a first-draft Mermaid / C4 diagram with every node tied to a source-of-truth file path. |
305
- | [`figma-diagrams`](skills/figma-diagrams/SKILL.md) | Read structure from existing Figma/FigJam files and produce FigJam-importable diagram specs (and comments) via the Figma REST API. Useful when your final deliverable lives in Figma. |
306
- | [`user-journey-map`](skills/user-journey-map/SKILL.md) | Map one persona's end-to-end journey toward one outcome — 3–6 goal-phase stages (never one-per-screen), each with actions / reasoned emotion scores / pains / **outcome-shaped opportunities** (no solutioning — "add SSO" belongs downstream), rendered as a Mermaid `journey` emotion arc. Declares its **evidence level** up front (`[observational]` / `[survey/analytics]` / `[assumption-based]`) so a hypothesis never masquerades as research; marks the steepest dips, the peak, and the *ending* emotion (peak-end rule); and ranks opportunities down to **1–2 named improvement targets** instead of an unranked pain inventory. Hands committed targets to `prd-draft` / `user-story-splitter` and measurement to `success-metrics`. |
303
+ | [`architecture-diagrams`](packs/solution-architect/skills/architecture-diagrams/SKILL.md) | Turn a written description of a system into a renderable Mermaid, PlantUML, or C4 diagram. Supports AWS / Azure / GCP cloud shapes, sequence flows, container diagrams, and ER models. |
304
+ | [`reverse-architecture`](packs/solution-architect/skills/reverse-architecture/SKILL.md) | Reverse-engineer a system's "as-is" architecture from existing code, IaC (Terraform / CloudFormation / CDK / Pulumi / Bicep), Kubernetes manifests, docker-compose, package manifests, database schema, or OpenAPI. Emits a structured node/edge extraction, a written description suitable for `architecture-diagrams`, and a first-draft Mermaid / C4 diagram with every node tied to a source-of-truth file path. |
305
+ | [`figma-diagrams`](packs/solution-architect/skills/figma-diagrams/SKILL.md) | Read structure from existing Figma/FigJam files and produce FigJam-importable diagram specs (and comments) via the Figma REST API. Useful when your final deliverable lives in Figma. |
306
+ | [`user-journey-map`](packs/product-manager/skills/user-journey-map/SKILL.md) | Map one persona's end-to-end journey toward one outcome — 3–6 goal-phase stages (never one-per-screen), each with actions / reasoned emotion scores / pains / **outcome-shaped opportunities** (no solutioning — "add SSO" belongs downstream), rendered as a Mermaid `journey` emotion arc. Declares its **evidence level** up front (`[observational]` / `[survey/analytics]` / `[assumption-based]`) so a hypothesis never masquerades as research; marks the steepest dips, the peak, and the *ending* emotion (peak-end rule); and ranks opportunities down to **1–2 named improvement targets** instead of an unranked pain inventory. Hands committed targets to `prd-draft` / `user-story-splitter` and measurement to `success-metrics`. |
307
307
 
308
308
  ### Documentation
309
309
 
310
310
  | Skill | What it does |
311
311
  |---|---|
312
- | [`adr-generator`](skills/adr-generator/SKILL.md) | Generate an Architecture Decision Record in MADR or Nygard format from a context-decision-consequences brief, with sensible numbering and filename. |
313
- | [`design-doc`](skills/design-doc/SKILL.md) | Generate a Google-style engineering design doc (problem → goals/non-goals → alternatives → proposal → risks → rollout) from a feature brief. |
314
- | [`runbook-generator`](skills/runbook-generator/SKILL.md) | Generate an operational runbook for a service — deploy/rollback, top 5 incident playbooks, SLOs, on-call escalation, dependencies. |
315
- | [`observability-plan`](skills/observability-plan/SKILL.md) | Design the telemetry that makes a service detectable-before-users-complain and debuggable-at-3am. SLIs defined from **user journeys** (good/valid events), not resource graphs — latency SLIs as threshold counts at a percentile, never averages; SLOs with an **error budget in human terms and a spend policy** (what freezes when it's gone); **symptom-based, multi-window burn-rate alerting** where a page means a human must act now and every page is runbook-linked (the alert-fatigue fix); the three pillars split by purpose (metrics for SLOs/alerts with bounded cardinality, structured sampled logs for debugging, tail-sampled traces for cross-service attribution); and a **cardinality + cost budget** so observability doesn't become the surprise invoice. Expands `nfr-spec`'s observability row; feeds `runbook-generator`, `incident-comms`, `postmortem-generator`. |
316
- | [`postmortem-generator`](skills/postmortem-generator/SKILL.md) | Generate a blameless incident postmortem from raw response material (Slack scrollback, pager timeline, notes). Quantified impact table (numbers or `[missing]` — never "significant impact"); UTC timeline with computed detection and mitigation gaps; 2+ contributing factors with "human error" structurally banned; mandatory what-went-well / poorly / **where-we-got-lucky** lists; ≤8 action items each with owner role, prevent/detect/mitigate class, and a verifiable done-condition; ends with paste-ready runbook deltas for `runbook-generator`. |
317
- | [`guide-builder`](skills/guide-builder/SKILL.md) | Turn raw notes or a spec into an easy-to-follow guide, auto-styled to the content: a setup/quickstart (prerequisites → steps → verify → troubleshooting), a design walkthrough (mental model → flow → key decisions → where the code lives), or an API/event-schema reference (typed contracts + example payloads + error catalog). Distinct from `runbook-generator` (SRE/on-call) and `design-doc` (proposal for review). |
318
- | [`api-contract-draft`](skills/api-contract-draft/SKILL.md) | Draft an OpenAPI 3.1 contract from a feature brief, *before* the code — resource-oriented paths (plural nouns, no RPC verbs), full RFC 9457 error catalog with machine-readable codes per operation, cursor pagination / `Idempotency-Key` / URL versioning decided at draft time instead of retrofitted, production-realistic examples on every operation, and typing rules that ban the classic regrets (float money, naked timestamps, unbounded strings). Emits a **decisions log** alongside the YAML so reviewers argue choices, not line numbers. Handles event/webhook contracts (AsyncAPI-shaped) with the same rigor. Designing new contracts only — documenting an existing API is `guide-builder`'s job. |
319
- | [`db-schema-design`](skills/db-schema-design/SKILL.md) | Design a database schema **from the queries backward** — the access patterns (frequency, selectivity, consistency) come before any table is drawn. Paradigm chosen with a reason tied to those patterns (relational is the default and needs none; every move past it justifies itself); keys designed from queries (surrogate PK by default, NoSQL partition+sort key to avoid hot partitions, no random UUIDv4 as a clustered key); 3NF then denormalize only for a named hot read *with* its sync obligation; indexes mapped one-to-one to real queries (composite order = equality→range→sort); money/time/enum types right at the schema; explicit multitenancy and unbounded-growth-table decisions; and a **verification table proving every access pattern has a supporting path**, full scans flagged. Distinct from `data-contract` (published-dataset guarantee) and `api-contract-draft` (sync interface); hands evolution to `migration-plan`. |
320
- | [`data-contract`](skills/data-contract/SKILL.md) | Draft a data contract for a dataset, table, or event stream others depend on — the data-engineering counterpart to `api-contract-draft`. Schema specified with **per-field semantics and units** (the cents-vs-dollars, UTC-vs-local, gross-vs-net firewall), measurable quality SLAs across freshness / completeness / validity / uniqueness / distribution — each with a threshold, a check, and a **breach action** — a schema-evolution policy that names the silent killer (changing a field's *meaning* under a stable name/type is breaking, and no validator catches it), enumerated consumers (so "breaking" is defined and notices have an address), a named owner, and per-field PII classification. Marks aspirational-vs-met SLAs honestly on existing assets. |
321
- | [`tech-comparison-matrix`](skills/tech-comparison-matrix/SKILL.md) | Produce a weighted comparison matrix for a tech-selection question (e.g. "Postgres vs DynamoDB") with criteria, weights, scores, and a recommendation. |
312
+ | [`adr-generator`](packs/solution-architect/skills/adr-generator/SKILL.md) | Generate an Architecture Decision Record in MADR or Nygard format from a context-decision-consequences brief, with sensible numbering and filename. |
313
+ | [`design-doc`](packs/solution-architect/skills/design-doc/SKILL.md) | Generate a Google-style engineering design doc (problem → goals/non-goals → alternatives → proposal → risks → rollout) from a feature brief. |
314
+ | [`runbook-generator`](packs/sre-oncall/skills/runbook-generator/SKILL.md) | Generate an operational runbook for a service — deploy/rollback, top 5 incident playbooks, SLOs, on-call escalation, dependencies. |
315
+ | [`observability-plan`](packs/sre-oncall/skills/observability-plan/SKILL.md) | Design the telemetry that makes a service detectable-before-users-complain and debuggable-at-3am. SLIs defined from **user journeys** (good/valid events), not resource graphs — latency SLIs as threshold counts at a percentile, never averages; SLOs with an **error budget in human terms and a spend policy** (what freezes when it's gone); **symptom-based, multi-window burn-rate alerting** where a page means a human must act now and every page is runbook-linked (the alert-fatigue fix); the three pillars split by purpose (metrics for SLOs/alerts with bounded cardinality, structured sampled logs for debugging, tail-sampled traces for cross-service attribution); and a **cardinality + cost budget** so observability doesn't become the surprise invoice. Expands `nfr-spec`'s observability row; feeds `runbook-generator`, `incident-comms`, `postmortem-generator`. |
316
+ | [`postmortem-generator`](packs/sre-oncall/skills/postmortem-generator/SKILL.md) | Generate a blameless incident postmortem from raw response material (Slack scrollback, pager timeline, notes). Quantified impact table (numbers or `[missing]` — never "significant impact"); UTC timeline with computed detection and mitigation gaps; 2+ contributing factors with "human error" structurally banned; mandatory what-went-well / poorly / **where-we-got-lucky** lists; ≤8 action items each with owner role, prevent/detect/mitigate class, and a verifiable done-condition; ends with paste-ready runbook deltas for `runbook-generator`. |
317
+ | [`guide-builder`](packs/stakeholder-comms/skills/guide-builder/SKILL.md) | Turn raw notes or a spec into an easy-to-follow guide, auto-styled to the content: a setup/quickstart (prerequisites → steps → verify → troubleshooting), a design walkthrough (mental model → flow → key decisions → where the code lives), or an API/event-schema reference (typed contracts + example payloads + error catalog). Distinct from `runbook-generator` (SRE/on-call) and `design-doc` (proposal for review). |
318
+ | [`api-contract-draft`](packs/solution-architect/skills/api-contract-draft/SKILL.md) | Draft an OpenAPI 3.1 contract from a feature brief, *before* the code — resource-oriented paths (plural nouns, no RPC verbs), full RFC 9457 error catalog with machine-readable codes per operation, cursor pagination / `Idempotency-Key` / URL versioning decided at draft time instead of retrofitted, production-realistic examples on every operation, and typing rules that ban the classic regrets (float money, naked timestamps, unbounded strings). Emits a **decisions log** alongside the YAML so reviewers argue choices, not line numbers. Handles event/webhook contracts (AsyncAPI-shaped) with the same rigor. Designing new contracts only — documenting an existing API is `guide-builder`'s job. |
319
+ | [`db-schema-design`](packs/solution-architect/skills/db-schema-design/SKILL.md) | Design a database schema **from the queries backward** — the access patterns (frequency, selectivity, consistency) come before any table is drawn. Paradigm chosen with a reason tied to those patterns (relational is the default and needs none; every move past it justifies itself); keys designed from queries (surrogate PK by default, NoSQL partition+sort key to avoid hot partitions, no random UUIDv4 as a clustered key); 3NF then denormalize only for a named hot read *with* its sync obligation; indexes mapped one-to-one to real queries (composite order = equality→range→sort); money/time/enum types right at the schema; explicit multitenancy and unbounded-growth-table decisions; and a **verification table proving every access pattern has a supporting path**, full scans flagged. Distinct from `data-contract` (published-dataset guarantee) and `api-contract-draft` (sync interface); hands evolution to `migration-plan`. |
320
+ | [`data-contract`](packs/solution-architect/skills/data-contract/SKILL.md) | Draft a data contract for a dataset, table, or event stream others depend on — the data-engineering counterpart to `api-contract-draft`. Schema specified with **per-field semantics and units** (the cents-vs-dollars, UTC-vs-local, gross-vs-net firewall), measurable quality SLAs across freshness / completeness / validity / uniqueness / distribution — each with a threshold, a check, and a **breach action** — a schema-evolution policy that names the silent killer (changing a field's *meaning* under a stable name/type is breaking, and no validator catches it), enumerated consumers (so "breaking" is defined and notices have an address), a named owner, and per-field PII classification. Marks aspirational-vs-met SLAs honestly on existing assets. |
321
+ | [`tech-comparison-matrix`](packs/solution-architect/skills/tech-comparison-matrix/SKILL.md) | Produce a weighted comparison matrix for a tech-selection question (e.g. "Postgres vs DynamoDB") with criteria, weights, scores, and a recommendation. |
322
322
 
323
323
  ### Agent engineering
324
324
 
@@ -326,24 +326,24 @@ Designing the agentic systems themselves — the loops, orchestrations, and budg
326
326
 
327
327
  | Skill | What it does |
328
328
  |---|---|
329
- | [`agent-loop-design`](skills/agent-loop-design/SKILL.md) | Design a supervised agent loop as an implementable **loop spec**: a strict generate→verify→gate state machine (no mushy "reflect" states), an **observable done-condition** (never "output looks good"), verifier structurally ≠ generator (self-grading inflates), **both caps as numbers** (revision cap defaulting to 3, budget cap per run), human gates at every irreversible action with **decision-shaped digests** (never transcripts), findings flowing into the next round (else it's retry, not iteration), three specified failure routes (cap-hit / can't-judge / systemic early-stop), and a telemetry row so the loop's degradation shows up before its output does. |
330
- | [`subagent-design`](skills/subagent-design/SKILL.md) | Decompose a task into orchestrator + subagents — starting from **"the default answer is one agent"**: fan-out must earn itself via context separation, independence, or role conflict, or the plan says so. One-mission **role cards** (typed output contracts, explicit context-isolation lines, least-privilege tools, structured failure behavior), topology chosen with the reason attached (pipeline default; barriers only for named cross-item dependencies; judge panels with a vote rule), depth capped at one level, an **adversarial verification stage that is never a generator**, and a budget line per fleet. |
331
- | [`agent-budget`](skills/agent-budget/SKILL.md) | The spend spec for an agentic workflow: cheapest-adequate **tier per stage** (light/standard/heavy — heavy verification is never downgraded to save money), three numbers per stage (expected, hard cap, on-cap action — "warn and continue" banned), a run-level cap *below* the sum of stage caps, a **degradation ladder where verification is last and never cut**, and **cost-per-outcome** as the governing metric with a comparison line against the manual alternative — so "$900/week" becomes answerable. Estimates tagged `[assumption]` until calibrated on real runs. |
332
- | [`agent-threat-model`](skills/agent-threat-model/SKILL.md) | Security review of an agent's **capability surface** against the lethal trifecta — private data, untrusted content, an exfiltration vector. Inventories data reach *transitively* (the filesystem tool reaches every secret in `.env`), applies a writer-authorization test that classifies almost every content source untrusted, and sweeps egress past the obvious network tool (rendered markdown images, CI logs, error text, DNS). Scores **paths, not tools** — `fetch` is fine alone and lethal beside a secrets file — then names the architectural fix that breaks a leg, with a verification step. Structurally refuses the two answers teams reach for first: a system prompt telling the model to ignore injected instructions is not a control, and an injection classifier is defense in depth, never a broken leg. |
329
+ | [`agent-loop-design`](packs/ai-engineering/skills/agent-loop-design/SKILL.md) | Design a supervised agent loop as an implementable **loop spec**: a strict generate→verify→gate state machine (no mushy "reflect" states), an **observable done-condition** (never "output looks good"), verifier structurally ≠ generator (self-grading inflates), **both caps as numbers** (revision cap defaulting to 3, budget cap per run), human gates at every irreversible action with **decision-shaped digests** (never transcripts), findings flowing into the next round (else it's retry, not iteration), three specified failure routes (cap-hit / can't-judge / systemic early-stop), and a telemetry row so the loop's degradation shows up before its output does. |
330
+ | [`subagent-design`](packs/ai-engineering/skills/subagent-design/SKILL.md) | Decompose a task into orchestrator + subagents — starting from **"the default answer is one agent"**: fan-out must earn itself via context separation, independence, or role conflict, or the plan says so. One-mission **role cards** (typed output contracts, explicit context-isolation lines, least-privilege tools, structured failure behavior), topology chosen with the reason attached (pipeline default; barriers only for named cross-item dependencies; judge panels with a vote rule), depth capped at one level, an **adversarial verification stage that is never a generator**, and a budget line per fleet. |
331
+ | [`agent-budget`](packs/ai-engineering/skills/agent-budget/SKILL.md) | The spend spec for an agentic workflow: cheapest-adequate **tier per stage** (light/standard/heavy — heavy verification is never downgraded to save money), three numbers per stage (expected, hard cap, on-cap action — "warn and continue" banned), a run-level cap *below* the sum of stage caps, a **degradation ladder where verification is last and never cut**, and **cost-per-outcome** as the governing metric with a comparison line against the manual alternative — so "$900/week" becomes answerable. Estimates tagged `[assumption]` until calibrated on real runs. |
332
+ | [`agent-threat-model`](packs/ai-engineering/skills/agent-threat-model/SKILL.md) | Security review of an agent's **capability surface** against the lethal trifecta — private data, untrusted content, an exfiltration vector. Inventories data reach *transitively* (the filesystem tool reaches every secret in `.env`), applies a writer-authorization test that classifies almost every content source untrusted, and sweeps egress past the obvious network tool (rendered markdown images, CI logs, error text, DNS). Scores **paths, not tools** — `fetch` is fine alone and lethal beside a secrets file — then names the architectural fix that breaks a leg, with a verification step. Structurally refuses the two answers teams reach for first: a system prompt telling the model to ignore injected instructions is not a control, and an injection classifier is defense in depth, never a broken leg. |
333
333
 
334
- | [`agents-md-generator`](skills/agents-md-generator/SKILL.md) | Generate or audit the `AGENTS.md` that Claude Code, Codex, Cursor, Copilot, Kiro and Antigravity all read before your prompt. Built around one rule: **every command traces to evidence in the repo** — a CI step, a Makefile target, a `package.json` script — or it appears as `[missing: no test command in CI or manifests]` rather than a guess, because an invented command is a fault the agent will trust over the filesystem. Convention lines must pass a **counterfactual test** (without this line, would a competent agent do the wrong thing?); virtue instructions — "clean", "best practice", "thorough" — are *stripped, not softened*, since they spend context and change no behaviour. Names forbidden actions explicitly, the section most files omit. Hard ~150-line cap when generating, a warning when auditing, because an existing file may be long for good reason. Audit mode emits a diff, never a silent rewrite. Satellites (`CLAUDE.md`, `.github/copilot-instructions.md`) are opt-in and **delta-only** — a satellite that repeats `AGENTS.md` is guaranteed drift. |
334
+ | [`agents-md-generator`](packs/dev-team/skills/agents-md-generator/SKILL.md) | Generate or audit the `AGENTS.md` that Claude Code, Codex, Cursor, Copilot, Kiro and Antigravity all read before your prompt. Built around one rule: **every command traces to evidence in the repo** — a CI step, a Makefile target, a `package.json` script — or it appears as `[missing: no test command in CI or manifests]` rather than a guess, because an invented command is a fault the agent will trust over the filesystem. Convention lines must pass a **counterfactual test** (without this line, would a competent agent do the wrong thing?); virtue instructions — "clean", "best practice", "thorough" — are *stripped, not softened*, since they spend context and change no behaviour. Names forbidden actions explicitly, the section most files omit. Hard ~150-line cap when generating, a warning when auditing, because an existing file may be long for good reason. Audit mode emits a diff, never a silent rewrite. Satellites (`CLAUDE.md`, `.github/copilot-instructions.md`) are opt-in and **delta-only** — a satellite that repeats `AGENTS.md` is guaranteed drift. |
335
335
 
336
336
  ### AI adoption & observability
337
337
 
338
338
  | Skill | What it does |
339
339
  |---|---|
340
- | [`agent-adoption-stage`](skills/agent-adoption-stage/SKILL.md) | Place an engineering team on the agentic-coding ladder — **0 gated → 1 assisted (~1 agent) → 2 parallel (~10) → 3 supervised autonomy (~100) → 4 intent-steered (~1000+)** — from observables (agents in flight, who writes the code, what still gets reviewed), never from licence counts or ambition. The load-bearing idea is that **the bottleneck moves**: your attention → review throughput → trust in the loop → finding the work to automate, so the fix that unlocked the last step does nothing for the next. Forces **exactly one stage** and **exactly one unlock**, names the guardrail to *retire* (reading every diff is right at stage 1 and arithmetically impossible at stage 3), and routes each unlock to the skill that implements it (`pre-merge-review`, `agent-loop-design`, `subagent-design`, `agent-budget`). Adapted from Boris Cherny's *Steps of AI Adoption*, stated as capabilities rather than products so it survives the next vendor release. |
341
- | [`ai-readiness-assessment`](skills/ai-readiness-assessment/SKILL.md) | Score readiness to adopt AI across **six fixed dimensions** — data, tooling, skills, governance, process, culture — each 0–4 with a **one-line evidence reference**, or `[insufficient evidence]` rather than a guessed middle number. Gaps are ranked by **what blocks first**, not by lowest score, with the dependency named ("Skills can't move until Tooling ≥ 2"), and each carries a first action and an owner *role*. Ends with a posture sentence that takes a position and names what would change it — never a bare maturity label, because "you are Level 2 of 5" is not something a leader can fund. |
342
- | [`ai-use-case-triage`](skills/ai-use-case-triage/SKILL.md) | Rank candidate AI use cases on value × feasibility × risk with the **weights shown** (default 40/35/25). Each candidate is restated as *a workflow and a person*, never a technology; feasibility asks whether the output can be **verified before it matters**, not whether a model can produce it. Produces a recommended first slice with an **observable kill condition** and a time box, plus a mandatory **not-yet list** where every rejection carries the condition that would promote it. A portfolio with no rejections hasn't triaged anything. |
343
- | [`ai-adoption-rollout`](skills/ai-adoption-rollout/SKILL.md) | Plan the **human** rollout (the counterpart to `migration-plan`'s technical one) — cohorts smallest-first with a reason each is next, per-cohort hands-on enablement built from what the pilot actually got stuck on, champions as roles **with protected hours**, and an adoption **gate per wave** (observable + threshold + bake time + rollback). The comms plan must state explicitly **what will not change** about headcount and evaluation; silence there is read as bad news and is the biggest driver of quiet non-adoption. Licences activated is not adoption. |
344
- | [`ai-usage-policy`](skills/ai-usage-policy/SKILL.md) | Draft the organisation-wide acceptable-use policy — **three** data tiers (five aren't memorable at the moment of pasting) with concrete examples from *this* org, permitted/prohibited uses stated as behaviours, and a human-review matrix keyed to **consequence** rather than to model names that age out in months. Every prohibition names a permitted alternative, because a ban with no sanctioned path moves the work to personal accounts where you can't see it — and there's always an exception route with a turnaround time. |
345
- | [`ai-usage-report`](skills/ai-usage-report/SKILL.md) | Turn a CSV/JSONL of AI usage events (exported from an MCP server or other telemetry source) into a per-user, team-rollup, or effectiveness-focused report. Surfaces volume, breadth, session depth, and — where the data supports it — whether AI outputs were actually consumed in shipped artifacts vs generated and discarded (the "AI theater" question). Refuses to generate an aggregate rollup for teams smaller than 5 to preserve anonymity. |
346
- | [`llm-eval-harness`](skills/llm-eval-harness/SKILL.md) | Design the **dev-loop quality gate** for an LLM-powered feature (prompt, RAG, agent, classifier) — so prompt and model changes ship on numbers, not vibes. A versioned golden set in three deliberate buckets (representative from real logs, adversarial/edge, and regression cases frozen from every past failure); the **cheapest adequate grading method per case** (programmatic → structured assertions → LLM-as-judge only when quality is genuinely subjective, and then validated against human labels with bias controls); a metric matched to the task with **both gates set before the first run** (no-regression + critical-subset-at-100%); a failure taxonomy that points iteration at the biggest bucket; and cost/latency tracked beside quality. Enforces the held-out split and the no-tuning-on-test rule. Provider-neutral. |
340
+ | [`agent-adoption-stage`](packs/ai-engineering/skills/agent-adoption-stage/SKILL.md) | Place an engineering team on the agentic-coding ladder — **0 gated → 1 assisted (~1 agent) → 2 parallel (~10) → 3 supervised autonomy (~100) → 4 intent-steered (~1000+)** — from observables (agents in flight, who writes the code, what still gets reviewed), never from licence counts or ambition. The load-bearing idea is that **the bottleneck moves**: your attention → review throughput → trust in the loop → finding the work to automate, so the fix that unlocked the last step does nothing for the next. Forces **exactly one stage** and **exactly one unlock**, names the guardrail to *retire* (reading every diff is right at stage 1 and arithmetically impossible at stage 3), and routes each unlock to the skill that implements it (`pre-merge-review`, `agent-loop-design`, `subagent-design`, `agent-budget`). Adapted from Boris Cherny's *Steps of AI Adoption*, stated as capabilities rather than products so it survives the next vendor release. |
341
+ | [`ai-readiness-assessment`](packs/ai-engineering/skills/ai-readiness-assessment/SKILL.md) | Score readiness to adopt AI across **six fixed dimensions** — data, tooling, skills, governance, process, culture — each 0–4 with a **one-line evidence reference**, or `[insufficient evidence]` rather than a guessed middle number. Gaps are ranked by **what blocks first**, not by lowest score, with the dependency named ("Skills can't move until Tooling ≥ 2"), and each carries a first action and an owner *role*. Ends with a posture sentence that takes a position and names what would change it — never a bare maturity label, because "you are Level 2 of 5" is not something a leader can fund. |
342
+ | [`ai-use-case-triage`](packs/ai-engineering/skills/ai-use-case-triage/SKILL.md) | Rank candidate AI use cases on value × feasibility × risk with the **weights shown** (default 40/35/25). Each candidate is restated as *a workflow and a person*, never a technology; feasibility asks whether the output can be **verified before it matters**, not whether a model can produce it. Produces a recommended first slice with an **observable kill condition** and a time box, plus a mandatory **not-yet list** where every rejection carries the condition that would promote it. A portfolio with no rejections hasn't triaged anything. |
343
+ | [`ai-adoption-rollout`](packs/ai-engineering/skills/ai-adoption-rollout/SKILL.md) | Plan the **human** rollout (the counterpart to `migration-plan`'s technical one) — cohorts smallest-first with a reason each is next, per-cohort hands-on enablement built from what the pilot actually got stuck on, champions as roles **with protected hours**, and an adoption **gate per wave** (observable + threshold + bake time + rollback). The comms plan must state explicitly **what will not change** about headcount and evaluation; silence there is read as bad news and is the biggest driver of quiet non-adoption. Licences activated is not adoption. |
344
+ | [`ai-usage-policy`](packs/ai-engineering/skills/ai-usage-policy/SKILL.md) | Draft the organisation-wide acceptable-use policy — **three** data tiers (five aren't memorable at the moment of pasting) with concrete examples from *this* org, permitted/prohibited uses stated as behaviours, and a human-review matrix keyed to **consequence** rather than to model names that age out in months. Every prohibition names a permitted alternative, because a ban with no sanctioned path moves the work to personal accounts where you can't see it — and there's always an exception route with a turnaround time. |
345
+ | [`ai-usage-report`](packs/ai-engineering/skills/ai-usage-report/SKILL.md) | Turn a CSV/JSONL of AI usage events (exported from an MCP server or other telemetry source) into a per-user, team-rollup, or effectiveness-focused report. Surfaces volume, breadth, session depth, and — where the data supports it — whether AI outputs were actually consumed in shipped artifacts vs generated and discarded (the "AI theater" question). Refuses to generate an aggregate rollup for teams smaller than 5 to preserve anonymity. |
346
+ | [`llm-eval-harness`](packs/ai-engineering/skills/llm-eval-harness/SKILL.md) | Design the **dev-loop quality gate** for an LLM-powered feature (prompt, RAG, agent, classifier) — so prompt and model changes ship on numbers, not vibes. A versioned golden set in three deliberate buckets (representative from real logs, adversarial/edge, and regression cases frozen from every past failure); the **cheapest adequate grading method per case** (programmatic → structured assertions → LLM-as-judge only when quality is genuinely subjective, and then validated against human labels with bias controls); a metric matched to the task with **both gates set before the first run** (no-regression + critical-subset-at-100%); a failure taxonomy that points iteration at the biggest bucket; and cost/latency tracked beside quality. Enforces the held-out split and the no-tuning-on-test rule. Provider-neutral. |
347
347
 
348
348
  ### Claude API
349
349
 
@@ -351,34 +351,34 @@ Skills for teams building directly on the Anthropic API — prompt caching strat
351
351
 
352
352
  | Skill | What it does |
353
353
  |---|---|
354
- | [`prompt-caching-advisor`](skills/prompt-caching-advisor/SKILL.md) | Analyzes a prompt or conversation structure and identifies the highest-value `cache_control` breakpoints — which blocks to cache, where to place the checkpoint, and estimated hit rate. Warns when a cacheable block is below the minimum threshold (~1,024 tokens for Haiku, ~2,048 for Sonnet/Opus). Produces an annotated messages array and a one-paragraph cache strategy summary. |
355
- | [`token-budget-estimator`](skills/token-budget-estimator/SKILL.md) | Breaks down token usage for an agentic workflow by component — system prompt, injected context, tool definitions, tool results, context accumulation, and output — surfaces the dominant cost driver, and recommends concrete `max_tokens` controls. Covers extended thinking (`budget_tokens`) when relevant. |
356
- | [`eval-harness-generator`](skills/eval-harness-generator/SKILL.md) | Takes a SKILL.md and generates 8–12 eval cases (happy path, edge, anti-pattern, refusal) ready to drop into `skills/<name>/evals/cases.json`. Each case has a realistic trigger, checkable `expected_shape` criteria, and `must_not_include` guards from the skill's own quality bar. |
357
- | [`tool-use-schema-writer`](skills/tool-use-schema-writer/SKILL.md) | Converts a function description into a valid Anthropic `tool_use` JSON schema with typed properties, required arrays, and decision-condition descriptions. Validates that required arrays are present and enum values are described. Produces a Python `client.messages.create(tools=[...])` usage snippet. |
354
+ | [`prompt-caching-advisor`](packs/claude-api/skills/prompt-caching-advisor/SKILL.md) | Analyzes a prompt or conversation structure and identifies the highest-value `cache_control` breakpoints — which blocks to cache, where to place the checkpoint, and estimated hit rate. Warns when a cacheable block is below the minimum threshold (~1,024 tokens for Haiku, ~2,048 for Sonnet/Opus). Produces an annotated messages array and a one-paragraph cache strategy summary. |
355
+ | [`token-budget-estimator`](packs/claude-api/skills/token-budget-estimator/SKILL.md) | Breaks down token usage for an agentic workflow by component — system prompt, injected context, tool definitions, tool results, context accumulation, and output — surfaces the dominant cost driver, and recommends concrete `max_tokens` controls. Covers extended thinking (`budget_tokens`) when relevant. |
356
+ | [`eval-harness-generator`](packs/claude-api/skills/eval-harness-generator/SKILL.md) | Takes a SKILL.md and generates 8–12 eval cases (happy path, edge, anti-pattern, refusal) ready to drop into the skill's `evals/cases.json`. Each case has a realistic trigger, checkable `expected_shape` criteria, and `must_not_include` guards from the skill's own quality bar. |
357
+ | [`tool-use-schema-writer`](packs/claude-api/skills/tool-use-schema-writer/SKILL.md) | Converts a function description into a valid Anthropic `tool_use` JSON schema with typed properties, required arrays, and decision-condition descriptions. Validates that required arrays are present and enum values are described. Produces a Python `client.messages.create(tools=[...])` usage snippet. |
358
358
 
359
359
  ### Skill authoring
360
360
 
361
361
  | Skill | What it does |
362
362
  |---|---|
363
- | [`contribution-wizard`](skills/contribution-wizard/SKILL.md) | Guides an author through creating a new skilldrop skill from scratch — single-block intake, then one response generating the manifest, SKILL.md, 8 eval cases, README row, and packs.json addition. Enforces schema compliance and names the `python3 validate.py` check as the gate before opening a PR. |
363
+ | [`contribution-wizard`](packs/dev-team/skills/contribution-wizard/SKILL.md) | Guides an author through creating a new skilldrop skill from scratch — single-block intake, then one response generating the manifest, SKILL.md, 8 eval cases, README row, and pack and outcome placement. Enforces schema compliance and names the `python3 validate.py` check as the gate before opening a PR. |
364
364
 
365
365
  ### Stakeholder communication
366
366
 
367
367
  | Skill | What it does |
368
368
  |---|---|
369
- | [`audience-profile`](skills/audience-profile/SKILL.md) | Translate an audience type (exec, board, technical, sales, investor, internal, partner, customer) into structural rules — slide count, density, tone, must-have sections. Reusable input for the next three skills. |
370
- | [`slide-outliner`](skills/slide-outliner/SKILL.md) | Outline an architecture-review or pitch deck — slide titles, key points, and speaker notes — sized to a target time budget. Doesn't generate PPTX. |
371
- | [`deck-builder`](skills/deck-builder/SKILL.md) | Generate a real PowerPoint (`.pptx`) file from content + audience + a brand `.potx`/`.pptx` template or colour palette. Uses `python-pptx`; 10 layouts including charts, tables and images, audience-tuned density. Pairs naturally with `audience-profile` + `slide-outliner`. |
372
- | [`exec-summary`](skills/exec-summary/SKILL.md) | Compress a long technical document into a one-page executive summary structured around an Ask, business impact, cost/timeline, risks, and what you need from the audience. |
373
- | [`decision-log`](skills/decision-log/SKILL.md) | Extract decisions, action items, owners, and due dates from meeting notes, Slack threads, or transcripts into a structured log with source attribution. |
374
- | [`incident-comms`](skills/incident-comms/SKILL.md) | Draft the messages you send *while an incident is still burning* — audience-segmented into customer status-page posts, internal stakeholder updates that arm the relayer, and three-sentence exec briefs (business impact + the ask). Every message leads with reader-facing impact (not internal symptom), uses the precise status vocabulary (investigating / identified / monitoring / resolved), commits only to the **next-update time** (never a fix ETA or speculative cause you'd have to retract), and stays blameless and screenshot-safe. Acknowledge → update-on-committed-cadence → verified resolve. Completes the operate triad with `runbook-generator` (how to fix) and `postmortem-generator` (what to say after). |
369
+ | [`audience-profile`](packs/stakeholder-comms/skills/audience-profile/SKILL.md) | Translate an audience type (exec, board, technical, sales, investor, internal, partner, customer) into structural rules — slide count, density, tone, must-have sections. Reusable input for the next three skills. |
370
+ | [`slide-outliner`](packs/stakeholder-comms/skills/slide-outliner/SKILL.md) | Outline an architecture-review or pitch deck — slide titles, key points, and speaker notes — sized to a target time budget. Doesn't generate PPTX. |
371
+ | [`deck-builder`](packs/stakeholder-comms/skills/deck-builder/SKILL.md) | Generate a real PowerPoint (`.pptx`) file from content + audience + a brand `.potx`/`.pptx` template or colour palette. Uses `python-pptx`; 10 layouts including charts, tables and images, audience-tuned density. Pairs naturally with `audience-profile` + `slide-outliner`. |
372
+ | [`exec-summary`](packs/stakeholder-comms/skills/exec-summary/SKILL.md) | Compress a long technical document into a one-page executive summary structured around an Ask, business impact, cost/timeline, risks, and what you need from the audience. |
373
+ | [`decision-log`](packs/stakeholder-comms/skills/decision-log/SKILL.md) | Extract decisions, action items, owners, and due dates from meeting notes, Slack threads, or transcripts into a structured log with source attribution. |
374
+ | [`incident-comms`](packs/sre-oncall/skills/incident-comms/SKILL.md) | Draft the messages you send *while an incident is still burning* — audience-segmented into customer status-page posts, internal stakeholder updates that arm the relayer, and three-sentence exec briefs (business impact + the ask). Every message leads with reader-facing impact (not internal symptom), uses the precise status vocabulary (investigating / identified / monitoring / resolved), commits only to the **next-update time** (never a fix ETA or speculative cause you'd have to retract), and stays blameless and screenshot-safe. Acknowledge → update-on-committed-cadence → verified resolve. Completes the operate triad with `runbook-generator` (how to fix) and `postmortem-generator` (what to say after). |
375
375
 
376
376
  ## What's in a skill
377
377
 
378
- Every skill folder follows the same layout, so installation is the same anywhere:
378
+ Every skill folder follows the same layout, so installation is the same anywhere. It lives in its pack, at `packs/<pack>/skills/<skill-name>/` ([RFC-0034](docs/rfcs/0034-physical-pack-layout.md)), and is self-contained: copy that one folder and it works.
379
379
 
380
380
  ```
381
- skills/<skill-name>/
381
+ packs/<pack>/skills/<skill-name>/
382
382
  ├── SKILL.md # The instructions the AI agent reads — entry point
383
383
  ├── manifest.json # Name, description, version, declared deps, required env vars
384
384
  ├── requirements.txt # (optional) Python deps if the skill has scripts
@@ -425,7 +425,7 @@ Why not have an LLM pick the model live on every call? Because that pays tokens
425
425
 
426
426
  ## Skill packs — install a role's toolkit in one command
427
427
 
428
- Categories (above) say what a skill *is*; packs say *who needs it*. [`packs.json`](packs.json) gives every skill and every loop **exactly one home** ([RFC-0033](docs/rfcs/0033-core-pack-and-single-home-skills.md)). Skills every role uses live in **`core`**, and each role pack `requires` it, so installing a role pack installs `core` with it in the same command:
428
+ Categories (above) say what a skill *is*; packs say *who needs it*. Each pack is a folder, [`packs/<pack>/`](packs/), and every skill and loop sits in **exactly one** of them ([RFC-0033](docs/rfcs/0033-core-pack-and-single-home-skills.md), [RFC-0034](docs/rfcs/0034-physical-pack-layout.md)). Skills every role uses live in **`core`**, and each role pack `requires` it, so installing a role pack installs `core` with it in the same command:
429
429
 
430
430
  | Pack | Skills | Loops | For |
431
431
  |---|---|---|---|
@@ -438,6 +438,8 @@ Categories (above) say what a skill *is*; packs say *who needs it*. [`packs.json
438
438
  | `sre-oncall` | 5 + core | `operate` | Operate the service: runbooks, observability design, incident comms, postmortems, capacity/cost models |
439
439
  | `claude-api` | 4 | — | Build on the Anthropic API: prompt caching strategy, token budgeting, eval generation for skills, tool-use schema writing. A specialist add-on; it does not bring core |
440
440
 
441
+ Every pack has a page with **what to try first**, how to tell it worked, and what to do if nothing happens: [sananthanarayan.github.io/skilldrop/packs/](https://sananthanarayan.github.io/skilldrop/packs/). The CLI prints the same thing after a pack install, or any time with `npx skilldrop-cli info --pack <name>` ([RFC-0032](docs/rfcs/0032-pack-landing-pages-and-safe-updates.md)).
442
+
441
443
  ```bash
442
444
  python3 pack.py # list packs
443
445
  python3 pack.py product-manager # list a pack's skills
@@ -446,13 +448,13 @@ python3 pack.py product-manager --install --project # into .claude/skills/
446
448
  python3 pack.py product-manager --install --dest .cursor/skills # any dir, for non-Claude IDEs
447
449
  ```
448
450
 
449
- For non-Claude IDEs, `--dest` drops the folders where your tool expects them; the per-IDE wiring steps below still apply. Packs are metadata only — skills stay in flat `skills/<name>` folders, so per-skill `cp -R` installs keep working unchanged ([RFC-0001](docs/rfcs/0001-skill-packs.md) records the original decision; [RFC-0033](docs/rfcs/0033-core-pack-and-single-home-skills.md) replaced its overlapping packs with `core` and one home per skill).
451
+ For non-Claude IDEs, `--dest` drops the folders where your tool expects them; the per-IDE wiring steps below still apply. A skill is still one self-contained folder, so a per-skill copy works the same as before; only the path changed, to `cp -R packs/<pack>/skills/<name> …` ([RFC-0034](docs/rfcs/0034-physical-pack-layout.md)). A pack's metadata — description, what it `requires`, what to try first — is in `packs/<pack>/pack.json`.
450
452
 
451
453
  ## Outcomes — browse by why you're here
452
454
 
453
455
  Packs answer *who am I*. Outcomes answer *why did I open this*. The seven below are the nine
454
456
  categories above, restated as the things people actually arrive wanting to do, and they live in
455
- the `outcomes` block of [`packs.json`](packs.json) so the [catalogue site](https://sananthanarayan.github.io/skilldrop/)
457
+ the `outcomes` block of [`catalogue.json`](catalogue.json) so the [catalogue site](https://sananthanarayan.github.io/skilldrop/)
456
458
  can filter on them. Every skill belongs to at least one; `validate.py` enforces it.
457
459
 
458
460
  | Outcome | Skills | What it covers |
@@ -487,7 +489,7 @@ npx skilldrop-cli agents # the reviewer subagents
487
489
  npx skilldrop-cli install --agent devils-advocate # -> ~/.claude/agents/ (RFC-0012)
488
490
  npx skilldrop-cli install --panel review # the whole review fleet: 3 subagents + the pre-merge-review orchestrator (RFC-0020)
489
491
  npx skilldrop-cli outdated && npx skilldrop-cli update # skills improve; files you edited are kept, new copy as <file>.upstream
490
- npx skilldrop-cli list | skilldrop info <skill> | skilldrop packs | skilldrop uninstall <skill>
492
+ npx skilldrop-cli list | skilldrop info <skill> | skilldrop info --pack <name> | skilldrop packs | skilldrop uninstall <skill>
491
493
  npx skilldrop-cli list --json # machine-readable: list/info/packs/agents/outdated (RFC-0021)
492
494
  ```
493
495
 
@@ -515,11 +517,11 @@ Then take the whole catalogue, or just your role's pack:
515
517
  /plugin install core@skilldrop # 4 skills, on their own
516
518
  ```
517
519
 
518
- Every skill then invokes as `/<plugin>:<name>` (e.g. `/skilldrop:prfaq`). The whole-catalogue plugin ships the flat `skills/` and `agents/` trees at the repo root unchanged — same copy-install premise, expressed in Claude's own plugin format.
520
+ Every skill then invokes as `/<plugin>:<name>` (e.g. `/skilldrop:prfaq`). The whole-catalogue plugin is the repo root itself: its `plugin.json` lists each `packs/<pack>/skills/` folder, and `agents/` sits at the root — same copy-install premise, expressed in Claude's own plugin format.
519
521
 
520
- The eight **pack plugins** work differently, because a plugin's skills have to sit in a `skills/` folder inside the plugin. Rather than duplicate every skill into eight directories on `main` — physical packs, which [RFC-0001](docs/rfcs/0001-skill-packs.md) rejected — the marketplace entries use Claude's `git-subdir` source to point at `packs/<name>/` on a generated [`plugins`](https://github.com/sananthanarayan/skilldrop/tree/plugins) branch, rebuilt by CI on every push to main. Nothing moves in the source tree, and you still only ever type the one `marketplace add`. Each role pack's plugin also carries `core`'s skills and loops, since a plugin installs on its own. A pack carries the reviewer subagents its own skills delegate to, so `dev-team` brings the review panel and `sre-oncall` does not.
522
+ The eight **pack plugins** work differently, because a plugin's skills have to sit in a `skills/` folder inside the plugin. A role pack's plugin also has to carry `core`'s skills and loops, since a plugin installs on its own and cannot reach outside its folder. Rather than copy `core` into every pack folder on `main`, the marketplace entries use Claude's `git-subdir` source to point at `packs/<name>/` on a generated [`plugins`](https://github.com/sananthanarayan/skilldrop/tree/plugins) branch, rebuilt by CI on every push to main, where each pack is assembled with `core` folded in. You still only ever type the one `marketplace add`. A pack carries the reviewer subagents its own skills delegate to, so `dev-team` brings the review panel and `sre-oncall` does not.
521
523
 
522
- `.claude-plugin/{marketplace,plugin}.json` are generated from `package.json` + `packs.json` by [`build_marketplace.py`](build_marketplace.py) (`--check` guards drift in CI; `--dist` renders the branch). Use the CLI above when you want per-skill granularity, another IDE, or hooks; use the marketplace when you're in Claude Code. Rationale: [RFC-0027](docs/rfcs/0027-retire-agentbundle-export.md).
524
+ `.claude-plugin/{marketplace,plugin}.json` are generated from `package.json` + the `packs/` folders by [`build_marketplace.py`](build_marketplace.py) (`--check` guards drift in CI; `--dist` renders the branch). Use the CLI above when you want per-skill granularity, another IDE, or hooks; use the marketplace when you're in Claude Code. Rationale: [RFC-0027](docs/rfcs/0027-retire-agentbundle-export.md).
523
525
 
524
526
  ### Everything else about installing
525
527
 
package/agents/README.md CHANGED
@@ -24,7 +24,7 @@ npx skilldrop-cli install --agent devils-advocate --ide kiro # .kiro/agents/*.
24
24
  | [`code-quality`](code-quality.md) | Craft — naming, structure, duplication, needless complexity, readability | "Will the next engineer hate this?" |
25
25
  | [`security-reviewer`](security-reviewer.md) | Security — authz, injection, secret exposure, SSRF, unsafe deserialization, weak crypto, risky deps | "What can an attacker do with this?" |
26
26
 
27
- They are deliberately **split, not merged.** A single "review my code" agent dilutes all three — bug-hunting, craft, and exploitability pull in different directions. Run them as separate passes; together they are the reviewer panel [`feature-implement-loop`](../skills/feature-implement-loop/SKILL.md) drives after each generation round. `devils-advocate` here is the subagent form of the [`devils-advocate` skill](../skills/devils-advocate/SKILL.md); same persona, packaged for a tool's native agent slot instead of on-demand skill invocation.
27
+ They are deliberately **split, not merged.** A single "review my code" agent dilutes all three — bug-hunting, craft, and exploitability pull in different directions. Run them as separate passes; together they are the reviewer panel [`feature-implement-loop`](../packs/dev-team/skills/feature-implement-loop/SKILL.md) drives after each generation round. `devils-advocate` here is the subagent form of the [`devils-advocate` skill](../packs/dev-team/skills/devils-advocate/SKILL.md); same persona, packaged for a tool's native agent slot instead of on-demand skill invocation.
28
28
 
29
29
  ## Fire them as a panel
30
30
 
@@ -35,7 +35,7 @@ npx skilldrop-cli install --panel review # 3 subagents + the pre-merg
35
35
  npx skilldrop-cli install --panel review --project # .claude/ (shared with the repo)
36
36
  ```
37
37
 
38
- The [`pre-merge-review`](../skills/pre-merge-review/SKILL.md) skill is the **portable orchestrator** — it dispatches the three as **parallel subagents** where the tool has a native subagent runner, and sweeps the lenses inline otherwise. The orchestration lives in the *skill* (portable); the reviewers are *native subagents* (per-tool):
38
+ The [`pre-merge-review`](../packs/dev-team/skills/pre-merge-review/SKILL.md) skill is the **portable orchestrator** — it dispatches the three as **parallel subagents** where the tool has a native subagent runner, and sweeps the lenses inline otherwise. The orchestration lives in the *skill* (portable); the reviewers are *native subagents* (per-tool):
39
39
 
40
40
  | Tool | How the panel fires in parallel |
41
41
  |---|---|
@@ -46,7 +46,7 @@ The [`pre-merge-review`](../skills/pre-merge-review/SKILL.md) skill is the **por
46
46
  | **Copilot** | Agents install (`--agent … --ide copilot`); the skill drives them — sequentially unless your Copilot build exposes parallel subagents. |
47
47
  | **Cursor** | No agent format — `pre-merge-review` sweeps the three lenses inline (no subagents). |
48
48
 
49
- Designing your own fleet? Use [`subagent-design`](../skills/subagent-design/SKILL.md) — the reviewer panel is its "judge panel" topology.
49
+ Designing your own fleet? Use [`subagent-design`](../packs/ai-engineering/skills/subagent-design/SKILL.md) — the reviewer panel is its "judge panel" topology.
50
50
 
51
51
  ## Installing an agent into your tool
52
52