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,99 @@
1
+ # risk-register reference
2
+
3
+ ## The default 5×5 scale
4
+
5
+ Likelihood is judged over a stated horizon (default 12 months). Impact is judged against the
6
+ objective in scope, not against the company in general.
7
+
8
+ | Score | Likelihood | Rough probability | Impact | What it looks like |
9
+ |---|---|---|---|---|
10
+ | 1 | Rare | under 5% | Minimal | Absorbed in normal operations; nobody outside the team notices |
11
+ | 2 | Unlikely | 5–20% | Minor | Small cost or delay inside existing tolerance; no external notice |
12
+ | 3 | Possible | 20–50% | Moderate | A milestone or budget line is missed; management attention needed |
13
+ | 4 | Likely | 50–80% | Major | An objective is missed; customers, partners or a regulator notice |
14
+ | 5 | Almost certain | over 80% | Severe | The objective fails, serious legal or regulatory action, or harm to people |
15
+
16
+ Add the organisation's own thresholds to the impact column when it has them, for example
17
+ "Major: £250k to £1m, or one to three months' delay". Use the organisation's scale whenever
18
+ it exists; a register that uses a different scale from the risk committee gets rescored.
19
+
20
+ **Bands** (score = likelihood × impact): low 1–4, medium 5–9, high 10–16, critical 20–25.
21
+ The script bands other scales by share of the maximum score: up to 16% low, up to 36%
22
+ medium, up to 64% high, above that critical. On 5×5 that gives exactly the bands above.
23
+
24
+ A common use of the bands, to adapt to the organisation's appetite:
25
+
26
+ | Band | Who can accept the residual risk | Review at least |
27
+ |---|---|---|
28
+ | critical | Executive or board | monthly |
29
+ | high | Senior leader above the owner | quarterly |
30
+ | medium | Risk owner | six-monthly |
31
+ | low | Risk owner | yearly |
32
+
33
+ ## Writing cause, event, consequence
34
+
35
+ | Part | Question it answers | ✅ | ❌ |
36
+ |---|---|---|---|
37
+ | Cause | What condition exists today? | "One analyst maintains the route scripts" | "Key person" |
38
+ | Event | What uncertain thing might happen? | "The analyst leaves or is off long-term" | "Resource issues" |
39
+ | Consequence | What happens to the objective? | "Routes are planned by hand and fuel use rises" | "Bad" |
40
+
41
+ Tests:
42
+ - If the "risk" is already happening, it is an **issue**, not a risk. Track it as an issue
43
+ with an action, and keep the risk only if it could get worse.
44
+ - If you can't say how likely it is, the event is too vague. Rewrite it.
45
+ - If two causes lead to one event, keep one row and list both causes. If one cause leads to
46
+ two unrelated events, write two rows.
47
+
48
+ ## Inherent and residual
49
+
50
+ - **Inherent:** the score if none of the risk's controls existed. Use it to see which
51
+ controls matter most; a big drop from inherent to residual means a control the business
52
+ depends on, and that control deserves testing.
53
+ - **Residual:** the score with the controls that operate today. Controls that are planned,
54
+ budgeted or half-built go in `controls` marked "(planned)" and do not lower residual yet.
55
+ - **Target** (optional, in the summary): where residual should land once planned controls are live.
56
+
57
+ ## Treatments
58
+
59
+ | Treatment | Use when | Record |
60
+ |---|---|---|
61
+ | avoid | The activity isn't worth the risk | What stops, and by when |
62
+ | reduce | Controls can bring likelihood or impact down at a sensible cost | Each control, owner, due date |
63
+ | transfer | Someone else can carry the consequence: insurance, contract, outsourcing | The policy or clause; note the residual you still hold |
64
+ | accept | Treatment costs more than the exposure, and the residual is within appetite | Who accepted, when, and until what date |
65
+
66
+ Accepting a high or critical residual risk is a decision above the owner's level; put it in
67
+ the summary's decision list.
68
+
69
+ ## Review triggers
70
+
71
+ Name an observable event, not a calendar entry:
72
+
73
+ - ✅ "Vendor misses an SLA two months running or announces a sale"
74
+ - ✅ "Diesel index up 10% in a month"
75
+ - ✅ "Any EDR detection on a depot device"
76
+ - ❌ "Quarterly review"
77
+ - ❌ "If things change"
78
+
79
+ The calendar date goes in `next_review`; the trigger is what brings the review forward.
80
+
81
+ ## CSV columns
82
+
83
+ | Column | Required | Values |
84
+ |---|---|---|
85
+ | id | yes | unique, e.g. R-001 |
86
+ | title | yes | short noun phrase |
87
+ | cause, event, consequence | yes | one sentence each |
88
+ | owner | yes | a named person or a role a person holds; not "TBD", "IT", "team" |
89
+ | inherent_likelihood, inherent_impact | yes | whole numbers 1..scale |
90
+ | residual_likelihood, residual_impact | yes | whole numbers 1..scale; residual score ≤ inherent score |
91
+ | treatment | yes | avoid, reduce, transfer, accept |
92
+ | controls | no (warned under reduce) | semicolon-separated |
93
+ | due_date | no (warned under avoid, reduce, transfer) | YYYY-MM-DD |
94
+ | next_review | yes | YYYY-MM-DD |
95
+ | review_trigger | no (warned) | the event that reopens the risk |
96
+ | status | yes | open, closed |
97
+
98
+ Extra columns (category, objective, last_updated, target score) are allowed; the script
99
+ ignores them.
@@ -0,0 +1,338 @@
1
+ #!/usr/bin/env python3
2
+ """Validate a risk-register CSV and print heat-map counts.
3
+
4
+ Stdlib only, Python 3.9+. Reads the CSV from a path argument (or "-" for stdin),
5
+ checks every row, and prints a plain-text report: errors, warnings, inherent and
6
+ residual heat maps, overdue reviews and actions, and the top risks by residual score.
7
+
8
+ Exit codes:
9
+ 0 the register is valid (warnings may still be printed)
10
+ 1 the register has errors (missing fields, scores out of range, bad dates, ...)
11
+ 2 the input could not be read at all (missing file, no header, bad arguments)
12
+
13
+ Usage:
14
+ python3 check_register.py register.csv
15
+ python3 check_register.py register.csv --scale 5 --as-of 2026-10-01 --top 5 --out report.txt
16
+ cat register.csv | python3 check_register.py -
17
+ """
18
+
19
+ import argparse
20
+ import csv
21
+ import datetime
22
+ import io
23
+ import sys
24
+
25
+ REQUIRED_COLUMNS = [
26
+ "id",
27
+ "title",
28
+ "cause",
29
+ "event",
30
+ "consequence",
31
+ "owner",
32
+ "inherent_likelihood",
33
+ "inherent_impact",
34
+ "residual_likelihood",
35
+ "residual_impact",
36
+ "treatment",
37
+ "controls",
38
+ "due_date",
39
+ "next_review",
40
+ "review_trigger",
41
+ "status",
42
+ ]
43
+
44
+ # Columns that may be blank on a row without making it an error.
45
+ OPTIONAL_VALUE_COLUMNS = {"controls", "due_date", "review_trigger"}
46
+
47
+ SCORE_COLUMNS = [
48
+ "inherent_likelihood",
49
+ "inherent_impact",
50
+ "residual_likelihood",
51
+ "residual_impact",
52
+ ]
53
+
54
+ TREATMENTS = {"avoid", "reduce", "transfer", "accept"}
55
+ STATUSES = {"open", "closed"}
56
+ GENERIC_OWNERS = {"tbd", "tbc", "team", "all", "everyone", "n/a", "na", "none", "it", "?"}
57
+
58
+ BANDS = ["low", "medium", "high", "critical"]
59
+
60
+
61
+ def band_for(score, scale):
62
+ """Band a likelihood x impact score by its share of the maximum score.
63
+
64
+ On a 5x5 scale this gives low 1-4, medium 5-9, high 10-16, critical 20-25.
65
+ """
66
+ ratio = float(score) / float(scale * scale)
67
+ if ratio <= 0.16:
68
+ return "low"
69
+ if ratio <= 0.36:
70
+ return "medium"
71
+ if ratio <= 0.64:
72
+ return "high"
73
+ return "critical"
74
+
75
+
76
+ def band_ranges(scale):
77
+ ranges = {}
78
+ products = sorted(set(a * b for a in range(1, scale + 1) for b in range(1, scale + 1)))
79
+ for s in products:
80
+ b = band_for(s, scale)
81
+ lo, hi = ranges.get(b, (s, s))
82
+ ranges[b] = (min(lo, s), max(hi, s))
83
+ return ranges
84
+
85
+
86
+ def parse_date(text):
87
+ try:
88
+ return datetime.datetime.strptime(text, "%Y-%m-%d").date()
89
+ except ValueError:
90
+ return None
91
+
92
+
93
+ def heat_map(rows, lik_col, imp_col, scale):
94
+ grid = {}
95
+ for r in rows:
96
+ key = (r[lik_col], r[imp_col])
97
+ grid[key] = grid.get(key, 0) + 1
98
+ lines = []
99
+ header = " L\\I |" + "".join(" {:>3}".format(i) for i in range(1, scale + 1))
100
+ lines.append(header)
101
+ lines.append(" " + "-" * (len(header) - 2))
102
+ for lik in range(scale, 0, -1):
103
+ cells = []
104
+ for imp in range(1, scale + 1):
105
+ n = grid.get((lik, imp), 0)
106
+ cells.append(" {:>3}".format(n if n else "."))
107
+ lines.append(" {:>3} |".format(lik) + "".join(cells))
108
+ return lines
109
+
110
+
111
+ def band_counts(rows, lik_col, imp_col, scale):
112
+ counts = dict((b, 0) for b in BANDS)
113
+ for r in rows:
114
+ counts[band_for(r[lik_col] * r[imp_col], scale)] += 1
115
+ return counts
116
+
117
+
118
+ def bullets(items):
119
+ if not items:
120
+ return [" none"]
121
+ return [" - " + i for i in items]
122
+
123
+
124
+ def main(argv=None):
125
+ ap = argparse.ArgumentParser(description="Validate a risk-register CSV and print heat-map counts.")
126
+ ap.add_argument("csv", help="path to the register CSV, or - for stdin")
127
+ ap.add_argument("--scale", type=int, default=5, help="likelihood and impact scale, 1..N (default 5)")
128
+ ap.add_argument("--as-of", dest="as_of", default=None, help="date to judge overdue items against, YYYY-MM-DD (default today)")
129
+ ap.add_argument("--top", type=int, default=5, help="how many top residual risks to list (default 5)")
130
+ ap.add_argument("--out", default=None, help="also write the report to this path")
131
+ args = ap.parse_args(argv)
132
+
133
+ if args.scale < 3 or args.scale > 10:
134
+ print("error: --scale must be between 3 and 10", file=sys.stderr)
135
+ return 2
136
+ if args.as_of:
137
+ as_of = parse_date(args.as_of)
138
+ if as_of is None:
139
+ print("error: --as-of must be YYYY-MM-DD, got %r" % args.as_of, file=sys.stderr)
140
+ return 2
141
+ else:
142
+ as_of = datetime.date.today()
143
+
144
+ try:
145
+ if args.csv == "-":
146
+ text = sys.stdin.read()
147
+ else:
148
+ with io.open(args.csv, "r", encoding="utf-8-sig", newline="") as fh:
149
+ text = fh.read()
150
+ except (IOError, OSError) as exc:
151
+ print("error: cannot read %s: %s" % (args.csv, exc), file=sys.stderr)
152
+ return 2
153
+
154
+ reader = csv.DictReader(io.StringIO(text))
155
+ if not reader.fieldnames:
156
+ print("error: %s has no header row" % args.csv, file=sys.stderr)
157
+ return 2
158
+ fieldnames = [f.strip() for f in reader.fieldnames]
159
+ missing_cols = [c for c in REQUIRED_COLUMNS if c not in fieldnames]
160
+ if missing_cols:
161
+ print("error: missing required column(s): %s" % ", ".join(missing_cols), file=sys.stderr)
162
+ print("expected columns: %s" % ",".join(REQUIRED_COLUMNS), file=sys.stderr)
163
+ return 2
164
+
165
+ errors = []
166
+ warnings = []
167
+ overdue = []
168
+ valid = []
169
+ seen_ids = {}
170
+ total_rows = 0
171
+
172
+ for line_no, raw in enumerate(reader, start=2):
173
+ row = dict((k.strip(), (v or "").strip()) for k, v in raw.items() if k is not None)
174
+ if not any(row.values()):
175
+ continue
176
+ total_rows += 1
177
+ rid = row.get("id") or "(line %d)" % line_no
178
+ where = "line %d [%s]" % (line_no, rid)
179
+ row_ok = True
180
+
181
+ for col in REQUIRED_COLUMNS:
182
+ if col in OPTIONAL_VALUE_COLUMNS:
183
+ continue
184
+ if not row.get(col):
185
+ errors.append("%s: %s is empty" % (where, col))
186
+ row_ok = False
187
+
188
+ if row.get("id"):
189
+ if row["id"] in seen_ids:
190
+ errors.append("%s: duplicate id, first seen on line %d" % (where, seen_ids[row["id"]]))
191
+ row_ok = False
192
+ else:
193
+ seen_ids[row["id"]] = line_no
194
+
195
+ owner = row.get("owner", "")
196
+ if owner and owner.lower() in GENERIC_OWNERS:
197
+ errors.append("%s: owner %r is not a named person or role" % (where, owner))
198
+ row_ok = False
199
+
200
+ scores = {}
201
+ for col in SCORE_COLUMNS:
202
+ val = row.get(col, "")
203
+ if not val:
204
+ continue
205
+ try:
206
+ n = int(val)
207
+ except ValueError:
208
+ errors.append("%s: %s must be a whole number 1-%d, got %r" % (where, col, args.scale, val))
209
+ row_ok = False
210
+ continue
211
+ if n < 1 or n > args.scale:
212
+ errors.append("%s: %s=%d is outside the 1-%d scale" % (where, col, n, args.scale))
213
+ row_ok = False
214
+ continue
215
+ scores[col] = n
216
+
217
+ treatment = row.get("treatment", "").lower()
218
+ if treatment and treatment not in TREATMENTS:
219
+ errors.append("%s: treatment %r is not one of avoid/reduce/transfer/accept" % (where, row["treatment"]))
220
+ row_ok = False
221
+
222
+ status = row.get("status", "").lower()
223
+ if status and status not in STATUSES:
224
+ errors.append("%s: status %r is not open or closed" % (where, row["status"]))
225
+ row_ok = False
226
+
227
+ dates = {}
228
+ for col in ("due_date", "next_review"):
229
+ val = row.get(col, "")
230
+ if not val:
231
+ continue
232
+ d = parse_date(val)
233
+ if d is None:
234
+ errors.append("%s: %s must be YYYY-MM-DD, got %r" % (where, col, val))
235
+ row_ok = False
236
+ else:
237
+ dates[col] = d
238
+
239
+ if treatment in ("reduce", "avoid", "transfer") and not row.get("due_date"):
240
+ warnings.append("%s: treatment is %s but there is no due_date for the action" % (where, treatment))
241
+ if treatment == "reduce" and not row.get("controls"):
242
+ warnings.append("%s: treatment is reduce but no controls are listed" % where)
243
+ if not row.get("review_trigger"):
244
+ warnings.append("%s: no review_trigger; name the event that should reopen this risk" % where)
245
+
246
+ if len(scores) == 4:
247
+ inh = scores["inherent_likelihood"] * scores["inherent_impact"]
248
+ res = scores["residual_likelihood"] * scores["residual_impact"]
249
+ if res > inh:
250
+ errors.append("%s: residual score %d is higher than inherent score %d" % (where, res, inh))
251
+ row_ok = False
252
+ if treatment == "reduce" and res == inh:
253
+ warnings.append("%s: treatment is reduce but residual equals inherent (%d); the controls change nothing" % (where, res))
254
+ if treatment == "accept" and band_for(res, args.scale) in ("high", "critical"):
255
+ warnings.append("%s: accepting a %s residual risk (%d) needs a named sign-off above the owner" % (where, band_for(res, args.scale), res))
256
+
257
+ if status == "open":
258
+ if "next_review" in dates and dates["next_review"] < as_of:
259
+ days = (as_of - dates["next_review"]).days
260
+ overdue.append("%s: review overdue by %d day(s) (next_review %s), owner %s" % (where, days, dates["next_review"], owner or "?"))
261
+ if "due_date" in dates and dates["due_date"] < as_of:
262
+ days = (as_of - dates["due_date"]).days
263
+ overdue.append("%s: treatment action overdue by %d day(s) (due_date %s), owner %s" % (where, days, dates["due_date"], owner or "?"))
264
+
265
+ if row_ok and len(scores) == 4:
266
+ entry = dict(row)
267
+ entry.update(scores)
268
+ entry["status"] = status
269
+ valid.append(entry)
270
+
271
+ open_rows = [r for r in valid if r["status"] == "open"]
272
+
273
+ out = []
274
+ out.append("Risk register check")
275
+ out.append(" file: %s" % args.csv)
276
+ out.append(" as of: %s" % as_of.isoformat())
277
+ out.append(" scale: 1-%d likelihood x 1-%d impact" % (args.scale, args.scale))
278
+ ranges = band_ranges(args.scale)
279
+ out.append(" bands: " + ", ".join("%s %d-%d" % (b, ranges[b][0], ranges[b][1]) for b in BANDS if b in ranges))
280
+ out.append(" rows: %d read, %d valid, %d open" % (total_rows, len(valid), len(open_rows)))
281
+ out.append("")
282
+
283
+ out.append("Errors (%d)" % len(errors))
284
+ out.extend(bullets(errors))
285
+ out.append("")
286
+ out.append("Warnings (%d)" % len(warnings))
287
+ out.extend(bullets(warnings))
288
+ out.append("")
289
+ out.append("Overdue (%d)" % len(overdue))
290
+ out.extend(bullets(overdue))
291
+ out.append("")
292
+
293
+ out.append("Inherent heat map, open risks (rows = likelihood, columns = impact)")
294
+ out.extend(heat_map(open_rows, "inherent_likelihood", "inherent_impact", args.scale))
295
+ c = band_counts(open_rows, "inherent_likelihood", "inherent_impact", args.scale)
296
+ out.append(" " + ", ".join("%s %d" % (b, c[b]) for b in BANDS))
297
+ out.append("")
298
+ out.append("Residual heat map, open risks (rows = likelihood, columns = impact)")
299
+ out.extend(heat_map(open_rows, "residual_likelihood", "residual_impact", args.scale))
300
+ c = band_counts(open_rows, "residual_likelihood", "residual_impact", args.scale)
301
+ out.append(" " + ", ".join("%s %d" % (b, c[b]) for b in BANDS))
302
+ out.append("")
303
+
304
+ ranked = sorted(
305
+ open_rows,
306
+ key=lambda r: (
307
+ -(r["residual_likelihood"] * r["residual_impact"]),
308
+ -(r["inherent_likelihood"] * r["inherent_impact"]),
309
+ r["id"],
310
+ ),
311
+ )
312
+ out.append("Top %d open risks by residual score" % min(args.top, len(ranked)))
313
+ if not ranked:
314
+ out.append(" none")
315
+ for r in ranked[: args.top]:
316
+ inh = r["inherent_likelihood"] * r["inherent_impact"]
317
+ res = r["residual_likelihood"] * r["residual_impact"]
318
+ out.append(
319
+ " %s residual %d (%s), inherent %d %s [%s, owner %s]"
320
+ % (r["id"], res, band_for(res, args.scale), inh, r["title"], r["treatment"].lower(), r["owner"])
321
+ )
322
+ out.append("")
323
+ out.append("Result: %s" % ("FAIL, fix the errors above" if errors else "PASS"))
324
+
325
+ report = "\n".join(out) + "\n"
326
+ sys.stdout.write(report)
327
+ if args.out:
328
+ try:
329
+ with io.open(args.out, "w", encoding="utf-8") as fh:
330
+ fh.write(report)
331
+ except (IOError, OSError) as exc:
332
+ print("error: cannot write %s: %s" % (args.out, exc), file=sys.stderr)
333
+ return 2
334
+ return 1 if errors else 0
335
+
336
+
337
+ if __name__ == "__main__":
338
+ sys.exit(main())
@@ -0,0 +1,2 @@
1
+ id,title,cause,event,consequence,owner,inherent_likelihood,inherent_impact,residual_likelihood,residual_impact,treatment,controls,due_date,next_review,review_trigger,status
2
+ R-001,<short noun phrase>,<because of ... (the condition that exists today)>,<... may happen (the uncertain event)>,<leading to ... (the effect on objectives)>,<named person or role>,1-5,1-5,1-5,1-5,avoid|reduce|transfer|accept,<existing and planned controls; semicolon-separated>,YYYY-MM-DD,YYYY-MM-DD,<the event that reopens this risk>,open|closed
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: soc2-evidence-map
3
+ description: Map an organisation's controls to the SOC 2 Trust Services Criteria in scope (Security always, plus Availability, Confidentiality, Processing Integrity or Privacy if chosen), and for each control list the evidence an auditor will ask for, the system it lives in, the owner, how often it is produced, and the gaps — distinguishing Type I (designed and in place at a date) from Type II (operating over a period, sampled from a full population) — as a table and a CSV the team can work from. Use when the user is preparing for a SOC 2 audit or readiness assessment, says "SOC 2 evidence", "map our controls to the TSC", "what will the auditor ask for", "SOC 2 gap analysis".
4
+ ---
5
+
6
+ # soc2-evidence-map
7
+
8
+ You turn a controls list, or a description of how the company runs its systems, into the
9
+ working document a SOC 2 project runs on: each control mapped to the criteria it addresses,
10
+ the exact evidence the auditor will request, where that evidence comes from, who produces
11
+ it, how often, and what is missing. The output is a Markdown summary and a CSV. You prepare
12
+ material for the company's compliance lead and its auditor to review; it is not audit
13
+ advice, and only the service auditor decides what evidence is sufficient.
14
+
15
+ ## How to respond
16
+
17
+ 1. **Ask once for what is missing, in one message.** Take what is already given. Ask for at
18
+ most two things, and say what you will assume for the rest:
19
+ - **Scope:** which Trust Services Categories (Security is always in scope), the system
20
+ or product being reported on, and **Type I or Type II** with the date or period.
21
+ *Default: Security only, Type II, 12-month period* `[assumption]`.
22
+ - **Controls and systems:** the controls list if one exists, or the tools they run on
23
+ (identity provider, cloud, HR system, ticketing, code hosting, monitoring).
24
+
25
+ Owners and system names come from the user. A missing owner is a gap to fill, not a
26
+ name to guess.
27
+
28
+ 2. **Draft controls where none exist.** If the user has no controls list, propose the
29
+ minimum set for the categories in scope from [`reference.md`](reference.md), each
30
+ written as *who does what, how often, with what record*:
31
+ ✅ "Engineering managers review production access quarterly in Okta; removals are
32
+ ticketed in Jira." ❌ "Access is managed appropriately." Mark proposed controls
33
+ `proposed` so nobody mistakes them for existing ones.
34
+
35
+ 3. **Map each control to criteria.** Use criteria IDs (for example CC6.2) only where
36
+ [`reference.md`](reference.md) gives the ID; for anything else, name the area in words
37
+ ("Privacy: notice to data subjects"). One control usually maps to one to three criteria.
38
+ Then invert the map: every criterion in scope has at least one control, or it is a gap.
39
+
40
+ 4. **Name the evidence for each control, by report type.**
41
+ - **Type I** (point in time): show the control is designed and in place on the report
42
+ date. The policy or procedure, the system configuration (export or screenshot with
43
+ the date visible), and one example of it happening.
44
+ - **Type II** (over the period): show it operated throughout. The auditor asks for the
45
+ **complete population** of occurrences in the period from the system of record (all
46
+ joiners, all leavers, all production changes, all quarterly reviews) and then picks
47
+ samples; for each sample you produce the record. Name the population and its source.
48
+ ✅ "Population: Workday termination report for the period. Per sample: Okta deactivation
49
+ timestamp within 24 hours of the termination date." ❌ "Evidence: offboarding docs."
50
+
51
+ 5. **Record where it lives, who owns it, and how often.** System is the tool the evidence
52
+ is exported from, not the team. Owner is a person or a role a person holds. Frequency is
53
+ how often the control runs (per event, daily, quarterly, annually) because that sets the
54
+ sample size the auditor draws.
55
+
56
+ 6. **Mark status and gaps honestly.** Each control is `in place`, `partial` (runs but leaves
57
+ no record, or doesn't cover every system) or `gap` (doesn't exist or doesn't run). For
58
+ Type II, a control that started mid-period is `partial` for this period. Every non-`in
59
+ place` row gets a remediation and a date.
60
+
61
+ 7. **Call out shared responsibility.** Controls a subservice organisation runs (the cloud
62
+ provider's data centre security) are covered by its own SOC report: list the vendor
63
+ reports to collect and the complementary controls the company must run itself. Note
64
+ the controls the company expects its customers to run.
65
+
66
+ 8. **Emit both outputs:**
67
+ - the Markdown summary: scope line, a coverage table (criterion → controls → status),
68
+ the evidence map table, the gap list ordered by audit risk, and the vendor SOC reports
69
+ to collect;
70
+ - the CSV in the columns of [`templates/evidence-map.csv`](templates/evidence-map.csv),
71
+ one row per control-criterion pair, so the team can filter by owner or by criterion.
72
+
73
+ **Non-interactive runs** (subagent, CI, headless): missing scope becomes Security only,
74
+ Type II, 12 months, tagged `[assumption]` at the top. If there are no controls and no
75
+ description of the systems to draft from, emit
76
+ `BLOCKED: need the controls list, or the systems the company runs (identity, cloud, HR, ticketing, code hosting)`.
77
+
78
+ ## Useful references in this skill
79
+
80
+ - [`reference.md`](reference.md): the Trust Services Criteria structure, the criteria IDs this skill uses, baseline controls per area, Type I vs Type II evidence, populations and sampling, and subservice organisations
81
+ - [`templates/evidence-map.csv`](templates/evidence-map.csv): the CSV columns with one annotated row
82
+ - [`examples/northwind-type2-security.md`](examples/northwind-type2-security.md): worked example, a fictional SaaS company preparing for its first Type II
83
+
84
+ ## Quality bar
85
+
86
+ - **Every criterion in scope has a control or is listed as a gap.** The coverage table shows it.
87
+ - **Every control is written as who, what, how often, with what record.** No adjectives in place of a mechanism.
88
+ - **Evidence is specific to the report type:** Type I names design evidence; Type II names the population, its source system, and the per-sample record.
89
+ - **Criteria IDs appear only where reference.md gives them;** anything else is described in words.
90
+ - **System, owner and frequency are filled for every row,** or the blank is itself a gap.
91
+ - **Status is honest:** a control with no record, or one that started mid-period, is not `in place`.
92
+ - **Proposed controls are marked `proposed`,** never presented as existing.
93
+
94
+ ## When to use this skill
95
+
96
+ - ✅ Getting ready for a first SOC 2 Type I or Type II audit, or a readiness assessment
97
+ - ✅ Turning a controls spreadsheet into an evidence request list per owner
98
+ - ✅ Moving from Type I to Type II and working out what has to be recorded over the period
99
+ - ✅ Adding a category (Availability, Confidentiality) to an existing SOC 2 scope
100
+
101
+ ## When NOT to use this skill
102
+
103
+ - ❌ Finding security threats in a system design: use `threat-model`
104
+ - ❌ Scoring business risks for a risk committee: use `risk-register`; SOC 2's risk assessment criteria expect one, and this map can point to it
105
+ - ❌ A GDPR assessment of one processing activity: use `dpia`
106
+ - ❌ Writing the security or reliability targets for a service: use `nfr-spec`
107
+ - ❌ A policy for staff use of AI tools: use `ai-usage-policy`
108
+
109
+ ## Anti-patterns to avoid
110
+
111
+ - ❌ **Evidence named as a document type.** "Access review docs" tells the owner nothing. Name the export, the system and what each sample must show.
112
+ - ❌ **Type I evidence for a Type II audit.** One screenshot proves the setting existed on one day, not for twelve months.
113
+ - ❌ **Invented criteria numbers.** If you're not sure of the ID, describe the area; a wrong ID in an auditor-facing map costs credibility.
114
+ - ❌ **Owner "Engineering".** A team can't be chased for a missing export; name the role.
115
+ - ❌ **Policies as controls.** "We have an access control policy" is evidence of design, not a control that operates.
116
+ - ❌ **Ignoring the cloud provider.** Physical security and data centre controls are carved out to its SOC report; the map should say so and list the complementary controls.
117
+ - ❌ **Marking a mid-period control `in place`.** For Type II, the auditor tests the whole period; a control that began in month seven is a gap for months one to six.
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "query": "Map our controls to the SOC 2 Trust Services Criteria and tell me what evidence the auditor will ask for",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "We're moving from SOC 2 Type I to Type II, what do we need to start recording?",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Build a SOC 2 gap analysis spreadsheet with owners and systems for each control",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "What evidence do we need for CC6.2 and CC8.1 in our SOC 2 audit?",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Build a STRIDE threat model for our new data pipeline",
20
+ "should_trigger": false
21
+ },
22
+ {
23
+ "query": "Create a risk register for the company with a heat map",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Write the non-functional requirements for availability and security of the billing service",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Draft a DPIA for our customer analytics feature",
32
+ "should_trigger": false
33
+ }
34
+ ]
@@ -0,0 +1,19 @@
1
+ {
2
+ "skill_name": "soc2-evidence-map",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Acme Payments is going for SOC 2 Type II, Security and Availability, for 1 April to 30 September 2027. Controls today: Google Workspace SSO with MFA, joiners requested in Linear and approved by the hiring manager, leavers removed by IT 'usually the same day' with no ticket, GitHub PR reviews required on main, GCP Cloud SQL backups nightly, an uptime status page, PagerDuty on-call run by Priya Nair (SRE lead). Map our controls to the criteria, list the evidence the auditor will want, and show the gaps as a table and a CSV.",
7
+ "assertions": [
8
+ "Every common criterion and every Availability criterion in scope is either mapped to a control or listed as a gap",
9
+ "Each control is written as who does what, how often, and where it is recorded",
10
+ "Type II evidence names the full population, the system it is exported from, and what each sampled item must show",
11
+ "The leaver process with no ticket is marked partial or gap, not in place, because it leaves no per-sample record",
12
+ "Criteria IDs used are real AICPA TSC IDs (for example CC6.2, A1.2); areas without a confident ID are described in words",
13
+ "System, owner and frequency are given for every row, and owners not in the prompt are marked to confirm rather than invented",
14
+ "GCP is treated as a subservice organisation with its SOC report to collect",
15
+ "A CSV with one row per control-criterion pair is provided alongside the table"
16
+ ]
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,17 @@
1
+ control_id,control,criteria,category,type1_evidence,type2_population,type2_sample_record,system,owner,frequency,status,gap,remediation,due_date
2
+ GOV-01,Head of Security has the security policy set approved by the CEO each January; staff acknowledge at hire and annually in BambooHR,CC1.1,Security,Approved policy set with approval date; acknowledgement report,All active staff during the period,Acknowledgement date for each sampled person within 30 days of hire or of the annual cycle,BambooHR,Head of Security (Sam Ito),annually,partial,Policies approved in 2025 but no annual acknowledgement cycle has run,Run acknowledgement cycle before the period starts,2026-12-15
3
+ GOV-01,Head of Security has the security policy set approved by the CEO each January; staff acknowledge at hire and annually in BambooHR,CC5.3,Security,Approved policy set with approval date,All active staff during the period,Acknowledgement date for each sampled person,BambooHR,Head of Security (Sam Ito),annually,partial,As above,As above,2026-12-15
4
+ HR-01,People team runs background checks before each start date and tracks security training completion within 30 days of hire,CC1.4,Security,Background check procedure; training course configuration,All hires in the period from BambooHR,Background check completion date before start; training completion within 30 days,BambooHR; Certn; KnowBe4,People Ops Lead (Ola Brandt),per event,in place,,,
5
+ RISK-01,Head of Security runs an annual risk assessment and the leadership team reviews the register,CC3.2,Security,Risk assessment procedure; current risk register,The annual assessment in the period,Dated register and leadership meeting minutes showing review,Google Drive,Head of Security (Sam Ito),annually,gap,No risk assessment has been done,Run first risk assessment (see risk-register) and minute the review,2027-01-31
6
+ VEN-01,Head of Security assesses critical vendors at onboarding and reviews their SOC reports annually,CC9.2,Security,Vendor management procedure; vendor inventory,All critical vendors and all vendors onboarded in the period,Completed assessment or SOC report review per sampled vendor,Vanta,Head of Security (Sam Ito),annually,partial,Vendor inventory exists; no review records,Collect current SOC 2 reports for AWS and Okta and record reviews,2026-12-31
7
+ AC-01,Engineering managers grant access by Jira ticket with manager approval and role-based Okta groups,CC6.2,Security,Access procedure; Okta group-to-role mapping export; one approved ticket,All Okta accounts created in the period,Approved Jira ticket dated on or before account creation,Okta; Jira,IT Lead (Dev Rao),per event,in place,,,
8
+ AC-01,Engineering managers grant access by Jira ticket with manager approval and role-based Okta groups,CC6.3,Security,Okta group-to-role mapping export,All Okta accounts created in the period,Groups assigned match the role in the ticket,Okta; Jira,IT Lead (Dev Rao),per event,in place,,,
9
+ AC-02,IT removes all access within 24 hours of termination; BambooHR termination triggers Okta deactivation,CC6.2,Security,Offboarding procedure; BambooHR-Okta integration config; one example,All terminations in the period from BambooHR,Okta deactivation timestamp within 24 hours of termination date,BambooHR; Okta,IT Lead (Dev Rao),per event,in place,,,
10
+ AC-03,Engineering managers review AWS and GitHub admin access quarterly and record removals in Jira,CC6.3,Security,Review procedure; one completed review,The quarterly reviews in the period,Signed-off review list and Jira tickets for each removal,Jira; AWS IAM Identity Center; GitHub,VP Engineering (Kim Novak),quarterly,gap,Reviews happen ad hoc with no record,Schedule quarterly review ticket; first review before period start,2026-12-15
11
+ AC-04,IT enforces SSO with MFA for all workforce accounts in Okta,CC6.1,Security,Okta MFA policy export dated on the report date,Okta sign-on policy change log for the period,No policy change disabled MFA; MFA enrolment report at period end,Okta,IT Lead (Dev Rao),continuous,in place,,,
12
+ EP-01,IT manages all laptops in Kandji with disk encryption and malware protection enforced,CC6.8,Security,Kandji blueprint export; device compliance report,Device compliance reports for the period,Sampled devices show encryption and protection active,Kandji,IT Lead (Dev Rao) [to confirm],continuous,partial,Four contractor laptops are not enrolled,Enrol or replace contractor devices,2026-11-30
13
+ VM-01,Platform team scans production weekly with Snyk and fixes critical findings within 14 days and high within 30,CC7.1,Security,Scan configuration; remediation SLA in the vulnerability procedure,All critical and high findings opened in the period,Fix date within SLA or an approved exception,Snyk; Jira,Platform Lead (Rui Costa),weekly,in place,,,
14
+ MON-01,Platform team routes Datadog security alerts to the PagerDuty on-call rotation,CC7.2,Security,Alert routing configuration; on-call schedule,All security alerts in the period,Each sampled alert acknowledged and triaged in PagerDuty,Datadog; PagerDuty,Platform Lead (Rui Costa) [to confirm],continuous,in place,,,
15
+ IR-01,Head of Security maintains an incident response plan tested annually by tabletop; incidents are ticketed with a post-incident review,CC7.4,Security,Approved IR plan; tabletop record,All security incidents in the period and the annual tabletop,Incident ticket with timeline and post-incident review,Jira; Google Drive,Head of Security (Sam Ito),per event,partial,Plan exists; never tested,Run a tabletop exercise in the period,2027-03-31
16
+ CHG-01,Engineers deploy to production only through GitHub pull requests with one approval from someone other than the author and passing CI,CC8.1,Security,Branch protection settings export; one merged pull request,All production deployments in the period from GitHub Actions,Pull request with a non-author approval and green checks,GitHub,VP Engineering (Kim Novak),per event,partial,Two admins can bypass branch protection,Remove bypass rights or log and review each bypass,2026-11-15
17
+ BC-01,Platform team runs automated RDS backups daily and tests a restore every six months,CC7.5,Security,Backup configuration; restore test procedure,The restore tests in the period,Restore test record with date and outcome,AWS RDS; Jira,Platform Lead (Rui Costa) [to confirm],semi-annually,proposed,Backups run; no restore test has been done or recorded,Schedule and record restore tests,2027-01-31