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,67 @@
1
+ ---
2
+ name: data-contract
3
+ description: Draft a data contract for a dataset, table, or event stream consumed by others — schema with per-field semantics and units, measurable quality SLAs (freshness, completeness, validity, distribution), a schema-evolution policy that says what breaks consumers, a named owner, and PII classification. Use when the user is publishing a dataset/table/topic other teams depend on, needs a data contract, or wants to stop downstream pipelines breaking on silent schema or quality changes.
4
+ ---
5
+
6
+ # data-contract
7
+
8
+ Treats a dataset, table, or topic as a **product with an owner and a guarantee** — the agreement a producing team makes to everyone reading their data. Distinct from `api-contract-draft` (synchronous request/response + webhook interfaces): this governs *data at rest and in motion* — the warehouse table, the Kafka topic, the daily export — where the failure mode isn't a 500, it's a downstream model silently trained on a column whose meaning changed last Tuesday.
9
+
10
+ ## How to respond
11
+
12
+ 1. **Establish producer, consumers, and the asset.** What dataset (table / topic / file feed), who produces it, and **who consumes it** — because the consumer list is what makes a change "breaking". Ask at most 2 questions, spent on the asset's update mechanism (batch / streaming / CDC) and whether any consumer is outside the producing team's control (another team, a partner, a trained model). A dataset with unknown consumers can't have a contract — surfacing that is the first value.
13
+
14
+ 2. **Specify schema with semantics, not just types.** Types prevent crashes; semantics prevent silent wrongness. Every field gets: name, type, **nullability**, **unit or allowed-values**, and a **one-line meaning**. ✅ *"`amount` — int64, not null, minor currency units (cents), the net charged after discounts"* — ❌ *"`amount` — integer"* (cents or dollars? gross or net? the model that assumed dollars is now off by 100×). Mark every field's `[required]` vs `[optional]` and whether `null` is a valid value distinct from absent.
15
+
16
+ 3. **Set quality guarantees as measurable SLAs** (catalog in [`reference.md`](reference.md)) — each with a threshold, a check, and a **breach action**:
17
+ - **Freshness** — max acceptable lag ("partition for day D lands by 06:00 D+1")
18
+ - **Completeness** — expected volume / no gaps ("row count within ±10% of trailing-7-day median; no missing partitions")
19
+ - **Validity** — % rows passing field constraints ("≥99.9% of `email` rows match the format")
20
+ - **Uniqueness** — the key that's actually unique ("`event_id` unique; duplicates are a contract breach, not a dedup hint")
21
+ - **Distribution** — drift bounds on the columns consumers depend on ("`country` cardinality and null-rate within historical band")
22
+ A quality SLA without a breach action ("page the producer" / "quarantine the partition" / "alert consumers") is a wish; name the action.
23
+
24
+ 4. **Write the schema-evolution policy — the section that earns the contract.** State precisely what's safe and what isn't, *for data consumers specifically*: adding an optional column is usually safe; adding a `not null` column without a default breaks every writer; **changing a field's meaning while keeping its name and type is the silent killer** and is always breaking; removing or renaming is breaking; narrowing an enum is breaking, widening may be. Every breaking change requires a **version bump + a deprecation window + consumer notification** — and the contract names the window (e.g. "30 days, or until all registered consumers ack").
25
+
26
+ 5. **Make ownership and classification first-class.** Named owner (team/role, not a person), an on-call or contact, PII/sensitivity classification per field, retention period, and residency if constrained — the same discipline as `nfr-spec`, scoped to this asset. An unowned dataset is an incident waiting for a quarter-end.
27
+
28
+ 6. **Specify delivery.** Where it lives, format (Parquet/Avro/JSON), partitioning scheme, update cadence, and how a consumer registers as a dependent (so the breaking-change notification has an address list). For streams: delivery semantics (at-least-once default — consumers dedupe on the unique key), ordering guarantees, and retention.
29
+
30
+ 7. **Emit with [`templates/data-contract.md`](templates/data-contract.md)** in one message: header (asset, owner, consumers), schema table with semantics, quality SLA table with breach actions, evolution policy, delivery spec, classification. Where the asset already exists, note which guarantees are *aspirational* vs *currently met* — an honest contract beats a flattering one.
31
+
32
+ ## Useful references in this skill
33
+
34
+ - [`reference.md`](reference.md) — the data-quality dimension catalog, the schema-evolution safe/breaking matrix, and field-semantics rules
35
+ - [`templates/data-contract.md`](templates/data-contract.md) — the contract skeleton with schema and SLA tables
36
+
37
+ ## Quality bar
38
+
39
+ - **Every field has a meaning and a unit/allowed-values**, not just a type. The cents-vs-dollars class of bug is designed out at contract time.
40
+ - **Every quality SLA has a threshold, a check, and a breach action.** "High quality" is not an SLA; "freshness < 6h, checked hourly, breach pages the owner" is.
41
+ - **The evolution policy names the silent killer** — meaning-change-under-stable-name — as breaking. Most contracts miss it and most data incidents are it.
42
+ - **Consumers are enumerated**, so "breaking" is defined and notifications have an address. Unknown consumers are flagged, not assumed away.
43
+ - **The asset has a named owner and per-field classification.** No owner, no contract.
44
+ - **Existing-asset contracts mark aspirational vs met.** Claiming a freshness SLA the pipeline doesn't hit is how the contract loses its authority on day one.
45
+
46
+ ## When to use this skill
47
+
48
+ - ✅ Publishing a table/topic/feed other teams or models will depend on
49
+ - ✅ "We need a data contract for X" / stopping downstream breakage from schema drift
50
+ - ✅ Formalizing the guarantee on a dataset that's already widely consumed
51
+ - ✅ A data-mesh / data-as-a-product initiative needing per-asset contracts
52
+
53
+ ## When NOT to use this skill
54
+
55
+ - ❌ A synchronous REST/RPC API or webhook — that's `api-contract-draft`
56
+ - ❌ The physical schema migration (expand/backfill/contract) — that's `migration-plan`
57
+ - ❌ System-wide NFRs for a service — that's `nfr-spec`; this is one data asset's guarantee
58
+ - ❌ A private dataset with exactly one consumer inside the same team — a comment in the code may suffice
59
+
60
+ ## Anti-patterns to avoid
61
+
62
+ - ❌ **Types without semantics.** `status: string` with no allowed-values list means every consumer invents their own set and one of them is wrong.
63
+ - ❌ **Quality as an adjective.** "Clean, reliable data" — unmeasurable, unenforceable, unfalsifiable. Dimensions with thresholds or nothing.
64
+ - ❌ **Ignoring meaning-change.** Renaming the *concept* behind `revenue` from gross to net while the column name and type hold — the most expensive data bug there is, and zero schema validators catch it. The evolution policy must.
65
+ - ❌ **The orphan dataset.** No owner, no consumer list — so no one can be paged and no one can be warned. That's not a product, it's a liability.
66
+ - ❌ **Aspirational SLAs on a pipeline that misses them.** A freshness promise the batch job blows nightly trains consumers to ignore the whole contract.
67
+ - ❌ **Treating additive as automatically safe.** A new `not null` column with no default breaks every existing writer; a new column can break a `SELECT *` consumer's schema check. Additive ≠ free in data.
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Write a data contract for this table",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "We have downstream consumers of this dataset — define the contract and its SLAs",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Define the schema and quality guarantees for this event stream",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "What should our producers promise consumers about this data?",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Draft the OpenAPI spec for our REST API",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Design the database schema and indexes from our access patterns",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Write the product requirements document",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Plan our observability and alerting",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill_name": "data-contract",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "We publish an `orders_daily` table that three downstream teams consume. Write the data contract.",
7
+ "assertions": [
8
+ "Every field carries a meaning plus a unit or allowed-values, not merely a type — the cents-vs-dollars class of bug is designed out",
9
+ "Every quality SLA states a threshold, a check, and a breach action; 'high quality' is rejected as an SLA",
10
+ "The evolution policy explicitly names meaning-change-under-a-stable-name as a breaking change",
11
+ "The contract names the owner and the consumers it is a promise to",
12
+ "Freshness, completeness, validity, and distribution are each addressed or explicitly marked not-applicable"
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "data-contract",
3
+ "version": "0.1.0",
4
+ "description": "Draft a data contract for a dataset, table, or event stream consumed by others — schema with per-field semantics and units, measurable quality SLAs (freshness, completeness, validity, distribution), a schema-evolution policy that says what breaks consumers, a named owner, and PII classification. Use when the user is publishing a dataset/table/topic other teams depend on, needs a data contract, or wants to stop downstream pipelines breaking on silent schema or quality changes.",
5
+ "entrypoint": "SKILL.md",
6
+ "deps": { "npm": [], "pip": [] },
7
+ "env": { "required": [], "optional": [] },
8
+ "related": ["api-contract-draft", "migration-plan", "nfr-spec"],
9
+ "tags": ["data-contract", "data-engineering", "schema", "data-quality", "data-mesh", "governance"],
10
+ "model": { "tier": "standard", "rationale": "Schema + SLA synthesis against fixed quality dimensions and an evolution matrix. Semantics capture needs care; bounded by the catalog. Escalate via large-input on wide schemas." }
11
+ }
@@ -0,0 +1,46 @@
1
+ # data-contract reference — quality dimensions, evolution matrix, field semantics
2
+
3
+ ## Data-quality dimension catalog
4
+
5
+ Each dimension on the contract gets: a **threshold**, a **check** (how/when measured), and a **breach action**. Pick the dimensions that matter for this asset; mark the rest n/a with a reason.
6
+
7
+ | Dimension | What it guarantees | Threshold example | Check | Breach action examples |
8
+ |---|---|---|---|---|
9
+ | **Freshness** | data is recent enough to trust | partition D lands by 06:00 D+1 | scheduler SLA / landing-time monitor | page owner; mark stale on the dashboard |
10
+ | **Completeness** | nothing silently missing | row count within ±10% of trailing-7d median; all partitions present | post-load count check | quarantine partition; block downstream |
11
+ | **Validity** | values satisfy field constraints | ≥99.9% rows pass per-field rules | constraint suite per load | reject load; alert; route bad rows to DLQ |
12
+ | **Uniqueness** | the key is actually unique | `event_id` 100% unique | dup-count query | breach = contract violation, not silent dedup |
13
+ | **Consistency** | cross-field/cross-table invariants hold | `ends_at` ≥ `starts_at`; FK resolves | invariant assertions | alert; hold publish |
14
+ | **Distribution / drift** | columns consumers model don't shift unannounced | null-rate, cardinality, mean within historical band | drift monitor vs baseline | alert consumers; investigate before publish |
15
+ | **Timeliness of correction** | how fast a known-bad load is fixed | corrected within {N}h of detection | incident clock | comms to consumers (→ `incident-comms`) |
16
+
17
+ A dimension with no breach action is decoration. The breach action is the part consumers actually rely on.
18
+
19
+ ## Schema-evolution safe/breaking matrix (for DATA consumers)
20
+
21
+ "Breaking" here means: a downstream query, pipeline, or trained model could silently produce wrong results or fail. Data consumers are more fragile than API clients — `SELECT *`, positional reads, and models that learned a column's distribution all break in ways HTTP clients don't.
22
+
23
+ | Change | Safe? | Notes |
24
+ |---|---|---|
25
+ | Add optional/nullable column **with** default or documented null-meaning | usually safe | still breaks strict `SELECT *` schema checks — notify |
26
+ | Add `NOT NULL` column without default | **breaking** | every existing writer fails |
27
+ | Remove or rename a column | **breaking** | rename = remove + add; positional/`*` consumers break |
28
+ | Change type (even "widening") | **breaking** | int→float shifts joins, aggregations, model features |
29
+ | **Change the meaning** behind a stable name+type | **breaking — the silent killer** | gross→net, UTC→local, cents→dollars: no validator catches it; only the contract can |
30
+ | Narrow an enum (remove an allowed value) | **breaking** | consumers branching on it lose a case |
31
+ | Widen an enum (add an allowed value) | maybe breaking | breaks consumers with exhaustive switches; declare enum open/closed |
32
+ | Tighten a constraint (e.g. now `NOT NULL`) | **breaking** | historical rows / lenient writers violate it |
33
+ | Loosen a constraint | usually safe | but consumers assuming the old guarantee may break |
34
+ | Change partitioning / sort | **breaking for performance** | consumer queries may table-scan or time out |
35
+
36
+ **Every breaking change requires:** version bump → deprecation window (name it, e.g. 30 days or until all registered consumers ack) → notification to the registered consumer list → both versions available during the window where feasible. This mirrors `migration-plan`'s expand/contract — apply it to the schema.
37
+
38
+ ## Field-semantics rules (the cents-vs-dollars firewall)
39
+
40
+ Every field on the contract states:
41
+ - **Unit** for any quantity — currency + minor/major units, time unit, byte/bit, percentage-as-0-1-vs-0-100. The single most common silent data bug is a unit assumption.
42
+ - **Allowed values** for any categorical — the full enum, open or closed.
43
+ - **Null semantics** — is `null` "unknown", "not applicable", or "zero"? These are three different facts; pick one and write it.
44
+ - **Timezone** for any timestamp — UTC unless stated; name the zone, never leave it implicit.
45
+ - **Meaning** — one line a new consumer reads instead of guessing. "`status`: lifecycle state of the order, see allowed values" beats inferring from the name.
46
+ - **Identity** — which field(s) uniquely identify a row, and whether IDs are stable across reloads.
@@ -0,0 +1,69 @@
1
+ # Data-contract template
2
+
3
+ A dataset is a product. This is its label, its warranty, and its change policy.
4
+
5
+ ```markdown
6
+ # Data contract: {asset name}
7
+
8
+ **Asset:** {warehouse table | Kafka topic | file feed | view} — `{fully.qualified.name}`
9
+ **Owner:** {team/role} · **Contact / on-call:** {channel}
10
+ **Producer:** {pipeline/service} · **Update mechanism:** {batch | streaming | CDC}
11
+ **Version:** {v1} · **Status:** {proposed | active | deprecated}
12
+
13
+ ## Consumers (defines what "breaking" means)
14
+
15
+ | Consumer | Team | Usage | Notify on change |
16
+ |---|---|---|---|
17
+ | {dashboard/model/pipeline} | {team} | {what they read it for} | {channel} |
18
+
19
+ ⚠ {Flag any unknown/unregistered consumers — a change can't be safely made until known.}
20
+
21
+ ## Schema (types + semantics)
22
+
23
+ | Field | Type | Req? | Null means | Unit / allowed values | Meaning |
24
+ |---|---|---|---|---|---|
25
+ | `event_id` | string | required | — | opaque UUID | unique row identity, stable across reloads |
26
+ | `amount` | int64 | required | — | minor units (cents), {currency} | net charged after discounts |
27
+ | `country` | string | optional | unknown | ISO-3166-1 alpha-2, open enum | billing country |
28
+ | `occurred_at` | timestamp | required | — | UTC, ISO-8601 | when the event happened (not when ingested) |
29
+
30
+ **Identity:** {field(s) that uniquely identify a row}
31
+ **Grain:** {one row per … }
32
+
33
+ ## Quality SLAs
34
+
35
+ | Dimension | Threshold | Check | Breach action | Met today? |
36
+ |---|---|---|---|---|
37
+ | Freshness | partition D by 06:00 D+1 | landing monitor | page owner | ✅ / aspirational |
38
+ | Completeness | rows within ±10% of 7d median | post-load count | quarantine partition | … |
39
+ | Validity | ≥99.9% pass field rules | constraint suite | reject load, alert | … |
40
+ | Uniqueness | `event_id` 100% unique | dup query | contract breach | … |
41
+ | Distribution | null-rate/cardinality in band | drift monitor | alert consumers | … |
42
+
43
+ {Mark each "Met today?" honestly: ✅ currently met, or "aspirational — pipeline does not yet meet this".}
44
+
45
+ ## Schema-evolution policy
46
+
47
+ - Safe (notify only): {additive nullable columns with documented null-meaning}
48
+ - Breaking (version bump + deprecation window + consumer ack): removals, renames, type changes, **meaning changes under a stable name**, enum narrowing, constraint tightening, partition changes.
49
+ - Deprecation window: {e.g. 30 days, or until all registered consumers ack}; both versions live during the window where feasible.
50
+ - Meaning-change clause: a field's documented meaning is part of the contract; changing it (e.g. gross→net) is breaking even if name and type are unchanged.
51
+
52
+ ## Delivery
53
+
54
+ - **Location / format:** {path or topic} · {Parquet | Avro | JSON}
55
+ - **Partitioning:** {scheme}
56
+ - **Cadence:** {hourly | daily 06:00 | continuous}
57
+ - **Streaming only:** delivery {at-least-once → dedupe on identity}; ordering {per-key | none}; retention {N days}
58
+ - **Register as a consumer:** {how — so breaking-change notices reach you}
59
+
60
+ ## Classification & retention
61
+
62
+ | Field(s) | Classification | Retention | Residency |
63
+ |---|---|---|---|
64
+ | {field} | {PII / sensitive / public} | {period} | {constraint or none} |
65
+
66
+ ## Open questions
67
+
68
+ - {unknowns blocking sign-off — e.g. undiscovered consumers, an SLA not yet measurable}
69
+ ```
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: db-schema-design
3
+ description: Design a database schema from access patterns — paradigm chosen deliberately (relational/document/key-value/wide-column/graph), keys and partitioning driven by the actual queries, indexes mapped to predicates, money/time types right, and every read path verified to have a supporting access path. Use when the user is designing a data model, schema, or tables for a feature, choosing a database, or asks how to structure/store data.
4
+ ---
5
+
6
+ # db-schema-design
7
+
8
+ Designs the storage layer **from the queries backward** — because a schema is right or wrong only relative to how it's read and written, and the most expensive schema mistakes are the access paths nobody designed for. Distinct from `data-contract` (the guarantee on a *published* dataset) and `api-contract-draft` (the sync interface): this is the table/collection/key design underneath. Hands evolution off to `migration-plan` and the published-dataset guarantee to `data-contract`.
9
+
10
+ ## How to respond
11
+
12
+ 1. **Collect the access patterns before drawing a single table.** The deliverable starts as a list: each read and write the feature needs, with **frequency**, **latency sensitivity**, **selectivity** (one row / a range / a scan), and **consistency need** (read-your-writes? eventual ok?). Ask at most 2 questions, spent on the highest-frequency query and the largest-growth entity. A schema designed from the entity diagram instead of the queries is how you get a clean model that can't serve its hottest path.
13
+
14
+ 2. **Choose the paradigm deliberately, with a reason** (selection matrix in [`reference.md`](reference.md)). Relational is the correct default for most transactional features and needs no defense; reaching *past* it does. ✅ *"Document store — the entity is read and written whole, no cross-entity queries, and the shape varies per type"* — ❌ *"NoSQL because scale"* (scale is a property of access patterns and data size, not a vibe). For NoSQL especially, the access patterns *are* the schema — you cannot add a query later for free the way SQL lets you.
15
+
16
+ 3. **Design keys from the queries.**
17
+ - **Relational:** surrogate key (e.g. `bigint`/ULID) as PK by default; natural keys get a unique constraint, not the clustered PK. Avoid random UUIDv4 as a clustered/primary key — it scatters writes and splits pages; use a time-ordered ID (ULID/UUIDv7) when you need a UUID and ordered inserts.
18
+ - **NoSQL:** partition key + sort key derived directly from the access patterns, chosen to spread load (no hot partition) and to co-locate what's read together. State the query each key shape serves.
19
+
20
+ 4. **Normalize to 3NF, then denormalize only for a named read pattern — and name the sync obligation.** 3NF is the default because it makes writes correct and anomalies impossible. Every denormalization is a deliberate trade for a specific hot read, and it incurs a duplicate-keeping-in-sync debt that must be stated: ✅ *"Cache `order_count` on `customer` for the dashboard's top query; kept in sync by the order-write transaction / a trigger"* — ❌ a denormalized field with no answer to "what updates the copy?".
21
+
22
+ 5. **Index for the actual predicates, joins, and sorts — not speculatively.** Every index pays a write cost and storage; an unused index is pure overhead. Rules (full set in [`reference.md`](reference.md)): index the columns in `WHERE`/`JOIN`/`ORDER BY` of real queries; **composite index column order is equality-first, then range, then sort**; consider a covering index for a hot read; don't index low-selectivity columns alone. Map each index to the query it serves — an index with no query is a guess.
23
+
24
+ 6. **Get the types and constraints right at the schema, not in app code.** Money as integer minor units or `decimal`, **never float** (echoes `data-contract`); timestamps with explicit timezone (store UTC); enums as a constrained type or lookup table, not free strings; `NOT NULL` + defaults + `CHECK` + foreign keys express invariants the database enforces for every writer, including the ones you'll add later. Right-size types (don't `text` a 2-char country code).
25
+
26
+ 7. **State the scale and multitenancy decisions.** Name the table that grows unbounded and its plan (partition by time, archive cold data); the partition/shard strategy if any (and why it's not premature); and the **multitenancy isolation model** (shared-table + `tenant_id` with row-level security / schema-per-tenant / db-per-tenant) with its trade — this is an early decision that's brutal to reverse, so it's explicit, not defaulted.
27
+
28
+ 8. **Verify every access pattern has a supporting path, and emit with [`templates/schema-design.md`](templates/schema-design.md)** in one message: access-pattern table, paradigm + rationale, the schema (tables/collections with columns, types, keys, constraints), relationships/cardinality, indexes mapped to queries, scale + multitenancy decisions, and the **verification table** — each access pattern → the key or index that serves it, with any that fall to a full scan flagged. Evolution → `migration-plan`; published-to-consumers → `data-contract`.
29
+
30
+ ## Useful references in this skill
31
+
32
+ - [`reference.md`](reference.md) — paradigm-selection matrix, key-design rules, the normalization/denormalization ladder, indexing rules, multitenancy options, and the schema anti-pattern catalog
33
+ - [`templates/schema-design.md`](templates/schema-design.md) — the design skeleton with access-pattern, schema, index, and verification tables
34
+
35
+ ## Quality bar
36
+
37
+ - **Access patterns are listed before the schema**, with frequency and selectivity. A schema with no query list was designed blind.
38
+ - **The paradigm choice has a reason tied to access patterns** — and relational-by-default needs none while every move past it does.
39
+ - **Keys are justified by queries**, and no random UUIDv4 sits as a clustered PK without a noted reason.
40
+ - **Every index maps to a real query**; every denormalization names what keeps the copy in sync.
41
+ - **Money is never float, timestamps carry timezone, invariants are DB constraints** — not left to application discipline.
42
+ - **Multitenancy and the unbounded-growth table have explicit plans.** The expensive-to-reverse decisions are made on purpose.
43
+ - **The verification table shows each access pattern's supporting path**, with full scans flagged rather than hidden.
44
+
45
+ ## When to use this skill
46
+
47
+ - ✅ Designing tables/collections/keys for a new feature or service
48
+ - ✅ Choosing a database paradigm for a known set of access patterns
49
+ - ✅ "How should I structure / store this data?" with real queries in mind
50
+ - ✅ Reworking a schema whose hot query has no supporting index
51
+
52
+ ## When NOT to use this skill
53
+
54
+ - ❌ Governing a dataset other teams consume (quality SLAs, evolution policy) — that's `data-contract`
55
+ - ❌ The sync API/event shape over the data — that's `api-contract-draft`
56
+ - ❌ Executing a schema change on a live system (expand/backfill/contract) — that's `migration-plan`
57
+ - ❌ Picking a specific managed product (Aurora vs Cloud SQL) — that's `tech-comparison-matrix`; this designs the model, not the vendor
58
+
59
+ ## Anti-patterns to avoid
60
+
61
+ - ❌ **Entity-first, query-never.** A beautiful normalized ER diagram whose top query needs four joins and a full scan. Design from the access patterns.
62
+ - ❌ **"NoSQL for scale" with no access-pattern argument.** NoSQL trades ad-hoc query flexibility for scale on *known* patterns; choosing it blind buys the downside without the upside.
63
+ - ❌ **UUIDv4 as the clustered primary key.** Random keys scatter inserts and fragment the index; use a time-ordered ID when you need a UUID.
64
+ - ❌ **EAV / the god table.** Entity-attribute-value "flexible" schemas and 80-column catch-all tables are queryability and integrity sold for a flexibility you'll regret.
65
+ - ❌ **JSON-blob-as-schema-avoidance.** Dumping everything in a `jsonb` column to skip design, then writing queries that dig into it with no index — schema design deferred, not avoided, and now unindexable.
66
+ - ❌ **Speculative indexing.** Indexing every column "to be safe" taxes every write and bloats storage; index the queries you have.
67
+ - ❌ **Float money / naked timestamps / stringly-typed enums.** The same three regrets as `data-contract`, baked in at the storage layer where they're hardest to fix.
68
+ - ❌ **Deferring the multitenancy decision.** Shared-table-vs-isolated is near-impossible to change after data lands; an unmade decision is the riskiest one.
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Design the database schema for this feature",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "What tables, keys, and indexes do I need for these queries?",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Should this be relational or document, given our access patterns?",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Model the data layer for this access pattern list",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write a data contract for the table our consumers read",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Draft the OpenAPI contract for the service",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Diagram our system architecture",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Plan the migration from the old schema",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill_name": "db-schema-design",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Design the schema for an order-history feature. Queries: fetch one order by id, list a customer's orders newest-first, and report daily totals by region.",
7
+ "assertions": [
8
+ "Access patterns are listed before the schema, with frequency and selectivity",
9
+ "The paradigm choice is justified against those access patterns — relational-by-default needs no defence, every move past it does",
10
+ "Keys and partitioning are justified by the actual queries; a random UUIDv4 clustered primary key is not used without a stated reason",
11
+ "Every index maps to a real predicate from the listed queries rather than being speculative",
12
+ "Denormalization, where proposed, names the read it serves and the write cost it adds"
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "db-schema-design",
3
+ "version": "0.1.0",
4
+ "description": "Design a database schema from access patterns — paradigm chosen deliberately (relational/document/key-value/wide-column/graph), keys and partitioning driven by the actual queries, indexes mapped to predicates, money/time types right, and every read path verified to have a supporting access path. Use when the user is designing a data model, schema, or tables for a feature, choosing a database, or asks how to structure/store data.",
5
+ "entrypoint": "SKILL.md",
6
+ "deps": { "npm": [], "pip": [] },
7
+ "env": { "required": [], "optional": [] },
8
+ "related": ["api-contract-draft", "data-contract", "migration-plan", "tech-comparison-matrix"],
9
+ "tags": ["database", "schema-design", "data-model", "indexing", "sql", "nosql"],
10
+ "model": { "tier": "standard", "rationale": "Design synthesis from access patterns against a fixed paradigm/indexing/anti-pattern reference. Paradigm and denormalization judgment is bounded; escalate via ambiguous-input on contested scale/consistency tradeoffs." }
11
+ }
@@ -0,0 +1,56 @@
1
+ # db-schema-design reference — paradigm matrix, keys, indexing, multitenancy, anti-patterns
2
+
3
+ ## Paradigm-selection matrix (relational is the default; justify moving past it)
4
+
5
+ | Paradigm | Fits when | Access-pattern signal | Cost of choosing it |
6
+ |---|---|---|---|
7
+ | **Relational** (Postgres, MySQL) | transactional data, ad-hoc queries, joins, strong consistency | "we'll query this many ways, some not yet known"; integrity matters | vertical-scale ceiling (far off for most); needs sharding eventually at very high write volume |
8
+ | **Document** (Mongo, DynamoDB doc, Firestore) | entity read/written whole, varying shape per item, few cross-entity queries | "always fetch the whole order with its lines by order id" | ad-hoc cross-document queries are slow/absent; you design for the queries you know |
9
+ | **Key-value** (Redis, DynamoDB KV) | get/put by a single key, caching, sessions, very high throughput | "look up by exact id, nothing else" | no querying beyond the key; not a system of record alone |
10
+ | **Wide-column** (Cassandra, Bigtable) | massive write volume, time-series-ish, known query keys, linear scale | "billions of rows, query by partition+time, no joins" | one table per query pattern; data duplicated across tables; eventual consistency |
11
+ | **Graph** (Neo4j) | relationship traversal is the query (friends-of-friends, paths, recommendations) | "find all X connected to Y within N hops" | overkill for tabular data; operational maturity cost |
12
+ | **Time-series** (Timescale, Influx) | append-heavy metrics/events keyed by time, downsampling, retention | "ingest events, query ranges, roll up by window" | narrow purpose; pair with a relational store for the rest |
13
+
14
+ Polyglot is legitimate (Postgres for the system of record + Redis cache + a search index) — but each store needs its own access-pattern justification, and you now own the consistency between them.
15
+
16
+ ## Key design
17
+
18
+ - **Surrogate vs natural (relational):** surrogate PK (`bigint` identity, or ULID/UUIDv7) by default — stable, opaque, join-friendly. Natural keys (email, SKU) get a `UNIQUE` constraint, not the role of clustered PK (they change, and they leak into URLs/logs).
19
+ - **Avoid random UUIDv4 as a clustered/primary key:** random order scatters inserts across the B-tree, causing page splits and write amplification. Use **UUIDv7/ULID** (time-ordered) when you need a UUID with ordered inserts, or a `bigint` sequence.
20
+ - **NoSQL partition + sort key:** derive from access patterns. Partition key must spread load — a low-cardinality or monotonically-increasing partition key creates a **hot partition**. Sort key co-locates and orders what's read together (e.g. PK=`customer_id`, SK=`order#<ts>` to list a customer's orders by time). One access pattern that doesn't fit the key shape = a new table or a secondary index, decided now.
21
+ - **Composite/natural uniqueness:** enforce real-world uniqueness (one active subscription per customer) with a partial/unique index, not app-code checks that race.
22
+
23
+ ## Normalization / denormalization ladder
24
+
25
+ 1. **Start at 3NF.** Each fact in one place; no update anomalies. This is the correct default for a system of record.
26
+ 2. **Denormalize only for a named hot read**, and only after the normalized form is shown to be the bottleneck (or obviously will be). Examples: a counter cache (`order_count`), a duplicated display field to avoid a join on the top query, a materialized view.
27
+ 3. **Every denormalization states its sync mechanism** — transaction, trigger, application code, or scheduled rebuild — and accepts the staleness window. A duplicated value with no sync owner *will* drift.
28
+ 4. **NoSQL is denormalized by design** — you duplicate across items/tables to serve each access pattern; the "sync obligation" becomes a write-path responsibility (write to all copies, or accept eventual reconciliation).
29
+
30
+ ## Indexing rules
31
+
32
+ - Index the columns that appear in `WHERE`, `JOIN`, and `ORDER BY` of **actual** queries.
33
+ - **Composite column order: equality predicates first, then the range predicate, then the sort column.** `WHERE tenant_id = ? AND created_at > ? ORDER BY created_at` → index `(tenant_id, created_at)`.
34
+ - A **covering index** (includes the selected columns) turns a hot read into an index-only scan — worth it for a top query, costly to maintain for a rare one.
35
+ - **Don't index low-selectivity columns alone** (a boolean, a 3-value status) — the scan is cheaper than the index hop; combine with a selective column instead, or use a partial index (`WHERE status = 'active'`).
36
+ - Every index taxes **every write** and consumes storage. The right count is "one per real query shape," not zero and not all-columns.
37
+ - Foreign-key columns are usually worth indexing (joins + cascade performance).
38
+
39
+ ## Multitenancy isolation (decide early — expensive to reverse)
40
+
41
+ | Model | Isolation | Cost / blast radius | Fits |
42
+ |---|---|---|---|
43
+ | Shared table + `tenant_id` (+ row-level security) | logical, enforced by RLS/query | cheapest; a query bug = cross-tenant leak (see `threat-model`) | many small tenants, SaaS default |
44
+ | Schema-per-tenant | stronger; separate tables per tenant | migrations × N schemas; noisy-neighbor still shared | tens–hundreds of mid tenants |
45
+ | Database-per-tenant | strongest; separate DBs | highest ops cost; per-tenant backup/restore is a feature | few large/regulated/enterprise tenants |
46
+
47
+ State the choice and its trade. If shared-table, the `tenant_id` predicate is non-negotiable on every query and belongs in RLS, not developer discipline.
48
+
49
+ ## Schema anti-pattern catalog
50
+
51
+ - **EAV (entity-attribute-value)** — rows of `(entity, attribute, value)` to be "flexible." Kills types, constraints, and queryability. Use real columns, or a typed `jsonb` column with documented shape and expression indexes — not a generic triple store.
52
+ - **The god table** — 60+ columns, half null for any given row, modeling several entities at once. Split by entity.
53
+ - **JSON-blob-as-schema-avoidance** — `jsonb` for everything to skip modeling, then unindexed queries digging into it. JSON is for genuinely variable/sparse sub-structure, with expression indexes on what you query.
54
+ - **Premature sharding** — operational complexity for scale you don't have. Vertical + read replicas + partitioning usually buy years first.
55
+ - **Index-everything / index-nothing** — both are failures; index the real query shapes.
56
+ - **Soft-delete everywhere without thought** — `is_deleted` flags leak into every query and every unique constraint; decide per table, and use partial indexes (`WHERE NOT is_deleted`).
@@ -0,0 +1,75 @@
1
+ # Schema-design template
2
+
3
+ Access patterns first, schema second, verification last — every query must end the document with a supporting path.
4
+
5
+ ```markdown
6
+ # Schema design: {feature / domain}
7
+
8
+ **Paradigm:** {relational | document | key-value | wide-column | graph | time-series}
9
+ **Rationale:** {tied to the access patterns below — relational needs none; anything else justifies}
10
+ **Engine (if decided):** {Postgres 16 | DynamoDB | …} `[assumption if not confirmed]`
11
+
12
+ ## Access patterns (the spec the schema is judged against)
13
+
14
+ | # | Query / write | R/W | Frequency | Selectivity | Latency | Consistency |
15
+ |---|---|---|---|---|---|---|
16
+ | Q1 | get order with lines by order id | R | very high | 1 row + children | <50ms | read-your-writes |
17
+ | Q2 | list a customer's orders, newest first | R | high | range | <200ms | eventual ok |
18
+ | W1 | create order + lines | W | high | — | — | atomic |
19
+
20
+ ## Schema
21
+
22
+ ### {table / collection: orders}
23
+
24
+ | Column | Type | Null | Key/constraint | Notes |
25
+ |---|---|---|---|---|
26
+ | id | bigint / ULID | no | PK | surrogate; time-ordered |
27
+ | customer_id | bigint | no | FK → customers(id), indexed | |
28
+ | total_minor | bigint | no | CHECK (>= 0) | minor units, currency below — never float |
29
+ | currency | char(3) | no | CHECK (ISO-4217) | |
30
+ | status | text | no | CHECK in (pending,paid,shipped,cancelled) | enum, not free string |
31
+ | created_at | timestamptz | no | default now() | UTC |
32
+
33
+ {Repeat per table/collection. For NoSQL: state PK (partition) + SK (sort) and the access pattern each serves.}
34
+
35
+ ## Relationships
36
+
37
+ - customers 1 —< orders 1 —< order_lines (cascade: delete order → delete its lines)
38
+ - {cardinality + cascade/restrict per relationship}
39
+
40
+ ## Indexes (each maps to a query)
41
+
42
+ | Index | Columns (order matters) | Serves | Type |
43
+ |---|---|---|---|
44
+ | idx_orders_customer_created | (customer_id, created_at) | Q2 (equality then sort) | btree |
45
+ | pk_orders | (id) | Q1 | primary key (clustered/index-organized only on engines that support it — Postgres heaps don't) |
46
+
47
+ {Note any covering/partial index and why. No index without a query.}
48
+
49
+ ## Denormalizations (if any)
50
+
51
+ | Field | On | For query | Kept in sync by |
52
+ |---|---|---|---|
53
+ | order_count | customers | dashboard top read | order-write transaction |
54
+
55
+ ## Scale & multitenancy
56
+
57
+ - **Unbounded-growth table:** {orders} — plan: {partition by created_at month; archive > 24mo to cold storage}.
58
+ - **Partition/shard:** {none yet — vertical + read replica suffices to ~Nx; revisit at {trigger}} or {strategy + why not premature}.
59
+ - **Multitenancy:** {shared-table + tenant_id + RLS | schema-per-tenant | db-per-tenant} — trade: {…}. `tenant_id` predicate enforced by {RLS policy}.
60
+
61
+ ## Verification — every access pattern has a path
62
+
63
+ | # | Supported by | Full scan? |
64
+ |---|---|---|
65
+ | Q1 | pk_orders + FK index on lines | no |
66
+ | Q2 | idx_orders_customer_created | no |
67
+ | W1 | insert; FK indexes present | no |
68
+
69
+ ⚠ {Any pattern with no supporting index/key — flag it and resolve before build.}
70
+
71
+ ## Evolution
72
+
73
+ - Migrations / rollout of changes → `migration-plan`.
74
+ - If this data is published to other teams → wrap it in a `data-contract`.
75
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: design-doc
3
+ description: Generate a Google-style engineering design doc (problem, goals/non-goals, options considered, recommended approach, risks, rollout) from a feature brief or short description. Use when the user wants to draft a design doc, technical proposal, or one-pager for an engineering review.
4
+ ---
5
+
6
+ # design-doc
7
+
8
+ You help the user turn a feature brief into a structured design doc that an engineering team can review and approve.
9
+
10
+ ## How to respond
11
+
12
+ 1. **Understand the brief.** Make sure you know:
13
+ - **What we're building** (one sentence)
14
+ - **Who's affected** (users, callers, teams)
15
+ - **Why now** (the forcing function — outage, regulatory, competitor, scaling cliff)
16
+
17
+ If any of these are missing, ask. Don't draft a design doc without a *why now*.
18
+
19
+ 2. **Default to the standard structure** in [`templates/design-doc.md`](templates/design-doc.md):
20
+ 1. Title + status (Draft / In Review / Approved) + author + date
21
+ 2. **TL;DR** — three bullets, readable in 30 seconds
22
+ 3. **Context** — why is this being proposed
23
+ 4. **Goals / Non-goals** — explicit non-goals matter as much as goals
24
+ 5. **Proposal** — the actual design (this is the longest section)
25
+ 6. **Alternatives considered** — at least 2 alternatives with why-not
26
+ 7. **Risks & mitigations**
27
+ 8. **Rollout plan** — staged rollout, feature flag, rollback criteria
28
+ 9. **Open questions**
29
+
30
+ 3. **Length discipline.** A good design doc is **2–5 pages** rendered. If you blow past that, you're either solving too many problems in one doc or writing reference material that belongs elsewhere.
31
+
32
+ 4. **Show, don't tell.** Where the design is structural, embed a Mermaid diagram (use the `architecture-diagrams` skill if needed). Where it's about flows, embed a sequence diagram. Where it's about API shape, embed a small example request/response.
33
+
34
+ 5. **End with explicit asks.** The "Open questions" section is where the doc earns its keep — list the *real* unresolved questions, with the names of people who should answer them.
35
+
36
+ ## Quality bar
37
+
38
+ - **Non-goals are real, not throat-clearing.** If your non-goals list reads "we're not solving world hunger", delete it. Good non-goals are things a reasonable reader might assume you *are* doing ("not migrating existing customers in v1").
39
+ - **Alternatives have a why-not, not just a description.** Two sentences each: what is it, why didn't we pick it.
40
+ - **Risks have mitigations.** A bare list of "things that could go wrong" is anxiety, not engineering.
41
+ - **Rollout criteria are concrete.** "We'll monitor closely" is not a criterion. "Roll forward to 100% if p99 < 80ms for 48h after 10% rollout" is.
42
+
43
+ ## Anti-patterns to avoid
44
+
45
+ - ❌ Starting with implementation detail before establishing the problem.
46
+ - ❌ "Future work" sections that double the doc length with hypotheticals.
47
+ - ❌ Using passive voice to avoid naming who owns what ("it will be deployed" — by whom?).
48
+ - ❌ Skipping the alternatives section because "we already know what to do" — this is *exactly* when a design review catches blind spots.
49
+ - ❌ More than ~5 pages. Cut, link out, or split into multiple docs.
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Draft a design doc for this feature",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Write a Google-style engineering design document from this brief",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "I need a technical design with goals, non-goals, alternatives, and rollout",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Turn this feature brief into a design doc the team can review",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Write an ADR recording this one decision",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Draft the product requirements document for this feature",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Critique the design doc I already wrote",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Split this epic into user stories",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill_name": "design-doc",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Draft a design doc for a notification service that consumes domain events and delivers email and push notifications for about 1M events/day.",
7
+ "assertions": [
8
+ "Non-goals are real scope boundaries a reader might otherwise assume are in scope, not throat-clearing",
9
+ "Each alternative carries a two-sentence what-it-is and why-we-didn't-pick-it",
10
+ "Every risk has a mitigation, not a bare list of concerns",
11
+ "Goals are stated with measurable targets rather than adjectives",
12
+ "The rollout section names stages and what would halt it",
13
+ "Facts not supplied by the user are marked as open questions rather than invented"
14
+ ]
15
+ }
16
+ ]
17
+ }