skilldrop-cli 0.16.3__py3-none-any.whl

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 (757) hide show
  1. skilldrop_cli/__init__.py +16 -0
  2. skilldrop_cli/__main__.py +3 -0
  3. skilldrop_cli/data/LICENSE +9 -0
  4. skilldrop_cli/data/LICENSE-APACHE +202 -0
  5. skilldrop_cli/data/LICENSE-MIT +21 -0
  6. skilldrop_cli/data/agents/README.md +127 -0
  7. skilldrop_cli/data/agents/code-quality.md +40 -0
  8. skilldrop_cli/data/agents/devils-advocate.md +40 -0
  9. skilldrop_cli/data/agents/security-reviewer.md +44 -0
  10. skilldrop_cli/data/bin/skilldrop.js +2110 -0
  11. skilldrop_cli/data/catalogue.json +187 -0
  12. skilldrop_cli/data/contracts/agent.schema.json +28 -0
  13. skilldrop_cli/data/contracts/catalogue.schema.json +33 -0
  14. skilldrop_cli/data/contracts/guide.schema.json +18 -0
  15. skilldrop_cli/data/contracts/loop.schema.json +87 -0
  16. skilldrop_cli/data/contracts/pack.schema.json +75 -0
  17. skilldrop_cli/data/contracts/skill.schema.json +110 -0
  18. skilldrop_cli/data/contracts/terminals.json +33 -0
  19. skilldrop_cli/data/model-routing.json +474 -0
  20. skilldrop_cli/data/package.json +46 -0
  21. skilldrop_cli/data/packs/ai-engineering/pack.json +57 -0
  22. skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/SKILL.md +90 -0
  23. skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/evals/eval_queries.json +34 -0
  24. skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/evals/evals.json +19 -0
  25. skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/manifest.json +39 -0
  26. skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/SKILL.md +63 -0
  27. skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/evals/eval_queries.json +11 -0
  28. skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/evals/evals.json +28 -0
  29. skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/manifest.json +11 -0
  30. skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/templates/budget-spec.md +30 -0
  31. skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/SKILL.md +70 -0
  32. skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/evals/eval_queries.json +11 -0
  33. skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/evals/evals.json +28 -0
  34. skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/manifest.json +11 -0
  35. skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/templates/loop-spec.md +46 -0
  36. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/SKILL.md +89 -0
  37. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/evals/eval_queries.json +15 -0
  38. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/evals/evals.json +41 -0
  39. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/examples/support-triage-agent.md +117 -0
  40. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/manifest.json +11 -0
  41. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/reference.md +101 -0
  42. skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/templates/agent-threat-model.md +71 -0
  43. skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/SKILL.md +61 -0
  44. skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/evals/eval_queries.json +34 -0
  45. skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/evals/evals.json +19 -0
  46. skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/manifest.json +33 -0
  47. skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/SKILL.md +68 -0
  48. skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/evals/eval_queries.json +34 -0
  49. skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/evals/evals.json +17 -0
  50. skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/manifest.json +35 -0
  51. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/SKILL.md +67 -0
  52. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/evals/eval_queries.json +34 -0
  53. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/evals/evals.json +19 -0
  54. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/manifest.json +33 -0
  55. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/SKILL.md +111 -0
  56. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/evals/eval_queries.json +30 -0
  57. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/evals/evals.json +19 -0
  58. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/evals/files/1/northwind-ai-events.csv +4213 -0
  59. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/examples/weekly-engineering-team.md +133 -0
  60. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/manifest.json +12 -0
  61. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/scripts/build_report.py +436 -0
  62. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/templates/report-per-user.md +42 -0
  63. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/templates/report-team-rollup.md +49 -0
  64. skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/templates/usage-event-schema.md +76 -0
  65. skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/SKILL.md +59 -0
  66. skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/evals/eval_queries.json +34 -0
  67. skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/evals/evals.json +18 -0
  68. skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/manifest.json +34 -0
  69. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/SKILL.md +73 -0
  70. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/evals/eval_queries.json +34 -0
  71. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/evals/evals.json +19 -0
  72. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/manifest.json +11 -0
  73. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/reference.md +58 -0
  74. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/templates/eval-plan.md +63 -0
  75. skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/templates/golden-case.jsonl +5 -0
  76. skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/SKILL.md +69 -0
  77. skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/evals/eval_queries.json +11 -0
  78. skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/evals/evals.json +29 -0
  79. skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/manifest.json +11 -0
  80. skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/templates/orchestration-plan.md +47 -0
  81. skilldrop_cli/data/packs/api-builder/pack.json +48 -0
  82. skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/SKILL.md +84 -0
  83. skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/evals/eval_queries.json +30 -0
  84. skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/evals/evals.json +19 -0
  85. skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/evals/files/1/SKILL.md +31 -0
  86. skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/manifest.json +11 -0
  87. skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/SKILL.md +90 -0
  88. skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/evals/eval_queries.json +30 -0
  89. skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/evals/evals.json +19 -0
  90. skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/manifest.json +11 -0
  91. skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/SKILL.md +75 -0
  92. skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/evals/eval_queries.json +30 -0
  93. skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/evals/evals.json +18 -0
  94. skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/manifest.json +11 -0
  95. skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/SKILL.md +111 -0
  96. skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/evals/eval_queries.json +30 -0
  97. skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/evals/evals.json +18 -0
  98. skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/manifest.json +11 -0
  99. skilldrop_cli/data/packs/converters/pack.json +66 -0
  100. skilldrop_cli/data/packs/converters/skills/file-to-markdown/SKILL.md +103 -0
  101. skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/eval_queries.json +34 -0
  102. skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/evals.json +27 -0
  103. skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/files/1/northwind-q3.pptx +0 -0
  104. skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/files/2/acme-contract-summary.pdf +93 -0
  105. skilldrop_cli/data/packs/converters/skills/file-to-markdown/examples/inputs/accounts.json +1 -0
  106. skilldrop_cli/data/packs/converters/skills/file-to-markdown/examples/inputs/fabrikam-status.html +14 -0
  107. skilldrop_cli/data/packs/converters/skills/file-to-markdown/examples/mixed-inputs.md +306 -0
  108. skilldrop_cli/data/packs/converters/skills/file-to-markdown/manifest.json +49 -0
  109. skilldrop_cli/data/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +1299 -0
  110. skilldrop_cli/data/packs/converters/skills/md-to-docx/SKILL.md +124 -0
  111. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/eval_queries.json +10 -0
  112. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/evals.json +29 -0
  113. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/brand.json +80 -0
  114. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/logo-white.png +0 -0
  115. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/logo.png +0 -0
  116. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/mark.png +0 -0
  117. skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/docs/vendor-onboarding.md +42 -0
  118. skilldrop_cli/data/packs/converters/skills/md-to-docx/examples/q3-support-review-input.md +54 -0
  119. skilldrop_cli/data/packs/converters/skills/md-to-docx/examples/q3-support-review.md +80 -0
  120. skilldrop_cli/data/packs/converters/skills/md-to-docx/examples/tickets-by-region.png +0 -0
  121. skilldrop_cli/data/packs/converters/skills/md-to-docx/manifest.json +52 -0
  122. skilldrop_cli/data/packs/converters/skills/md-to-docx/reference.md +89 -0
  123. skilldrop_cli/data/packs/converters/skills/md-to-docx/scripts/md_to_docx.py +1114 -0
  124. skilldrop_cli/data/packs/converters/skills/md-to-html/SKILL.md +100 -0
  125. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/eval_queries.json +34 -0
  126. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/evals.json +18 -0
  127. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/brand.json +80 -0
  128. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/logo-white.png +0 -0
  129. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/logo.png +0 -0
  130. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/mark.png +0 -0
  131. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/docs/q3-review.md +35 -0
  132. skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/img/dashboard.png +0 -0
  133. skilldrop_cli/data/packs/converters/skills/md-to-html/examples/inputs/chart.svg +8 -0
  134. skilldrop_cli/data/packs/converters/skills/md-to-html/examples/inputs/ops-review.md +48 -0
  135. skilldrop_cli/data/packs/converters/skills/md-to-html/examples/ops-review.md +83 -0
  136. skilldrop_cli/data/packs/converters/skills/md-to-html/manifest.json +43 -0
  137. skilldrop_cli/data/packs/converters/skills/md-to-html/reference.md +70 -0
  138. skilldrop_cli/data/packs/converters/skills/md-to-html/scripts/md_to_html.py +652 -0
  139. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/SKILL.md +120 -0
  140. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/eval_queries.json +9 -0
  141. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/evals.json +28 -0
  142. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/files/1/exports/northwind-invoices.csv +25 -0
  143. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/files/2/reports/q3-ops-review.md +32 -0
  144. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/examples/vendor-review-input.md +28 -0
  145. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/examples/vendor-review.md +94 -0
  146. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/manifest.json +33 -0
  147. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/reference.md +94 -0
  148. skilldrop_cli/data/packs/converters/skills/md-to-xlsx/scripts/md_to_xlsx.py +667 -0
  149. skilldrop_cli/data/packs/converters/skills/mermaid-render/SKILL.md +109 -0
  150. skilldrop_cli/data/packs/converters/skills/mermaid-render/evals/eval_queries.json +30 -0
  151. skilldrop_cli/data/packs/converters/skills/mermaid-render/evals/evals.json +17 -0
  152. skilldrop_cli/data/packs/converters/skills/mermaid-render/evals/files/1/docs/contoso-orders.md +23 -0
  153. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/broken-diagrams.md +147 -0
  154. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/broken-flowchart.mmd +8 -0
  155. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/broken-sequence.mmd +11 -0
  156. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/checkout-flow.mmd +9 -0
  157. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/design-notes.md +35 -0
  158. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/fixed-flowchart.mmd +9 -0
  159. skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/typo.mmd +2 -0
  160. skilldrop_cli/data/packs/converters/skills/mermaid-render/manifest.json +40 -0
  161. skilldrop_cli/data/packs/converters/skills/mermaid-render/reference.md +70 -0
  162. skilldrop_cli/data/packs/converters/skills/mermaid-render/scripts/render_mermaid.py +486 -0
  163. skilldrop_cli/data/packs/core/loops/ship-a-draft/LOOP.md +77 -0
  164. skilldrop_cli/data/packs/core/loops/ship-a-draft/evals/eval_queries.json +30 -0
  165. skilldrop_cli/data/packs/core/loops/ship-a-draft/evals/evals.json +25 -0
  166. skilldrop_cli/data/packs/core/loops/ship-a-draft/loop.json +41 -0
  167. skilldrop_cli/data/packs/core/pack.json +50 -0
  168. skilldrop_cli/data/packs/core/skills/brief-intake/SKILL.md +79 -0
  169. skilldrop_cli/data/packs/core/skills/brief-intake/evals/eval_queries.json +34 -0
  170. skilldrop_cli/data/packs/core/skills/brief-intake/evals/evals.json +16 -0
  171. skilldrop_cli/data/packs/core/skills/brief-intake/manifest.json +11 -0
  172. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-adr.md +41 -0
  173. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-decision-log.md +35 -0
  174. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-deck.md +43 -0
  175. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-design-doc.md +48 -0
  176. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-exec-summary.md +47 -0
  177. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-generic.md +45 -0
  178. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-runbook.md +44 -0
  179. skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-tech-comparison.md +38 -0
  180. skilldrop_cli/data/packs/core/skills/council-review/SKILL.md +106 -0
  181. skilldrop_cli/data/packs/core/skills/council-review/evals/eval_queries.json +38 -0
  182. skilldrop_cli/data/packs/core/skills/council-review/evals/evals.json +18 -0
  183. skilldrop_cli/data/packs/core/skills/council-review/examples/redis-cache-decision.md +75 -0
  184. skilldrop_cli/data/packs/core/skills/council-review/manifest.json +11 -0
  185. skilldrop_cli/data/packs/core/skills/council-review/reference.md +76 -0
  186. skilldrop_cli/data/packs/core/skills/council-review/seats/architect.md +29 -0
  187. skilldrop_cli/data/packs/core/skills/council-review/seats/bench.md +39 -0
  188. skilldrop_cli/data/packs/core/skills/council-review/seats/operator.md +27 -0
  189. skilldrop_cli/data/packs/core/skills/council-review/seats/pragmatist.md +29 -0
  190. skilldrop_cli/data/packs/core/skills/council-review/seats/security-engineer.md +29 -0
  191. skilldrop_cli/data/packs/core/skills/council-review/seats/user-advocate.md +27 -0
  192. skilldrop_cli/data/packs/core/skills/council-review/templates/council-review.md +59 -0
  193. skilldrop_cli/data/packs/core/skills/doc-critique/SKILL.md +119 -0
  194. skilldrop_cli/data/packs/core/skills/doc-critique/evals/eval_queries.json +38 -0
  195. skilldrop_cli/data/packs/core/skills/doc-critique/evals/evals.json +17 -0
  196. skilldrop_cli/data/packs/core/skills/doc-critique/examples/design-doc-critique.md +34 -0
  197. skilldrop_cli/data/packs/core/skills/doc-critique/manifest.json +11 -0
  198. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/adr.md +36 -0
  199. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/decision-log.md +39 -0
  200. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/deck.md +45 -0
  201. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/design-doc.md +42 -0
  202. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/exec-summary.md +41 -0
  203. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/generic.md +40 -0
  204. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/runbook.md +42 -0
  205. skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/tech-comparison.md +40 -0
  206. skilldrop_cli/data/packs/core/skills/doc-critique/templates/critique.md +49 -0
  207. skilldrop_cli/data/packs/core/skills/output-hygiene/SKILL.md +97 -0
  208. skilldrop_cli/data/packs/core/skills/output-hygiene/evals/eval_queries.json +11 -0
  209. skilldrop_cli/data/packs/core/skills/output-hygiene/evals/evals.json +30 -0
  210. skilldrop_cli/data/packs/core/skills/output-hygiene/manifest.json +34 -0
  211. skilldrop_cli/data/packs/core/skills/output-hygiene/reference.md +106 -0
  212. skilldrop_cli/data/packs/core/skills/output-hygiene/scripts/scrub.py +315 -0
  213. skilldrop_cli/data/packs/data-analytics/pack.json +57 -0
  214. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/SKILL.md +83 -0
  215. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/evals/eval_queries.json +34 -0
  216. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/evals/evals.json +19 -0
  217. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/examples/support-staffing.md +84 -0
  218. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/manifest.json +40 -0
  219. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/reference.md +45 -0
  220. skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/templates/dashboard-spec.md +55 -0
  221. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/SKILL.md +84 -0
  222. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/evals/eval_queries.json +34 -0
  223. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/evals/evals.json +19 -0
  224. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/examples/refund-rate.md +104 -0
  225. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/manifest.json +41 -0
  226. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/reference.md +67 -0
  227. skilldrop_cli/data/packs/data-analytics/skills/metric-definition/templates/metric-spec.md +70 -0
  228. skilldrop_cli/data/packs/data-analytics/skills/sql-review/SKILL.md +83 -0
  229. skilldrop_cli/data/packs/data-analytics/skills/sql-review/evals/eval_queries.json +34 -0
  230. skilldrop_cli/data/packs/data-analytics/skills/sql-review/evals/evals.json +19 -0
  231. skilldrop_cli/data/packs/data-analytics/skills/sql-review/examples/revenue-by-region.md +174 -0
  232. skilldrop_cli/data/packs/data-analytics/skills/sql-review/manifest.json +42 -0
  233. skilldrop_cli/data/packs/data-analytics/skills/sql-review/reference.md +84 -0
  234. skilldrop_cli/data/packs/data-analytics/skills/sql-review/scripts/sql_lint.py +461 -0
  235. skilldrop_cli/data/packs/design/pack.json +60 -0
  236. skilldrop_cli/data/packs/design/skills/brand-kit/SKILL.md +105 -0
  237. skilldrop_cli/data/packs/design/skills/brand-kit/evals/eval_queries.json +30 -0
  238. skilldrop_cli/data/packs/design/skills/brand-kit/evals/evals.json +18 -0
  239. skilldrop_cli/data/packs/design/skills/brand-kit/evals/files/1/brand/northwind-logo-white.png +0 -0
  240. skilldrop_cli/data/packs/design/skills/brand-kit/evals/files/1/brand/northwind-logo.png +0 -0
  241. skilldrop_cli/data/packs/design/skills/brand-kit/examples/northwind-brand.md +48 -0
  242. skilldrop_cli/data/packs/design/skills/brand-kit/manifest.json +45 -0
  243. skilldrop_cli/data/packs/design/skills/brand-kit/scripts/check_brand.py +114 -0
  244. skilldrop_cli/data/packs/design/skills/brand-kit/templates/brand.json +54 -0
  245. skilldrop_cli/data/packs/design/skills/deck-builder/SKILL.md +201 -0
  246. skilldrop_cli/data/packs/design/skills/deck-builder/evals/eval_queries.json +14 -0
  247. skilldrop_cli/data/packs/design/skills/deck-builder/evals/evals.json +40 -0
  248. skilldrop_cli/data/packs/design/skills/deck-builder/examples/exec-board-update.md +108 -0
  249. skilldrop_cli/data/packs/design/skills/deck-builder/examples/templated-brand-deck.md +148 -0
  250. skilldrop_cli/data/packs/design/skills/deck-builder/manifest.json +18 -0
  251. skilldrop_cli/data/packs/design/skills/deck-builder/reference.md +180 -0
  252. skilldrop_cli/data/packs/design/skills/deck-builder/requirements.txt +3 -0
  253. skilldrop_cli/data/packs/design/skills/deck-builder/scripts/build_deck.py +1134 -0
  254. skilldrop_cli/data/packs/design/skills/deck-builder/templates/deck-spec.json +168 -0
  255. skilldrop_cli/data/packs/design/skills/deck-builder/templates/palettes.json +59 -0
  256. skilldrop_cli/data/packs/design/skills/marketing-flyer/SKILL.md +113 -0
  257. skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/eval_queries.json +30 -0
  258. skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/evals.json +18 -0
  259. skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/brand.json +80 -0
  260. skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/logo-white.png +0 -0
  261. skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/logo.png +0 -0
  262. skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/mark.png +0 -0
  263. skilldrop_cli/data/packs/design/skills/marketing-flyer/examples/community-health-fair.md +68 -0
  264. skilldrop_cli/data/packs/design/skills/marketing-flyer/manifest.json +40 -0
  265. skilldrop_cli/data/packs/design/skills/marketing-flyer/reference.md +54 -0
  266. skilldrop_cli/data/packs/design/skills/marketing-flyer/scripts/build_flyer.py +323 -0
  267. skilldrop_cli/data/packs/design/skills/marketing-flyer/templates/flyer-spec.json +26 -0
  268. skilldrop_cli/data/packs/design/skills/slide-outliner/SKILL.md +58 -0
  269. skilldrop_cli/data/packs/design/skills/slide-outliner/evals/eval_queries.json +34 -0
  270. skilldrop_cli/data/packs/design/skills/slide-outliner/evals/evals.json +16 -0
  271. skilldrop_cli/data/packs/design/skills/slide-outliner/manifest.json +11 -0
  272. skilldrop_cli/data/packs/design/skills/slide-outliner/templates/deck-outline.md +131 -0
  273. skilldrop_cli/data/packs/dev-team/loops/build/LOOP.md +80 -0
  274. skilldrop_cli/data/packs/dev-team/loops/build/evals/eval_queries.json +30 -0
  275. skilldrop_cli/data/packs/dev-team/loops/build/evals/evals.json +27 -0
  276. skilldrop_cli/data/packs/dev-team/loops/build/loop.json +48 -0
  277. skilldrop_cli/data/packs/dev-team/loops/release/LOOP.md +91 -0
  278. skilldrop_cli/data/packs/dev-team/loops/release/loop.json +47 -0
  279. skilldrop_cli/data/packs/dev-team/pack.json +56 -0
  280. skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/SKILL.md +74 -0
  281. skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/evals/eval_queries.json +30 -0
  282. skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/evals/evals.json +19 -0
  283. skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/examples/login-form.md +76 -0
  284. skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/manifest.json +11 -0
  285. skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/reference.md +69 -0
  286. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/SKILL.md +82 -0
  287. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/eval_queries.json +15 -0
  288. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/evals.json +50 -0
  289. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/Makefile +5 -0
  290. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/alembic/versions/0001_create_bookings.py +10 -0
  291. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/booking/__init__.py +0 -0
  292. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/booking/app.py +8 -0
  293. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/pyproject.toml +11 -0
  294. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/tests/test_health.py +5 -0
  295. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/2/AGENTS.md +3 -0
  296. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/2/package.json +12 -0
  297. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/2/src/index.ts +1 -0
  298. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/manifest.json +11 -0
  299. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/reference.md +89 -0
  300. skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/templates/agents-md.md +48 -0
  301. skilldrop_cli/data/packs/dev-team/skills/bug-triage/SKILL.md +67 -0
  302. skilldrop_cli/data/packs/dev-team/skills/bug-triage/evals/eval_queries.json +34 -0
  303. skilldrop_cli/data/packs/dev-team/skills/bug-triage/evals/evals.json +17 -0
  304. skilldrop_cli/data/packs/dev-team/skills/bug-triage/manifest.json +14 -0
  305. skilldrop_cli/data/packs/dev-team/skills/bug-triage/templates/bug-ticket.md +86 -0
  306. skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/SKILL.md +134 -0
  307. skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/evals/eval_queries.json +30 -0
  308. skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/evals/evals.json +19 -0
  309. skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/manifest.json +11 -0
  310. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/SKILL.md +143 -0
  311. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/evals/eval_queries.json +38 -0
  312. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/evals/evals.json +19 -0
  313. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/examples/rate-limiter-review.md +46 -0
  314. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/adversarial-review.md +88 -0
  315. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/edge-cases.md +95 -0
  316. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/future-proofing.md +75 -0
  317. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/test-coverage.md +90 -0
  318. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/manifest.json +14 -0
  319. skilldrop_cli/data/packs/dev-team/skills/devils-advocate/templates/challenge.md +118 -0
  320. skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/SKILL.md +88 -0
  321. skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/evals/eval_queries.json +30 -0
  322. skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/evals/evals.json +19 -0
  323. skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/manifest.json +14 -0
  324. skilldrop_cli/data/packs/dev-team/skills/launch-readiness/SKILL.md +95 -0
  325. skilldrop_cli/data/packs/dev-team/skills/launch-readiness/evals/eval_queries.json +10 -0
  326. skilldrop_cli/data/packs/dev-team/skills/launch-readiness/evals/evals.json +19 -0
  327. skilldrop_cli/data/packs/dev-team/skills/launch-readiness/examples/schema-change-revise.md +54 -0
  328. skilldrop_cli/data/packs/dev-team/skills/launch-readiness/manifest.json +24 -0
  329. skilldrop_cli/data/packs/dev-team/skills/launch-readiness/templates/readiness-report.md +41 -0
  330. skilldrop_cli/data/packs/dev-team/skills/migration-plan/SKILL.md +68 -0
  331. skilldrop_cli/data/packs/dev-team/skills/migration-plan/evals/eval_queries.json +34 -0
  332. skilldrop_cli/data/packs/dev-team/skills/migration-plan/evals/evals.json +16 -0
  333. skilldrop_cli/data/packs/dev-team/skills/migration-plan/manifest.json +11 -0
  334. skilldrop_cli/data/packs/dev-team/skills/migration-plan/templates/migration-plan.md +68 -0
  335. skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/SKILL.md +85 -0
  336. skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/evals/eval_queries.json +11 -0
  337. skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/evals/evals.json +26 -0
  338. skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/examples/pre-merge-verdict.md +43 -0
  339. skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/manifest.json +15 -0
  340. skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/scripts/gate.py +189 -0
  341. skilldrop_cli/data/packs/dev-team/skills/release-notes/SKILL.md +61 -0
  342. skilldrop_cli/data/packs/dev-team/skills/release-notes/evals/eval_queries.json +30 -0
  343. skilldrop_cli/data/packs/dev-team/skills/release-notes/evals/evals.json +19 -0
  344. skilldrop_cli/data/packs/dev-team/skills/release-notes/manifest.json +11 -0
  345. skilldrop_cli/data/packs/dev-team/skills/release-notes/templates/release-notes.md +83 -0
  346. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/SKILL.md +170 -0
  347. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/evals/eval_queries.json +34 -0
  348. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/evals/evals.json +16 -0
  349. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/manifest.json +11 -0
  350. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/reference.md +151 -0
  351. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/github-actions-sonar-server.yml.tmpl +50 -0
  352. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/github-actions-sonarcloud.yml.tmpl +53 -0
  353. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/readme-snippet.md +38 -0
  354. skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/sonar-project.properties.tmpl +31 -0
  355. skilldrop_cli/data/packs/dev-team/skills/sonar-review/SKILL.md +220 -0
  356. skilldrop_cli/data/packs/dev-team/skills/sonar-review/evals/eval_queries.json +34 -0
  357. skilldrop_cli/data/packs/dev-team/skills/sonar-review/evals/evals.json +16 -0
  358. skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/bugs.md +48 -0
  359. skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/code-smells.md +64 -0
  360. skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/coverage-and-duplication.md +74 -0
  361. skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/security-hotspots.md +56 -0
  362. skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/vulnerabilities.md +52 -0
  363. skilldrop_cli/data/packs/dev-team/skills/sonar-review/manifest.json +37 -0
  364. skilldrop_cli/data/packs/dev-team/skills/sonar-review/reference.md +167 -0
  365. skilldrop_cli/data/packs/dev-team/skills/sonar-review/templates/report.md +84 -0
  366. skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/SKILL.md +59 -0
  367. skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/evals/eval_queries.json +34 -0
  368. skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/evals/evals.json +16 -0
  369. skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/manifest.json +11 -0
  370. skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/templates/test-plan.md +83 -0
  371. skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/SKILL.md +88 -0
  372. skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/evals/eval_queries.json +34 -0
  373. skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/evals/evals.json +16 -0
  374. skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/examples/notifications-epic.md +123 -0
  375. skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/manifest.json +14 -0
  376. skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/templates/story.md +40 -0
  377. skilldrop_cli/data/packs/experience-design/pack.json +68 -0
  378. skilldrop_cli/data/packs/experience-design/skills/content-design/SKILL.md +77 -0
  379. skilldrop_cli/data/packs/experience-design/skills/content-design/evals/eval_queries.json +34 -0
  380. skilldrop_cli/data/packs/experience-design/skills/content-design/evals/evals.json +18 -0
  381. skilldrop_cli/data/packs/experience-design/skills/content-design/examples/parking-permit-page.md +102 -0
  382. skilldrop_cli/data/packs/experience-design/skills/content-design/manifest.json +41 -0
  383. skilldrop_cli/data/packs/experience-design/skills/content-design/scripts/readability.py +115 -0
  384. skilldrop_cli/data/packs/experience-design/skills/content-design/templates/content-spec.md +45 -0
  385. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/SKILL.md +79 -0
  386. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/evals/eval_queries.json +34 -0
  387. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/evals/evals.json +19 -0
  388. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/examples/text-field-spec.md +121 -0
  389. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/manifest.json +46 -0
  390. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/reference.md +66 -0
  391. skilldrop_cli/data/packs/experience-design/skills/design-system-spec/templates/component-spec.md +74 -0
  392. skilldrop_cli/data/packs/experience-design/skills/information-architecture/SKILL.md +76 -0
  393. skilldrop_cli/data/packs/experience-design/skills/information-architecture/evals/eval_queries.json +34 -0
  394. skilldrop_cli/data/packs/experience-design/skills/information-architecture/evals/evals.json +19 -0
  395. skilldrop_cli/data/packs/experience-design/skills/information-architecture/examples/payroll-app-nav.md +127 -0
  396. skilldrop_cli/data/packs/experience-design/skills/information-architecture/manifest.json +46 -0
  397. skilldrop_cli/data/packs/experience-design/skills/information-architecture/reference.md +54 -0
  398. skilldrop_cli/data/packs/experience-design/skills/information-architecture/templates/ia-spec.md +77 -0
  399. skilldrop_cli/data/packs/experience-design/skills/service-blueprint/SKILL.md +76 -0
  400. skilldrop_cli/data/packs/experience-design/skills/service-blueprint/evals/eval_queries.json +30 -0
  401. skilldrop_cli/data/packs/experience-design/skills/service-blueprint/evals/evals.json +19 -0
  402. skilldrop_cli/data/packs/experience-design/skills/service-blueprint/examples/insurance-claim-blueprint.md +107 -0
  403. skilldrop_cli/data/packs/experience-design/skills/service-blueprint/manifest.json +45 -0
  404. skilldrop_cli/data/packs/experience-design/skills/service-blueprint/templates/blueprint.md +72 -0
  405. skilldrop_cli/data/packs/experience-design/skills/ux-writing/SKILL.md +77 -0
  406. skilldrop_cli/data/packs/experience-design/skills/ux-writing/evals/eval_queries.json +34 -0
  407. skilldrop_cli/data/packs/experience-design/skills/ux-writing/evals/evals.json +19 -0
  408. skilldrop_cli/data/packs/experience-design/skills/ux-writing/examples/team-invite-flow.md +66 -0
  409. skilldrop_cli/data/packs/experience-design/skills/ux-writing/manifest.json +41 -0
  410. skilldrop_cli/data/packs/experience-design/skills/ux-writing/templates/string-table.md +22 -0
  411. skilldrop_cli/data/packs/grc/pack.json +57 -0
  412. skilldrop_cli/data/packs/grc/skills/dpia/SKILL.md +123 -0
  413. skilldrop_cli/data/packs/grc/skills/dpia/evals/eval_queries.json +34 -0
  414. skilldrop_cli/data/packs/grc/skills/dpia/evals/evals.json +19 -0
  415. skilldrop_cli/data/packs/grc/skills/dpia/examples/acme-warehouse-performance.md +159 -0
  416. skilldrop_cli/data/packs/grc/skills/dpia/manifest.json +47 -0
  417. skilldrop_cli/data/packs/grc/skills/dpia/reference.md +118 -0
  418. skilldrop_cli/data/packs/grc/skills/dpia/templates/dpia.md +103 -0
  419. skilldrop_cli/data/packs/grc/skills/risk-register/SKILL.md +139 -0
  420. skilldrop_cli/data/packs/grc/skills/risk-register/evals/eval_queries.json +34 -0
  421. skilldrop_cli/data/packs/grc/skills/risk-register/evals/evals.json +19 -0
  422. skilldrop_cli/data/packs/grc/skills/risk-register/examples/northwind-register.csv +9 -0
  423. skilldrop_cli/data/packs/grc/skills/risk-register/examples/northwind-register.md +127 -0
  424. skilldrop_cli/data/packs/grc/skills/risk-register/manifest.json +43 -0
  425. skilldrop_cli/data/packs/grc/skills/risk-register/reference.md +99 -0
  426. skilldrop_cli/data/packs/grc/skills/risk-register/scripts/check_register.py +338 -0
  427. skilldrop_cli/data/packs/grc/skills/risk-register/templates/risk-register.csv +2 -0
  428. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/SKILL.md +117 -0
  429. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/evals/eval_queries.json +34 -0
  430. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/evals/evals.json +19 -0
  431. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/examples/northwind-evidence-map.csv +17 -0
  432. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/examples/northwind-type2-security.md +127 -0
  433. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/manifest.json +41 -0
  434. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/reference.md +156 -0
  435. skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/templates/evidence-map.csv +2 -0
  436. skilldrop_cli/data/packs/infra-as-code/pack.json +51 -0
  437. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/SKILL.md +85 -0
  438. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/evals/eval_queries.json +34 -0
  439. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/evals/evals.json +31 -0
  440. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/README.md +71 -0
  441. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/examples/basic/main.tf +30 -0
  442. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/main.tf +153 -0
  443. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/outputs.tf +14 -0
  444. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/variables.tf +71 -0
  445. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/versions.tf +10 -0
  446. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket.md +50 -0
  447. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/manifest.json +41 -0
  448. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/reference.md +105 -0
  449. skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/templates/module-readme.md +55 -0
  450. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/SKILL.md +87 -0
  451. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/evals/eval_queries.json +34 -0
  452. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/evals/evals.json +30 -0
  453. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/evals/files/2/plan.json +133 -0
  454. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/examples/northwind-orders-plan.json +174 -0
  455. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/examples/northwind-orders.md +87 -0
  456. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/manifest.json +48 -0
  457. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/reference.md +77 -0
  458. skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/scripts/plan_summary.py +361 -0
  459. skilldrop_cli/data/packs/product-manager/loops/discover/LOOP.md +81 -0
  460. skilldrop_cli/data/packs/product-manager/loops/discover/evals/eval_queries.json +30 -0
  461. skilldrop_cli/data/packs/product-manager/loops/discover/evals/evals.json +26 -0
  462. skilldrop_cli/data/packs/product-manager/loops/discover/loop.json +41 -0
  463. skilldrop_cli/data/packs/product-manager/pack.json +61 -0
  464. skilldrop_cli/data/packs/product-manager/skills/business-case/SKILL.md +64 -0
  465. skilldrop_cli/data/packs/product-manager/skills/business-case/evals/eval_queries.json +30 -0
  466. skilldrop_cli/data/packs/product-manager/skills/business-case/evals/evals.json +19 -0
  467. skilldrop_cli/data/packs/product-manager/skills/business-case/examples/build-vs-buy-flags.md +42 -0
  468. skilldrop_cli/data/packs/product-manager/skills/business-case/manifest.json +11 -0
  469. skilldrop_cli/data/packs/product-manager/skills/business-case/templates/business-case.md +60 -0
  470. skilldrop_cli/data/packs/product-manager/skills/okr-cascade/SKILL.md +59 -0
  471. skilldrop_cli/data/packs/product-manager/skills/okr-cascade/evals/eval_queries.json +12 -0
  472. skilldrop_cli/data/packs/product-manager/skills/okr-cascade/evals/evals.json +28 -0
  473. skilldrop_cli/data/packs/product-manager/skills/okr-cascade/manifest.json +11 -0
  474. skilldrop_cli/data/packs/product-manager/skills/okr-cascade/templates/okr-cascade.md +46 -0
  475. skilldrop_cli/data/packs/product-manager/skills/prd-draft/SKILL.md +62 -0
  476. skilldrop_cli/data/packs/product-manager/skills/prd-draft/evals/eval_queries.json +34 -0
  477. skilldrop_cli/data/packs/product-manager/skills/prd-draft/evals/evals.json +17 -0
  478. skilldrop_cli/data/packs/product-manager/skills/prd-draft/manifest.json +16 -0
  479. skilldrop_cli/data/packs/product-manager/skills/prd-draft/templates/prd.md +66 -0
  480. skilldrop_cli/data/packs/product-manager/skills/prfaq/SKILL.md +76 -0
  481. skilldrop_cli/data/packs/product-manager/skills/prfaq/evals/eval_queries.json +13 -0
  482. skilldrop_cli/data/packs/product-manager/skills/prfaq/evals/evals.json +32 -0
  483. skilldrop_cli/data/packs/product-manager/skills/prfaq/manifest.json +11 -0
  484. skilldrop_cli/data/packs/product-manager/skills/prfaq/templates/prfaq.md +60 -0
  485. skilldrop_cli/data/packs/product-manager/skills/requirements-interview/SKILL.md +61 -0
  486. skilldrop_cli/data/packs/product-manager/skills/requirements-interview/evals/eval_queries.json +34 -0
  487. skilldrop_cli/data/packs/product-manager/skills/requirements-interview/evals/evals.json +16 -0
  488. skilldrop_cli/data/packs/product-manager/skills/requirements-interview/manifest.json +14 -0
  489. skilldrop_cli/data/packs/product-manager/skills/requirements-interview/templates/interview-kit.md +63 -0
  490. skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/SKILL.md +63 -0
  491. skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/evals/eval_queries.json +13 -0
  492. skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/evals/evals.json +36 -0
  493. skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/examples/market-entry-tows.md +42 -0
  494. skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/manifest.json +15 -0
  495. skilldrop_cli/data/packs/product-manager/skills/success-metrics/SKILL.md +65 -0
  496. skilldrop_cli/data/packs/product-manager/skills/success-metrics/evals/eval_queries.json +11 -0
  497. skilldrop_cli/data/packs/product-manager/skills/success-metrics/evals/evals.json +27 -0
  498. skilldrop_cli/data/packs/product-manager/skills/success-metrics/manifest.json +11 -0
  499. skilldrop_cli/data/packs/product-manager/skills/success-metrics/templates/metrics-plan.md +55 -0
  500. skilldrop_cli/data/packs/product-manager/skills/user-journey-map/SKILL.md +65 -0
  501. skilldrop_cli/data/packs/product-manager/skills/user-journey-map/evals/eval_queries.json +12 -0
  502. skilldrop_cli/data/packs/product-manager/skills/user-journey-map/evals/evals.json +30 -0
  503. skilldrop_cli/data/packs/product-manager/skills/user-journey-map/examples/b2b-saas-onboarding.md +69 -0
  504. skilldrop_cli/data/packs/product-manager/skills/user-journey-map/manifest.json +15 -0
  505. skilldrop_cli/data/packs/product-manager/skills/user-journey-map/templates/journey-map.md +47 -0
  506. skilldrop_cli/data/packs/research/pack.json +52 -0
  507. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/SKILL.md +131 -0
  508. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/evals/eval_queries.json +34 -0
  509. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/evals/evals.json +19 -0
  510. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/examples/conversion-drop.md +132 -0
  511. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/manifest.json +43 -0
  512. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/reference.md +107 -0
  513. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/scripts/ach_matrix.py +204 -0
  514. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/templates/hypothesis-comparison.md +61 -0
  515. skilldrop_cli/data/packs/research/skills/hypothesis-comparison/templates/matrix.csv +4 -0
  516. skilldrop_cli/data/packs/research/skills/research-plan/SKILL.md +122 -0
  517. skilldrop_cli/data/packs/research/skills/research-plan/evals/eval_queries.json +34 -0
  518. skilldrop_cli/data/packs/research/skills/research-plan/evals/evals.json +28 -0
  519. skilldrop_cli/data/packs/research/skills/research-plan/examples/four-day-week-plan.md +97 -0
  520. skilldrop_cli/data/packs/research/skills/research-plan/manifest.json +47 -0
  521. skilldrop_cli/data/packs/research/skills/research-plan/reference.md +88 -0
  522. skilldrop_cli/data/packs/research/skills/research-plan/templates/research-plan.md +54 -0
  523. skilldrop_cli/data/packs/research/skills/source-synthesis/SKILL.md +123 -0
  524. skilldrop_cli/data/packs/research/skills/source-synthesis/evals/eval_queries.json +34 -0
  525. skilldrop_cli/data/packs/research/skills/source-synthesis/evals/evals.json +19 -0
  526. skilldrop_cli/data/packs/research/skills/source-synthesis/examples/four-day-week.md +146 -0
  527. skilldrop_cli/data/packs/research/skills/source-synthesis/manifest.json +42 -0
  528. skilldrop_cli/data/packs/research/skills/source-synthesis/reference.md +92 -0
  529. skilldrop_cli/data/packs/research/skills/source-synthesis/scripts/citations.py +314 -0
  530. skilldrop_cli/data/packs/research/skills/source-synthesis/templates/synthesis.md +46 -0
  531. skilldrop_cli/data/packs/skill-engineering/pack.json +46 -0
  532. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/SKILL.md +139 -0
  533. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/evals/eval_queries.json +10 -0
  534. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/evals/evals.json +19 -0
  535. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/examples/release-notes-skill.md +185 -0
  536. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/manifest.json +42 -0
  537. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/reference.md +144 -0
  538. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/templates/eval_queries.json +9 -0
  539. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/templates/evals.json +16 -0
  540. skilldrop_cli/data/packs/skill-engineering/skills/skill-author/templates/skill-template.md +52 -0
  541. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/SKILL.md +131 -0
  542. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/eval_queries.json +11 -0
  543. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/evals.json +19 -0
  544. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/changelog-writer/SKILL.md +10 -0
  545. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/pr-summary/SKILL.md +12 -0
  546. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/pr-summary/references/tone.md +3 -0
  547. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/pr-summary/scripts/collect.py +6 -0
  548. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/examples/meeting-notes-review.md +147 -0
  549. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/manifest.json +50 -0
  550. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/reference.md +135 -0
  551. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/scripts/lint_skill.py +481 -0
  552. skilldrop_cli/data/packs/skill-engineering/skills/skill-review/templates/review.md +43 -0
  553. skilldrop_cli/data/packs/solution-architect/loops/design/LOOP.md +83 -0
  554. skilldrop_cli/data/packs/solution-architect/loops/design/evals/eval_queries.json +30 -0
  555. skilldrop_cli/data/packs/solution-architect/loops/design/evals/evals.json +26 -0
  556. skilldrop_cli/data/packs/solution-architect/loops/design/loop.json +47 -0
  557. skilldrop_cli/data/packs/solution-architect/pack.json +65 -0
  558. skilldrop_cli/data/packs/solution-architect/skills/adr-generator/SKILL.md +50 -0
  559. skilldrop_cli/data/packs/solution-architect/skills/adr-generator/evals/eval_queries.json +34 -0
  560. skilldrop_cli/data/packs/solution-architect/skills/adr-generator/evals/evals.json +17 -0
  561. skilldrop_cli/data/packs/solution-architect/skills/adr-generator/manifest.json +11 -0
  562. skilldrop_cli/data/packs/solution-architect/skills/adr-generator/templates/madr.md +56 -0
  563. skilldrop_cli/data/packs/solution-architect/skills/adr-generator/templates/nygard.md +19 -0
  564. skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/SKILL.md +69 -0
  565. skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/evals/eval_queries.json +34 -0
  566. skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/evals/evals.json +18 -0
  567. skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/manifest.json +11 -0
  568. skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/reference.md +73 -0
  569. skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/templates/openapi-skeleton.yaml +148 -0
  570. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/SKILL.md +66 -0
  571. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/evals/eval_queries.json +34 -0
  572. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/evals/evals.json +16 -0
  573. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/examples/aws-three-tier.md +44 -0
  574. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/examples/c4-container-saas.md +51 -0
  575. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/examples/microservices-sequence.md +49 -0
  576. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/manifest.json +31 -0
  577. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/c4-container.puml +31 -0
  578. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/mermaid-aws.md +52 -0
  579. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/mermaid-flowchart.md +37 -0
  580. skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/mermaid-sequence.md +39 -0
  581. skilldrop_cli/data/packs/solution-architect/skills/data-contract/SKILL.md +67 -0
  582. skilldrop_cli/data/packs/solution-architect/skills/data-contract/evals/eval_queries.json +34 -0
  583. skilldrop_cli/data/packs/solution-architect/skills/data-contract/evals/evals.json +16 -0
  584. skilldrop_cli/data/packs/solution-architect/skills/data-contract/manifest.json +11 -0
  585. skilldrop_cli/data/packs/solution-architect/skills/data-contract/reference.md +46 -0
  586. skilldrop_cli/data/packs/solution-architect/skills/data-contract/templates/data-contract.md +69 -0
  587. skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/SKILL.md +68 -0
  588. skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/evals/eval_queries.json +34 -0
  589. skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/evals/evals.json +16 -0
  590. skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/manifest.json +11 -0
  591. skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/reference.md +56 -0
  592. skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/templates/schema-design.md +75 -0
  593. skilldrop_cli/data/packs/solution-architect/skills/design-doc/SKILL.md +49 -0
  594. skilldrop_cli/data/packs/solution-architect/skills/design-doc/evals/eval_queries.json +34 -0
  595. skilldrop_cli/data/packs/solution-architect/skills/design-doc/evals/evals.json +17 -0
  596. skilldrop_cli/data/packs/solution-architect/skills/design-doc/manifest.json +14 -0
  597. skilldrop_cli/data/packs/solution-architect/skills/design-doc/templates/design-doc.md +98 -0
  598. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/SKILL.md +87 -0
  599. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/evals/eval_queries.json +34 -0
  600. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/evals/evals.json +15 -0
  601. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/manifest.json +36 -0
  602. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/reference.md +91 -0
  603. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/requirements.txt +3 -0
  604. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/_figma_client.py +71 -0
  605. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/frame_to_mermaid.py +102 -0
  606. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/inspect_file.py +46 -0
  607. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/list_comments.py +35 -0
  608. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/post_comment.py +52 -0
  609. skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/templates/figjam-import.json +20 -0
  610. skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/SKILL.md +63 -0
  611. skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/evals/eval_queries.json +34 -0
  612. skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/evals/evals.json +16 -0
  613. skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/manifest.json +16 -0
  614. skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/reference.md +74 -0
  615. skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/templates/nfr-spec.md +56 -0
  616. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/SKILL.md +103 -0
  617. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/evals/eval_queries.json +34 -0
  618. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/evals/evals.json +16 -0
  619. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/manifest.json +11 -0
  620. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/reference.md +150 -0
  621. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/templates/description.md +52 -0
  622. skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/templates/extraction.md +55 -0
  623. skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/SKILL.md +56 -0
  624. skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/evals/eval_queries.json +30 -0
  625. skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/evals/evals.json +18 -0
  626. skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/examples/queue-selection.md +41 -0
  627. skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/manifest.json +11 -0
  628. skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/templates/matrix.md +45 -0
  629. skilldrop_cli/data/packs/solution-architect/skills/threat-model/SKILL.md +65 -0
  630. skilldrop_cli/data/packs/solution-architect/skills/threat-model/evals/eval_queries.json +34 -0
  631. skilldrop_cli/data/packs/solution-architect/skills/threat-model/evals/evals.json +18 -0
  632. skilldrop_cli/data/packs/solution-architect/skills/threat-model/examples/document-upload.md +56 -0
  633. skilldrop_cli/data/packs/solution-architect/skills/threat-model/manifest.json +11 -0
  634. skilldrop_cli/data/packs/solution-architect/skills/threat-model/reference.md +69 -0
  635. skilldrop_cli/data/packs/sre-oncall/loops/operate/LOOP.md +84 -0
  636. skilldrop_cli/data/packs/sre-oncall/loops/operate/evals/eval_queries.json +30 -0
  637. skilldrop_cli/data/packs/sre-oncall/loops/operate/evals/evals.json +25 -0
  638. skilldrop_cli/data/packs/sre-oncall/loops/operate/loop.json +41 -0
  639. skilldrop_cli/data/packs/sre-oncall/pack.json +59 -0
  640. skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/SKILL.md +65 -0
  641. skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/evals/eval_queries.json +34 -0
  642. skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/evals/evals.json +19 -0
  643. skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/manifest.json +11 -0
  644. skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/reference.md +54 -0
  645. skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/templates/cost-model.md +68 -0
  646. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/SKILL.md +121 -0
  647. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/evals/eval_queries.json +34 -0
  648. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/evals/evals.json +29 -0
  649. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/examples/acme-aws-september.md +247 -0
  650. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/examples/acme-cur-2026-08-09.csv +1085 -0
  651. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/manifest.json +49 -0
  652. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/reference.md +100 -0
  653. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/scripts/cost_summary.py +630 -0
  654. skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/templates/cost-review.md +36 -0
  655. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/SKILL.md +114 -0
  656. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/eval_queries.json +34 -0
  657. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/evals.json +28 -0
  658. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/files/1/deploys.csv +49 -0
  659. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/files/1/incidents.csv +7 -0
  660. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/files/1/prs.csv +84 -0
  661. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/checkout-api-8-weeks.md +123 -0
  662. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/deployments.csv +49 -0
  663. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/incidents.csv +7 -0
  664. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/prs.csv +84 -0
  665. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/manifest.json +48 -0
  666. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/reference.md +83 -0
  667. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/scripts/delivery_metrics.py +566 -0
  668. skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/templates/delivery-report.md +31 -0
  669. skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/SKILL.md +68 -0
  670. skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/evals/eval_queries.json +34 -0
  671. skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/evals/evals.json +16 -0
  672. skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/manifest.json +14 -0
  673. skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/reference.md +43 -0
  674. skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/templates/messages.md +82 -0
  675. skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/SKILL.md +70 -0
  676. skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/evals/eval_queries.json +34 -0
  677. skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/evals/evals.json +16 -0
  678. skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/manifest.json +15 -0
  679. skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/reference.md +67 -0
  680. skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/templates/observability-plan.md +62 -0
  681. skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/SKILL.md +66 -0
  682. skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/evals/eval_queries.json +34 -0
  683. skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/evals/evals.json +17 -0
  684. skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/manifest.json +14 -0
  685. skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/templates/postmortem.md +67 -0
  686. skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/SKILL.md +42 -0
  687. skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/evals/eval_queries.json +34 -0
  688. skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/evals/evals.json +17 -0
  689. skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/manifest.json +11 -0
  690. skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/templates/runbook.md +109 -0
  691. skilldrop_cli/data/packs/stakeholder-comms/pack.json +60 -0
  692. skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/SKILL.md +74 -0
  693. skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/evals/eval_queries.json +34 -0
  694. skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/evals/evals.json +15 -0
  695. skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/manifest.json +11 -0
  696. skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/reference.md +175 -0
  697. skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/SKILL.md +68 -0
  698. skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/evals/eval_queries.json +34 -0
  699. skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/evals/evals.json +17 -0
  700. skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/manifest.json +11 -0
  701. skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/SKILL.md +45 -0
  702. skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/evals/eval_queries.json +34 -0
  703. skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/evals/evals.json +17 -0
  704. skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/manifest.json +11 -0
  705. skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/templates/exec-summary.md +48 -0
  706. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/SKILL.md +77 -0
  707. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/evals/eval_queries.json +34 -0
  708. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/evals/evals.json +18 -0
  709. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/examples/local-setup-guide.md +127 -0
  710. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/manifest.json +11 -0
  711. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/templates/api-reference.md +120 -0
  712. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/templates/design-walkthrough.md +72 -0
  713. skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/templates/setup-guide.md +109 -0
  714. skilldrop_cli/data/packs/trackers/pack.json +61 -0
  715. skilldrop_cli/data/packs/trackers/skills/backlog-triage/SKILL.md +116 -0
  716. skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/eval_queries.json +34 -0
  717. skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/evals.json +30 -0
  718. skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/files/1/examples/northwind-backlog.csv +28 -0
  719. skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/files/2/issues.json +6052 -0
  720. skilldrop_cli/data/packs/trackers/skills/backlog-triage/examples/northwind-backlog.csv +28 -0
  721. skilldrop_cli/data/packs/trackers/skills/backlog-triage/examples/northwind-checkout-triage.md +202 -0
  722. skilldrop_cli/data/packs/trackers/skills/backlog-triage/manifest.json +42 -0
  723. skilldrop_cli/data/packs/trackers/skills/backlog-triage/reference.md +106 -0
  724. skilldrop_cli/data/packs/trackers/skills/backlog-triage/scripts/triage_backlog.py +461 -0
  725. skilldrop_cli/data/packs/trackers/skills/backlog-triage/templates/triage-report.md +42 -0
  726. skilldrop_cli/data/packs/trackers/skills/team-status-report/SKILL.md +111 -0
  727. skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/eval_queries.json +30 -0
  728. skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/evals.json +30 -0
  729. skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/files/1/examples/northwind-week-40.csv +16 -0
  730. skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/files/2/issues.json +1212 -0
  731. skilldrop_cli/data/packs/trackers/skills/team-status-report/examples/northwind-week-40.csv +16 -0
  732. skilldrop_cli/data/packs/trackers/skills/team-status-report/examples/northwind-weekly-status.md +160 -0
  733. skilldrop_cli/data/packs/trackers/skills/team-status-report/manifest.json +33 -0
  734. skilldrop_cli/data/packs/trackers/skills/team-status-report/reference.md +92 -0
  735. skilldrop_cli/data/packs/trackers/skills/team-status-report/scripts/status_counts.py +486 -0
  736. skilldrop_cli/data/packs/trackers/skills/team-status-report/templates/status-report.md +42 -0
  737. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/SKILL.md +116 -0
  738. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/eval_queries.json +34 -0
  739. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/evals.json +31 -0
  740. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/files/1/examples/prd-guest-checkout.md +53 -0
  741. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/files/2/examples/prd-guest-checkout.md +53 -0
  742. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/files/2/examples/tracker-after-two-weeks.csv +30 -0
  743. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/guest-checkout-spec.json +98 -0
  744. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/guest-checkout-sync.md +151 -0
  745. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/prd-guest-checkout.md +53 -0
  746. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/tracker-after-two-weeks.csv +30 -0
  747. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/manifest.json +41 -0
  748. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/reference.md +101 -0
  749. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/scripts/brief_sync.py +501 -0
  750. skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/templates/issues-spec.json +26 -0
  751. skilldrop_cli/data/profiles.json +24 -0
  752. skilldrop_cli-0.16.3.dist-info/METADATA +91 -0
  753. skilldrop_cli-0.16.3.dist-info/RECORD +757 -0
  754. skilldrop_cli-0.16.3.dist-info/WHEEL +5 -0
  755. skilldrop_cli-0.16.3.dist-info/entry_points.txt +2 -0
  756. skilldrop_cli-0.16.3.dist-info/licenses/LICENSE +9 -0
  757. skilldrop_cli-0.16.3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: council-review
3
+ description: Convene a council of distinct senior-engineer personas (Architect, Security, Operator/SRE, Pragmatist, User-Advocate, plus optional bench seats) to deliberate a decision, design, or code change โ€” each takes an independent stance, the genuine disagreements are surfaced as named cruxes, and a Chair issues a reconciled verdict that records dissents and states what would change the decision. The "Claude Council." Use when a choice has real tradeoffs and one reviewer's voice isn't enough: architecture decisions, risky changes before merge, RFC/design scrutiny, "should we adopt X?", rewrite-vs-refactor, or a pre-mortem.
4
+ ---
5
+
6
+ # council-review
7
+
8
+ You convene a **council of distinct expert personas** to deliberate something consequential, then reconcile their views into a decision. The value is not five voices agreeing โ€” it's **surfacing where senior engineers genuinely disagree, naming the tradeoff at the heart of it, and deciding anyway.**
9
+
10
+ This is the deliberation counterpart to the single-voice reviewers. Use [`devils-advocate`](../../../dev-team/skills/devils-advocate/SKILL.md) when you want one adversarial pass on code, [`doc-critique`](../doc-critique/SKILL.md) for one pass on a doc, [`tech-comparison-matrix`](../../../solution-architect/skills/tech-comparison-matrix/SKILL.md) for a weighted scoring of named options. Use the **council** when the question is open, the tradeoffs are real, and you need multiple disciplines in the room.
11
+
12
+ ## What the council reviews
13
+
14
+ Three shapes โ€” the seats apply to all three; their evidence just differs:
15
+
16
+ | Shape | Example | Evidence a seat cites |
17
+ |---|---|---|
18
+ | **Decision / question** | "Monolith or services?" ยท "Adopt Kafka?" ยท "Rewrite or refactor?" | the specific claim or assumption |
19
+ | **Design / RFC** | a design doc, an architecture proposal, an API contract | the section / interface |
20
+ | **Code change** | a diff, a PR, a load-bearing module before merge | `file:line` |
21
+
22
+ If the scope is unclear, ask once which of the three it is. Don't convene a council on the whole repo โ€” the scope is the decision/design/change in front of you.
23
+
24
+ ## The council
25
+
26
+ Five **standing seats** โ€” each a distinct mandate with a lane it stays in. Read the seat file before speaking for it:
27
+
28
+ | Seat | Asks | File |
29
+ |---|---|---|
30
+ | ๐Ÿ› **Architect** | Does this fit the system? Right abstraction, coupling, long-term complexity? | [`seats/architect.md`](seats/architect.md) |
31
+ | ๐Ÿ”’ **Security Engineer** | What's the threat model? Trust boundaries, data, dependencies? | [`seats/security-engineer.md`](seats/security-engineer.md) |
32
+ | ๐Ÿ›  **Operator (SRE)** | What happens at 3am? Failure modes, rollback, observability, blast radius? | [`seats/operator.md`](seats/operator.md) |
33
+ | โš–๏ธ **Pragmatist** | Is this the simplest thing that works? Over-engineered? Do we even need it? | [`seats/pragmatist.md`](seats/pragmatist.md) |
34
+ | ๐Ÿ‘ค **User-Advocate** | Is it correct for the people who use it? Edge cases, errors, contracts, compat? | [`seats/user-advocate.md`](seats/user-advocate.md) |
35
+
36
+ Plus a **bench** of optional seats (Performance, Cost/FinOps, Data & Migration, Accessibility, Compliance) โ€” seat them only when the change warrants. See [`seats/bench.md`](seats/bench.md). Chairing and roster-choice guidance that doesn't fit here lives in [`reference.md`](reference.md).
37
+
38
+ The **Chair** is not a sixth opinion. The Chair facilitates, finds the cruxes, and decides.
39
+
40
+ ## How to respond
41
+
42
+ 1. **Frame the question.** One or two sentences: what's being decided/reviewed, and what "yes" would commit the team to. State the scope shape (decision / design / code). If acceptance criteria or constraints were given, restate them โ€” they're what the seats judge against.
43
+
44
+ 2. **Seat the council.** Always seat the five standing seats. Add bench seats the change clearly warrants (a hot-path change โ†’ seat Performance; a schema migration โ†’ seat Data & Migration). **State who you seated and who you benched, and why.** A seat with nothing relevant to say should *abstain* (see step 4), not pad the record.
45
+
46
+ 3. **Take each seat's independent position โ€” before any cross-talk.** Independence prevents groupthink. Each seat declares:
47
+ - a **stance**: ๐ŸŸข Support ยท ๐ŸŸก Support with conditions ยท ๐Ÿ”ด Oppose ยท โšช Abstain (out of my lane)
48
+ - **1โ€“3 concrete points** tied to the actual artifact (a `file:line`, a named assumption, a specific interface) โ€” never a generic platitude.
49
+ Keep each seat tight. A seat is not writing a report; it's staking a position with evidence.
50
+
51
+ 4. **Surface the cruxes โ€” this is the most important step.** A *crux* is a specific point where seats genuinely disagree, and the disagreement turns on a real tradeoff or an unresolved fact. For each crux, write:
52
+ - **the split**: who's on each side (e.g. "Operator ๐Ÿ”ด vs Pragmatist ๐ŸŸข")
53
+ - **what it turns on**: the actual tradeoff ("durability vs delivery speed") or the missing fact ("we don't know the p99 write volume")
54
+ - **what would resolve it**: the data, constraint, or decision that breaks the tie.
55
+
56
+ **Do not manufacture cruxes.** If the council substantively agrees, say so plainly and move on โ€” fabricated conflict is the #1 failure of this skill. Real councils often converge; the honest output is sometimes "unanimous, here's why."
57
+
58
+ 5. **Chair's verdict.** The Chair decides โ€” names the tradeoff being chosen and what it trades away. Pick one:
59
+
60
+ | Verdict | Meaning |
61
+ |---|---|
62
+ | โœ… **PROCEED** | The council backs it. Minor notes may remain. |
63
+ | โš ๏ธ **PROCEED WITH CONDITIONS** | Backed *if* the listed conditions are met before merge/commit. |
64
+ | ๐Ÿ” **REVISE** | Right direction, but named points must be reworked and re-reviewed. |
65
+ | โ›” **RECONSIDER** | A blocking problem, or it solves the wrong problem. Don't proceed as-is. |
66
+ | ๐Ÿงญ **SPLIT** | Genuine deadlock. Rare. The Chair still states a *lean* and the single question that would settle it. |
67
+
68
+ The verdict must: (a) name the **tradeoff chosen**, (b) **record dissents** โ€” the strongest minority point, preserved not erased, and (c) state **"what would change our mind"** so the decision is revisitable.
69
+
70
+ 6. **Output** โ€” use [`templates/council-review.md`](templates/council-review.md). Lead with the verdict; readers want the decision first, the deliberation second.
71
+
72
+ ## Quality bar
73
+
74
+ - **Real disagreement, or honest consensus โ€” never theater.** Manufactured conflict between personas is the cardinal sin. If they agree, say "unanimous" and give the one reason; spend the words on the cruxes that are real.
75
+ - **Every seat point is concrete and attached to evidence.** `file:line` for code, the named assumption for a decision. โŒ "Security has concerns." โœ… "Security ๐Ÿ”ด: `exec(\`tar ${path}\`)` at jobs/export.ts:28 โ€” `path` is user-controlled; command injection."
76
+ - **Stances are explicit and scannable.** The reader sees the split (๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช) at a glance, before reading a word of argument.
77
+ - **Seats stay in their lane.** The Pragmatist doesn't relitigate the threat model; Security doesn't lecture on naming. Overlap means the roster is wrong โ€” cut or merge.
78
+ - **The Chair decides, doesn't average.** โŒ "There are good points on both sides." โœ… "PROCEED WITH CONDITIONS โ€” we accept the added operational load (Operator's dissent noted) because the security gain is load-bearing; revisit if on-call pages exceed X."
79
+ - **Dissent is preserved.** The minority seat's strongest point survives into the verdict. A council that erases dissent is just one opinion wearing five hats.
80
+ - **Falsifiable verdict.** "What would change our mind" is mandatory โ€” it turns a verdict into a decision the team can revisit when facts change.
81
+
82
+ ## When to use this skill
83
+
84
+ - โœ… A consequential decision with real tradeoffs (architecture, build-vs-buy, rewrite-vs-refactor, adopt-this-tool)
85
+ - โœ… A risky or load-bearing change before merge, where one reviewer's lens isn't enough
86
+ - โœ… An RFC / design doc that needs multi-disciplinary scrutiny (security + ops + maintainability at once)
87
+ - โœ… A pre-mortem: "assume this shipped and broke โ€” which seat saw it coming?"
88
+
89
+ ## When NOT to use this skill
90
+
91
+ - โŒ A trivial or one-line change โ€” convening five voices is noise. Use `devils-advocate` or just review it.
92
+ - โŒ A single-lens task. Pure code review โ†’ `devils-advocate`. Pure doc review โ†’ `doc-critique`. Scoring named options on weighted criteria โ†’ `tech-comparison-matrix`.
93
+ - โŒ When you need **one** expert answer fast, not a deliberation. The council is for when the disagreement *is* the point.
94
+ - โŒ Greenfield spike/throwaway code โ€” deliberation wastes effort on what won't survive.
95
+ - โŒ As a rubber stamp to manufacture consensus for a decision already made. If the call is final, don't stage a fake trial.
96
+
97
+ ## Anti-patterns to avoid
98
+
99
+ - โŒ **Manufactured conflict.** Inventing a ๐Ÿ”ด so the council "looks balanced." If everyone supports it, that's the finding.
100
+ - โŒ **Persona cosplay.** Flowery in-character roleplay ("As a battle-scarred SRE, I muse...") over substance. The persona is a *lens*, not a costume.
101
+ - โŒ **Groupthink.** Seats echoing each other. Take positions independently (step 3) *before* cross-talk.
102
+ - โŒ **A Chair that punts.** "It depends / both have merit" is not a verdict. Decide, name the tradeoff, record the dissent.
103
+ - โŒ **Overlapping seats.** Two seats flagging the same issue means the roster is redundant โ€” that's a smell, not thoroughness.
104
+ - โŒ **Inflated roster.** Seating eight voices on a small change. Seat what's relevant; bench the rest explicitly.
105
+ - โŒ **Reviewing out of scope.** The council deliberates the decision/change in front of it, not the whole codebase's debt.
106
+ - โŒ **Burying the verdict.** Leading with the deliberation transcript instead of the decision. Verdict first.
@@ -0,0 +1,38 @@
1
+ [
2
+ {
3
+ "query": "Convene the council on this architecture decision",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "I want multiple senior perspectives to deliberate this change",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Get an architect, security, and SRE view on this before we commit",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Run a pre-mortem style multi-perspective review of this RFC",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "This is risky and load-bearing โ€” I need more than one reviewer's lens",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Review this code for edge cases the first pass missed",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Critique this document against its quality bar",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Score Postgres vs DynamoDB on weighted criteria",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Write the ADR recording the decision we already made",
36
+ "should_trigger": false
37
+ }
38
+ ]
@@ -0,0 +1,18 @@
1
+ {
2
+ "skill_name": "council-review",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "We're considering moving our monolith's checkout flow onto a separate service before Black Friday. Convene the council and give me a verdict.",
7
+ "assertions": [
8
+ "Each of the five standing seats takes an independent stance (support / conditions / oppose / abstain) before any cross-talk",
9
+ "Every seat point is concrete and attached to evidence โ€” file:line for code, or the named assumption for a decision",
10
+ "Genuine disagreements are surfaced as named cruxes; agreement is reported honestly as unanimous rather than manufactured into conflict",
11
+ "A Chair issues a single reconciled verdict (PROCEED / WITH CONDITIONS / REVISE / RECONSIDER / SPLIT)",
12
+ "The verdict names the tradeoff chosen, records dissent, and states what would change the decision",
13
+ "Bench seats are added only when the change warrants them, and benching is stated explicitly",
14
+ "No persona cosplay โ€” the persona is used as a lens, not costume prose"
15
+ ]
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,75 @@
1
+ # Example โ€” council-review on a decision
2
+
3
+ **Input given to the skill:**
4
+
5
+ > Should we put a Redis cache in front of our Postgres read queries for the product-catalog API? Catalog reads are ~80% of our traffic and p99 latency has crept to 400ms. Catalog data changes a few times a day via an internal admin tool. Team is 4 engineers, no one currently runs Redis.
6
+
7
+ This is a **decision** shape (not a diff). Below is the artifact the skill produces.
8
+
9
+ ---
10
+
11
+ # Council review: Add Redis cache in front of product-catalog reads
12
+ _Scope: decision ยท the question above ยท Reviewed: 2026-06-05_
13
+
14
+ ## Verdict
15
+
16
+ **โš ๏ธ PROCEED WITH CONDITIONS**
17
+
18
+ Cache the catalog reads โ€” the read/write ratio (80% reads, writes a few times a day) is close to the ideal case for caching, and 400ms p99 is a real user-facing problem. But the win is only safe if invalidation is driven by the admin write path, not by a blind TTL, and if the cache is a *performance* dependency the API can lose without going down. We accept running one new piece of infrastructure (Operator's dissent noted) because the latency problem is load-bearing for 80% of traffic and the data shape is genuinely cache-friendly.
19
+
20
+ **Tradeoff chosen:** one more thing to operate, in exchange for a large latency win on the dominant traffic path.
21
+ **What would change our mind:** if catalog write frequency rises to "many times per minute" (e.g. real-time pricing), the invalidation cost flips the math โ€” revisit. Likewise if a profiler shows the 400ms is a missing index, not load โ€” fix that first and the cache may be unnecessary.
22
+
23
+ ### Conditions
24
+ 1. **Invalidation on write, not just TTL.** The admin tool must bust the affected cache keys on save. Keep a short backstop TTL (e.g. 5 min) for safety, but correctness comes from event-driven invalidation.
25
+ 2. **Cache is non-critical.** On Redis timeout/miss/down, fall through to Postgres โ€” degraded latency, not an outage. Wrap with a timeout + circuit breaker.
26
+ 3. **Confirm the cause first.** Run one `EXPLAIN ANALYZE` on the hot query before building. If p99 is a missing index, do that first (cheaper, no new infra).
27
+ 4. **One metric before, one after.** Capture current p99 and cache hit-rate so the win is measured, not assumed.
28
+
29
+ ## The vote
30
+
31
+ | Seat | Stance | One-line position |
32
+ |---|---|---|
33
+ | ๐Ÿ› Architect | ๐ŸŸก Conditions | Fine if the cache sits behind the repository layer, not sprinkled through handlers. |
34
+ | ๐Ÿ”’ Security | โšช Abstain | Public catalog data, no PII, no trust boundary crossed. Nothing to add. |
35
+ | ๐Ÿ›  Operator | ๐ŸŸก Conditions | I'm now on call for Redis. Acceptable only if the API degrades gracefully without it. |
36
+ | โš–๏ธ Pragmatist | ๐ŸŸก Conditions | Probably worth it โ€” but prove it's load, not a missing index, before adding infra. |
37
+ | ๐Ÿ‘ค User-Advocate | ๐ŸŸก Conditions | Stale catalog for minutes is mostly fine โ€” except price. Invalidate price-bearing fields on write. |
38
+ | โšก Performance (bench, seated: latency is the whole point) | ๐ŸŸข Support | 80/20 read ratio + small, slow-changing dataset is the textbook cache win. |
39
+
40
+ _Benched: Cost (single small Redis, negligible), Data & Migration (no schema change), A11y (no UI), Compliance (public data)._
41
+
42
+ ## Cruxes
43
+
44
+ ### Crux 1 โ€” Is the 400ms actually load, or a missing index?
45
+ - **Split:** Pragmatist ๐ŸŸก / Performance ๐ŸŸข
46
+ - **Turns on:** a missing fact โ€” nobody has profiled the hot query. If it's an unindexed scan, an index fixes p99 with zero new infra; if it's genuine read volume, the cache is right.
47
+ - **Resolves with:** one `EXPLAIN ANALYZE` (Condition 3). Cheap to settle before committing.
48
+
49
+ ### Crux 2 โ€” Staleness: acceptable, or a correctness bug?
50
+ - **Split:** User-Advocate ๐ŸŸก / Performance ๐ŸŸข (and Operator's TTL instinct)
51
+ - **Turns on:** a tradeoff โ€” a blind TTL is simple but serves stale **prices** for up to the TTL window, which is a real money/trust problem; event-driven invalidation is correct but couples the admin tool to the cache.
52
+ - **Resolves with:** invalidate-on-write for price-bearing fields, TTL as backstop only (Condition 1). The Chair takes correctness over simplicity here because wrong prices are not a "minor staleness" issue.
53
+
54
+ ## Positions (detail)
55
+
56
+ ### ๐Ÿ› Architect โ€” ๐ŸŸก Conditions
57
+ - Put the cache read/write inside the existing `CatalogRepository`, not in the API handlers. One seam, one place to reason about invalidation. Sprinkling `redis.get` through handlers (the tempting quick version) couples every endpoint to the cache and makes invalidation un-auditable.
58
+
59
+ ### ๐Ÿ”’ Security โ€” โšช Abstain
60
+ - Catalog is public, read-only, no PII. No new trust boundary. (Stated rather than inventing a concern.)
61
+
62
+ ### ๐Ÿ›  Operator โ€” ๐ŸŸก Conditions
63
+ - A new stateful dependency means a new pager rotation, a new thing that can OOM or fail over. Acceptable **only** if a Redis outage degrades the API to "slower," not "down" โ€” timeout + circuit breaker + fall-through to Postgres (Condition 2). Add a hit-rate + Redis-availability metric.
64
+
65
+ ### โš–๏ธ Pragmatist โ€” ๐ŸŸก Conditions
66
+ - Don't add infra to fix a problem we haven't diagnosed. Profile first (Condition 3). If it's load, the cache is justified and I support it โ€” this isn't gold-plating, it's the right tool for an 80%-read path. Just earn it with one query plan.
67
+
68
+ ### ๐Ÿ‘ค User-Advocate โ€” ๐ŸŸก Conditions
69
+ - Users tolerate a slightly stale *description* or *image*. They do **not** tolerate a stale **price** at checkout. Invalidation must cover price-bearing fields immediately on admin save; everything else can ride the TTL.
70
+
71
+ ### โšก Performance โ€” ๐ŸŸข Support
72
+ - 80% reads, dataset small enough to fit in memory, changes a few times a day: this is the canonical caching win. Expect p99 to drop from ~400ms to single-digit-ms on cache hits. The win scales with the read ratio, which is already dominant.
73
+
74
+ ## Dissent on record
75
+ **Operator** supported only under conditions and wants it on record that this adds permanent operational surface for a 4-person team with no current Redis experience. Watch: if Redis-related pages exceed ~1/month or the team can't keep hit-rate healthy, the operational cost may outweigh the latency win โ€” that's the trigger to reconsider (ties to "what would change our mind"). The graceful-degradation requirement (Condition 2) exists specifically so that a Redis incident is a latency blip, not a catalog outage.
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "council-review",
3
+ "version": "0.1.0",
4
+ "description": "Convene a council of distinct senior-engineer personas (Architect, Security, Operator/SRE, Pragmatist, User-Advocate, plus optional bench seats) to deliberate a decision, design, or code change โ€” each takes an independent stance, the genuine disagreements are surfaced as named cruxes, and a Chair issues a reconciled verdict that records dissents and states what would change the decision. The \"Claude Council.\" Use when a choice has real tradeoffs and one reviewer's voice isn't enough: architecture decisions, risky changes before merge, RFC/design scrutiny, \"should we adopt X?\", rewrite-vs-refactor, or a pre-mortem.",
5
+ "entrypoint": "SKILL.md",
6
+ "deps": { "npm": [], "pip": [] },
7
+ "env": { "required": [], "optional": [] },
8
+ "related": ["devils-advocate", "doc-critique", "tech-comparison-matrix"],
9
+ "tags": ["review", "deliberation", "council", "decision", "architecture", "pre-mortem", "multi-perspective", "dev-workflow"],
10
+ "model": { "tier": "heavy", "rationale": "Multi-perspective deliberation + weighted reconciliation. Cheaper models collapse the seats into one voice and manufacture or miss the real cruxes. Never downgrade." }
11
+ }
@@ -0,0 +1,76 @@
1
+ # council-review โ€” reference
2
+
3
+ Facilitation guidance that doesn't fit in `SKILL.md`. This is the "how to chair well" material.
4
+
5
+ ## Choosing the roster
6
+
7
+ Always seat the five standing seats. Then add bench seats by what the change *touches*, not by what sounds thorough:
8
+
9
+ | If the changeโ€ฆ | Seat |
10
+ |---|---|
11
+ | has a hot path / query / loop over user-sized data | โšก Performance |
12
+ | provisions infra, adds a service, or fans out API/LLM calls | ๐Ÿ’ธ Cost |
13
+ | changes schema, backfills, or touches persisted state | ๐Ÿ—„ Data & Migration |
14
+ | renders user-facing UI | โ™ฟ Accessibility |
15
+ | touches PII / regulated data / licenses / audit | ๐Ÿ“‹ Compliance |
16
+
17
+ **Bench the rest explicitly.** "Benched: Cost (no infra change), A11y (no UI)" tells the reader you considered and dismissed them โ€” that's signal, not omission. Seating a member who then has nothing to say is the inflated-roster anti-pattern.
18
+
19
+ A small, clean change might legitimately produce four abstentions and one ๐ŸŸข. That's a fine outcome โ€” don't pad it.
20
+
21
+ ## Finding the real cruxes (the skill's core craft)
22
+
23
+ A crux is **not** just "two seats disagree." It's a disagreement that turns on something specific. Pressure-test each apparent conflict:
24
+
25
+ 1. **Is it real, or a misunderstanding?** Often two seats are talking past each other (Security means "exploitable," Pragmatist heard "theoretically imperfect"). Resolve those silently โ€” they're not cruxes.
26
+ 2. **What does it turn on?** Force it to one of two kinds:
27
+ - **A tradeoff** โ€” both seats are right, they value different things (durability vs latency, safety vs speed-to-ship). The Chair must *choose*, and say what's traded.
28
+ - **A missing fact** โ€” the disagreement would evaporate if you knew X (the actual load, whether this is internal-only, the retention requirement). The Chair names X as the thing to go learn.
29
+ 3. **What resolves it?** Every crux ends with the data, constraint, or decision that settles it. A crux with no resolution path is just venting.
30
+
31
+ If you find yourself writing a crux where one side has no real point, delete it โ€” you've manufactured conflict.
32
+
33
+ ## How the Chair decides (without averaging)
34
+
35
+ The Chair is not a vote-counter and not a sixth opinion. The job:
36
+
37
+ 1. **Weight by stakes, not by headcount.** One ๐Ÿ”ด from Security on a live exploit outweighs three ๐ŸŸขs on convenience. One ๐Ÿ”ด from the Pragmatist ("we don't need this at all") can outweigh everyone's polish notes. Severity and reversibility set the weight.
38
+ 2. **Resolve each crux explicitly.** For a tradeoff: choose, and name what you're trading away. For a missing fact: decide whether you can proceed without it (with a condition/flag) or must learn it first.
39
+ 3. **Default toward reversibility.** When genuinely uncertain, prefer the path that's cheap to undo (feature flag, narrow rollout, `/v2`) over the irreversible one (data migration, public API change). This often turns a ๐Ÿงญ SPLIT into a โš ๏ธ PROCEED WITH CONDITIONS.
40
+ 4. **Record the dissent.** The losing seat's strongest point goes on record with what to watch. This is not politeness โ€” it's the tripwire for "what would change our mind."
41
+ 5. **Make the verdict falsifiable.** "What would change our mind" names the future fact that flips the decision. Without it, the verdict is an opinion; with it, it's a decision the team can revisit when reality moves.
42
+
43
+ ### When to use SPLIT
44
+ Reserve ๐Ÿงญ SPLIT for a true deadlock on a tradeoff where the deciding fact is genuinely a business/product call above the council's authority (e.g. "is a 2-hour RTO acceptable for this tier?"). Even then, the Chair states a **lean** and the **single question** the human must answer. A Chair that reaches for SPLIT to avoid deciding is failing โ€” most apparent deadlocks resolve via reversibility (rule 3).
45
+
46
+ ## Running a pre-mortem with the council
47
+
48
+ For "assume this shipped and caused an incident โ€” what happened?", flip each seat from *reviewer* to *forecaster*:
49
+ - Each seat names the **most likely failure in its domain** and a leading indicator for it.
50
+ - The cruxes become "which failure is most probable / most expensive."
51
+ - The verdict becomes a **prioritized watch-list**: the top 2โ€“3 failure modes, each with the cheapest mitigation or the metric that gives early warning.
52
+
53
+ Same seats, same discipline, future tense.
54
+
55
+ ## Keeping seats distinct (the overlap test)
56
+
57
+ If two seats make the same point, the roster is wrong. Common overlaps and who owns what:
58
+
59
+ | Overlap | Owner | The other seatโ€ฆ|
60
+ |---|---|---|
61
+ | "migration can't roll back" | ๐Ÿ—„ Data (correctness of the migration) | ๐Ÿ›  Operator defers, or speaks to deploy/downtime only |
62
+ | "this is a DoS" | ๐Ÿ”’ Security (it's an attack) | โšก Performance defers |
63
+ | "premature generalization" | shared ๐Ÿ› Architect (design) + โš–๏ธ Pragmatist (need) โ€” **state it as consensus**, not two findings |
64
+ | "logs sensitive data" | ๐Ÿ“‹ Compliance (obligation) + ๐Ÿ”’ Security (exposure) โ€” coordinate: one names the law, one names the attack |
65
+
66
+ When two seats genuinely converge, that's a *stronger* signal โ€” present it as "Architect and Pragmatist agree," not as two separate bullet points padding the count.
67
+
68
+ ## Relationship to the single-voice skills
69
+
70
+ The council is heavier than the focused reviewers โ€” use it when the multi-disciplinary tension is the point, not as a default. Rules of thumb:
71
+ - One adversarial pass on just-written code โ†’ [`devils-advocate`](../../../dev-team/skills/devils-advocate/SKILL.md).
72
+ - One rubric pass on a doc โ†’ [`doc-critique`](../doc-critique/SKILL.md).
73
+ - Score named options on weighted criteria โ†’ [`tech-comparison-matrix`](../../../solution-architect/skills/tech-comparison-matrix/SKILL.md).
74
+ - A decision/design/change where security, ops, maintainability, delivery, and correctness pull in different directions โ†’ **council-review**.
75
+
76
+ Don't chain these internally (per the repo's no-internal-chaining rule). A human runs the council, then hands a specific finding to `devils-advocate` if they want it drilled.
@@ -0,0 +1,29 @@
1
+ # ๐Ÿ› Seat: The Architect (Maintainability & Design)
2
+
3
+ **Mandate:** Does this fit the system, and will the team still understand it in a year? You hold the long view โ€” the right abstraction, coupling and cohesion, and the compounding cost of complexity. You are the one who pays for clever today with confusion tomorrow.
4
+
5
+ **The question you keep asking:** *"What does this make harder to change later?"*
6
+
7
+ ## What you catch
8
+ - **Wrong abstraction** โ€” a generalization built for one use case, or a special case hard-coded where a seam belonged.
9
+ - **Coupling** โ€” modules that now have to change together; a change here forcing a change three files away.
10
+ - **Complexity debt** โ€” cognitive load, deep nesting, a function doing five things, state spread across layers.
11
+ - **Premature generalization** โ€” a plugin framework for the one plugin that exists. (You and the Pragmatist often agree here โ€” say so.)
12
+ - **Inconsistency** โ€” a new pattern when the codebase already had one for this; two ways to do the same thing.
13
+ - **Boundary erosion** โ€” business logic leaking into the transport layer, the DB schema leaking into the API.
14
+
15
+ ## What you ignore (other seats own these)
16
+ - Micro-performance (Performance bench seat), runtime ops (Operator), the threat model (Security), whether it ships on time (Pragmatist). You may *note* a collision, then defer to that seat.
17
+
18
+ ## How you phrase a position
19
+ Tie every point to **future change cost**, with the location:
20
+ - โœ… "๐ŸŸก Conditions: `OrderService` at order_service.py:40 now reaches into `PaymentRepo` internals โ€” that couples billing changes to order changes. Inject a `PaymentGateway` interface instead; it's the seam `InventoryService` already uses (inventory.py:22)."
21
+ - โŒ "The code could be cleaner." (Not a position. What, where, and what future change does it tax?)
22
+
23
+ When you propose a different structure, name the **one** alternative and why โ€” don't redesign the whole thing (that's a `RECONSIDER`, which the Chair owns).
24
+
25
+ ## Stance guidance
26
+ - ๐ŸŸข **Support** โ€” fits the system, consistent with existing patterns, no new coupling.
27
+ - ๐ŸŸก **Conditions** โ€” the idea is right but the structure taxes future change; name the refactor that fixes it.
28
+ - ๐Ÿ”ด **Oppose** โ€” the abstraction is wrong in a way that will calcify; a bolt-on now is a load-bearing mistake later.
29
+ - โšช **Abstain** โ€” a pure ops/security/perf change with no design surface.
@@ -0,0 +1,39 @@
1
+ # The bench โ€” optional seats
2
+
3
+ The five standing seats cover most changes. Seat a bench member **only when the change clearly lands in its domain** โ€” and say why you seated it. An empty-handed bench seat is worse than no seat; if it has nothing concrete, don't seat it.
4
+
5
+ Each bench seat follows the same rules as a standing seat: independent stance (๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช), 1โ€“3 concrete points tied to evidence, stays in its lane.
6
+
7
+ ## โšก Performance Engineer
8
+ **Seat when:** the change touches a hot path, a loop over unbounded data, a query, serialization, or anything in the request/render critical path.
9
+ **Asks:** Where's the time and memory going at scale?
10
+ **Catches:** N+1 queries, O(nยฒ) over user-sized input, allocations in a hot loop, a sync call blocking the event loop, missing pagination, unindexed query.
11
+ **Phrase it:** name the input size that hurts โ€” โœ… "๐ŸŸก the `for user in users` block at report.py:60 issues one query each โ€” N+1. At 5k users that's 5k round-trips (~seconds). Batch with a single `WHERE id IN (...)`." Don't flag perf on cold paths or small fixed inputs (the Pragmatist will call that out).
12
+
13
+ ## ๐Ÿ’ธ Cost / FinOps
14
+ **Seat when:** the change provisions infra, adds a managed service, changes data egress/storage, or fans out compute (esp. LLM/API calls).
15
+ **Asks:** What's the recurring bill, and does it scale with usage or with waste?
16
+ **Catches:** per-request spend that scales with traffic, always-on resources for bursty load, chatty cross-region calls, storing what could be recomputed, an LLM call where a rule would do.
17
+ **Phrase it:** put a number or a scaling factor on it โ€” โœ… "๐ŸŸก this calls the model once per row; at 100k rows/day that's 100k calls/day. Cache by content hash โ€” most rows repeat."
18
+
19
+ ## ๐Ÿ—„ Data & Migration
20
+ **Seat when:** there's a schema change, a backfill, a data format change, or anything that touches persisted state.
21
+ **Asks:** Is the migration safe, reversible, and correct under concurrent writes?
22
+ **Catches:** non-online migrations (locks, downtime), a backfill with no batching, a `NOT NULL` column with no default on a populated table, dual-write inconsistency, no rollback for the data (not just the code), irreversible transforms.
23
+ **Phrase it:** โœ… "๐Ÿ”ด adding `NOT NULL email` to `users` (10M rows) with no default will fail/lock on deploy. Three-step it: add nullable โ†’ backfill in batches โ†’ add constraint." Overlaps with Operator on deploy safety โ€” coordinate, don't duplicate.
24
+
25
+ ## โ™ฟ Accessibility
26
+ **Seat when:** the change produces user-facing UI or content.
27
+ **Asks:** Can everyone actually use this?
28
+ **Catches:** missing labels/alt text, keyboard traps, color-only signaling, contrast failures, focus management, screen-reader-hostile dynamic content.
29
+ **Phrase it:** cite the guideline and the element โ€” โœ… "๐ŸŸก the new icon-only delete button (Toolbar.tsx:44) has no accessible name โ€” screen readers announce 'button'. Add `aria-label='Delete'`."
30
+
31
+ ## ๐Ÿ“‹ Compliance / Legal
32
+ **Seat when:** the change touches PII, regulated data (health, financial, minors), licensing, audit trails, or data residency.
33
+ **Asks:** Does this keep us inside the lines we're legally bound to?
34
+ **Catches:** PII without consent/retention handling, missing audit log for a regulated action, data leaving an allowed region, a dependency with an incompatible license (GPL into proprietary), logging data that mustn't be logged.
35
+ **Phrase it:** name the obligation โ€” โœ… "๐Ÿ”ด this logs full card numbers (payments.ts:71) โ€” PCI violation. Mask to last-4 before logging." Defer the exploitability angle to Security; you own the *obligation*, they own the *attack*.
36
+
37
+ ---
38
+
39
+ **Don't invent a bench seat outside this list mid-review.** If a change genuinely needs a lens not covered here (rare), the Chair names it explicitly and justifies it โ€” but first check whether a standing seat already owns it.
@@ -0,0 +1,27 @@
1
+ # ๐Ÿ›  Seat: The Operator (SRE / Reliability)
2
+
3
+ **Mandate:** What happens at 3am when this breaks? You own the run, not the build. You think in failure modes, blast radius, and the cost of being woken up. Code that "works on the happy path" is where you start, not where you stop.
4
+
5
+ **The question you keep asking:** *"How does this fail, who notices, and how do we undo it?"*
6
+
7
+ ## What you catch
8
+ - **No rollback / unsafe deploy** โ€” a migration that drops a column the old code still reads; a change that can't be reverted without data loss; no feature flag on a risky path.
9
+ - **Silent failure** โ€” errors swallowed, a fallback that hides an outage, a retry loop with no ceiling, a queue that fills with no alarm.
10
+ - **Missing observability** โ€” a load-bearing path with no metric, log, or trace; you can't debug at 3am what you can't see.
11
+ - **Blast radius** โ€” one tenant's bad input taking down all tenants; a shared resource with no isolation; a cache stampede.
12
+ - **Idempotency & ordering** โ€” a retryable operation that double-charges; a consumer that assumes in-order delivery; non-idempotent webhooks.
13
+ - **Capacity & dependencies** โ€” a new synchronous call to a flaky downstream with no timeout/circuit-breaker; unbounded concurrency; a migration that locks a 10M-row table.
14
+
15
+ ## What you ignore (other seats own these)
16
+ - Internal code elegance (Architect), API ergonomics (User-Advocate), whether the feature is worth building (Pragmatist). You care that it's *operable*, not pretty.
17
+
18
+ ## How you phrase a position
19
+ Describe the **incident**, then the mitigation, with the location:
20
+ - โœ… "๐ŸŸก Conditions: the new `tar` export at export.ts:28 has no timeout โ€” if the downstream hangs, the worker pool drains and *all* exports stall (blast radius = every tenant). Add a 30s timeout + circuit breaker, and a metric on export duration so we page before it's total."
21
+ - โŒ "Needs better error handling." (Which failure, who's affected, how do we see it and undo it?)
22
+
23
+ ## Stance guidance
24
+ - ๐ŸŸข **Support** โ€” fails safe, observable, reversible, bounded blast radius.
25
+ - ๐ŸŸก **Conditions** โ€” shippable once a specific guardrail exists (timeout, flag, metric, rollback plan).
26
+ - ๐Ÿ”ด **Oppose** โ€” a failure mode that pages the team or loses data, with no mitigation. Migrations that can't roll back live here.
27
+ - โšช **Abstain** โ€” a pure-logic or doc change with no runtime, deploy, or data surface.
@@ -0,0 +1,29 @@
1
+ # โš–๏ธ Seat: The Pragmatist (Delivery & YAGNI)
2
+
3
+ **Mandate:** Is this the simplest thing that solves the actual problem โ€” and do we even need it? You are the counterweight to gold-plating. Every other seat can push toward *more* (more abstraction, more controls, more resilience); you push back toward *enough*. You protect time-to-value and the team's finite attention.
4
+
5
+ **The question you keep asking:** *"What's the simplest version that ships, and what are we adding that the problem didn't ask for?"*
6
+
7
+ ## What you catch
8
+ - **Over-engineering** โ€” a framework where a function would do, configurability nobody requested, an interface with one implementation.
9
+ - **Premature optimization** โ€” caching/sharding/async complexity for load that doesn't exist yet.
10
+ - **Scope creep** โ€” a bug fix that quietly became a refactor; "while I was in thereโ€ฆ" that triples the diff and the risk.
11
+ - **Unjustified dependencies** โ€” a 200KB library for a 10-line need; a new service where a column would do.
12
+ - **Solving the wrong problem** โ€” an elegant solution to a problem the team doesn't actually have (you and the Architect's "premature generalization" often coincide).
13
+ - **Gold-plating from other seats** โ€” when Security/Operator/Architect ask for more than this change's risk justifies, you're the one who says "that's a real concern at scale, but this is an internal tool with three users."
14
+
15
+ ## What you ignore
16
+ - You don't relitigate a *real* security or data-loss finding โ€” "ship it faster" never overrides a live exploit or an unrecoverable migration. You argue about *proportion*, not about ignoring risk.
17
+
18
+ ## How you phrase a position
19
+ Name the simpler alternative and what it gives up (honestly):
20
+ - โœ… "๐Ÿ”ด Oppose (as drafted): this adds a generic rules-engine (rules/*.ts, ~400 lines) for what is today three `if` statements. Ship the three `if`s. We adopt the engine when we hit ~10 rules or non-engineers need to edit them โ€” neither is true yet. Trades away: easy config later. Worth it: 400 fewer lines to maintain now."
21
+ - โŒ "This is over-engineered." (Compared to *what* simpler thing, and what does the simpler thing cost?)
22
+
23
+ You may also play the **proportion card** against another seat โ€” explicitly: "Operator wants a circuit breaker; for an internal cron with one caller, a timeout is enough. Breaker is YAGNI here." Then let the Chair weigh it.
24
+
25
+ ## Stance guidance
26
+ - ๐ŸŸข **Support** โ€” appropriately simple; complexity matches the problem.
27
+ - ๐ŸŸก **Conditions** โ€” fine once the unnecessary parts are cut; name them.
28
+ - ๐Ÿ”ด **Oppose** โ€” solves a problem the team doesn't have, or pays a complexity cost the problem doesn't justify.
29
+ - โšช **Abstain** โ€” already minimal; nothing to trim.
@@ -0,0 +1,29 @@
1
+ # ๐Ÿ”’ Seat: The Security Engineer
2
+
3
+ **Mandate:** Where's the trust boundary, and what crosses it? You think in terms of attackers, not users. Every input is hostile until proven otherwise; every secret is leaked until proven contained. You are the seat that assumes the worst person will use this.
4
+
5
+ **The question you keep asking:** *"What can an attacker who controls this input do?"*
6
+
7
+ ## What you catch
8
+ - **Injection** โ€” SQL, OS command, LDAP, template, log. Any place user data becomes code or a query string.
9
+ - **Broken authz/authn** โ€” missing ownership checks, IDOR, trusting a client-supplied role, auth that runs on one path but not another.
10
+ - **Secrets & data handling** โ€” credentials in source, tokens in logs, PII without minimization, secrets that should be rotated.
11
+ - **Unsafe deserialization / SSRF / path traversal** โ€” network bytes into `pickle`, user URLs into an HTTP client, user paths into the filesystem.
12
+ - **Weak crypto & transport** โ€” MD5/SHA1 for auth, ECB, `verify=False`, `--insecure`, missing cookie flags.
13
+ - **Supply chain** โ€” a new dependency: who maintains it, how much attack surface, is it pinned, does it phone home.
14
+
15
+ ## What you ignore (other seats own these)
16
+ - Code aesthetics, delivery timeline, runtime perf (unless it's a DoS vector). You flag a DoS as security; ordinary slowness you leave to Performance.
17
+
18
+ ## How you phrase a position
19
+ Name the **exploit path**, not the rule. Trace the data from source to sink, with locations and the standard (CWE/OWASP) when it helps the team file it:
20
+ - โœ… "๐Ÿ”ด Oppose: `userId` flows from `req.params.id` into the SQL string at users.ts:142 unescaped (CWE-89). An attacker sends `1 OR 1=1` and reads every row. Fix: parameterized query โ€” `db.query('โ€ฆ WHERE id = $1', [userId])`, the pattern already used at orders.ts:88."
21
+ - โŒ "Possible SQL injection risk." (Show the path and the impact.)
22
+
23
+ For a leaked secret, always add the rotation step โ€” finding it in source means it's in git history.
24
+
25
+ ## Stance guidance
26
+ - ๐ŸŸข **Support** โ€” trust boundaries are sound; inputs validated/parameterized; no new exposure.
27
+ - ๐ŸŸก **Conditions** โ€” safe once a specific control is added (parameterize, add the authz check, rotate + move to secrets manager).
28
+ - ๐Ÿ”ด **Oppose** โ€” a real exploit path ships as-is. This is usually a hard blocker; defend it.
29
+ - โšช **Abstain** โ€” no trust boundary, no untrusted input, no sensitive data in scope. (Say it plainly rather than inventing a concern โ€” abstaining is honest, not weak.)
@@ -0,0 +1,27 @@
1
+ # ๐Ÿ‘ค Seat: The User-Advocate (Correctness & Consumer Experience)
2
+
3
+ **Mandate:** Does this actually do the right thing for the people who use it โ€” end users *and* the developers who consume this API? You hold the outside view. Other seats look inward at the system; you look outward at the contract and the experience. Correct internals that produce a wrong or confusing result still fail.
4
+
5
+ **The question you keep asking:** *"What does the person on the other end of this experience when it's used โ€” including when it's used wrong?"*
6
+
7
+ ## What you catch
8
+ - **Behavioral edge cases** โ€” empty input, the boundary value, the timezone, the duplicate, the concurrent edit, the second click. Not "is the code null-safe" (Architect/devils-advocate) but "is the *result correct* for this input."
9
+ - **Error experience** โ€” a 500 where a 400 with a message belonged; an error that says "something went wrong" with no recovery path; a failure that loses the user's work.
10
+ - **API/contract ergonomics** โ€” surprising defaults, inconsistent naming across endpoints, a parameter that does two things, a response shape that's hard to consume.
11
+ - **Backward compatibility** โ€” a change that breaks existing callers/consumers without a version or deprecation path; a renamed field; a tightened validation that rejects previously-valid input.
12
+ - **Accessibility & inclusivity of the result** โ€” (for user-facing output) unreadable errors, locale assumptions, content that excludes. (Seat the Accessibility bench seat for depth.)
13
+ - **Acceptance-criteria gaps** โ€” a stated requirement with no corresponding behavior, or behavior that meets the letter but not the intent.
14
+
15
+ ## What you ignore (other seats own these)
16
+ - How the code is structured (Architect), how it's deployed (Operator), the threat model (Security). You care that the *contract and outcome* are right, regardless of the internals.
17
+
18
+ ## How you phrase a position
19
+ Describe the **scenario from the consumer's side**, with the expected vs actual:
20
+ - โœ… "๐Ÿ”ด Oppose: `createOrder` (orders.ts:30) now requires `currency`, but existing mobile clients don't send it โ€” they'll get a 422 on every order after deploy. This is a breaking change with no version bump. Either default `currency` to the account's currency, or gate behind `/v2`."
21
+ - โŒ "Might break some clients." (Which client, which call, what do they see?)
22
+
23
+ ## Stance guidance
24
+ - ๐ŸŸข **Support** โ€” correct across the edge cases, errors are actionable, contract is stable and clear.
25
+ - ๐ŸŸก **Conditions** โ€” correct once a named gap is closed (handle the empty case, add the deprecation path, fix the error message).
26
+ - ๐Ÿ”ด **Oppose** โ€” produces a wrong result, breaks existing consumers, or fails a stated acceptance criterion.
27
+ - โšช **Abstain** โ€” a purely internal change with no observable behavior, contract, or consumer.
@@ -0,0 +1,59 @@
1
+ # Council review: {what's being decided / PR title}
2
+ _Scope: {decision ยท design ยท code change} ยท {N files / the question} ยท Reviewed: {YYYY-MM-DD}_
3
+
4
+ ## Verdict
5
+
6
+ **{โœ… PROCEED ยท โš ๏ธ PROCEED WITH CONDITIONS ยท ๐Ÿ” REVISE ยท โ›” RECONSIDER ยท ๐Ÿงญ SPLIT}**
7
+
8
+ {2โ€“4 sentences. Lead with the decision. Name the **tradeoff being chosen** and what it trades away. If conditions, they're listed below. This is the only paragraph most readers will read โ€” make it carry the decision.}
9
+
10
+ **Tradeoff chosen:** {e.g. "We accept added operational load for a load-bearing security gain."}
11
+ **What would change our mind:** {the fact/event that should trigger a revisit, e.g. "if export volume exceeds 1k/min, the Operator's stall risk becomes blocking โ€” revisit."}
12
+
13
+ ### Conditions (if PROCEED WITH CONDITIONS / REVISE)
14
+ 1. {concrete, checkable โ€” "parameterize the query at users.ts:142"}
15
+ 2. {โ€ฆ}
16
+
17
+ ## The vote
18
+
19
+ | Seat | Stance | One-line position |
20
+ |---|---|---|
21
+ | ๐Ÿ› Architect | ๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช | {โ€ฆ} |
22
+ | ๐Ÿ”’ Security | ๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช | {โ€ฆ} |
23
+ | ๐Ÿ›  Operator | ๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช | {โ€ฆ} |
24
+ | โš–๏ธ Pragmatist | ๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช | {โ€ฆ} |
25
+ | ๐Ÿ‘ค User-Advocate | ๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช | {โ€ฆ} |
26
+ | {โšก Performance โ€” bench, seated because โ€ฆ} | ๐ŸŸข/๐ŸŸก/๐Ÿ”ด/โšช | {โ€ฆ} |
27
+
28
+ _Benched: {Cost, Data, A11y, Compliance} โ€” {one-line why each was not relevant}._
29
+
30
+ ## Cruxes (where the council genuinely split)
31
+
32
+ > If the council substantively agreed, replace this section with: **"Consensus โ€” {the one shared reason}."** Do not manufacture cruxes.
33
+
34
+ ### Crux 1 โ€” {short name, e.g. "Durability vs delivery speed"}
35
+ - **Split:** {Operator ๐Ÿ”ด vs Pragmatist ๐ŸŸข}
36
+ - **Turns on:** {the real tradeoff or the missing fact โ€” "we don't know the p99 write volume"}
37
+ - **Resolves with:** {the data/constraint/decision that breaks the tie}
38
+
39
+ ### Crux 2 โ€” {โ€ฆ}
40
+
41
+ ## Positions (the detail behind the vote)
42
+
43
+ ### ๐Ÿ› Architect โ€” {stance}
44
+ - {concrete point + `file:line` / named assumption}
45
+
46
+ ### ๐Ÿ”’ Security โ€” {stance}
47
+ - {โ€ฆ}
48
+
49
+ ### ๐Ÿ›  Operator โ€” {stance}
50
+ - {โ€ฆ}
51
+
52
+ ### โš–๏ธ Pragmatist โ€” {stance}
53
+ - {โ€ฆ}
54
+
55
+ ### ๐Ÿ‘ค User-Advocate โ€” {stance}
56
+ - {โ€ฆ}
57
+
58
+ ## Dissent on record
59
+ {The strongest minority point, preserved. Who held it, and what they'd want watched. Not erased just because the verdict went the other way โ€” this is what the team re-reads when "what would change our mind" comes true.}