@ericrisco/rsc 0.1.5

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 (1419) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +294 -0
  3. package/manifest.json +4761 -0
  4. package/package.json +60 -0
  5. package/schema/frontmatter.schema.json +12 -0
  6. package/scripts/build-manifest.js +72 -0
  7. package/scripts/consult.js +106 -0
  8. package/scripts/detect-repo.js +118 -0
  9. package/scripts/doctor.js +21 -0
  10. package/scripts/eval-lint.sh +179 -0
  11. package/scripts/install-apply.js +52 -0
  12. package/scripts/install-plan.js +13 -0
  13. package/scripts/lib/behavior-score.js +103 -0
  14. package/scripts/lib/domains.js +30 -0
  15. package/scripts/lib/frontmatter.js +47 -0
  16. package/scripts/lib/harden-policy.js +41 -0
  17. package/scripts/lib/manifest.js +18 -0
  18. package/scripts/lib/recommend.js +36 -0
  19. package/scripts/lib/registry.js +110 -0
  20. package/scripts/lib/result-envelope.js +35 -0
  21. package/scripts/lib/state.js +12 -0
  22. package/scripts/lib/ui.js +159 -0
  23. package/scripts/reviewer-guard.sh +67 -0
  24. package/scripts/rsc.js +187 -0
  25. package/scripts/skill-behavior-eval.js +33 -0
  26. package/scripts/skill-behavior-eval.workflow.js +136 -0
  27. package/scripts/skill-behavior-rubric.md +63 -0
  28. package/scripts/skill-harden-rubric.md +40 -0
  29. package/scripts/skill-harden.workflow.js +161 -0
  30. package/scripts/skill-rubric.md +39 -0
  31. package/scripts/skill-scoreboard.workflow.js +35 -0
  32. package/skills/ab-testing/SKILL.md +191 -0
  33. package/skills/ab-testing/evals/README.md +8 -0
  34. package/skills/ab-testing/evals/cases.yaml +49 -0
  35. package/skills/ab-testing/references/pitfalls.md +74 -0
  36. package/skills/ab-testing/references/sample-size-and-cuped.md +128 -0
  37. package/skills/ab-testing/scripts/verify.sh +89 -0
  38. package/skills/accessibility/SKILL.md +218 -0
  39. package/skills/accessibility/evals/README.md +3 -0
  40. package/skills/accessibility/evals/cases.yaml +47 -0
  41. package/skills/accessibility/references/aria-patterns.md +113 -0
  42. package/skills/accessibility/references/wcag22-checklist.md +83 -0
  43. package/skills/accessibility/scripts/verify.sh +103 -0
  44. package/skills/ads/SKILL.md +175 -0
  45. package/skills/ads/evals/README.md +15 -0
  46. package/skills/ads/evals/cases.yaml +58 -0
  47. package/skills/ads/references/platform-specs.md +73 -0
  48. package/skills/ads/references/roas-model.md +77 -0
  49. package/skills/ads/scripts/verify.sh +210 -0
  50. package/skills/agent-eval/SKILL.md +213 -0
  51. package/skills/agent-eval/evals/README.md +12 -0
  52. package/skills/agent-eval/evals/cases.yaml +45 -0
  53. package/skills/agent-eval/references/judge-design.md +118 -0
  54. package/skills/agent-eval/references/runner-and-gate.md +183 -0
  55. package/skills/agent-eval/scripts/verify.sh +161 -0
  56. package/skills/agent-safety/SKILL.md +176 -0
  57. package/skills/agent-safety/evals/README.md +12 -0
  58. package/skills/agent-safety/evals/cases.yaml +46 -0
  59. package/skills/agent-safety/references/threat-model.md +51 -0
  60. package/skills/ai-media/SKILL.md +196 -0
  61. package/skills/ai-media/evals/README.md +3 -0
  62. package/skills/ai-media/evals/cases.yaml +45 -0
  63. package/skills/ai-media/references/ffmpeg-assembly.md +117 -0
  64. package/skills/ai-media/references/models-and-params.md +78 -0
  65. package/skills/ai-media/scripts/verify.sh +103 -0
  66. package/skills/analytics/SKILL.md +219 -0
  67. package/skills/analytics/evals/README.md +9 -0
  68. package/skills/analytics/evals/cases.yaml +53 -0
  69. package/skills/analytics/references/event-taxonomy.md +75 -0
  70. package/skills/analytics/references/ga4-setup.md +122 -0
  71. package/skills/analytics/references/posthog-setup.md +100 -0
  72. package/skills/analytics/scripts/verify.sh +95 -0
  73. package/skills/analyze/SKILL.md +136 -0
  74. package/skills/analyze/evals/README.md +72 -0
  75. package/skills/analyze/evals/cases.yaml +74 -0
  76. package/skills/angular/SKILL.md +288 -0
  77. package/skills/angular/evals/README.md +3 -0
  78. package/skills/angular/evals/cases.yaml +38 -0
  79. package/skills/angular/references/migration.md +81 -0
  80. package/skills/angular/references/signals-rxjs.md +92 -0
  81. package/skills/angular/scripts/verify.sh +122 -0
  82. package/skills/api-connector-builder/SKILL.md +285 -0
  83. package/skills/api-connector-builder/evals/README.md +11 -0
  84. package/skills/api-connector-builder/evals/cases.yaml +47 -0
  85. package/skills/api-connector-builder/references/auth-flows.md +132 -0
  86. package/skills/api-connector-builder/references/pagination.md +144 -0
  87. package/skills/api-connector-builder/scripts/verify.sh +172 -0
  88. package/skills/api-design/SKILL.md +189 -0
  89. package/skills/api-design/evals/README.md +3 -0
  90. package/skills/api-design/evals/cases.yaml +45 -0
  91. package/skills/api-design/references/graphql-design.md +70 -0
  92. package/skills/api-design/references/openapi-contract.md +86 -0
  93. package/skills/api-design/references/rest-conventions.md +63 -0
  94. package/skills/api-design/references/versioning-and-evolution.md +49 -0
  95. package/skills/api-design/scripts/verify.sh +138 -0
  96. package/skills/article-writing/SKILL.md +175 -0
  97. package/skills/article-writing/evals/README.md +3 -0
  98. package/skills/article-writing/evals/cases.yaml +47 -0
  99. package/skills/article-writing/references/ai-tell-banlist.md +114 -0
  100. package/skills/article-writing/references/on-page-seo.md +133 -0
  101. package/skills/article-writing/scripts/verify.sh +165 -0
  102. package/skills/astro/SKILL.md +275 -0
  103. package/skills/astro/evals/README.md +3 -0
  104. package/skills/astro/evals/cases.yaml +41 -0
  105. package/skills/astro/references/content-layer.md +118 -0
  106. package/skills/astro/references/deploy-and-integrations.md +163 -0
  107. package/skills/astro/scripts/verify.sh +137 -0
  108. package/skills/author-skill/SKILL.md +206 -0
  109. package/skills/author-skill/evals/README.md +66 -0
  110. package/skills/author-skill/evals/cases.yaml +75 -0
  111. package/skills/author-skill/references/description-recipe.md +84 -0
  112. package/skills/author-skill/references/eval-authoring.md +74 -0
  113. package/skills/author-skill/references/rsc-conventions.md +91 -0
  114. package/skills/automation-flows/SKILL.md +132 -0
  115. package/skills/automation-flows/evals/README.md +5 -0
  116. package/skills/automation-flows/evals/cases.yaml +44 -0
  117. package/skills/automation-flows/references/error-handling.md +58 -0
  118. package/skills/automation-flows/references/n8n-workflow-json.md +63 -0
  119. package/skills/automation-flows/scripts/verify.sh +78 -0
  120. package/skills/aws-essentials/SKILL.md +223 -0
  121. package/skills/aws-essentials/evals/README.md +10 -0
  122. package/skills/aws-essentials/evals/cases.yaml +44 -0
  123. package/skills/aws-essentials/references/iam-least-privilege.md +134 -0
  124. package/skills/aws-essentials/references/rds-cloudfront-recipes.md +127 -0
  125. package/skills/aws-essentials/scripts/verify.sh +99 -0
  126. package/skills/backups/SKILL.md +137 -0
  127. package/skills/backups/evals/README.md +3 -0
  128. package/skills/backups/evals/cases.yaml +42 -0
  129. package/skills/backups/references/engine-recipes.md +121 -0
  130. package/skills/backups/references/restore-runbook.md +65 -0
  131. package/skills/backups/scripts/verify.sh +80 -0
  132. package/skills/bash-scripting/SKILL.md +231 -0
  133. package/skills/bash-scripting/evals/README.md +3 -0
  134. package/skills/bash-scripting/evals/cases.yaml +45 -0
  135. package/skills/bash-scripting/references/portability.md +97 -0
  136. package/skills/bash-scripting/scripts/verify.sh +140 -0
  137. package/skills/bookkeeping/SKILL.md +184 -0
  138. package/skills/bookkeeping/evals/README.md +5 -0
  139. package/skills/bookkeeping/evals/cases.yaml +52 -0
  140. package/skills/bookkeeping/references/chart-of-accounts.md +87 -0
  141. package/skills/bookkeeping/references/reconciliation-playbook.md +54 -0
  142. package/skills/bookkeeping/references/tricky-transactions.md +192 -0
  143. package/skills/brand-identity/SKILL.md +161 -0
  144. package/skills/brand-identity/evals/README.md +14 -0
  145. package/skills/brand-identity/evals/cases.yaml +43 -0
  146. package/skills/brand-identity/references/color-and-tokens.md +129 -0
  147. package/skills/brand-identity/references/logo-and-assets.md +117 -0
  148. package/skills/brand-identity/scripts/verify.sh +224 -0
  149. package/skills/brand-voice/SKILL.md +183 -0
  150. package/skills/brand-voice/evals/README.md +3 -0
  151. package/skills/brand-voice/evals/cases.yaml +57 -0
  152. package/skills/brand-voice/references/voice-guide-template.md +150 -0
  153. package/skills/brand-voice/references/word-bank.md +61 -0
  154. package/skills/brand-voice/scripts/verify.sh +190 -0
  155. package/skills/building-agents/SKILL.md +469 -0
  156. package/skills/building-agents/evals/README.md +68 -0
  157. package/skills/building-agents/evals/cases.yaml +60 -0
  158. package/skills/building-agents/references/agent-loops-and-harness.md +371 -0
  159. package/skills/building-agents/references/evals-and-observability.md +420 -0
  160. package/skills/building-agents/references/mcp-servers.md +294 -0
  161. package/skills/building-agents/references/provider-abstraction.md +489 -0
  162. package/skills/building-agents/references/tools-and-rag.md +417 -0
  163. package/skills/building-agents/scripts/verify.sh +121 -0
  164. package/skills/business-intelligence/SKILL.md +176 -0
  165. package/skills/business-intelligence/evals/README.md +3 -0
  166. package/skills/business-intelligence/evals/cases.yaml +43 -0
  167. package/skills/business-intelligence/references/authoring-semantic-models.md +120 -0
  168. package/skills/business-intelligence/references/wiring-agents-and-apis.md +79 -0
  169. package/skills/business-intelligence/scripts/verify.sh +143 -0
  170. package/skills/calendar-scheduling/SKILL.md +196 -0
  171. package/skills/calendar-scheduling/evals/README.md +14 -0
  172. package/skills/calendar-scheduling/evals/cases.yaml +45 -0
  173. package/skills/calendar-scheduling/references/google-calendar-sync.md +78 -0
  174. package/skills/calendar-scheduling/references/provider-matrix.md +71 -0
  175. package/skills/calendar-scheduling/scripts/verify.sh +117 -0
  176. package/skills/case-studies/SKILL.md +147 -0
  177. package/skills/case-studies/evals/README.md +3 -0
  178. package/skills/case-studies/evals/cases.yaml +63 -0
  179. package/skills/case-studies/references/case-study-skeleton.md +90 -0
  180. package/skills/case-studies/references/consent-and-substantiation.md +80 -0
  181. package/skills/case-studies/scripts/verify.sh +161 -0
  182. package/skills/chatbot/SKILL.md +168 -0
  183. package/skills/chatbot/evals/README.md +13 -0
  184. package/skills/chatbot/evals/cases.yaml +43 -0
  185. package/skills/chatbot/references/handoff-and-sales.md +71 -0
  186. package/skills/chatbot/references/system-prompt-and-guardrails.md +78 -0
  187. package/skills/chatbot/scripts/verify.sh +162 -0
  188. package/skills/chrome-extension/SKILL.md +169 -0
  189. package/skills/chrome-extension/evals/README.md +12 -0
  190. package/skills/chrome-extension/evals/cases.yaml +40 -0
  191. package/skills/chrome-extension/references/store-and-migration.md +84 -0
  192. package/skills/chrome-extension/scripts/verify.sh +62 -0
  193. package/skills/clarify/SKILL.md +159 -0
  194. package/skills/clarify/evals/README.md +70 -0
  195. package/skills/clarify/evals/cases.yaml +71 -0
  196. package/skills/clickhouse-analytics/SKILL.md +165 -0
  197. package/skills/clickhouse-analytics/evals/README.md +3 -0
  198. package/skills/clickhouse-analytics/evals/cases.yaml +45 -0
  199. package/skills/clickhouse-analytics/references/ingestion-and-mvs.md +109 -0
  200. package/skills/clickhouse-analytics/references/query-optimization.md +76 -0
  201. package/skills/clickhouse-analytics/references/schema-and-engines.md +63 -0
  202. package/skills/clickhouse-analytics/scripts/verify.sh +109 -0
  203. package/skills/client-onboarding/SKILL.md +254 -0
  204. package/skills/client-onboarding/evals/README.md +14 -0
  205. package/skills/client-onboarding/evals/cases.yaml +40 -0
  206. package/skills/client-onboarding/references/onboarding-playbook.md +126 -0
  207. package/skills/cloudflare/SKILL.md +191 -0
  208. package/skills/cloudflare/evals/README.md +15 -0
  209. package/skills/cloudflare/evals/cases.yaml +46 -0
  210. package/skills/cloudflare/references/storage-primitives.md +104 -0
  211. package/skills/cloudflare/references/wrangler-config.md +91 -0
  212. package/skills/cloudflare/scripts/verify.sh +133 -0
  213. package/skills/code-review/SKILL.md +143 -0
  214. package/skills/code-review/evals/README.md +3 -0
  215. package/skills/code-review/evals/cases.yaml +55 -0
  216. package/skills/code-review/references/pr-workflow.md +67 -0
  217. package/skills/codebase-onboarding/SKILL.md +133 -0
  218. package/skills/codebase-onboarding/evals/README.md +3 -0
  219. package/skills/codebase-onboarding/evals/cases.yaml +69 -0
  220. package/skills/codebase-onboarding/references/recon-playbook.md +57 -0
  221. package/skills/codebase-onboarding/scripts/verify.sh +54 -0
  222. package/skills/cold-outreach/SKILL.md +206 -0
  223. package/skills/cold-outreach/evals/README.md +3 -0
  224. package/skills/cold-outreach/evals/cases.yaml +60 -0
  225. package/skills/cold-outreach/references/compliance-footer.md +50 -0
  226. package/skills/cold-outreach/references/hook-derivation.md +73 -0
  227. package/skills/cold-outreach/references/templates.md +88 -0
  228. package/skills/cold-outreach/scripts/verify.sh +170 -0
  229. package/skills/community/SKILL.md +225 -0
  230. package/skills/community/evals/README.md +3 -0
  231. package/skills/community/evals/cases.yaml +40 -0
  232. package/skills/community/references/metrics-and-rituals.md +58 -0
  233. package/skills/community/references/platform-playbooks.md +64 -0
  234. package/skills/community/scripts/verify.sh +83 -0
  235. package/skills/competitor-watch/SKILL.md +193 -0
  236. package/skills/competitor-watch/evals/README.md +19 -0
  237. package/skills/competitor-watch/evals/cases.yaml +54 -0
  238. package/skills/competitor-watch/references/monitoring-config.md +124 -0
  239. package/skills/competitor-watch/references/tracker-schema.md +79 -0
  240. package/skills/competitor-watch/scripts/verify.sh +253 -0
  241. package/skills/compliance/SKILL.md +184 -0
  242. package/skills/compliance/evals/README.md +14 -0
  243. package/skills/compliance/evals/cases.yaml +46 -0
  244. package/skills/compliance/references/frameworks.md +108 -0
  245. package/skills/compliance/references/operating-rhythm.md +79 -0
  246. package/skills/compliance/scripts/verify.sh +168 -0
  247. package/skills/compose-multiplatform/SKILL.md +198 -0
  248. package/skills/compose-multiplatform/evals/README.md +3 -0
  249. package/skills/compose-multiplatform/evals/cases.yaml +40 -0
  250. package/skills/compose-multiplatform/references/ios-interop.md +91 -0
  251. package/skills/compose-multiplatform/references/project-setup.md +96 -0
  252. package/skills/compose-multiplatform/scripts/verify.sh +123 -0
  253. package/skills/constitution/SKILL.md +160 -0
  254. package/skills/constitution/evals/README.md +68 -0
  255. package/skills/constitution/evals/cases.yaml +72 -0
  256. package/skills/constitution/references/constitution-template.md +90 -0
  257. package/skills/content-engine/SKILL.md +164 -0
  258. package/skills/content-engine/evals/README.md +17 -0
  259. package/skills/content-engine/evals/cases.yaml +62 -0
  260. package/skills/content-engine/references/atomization.md +81 -0
  261. package/skills/content-engine/references/brief-and-pipeline.md +90 -0
  262. package/skills/content-engine/scripts/verify.sh +146 -0
  263. package/skills/context-budget/SKILL.md +132 -0
  264. package/skills/context-budget/evals/README.md +11 -0
  265. package/skills/context-budget/evals/cases.yaml +40 -0
  266. package/skills/context-budget/references/handoff-and-compaction.md +96 -0
  267. package/skills/continuous-learning/SKILL.md +136 -0
  268. package/skills/continuous-learning/evals/README.md +16 -0
  269. package/skills/continuous-learning/evals/cases.yaml +39 -0
  270. package/skills/continuous-learning/references/lesson-routing.md +106 -0
  271. package/skills/contracts/SKILL.md +124 -0
  272. package/skills/contracts/evals/README.md +3 -0
  273. package/skills/contracts/evals/cases.yaml +42 -0
  274. package/skills/contracts/references/clause-library.md +129 -0
  275. package/skills/contracts/references/review-playbook.md +49 -0
  276. package/skills/contracts/scripts/verify.sh +53 -0
  277. package/skills/coolify/SKILL.md +201 -0
  278. package/skills/coolify/evals/README.md +21 -0
  279. package/skills/coolify/evals/cases.yaml +46 -0
  280. package/skills/coolify/references/databases-and-backups.md +99 -0
  281. package/skills/coolify/references/deploy-recipes.md +105 -0
  282. package/skills/coolify/references/install-and-proxy.md +80 -0
  283. package/skills/coolify/scripts/verify.sh +123 -0
  284. package/skills/cost-tracking/SKILL.md +183 -0
  285. package/skills/cost-tracking/evals/README.md +3 -0
  286. package/skills/cost-tracking/evals/cases.yaml +45 -0
  287. package/skills/cost-tracking/references/cloud-caps.md +52 -0
  288. package/skills/cost-tracking/references/pricing-tables.md +51 -0
  289. package/skills/cost-tracking/scripts/verify.sh +135 -0
  290. package/skills/course-builder/SKILL.md +186 -0
  291. package/skills/course-builder/evals/README.md +16 -0
  292. package/skills/course-builder/evals/cases.yaml +49 -0
  293. package/skills/course-builder/references/assessment-design.md +74 -0
  294. package/skills/course-builder/references/grounding-and-scoping.md +69 -0
  295. package/skills/course-builder/references/outcomes-and-blooms.md +82 -0
  296. package/skills/course-builder/scripts/verify.sh +247 -0
  297. package/skills/course-storytelling/SKILL.md +205 -0
  298. package/skills/course-storytelling/evals/README.md +54 -0
  299. package/skills/course-storytelling/evals/cases.yaml +50 -0
  300. package/skills/course-storytelling/references/brunson-frameworks.md +190 -0
  301. package/skills/course-storytelling/references/concept-landing-recipe.md +136 -0
  302. package/skills/course-storytelling/references/course-analysis.md +124 -0
  303. package/skills/course-storytelling/references/learner-grounding.md +183 -0
  304. package/skills/course-storytelling/references/mental-models.md +115 -0
  305. package/skills/course-storytelling/scripts/verify.sh +223 -0
  306. package/skills/cpp/SKILL.md +349 -0
  307. package/skills/cpp/evals/README.md +14 -0
  308. package/skills/cpp/evals/cases.yaml +44 -0
  309. package/skills/cpp/references/cmake.md +167 -0
  310. package/skills/cpp/references/move-and-templates.md +130 -0
  311. package/skills/cpp/references/undefined-behavior.md +86 -0
  312. package/skills/cpp/scripts/verify.sh +165 -0
  313. package/skills/csharp-dotnet/SKILL.md +291 -0
  314. package/skills/csharp-dotnet/evals/README.md +3 -0
  315. package/skills/csharp-dotnet/evals/cases.yaml +48 -0
  316. package/skills/csharp-dotnet/references/aspnetcore.md +99 -0
  317. package/skills/csharp-dotnet/references/async.md +82 -0
  318. package/skills/csharp-dotnet/references/efcore.md +96 -0
  319. package/skills/csharp-dotnet/scripts/verify.sh +90 -0
  320. package/skills/customer-support/SKILL.md +193 -0
  321. package/skills/customer-support/evals/README.md +13 -0
  322. package/skills/customer-support/evals/cases.yaml +61 -0
  323. package/skills/customer-support/references/macros-and-sla.md +142 -0
  324. package/skills/dashboard/SKILL.md +205 -0
  325. package/skills/dashboard/evals/README.md +3 -0
  326. package/skills/dashboard/evals/cases.yaml +50 -0
  327. package/skills/dashboard/references/chart-selection.md +34 -0
  328. package/skills/dashboard/references/tile-schema.md +164 -0
  329. package/skills/dashboard/scripts/verify.sh +130 -0
  330. package/skills/data-cleaning/SKILL.md +285 -0
  331. package/skills/data-cleaning/evals/README.md +16 -0
  332. package/skills/data-cleaning/evals/cases.yaml +57 -0
  333. package/skills/data-cleaning/references/normalization-recipes.md +136 -0
  334. package/skills/data-cleaning/references/validation-patterns.md +134 -0
  335. package/skills/data-cleaning/scripts/verify.sh +115 -0
  336. package/skills/data-policy/SKILL.md +163 -0
  337. package/skills/data-policy/evals/README.md +15 -0
  338. package/skills/data-policy/evals/cases.yaml +44 -0
  339. package/skills/data-policy/references/consent-and-ropa.md +97 -0
  340. package/skills/data-policy/references/retention-schedule.md +83 -0
  341. package/skills/data-policy/scripts/verify.sh +143 -0
  342. package/skills/data-scraper/SKILL.md +134 -0
  343. package/skills/data-scraper/evals/README.md +3 -0
  344. package/skills/data-scraper/evals/cases.yaml +46 -0
  345. package/skills/data-scraper/references/anti-bot.md +85 -0
  346. package/skills/data-scraper/references/frameworks.md +116 -0
  347. package/skills/data-scraper/references/legal-compliance.md +59 -0
  348. package/skills/data-scraper/scripts/verify.sh +166 -0
  349. package/skills/db-migrations/SKILL.md +254 -0
  350. package/skills/db-migrations/evals/README.md +10 -0
  351. package/skills/db-migrations/evals/cases.yaml +46 -0
  352. package/skills/db-migrations/references/backfill-and-batching.md +105 -0
  353. package/skills/db-migrations/references/expand-contract-playbook.md +152 -0
  354. package/skills/db-migrations/references/tools-and-runners.md +88 -0
  355. package/skills/db-migrations/scripts/verify.sh +112 -0
  356. package/skills/debug/SKILL.md +227 -0
  357. package/skills/debug/evals/README.md +88 -0
  358. package/skills/debug/evals/cases.yaml +74 -0
  359. package/skills/decision-records/SKILL.md +189 -0
  360. package/skills/decision-records/evals/README.md +3 -0
  361. package/skills/decision-records/evals/cases.yaml +43 -0
  362. package/skills/decision-records/references/templates.md +232 -0
  363. package/skills/decision-records/scripts/verify.sh +105 -0
  364. package/skills/deployment/SKILL.md +439 -0
  365. package/skills/deployment/evals/README.md +50 -0
  366. package/skills/deployment/evals/cases.yaml +53 -0
  367. package/skills/deployment/references/coolify.md +216 -0
  368. package/skills/deployment/references/dockerfiles-by-stack.md +319 -0
  369. package/skills/deployment/references/github-actions.md +295 -0
  370. package/skills/deployment/references/hosting-targets.md +272 -0
  371. package/skills/deployment/scripts/verify.sh +134 -0
  372. package/skills/design/SKILL.md +399 -0
  373. package/skills/design/evals/README.md +53 -0
  374. package/skills/design/evals/cases.yaml +56 -0
  375. package/skills/design/references/brand-grounding.md +187 -0
  376. package/skills/design/references/copywriting-frameworks.md +138 -0
  377. package/skills/design/references/landing-anatomy-and-cro.md +202 -0
  378. package/skills/design/references/motion-and-interaction.md +182 -0
  379. package/skills/design/references/research-method.md +147 -0
  380. package/skills/design/references/signature-and-craft.md +148 -0
  381. package/skills/design/references/trends-2026.md +80 -0
  382. package/skills/design/references/visual-system.md +236 -0
  383. package/skills/design/scripts/verify.sh +248 -0
  384. package/skills/digitalocean/SKILL.md +251 -0
  385. package/skills/digitalocean/evals/README.md +10 -0
  386. package/skills/digitalocean/evals/cases.yaml +37 -0
  387. package/skills/digitalocean/references/app-spec.md +126 -0
  388. package/skills/digitalocean/references/droplet-ops.md +95 -0
  389. package/skills/digitalocean/scripts/verify.sh +102 -0
  390. package/skills/django/SKILL.md +268 -0
  391. package/skills/django/evals/README.md +11 -0
  392. package/skills/django/evals/cases.yaml +47 -0
  393. package/skills/django/references/drf.md +109 -0
  394. package/skills/django/references/orm-performance.md +91 -0
  395. package/skills/django/references/security.md +81 -0
  396. package/skills/django/references/testing.md +86 -0
  397. package/skills/django/scripts/verify.sh +115 -0
  398. package/skills/docker/SKILL.md +283 -0
  399. package/skills/docker/evals/README.md +10 -0
  400. package/skills/docker/evals/cases.yaml +44 -0
  401. package/skills/docker/references/base-images-and-stages.md +104 -0
  402. package/skills/docker/references/compose-recipes.md +109 -0
  403. package/skills/docker/scripts/verify.sh +149 -0
  404. package/skills/document-processing/SKILL.md +214 -0
  405. package/skills/document-processing/evals/README.md +3 -0
  406. package/skills/document-processing/evals/cases.yaml +65 -0
  407. package/skills/document-processing/references/engines.md +67 -0
  408. package/skills/document-processing/scripts/verify.sh +172 -0
  409. package/skills/domains-dns/SKILL.md +146 -0
  410. package/skills/domains-dns/evals/README.md +16 -0
  411. package/skills/domains-dns/evals/cases.yaml +47 -0
  412. package/skills/domains-dns/references/record-cookbook.md +94 -0
  413. package/skills/domains-dns/references/tls-and-acme.md +90 -0
  414. package/skills/domains-dns/references/verify-and-debug.md +64 -0
  415. package/skills/domains-dns/scripts/verify.sh +163 -0
  416. package/skills/drizzle-orm/SKILL.md +234 -0
  417. package/skills/drizzle-orm/evals/README.md +12 -0
  418. package/skills/drizzle-orm/evals/cases.yaml +47 -0
  419. package/skills/drizzle-orm/references/relations-and-drivers.md +118 -0
  420. package/skills/drizzle-orm/scripts/verify.sh +155 -0
  421. package/skills/duckdb/SKILL.md +207 -0
  422. package/skills/duckdb/evals/README.md +31 -0
  423. package/skills/duckdb/evals/cases.yaml +41 -0
  424. package/skills/duckdb/references/python-and-interop.md +105 -0
  425. package/skills/duckdb/references/remote-and-lakehouse.md +101 -0
  426. package/skills/duckdb/scripts/verify.sh +71 -0
  427. package/skills/dynamodb/SKILL.md +217 -0
  428. package/skills/dynamodb/evals/README.md +8 -0
  429. package/skills/dynamodb/evals/cases.yaml +46 -0
  430. package/skills/dynamodb/references/access-patterns.md +127 -0
  431. package/skills/dynamodb/references/capacity-and-limits.md +78 -0
  432. package/skills/dynamodb/scripts/verify.sh +108 -0
  433. package/skills/e-signature/SKILL.md +185 -0
  434. package/skills/e-signature/evals/README.md +3 -0
  435. package/skills/e-signature/evals/cases.yaml +44 -0
  436. package/skills/e-signature/references/docusign.md +83 -0
  437. package/skills/e-signature/references/dropbox-sign.md +73 -0
  438. package/skills/e-signature/references/legal-tiers.md +37 -0
  439. package/skills/e-signature/scripts/verify.sh +81 -0
  440. package/skills/e2e-testing/SKILL.md +243 -0
  441. package/skills/e2e-testing/evals/README.md +10 -0
  442. package/skills/e2e-testing/evals/cases.yaml +64 -0
  443. package/skills/e2e-testing/references/config-and-ci.md +156 -0
  444. package/skills/e2e-testing/references/flakiness-playbook.md +124 -0
  445. package/skills/e2e-testing/scripts/verify.sh +117 -0
  446. package/skills/electron/SKILL.md +221 -0
  447. package/skills/electron/evals/README.md +13 -0
  448. package/skills/electron/evals/cases.yaml +38 -0
  449. package/skills/electron/references/packaging-and-updates.md +122 -0
  450. package/skills/electron/references/security-and-ipc.md +158 -0
  451. package/skills/electron/scripts/verify.sh +143 -0
  452. package/skills/elixir/SKILL.md +217 -0
  453. package/skills/elixir/evals/README.md +3 -0
  454. package/skills/elixir/evals/cases.yaml +41 -0
  455. package/skills/elixir/references/mix-and-releases.md +91 -0
  456. package/skills/elixir/references/otp-patterns.md +96 -0
  457. package/skills/elixir/scripts/verify.sh +76 -0
  458. package/skills/email-connector/SKILL.md +294 -0
  459. package/skills/email-connector/evals/README.md +19 -0
  460. package/skills/email-connector/evals/cases.yaml +39 -0
  461. package/skills/email-connector/references/providers.md +107 -0
  462. package/skills/email-connector/scripts/verify.sh +72 -0
  463. package/skills/email-deliverability/SKILL.md +168 -0
  464. package/skills/email-deliverability/evals/README.md +21 -0
  465. package/skills/email-deliverability/evals/cases.yaml +45 -0
  466. package/skills/email-deliverability/scripts/verify.sh +98 -0
  467. package/skills/embeddings-search/SKILL.md +193 -0
  468. package/skills/embeddings-search/evals/README.md +10 -0
  469. package/skills/embeddings-search/evals/cases.yaml +44 -0
  470. package/skills/embeddings-search/references/evaluation.md +86 -0
  471. package/skills/embeddings-search/references/models.md +73 -0
  472. package/skills/embeddings-search/scripts/verify.sh +103 -0
  473. package/skills/error-handling/SKILL.md +307 -0
  474. package/skills/error-handling/evals/README.md +12 -0
  475. package/skills/error-handling/evals/cases.yaml +46 -0
  476. package/skills/error-handling/references/boundaries-and-messaging.md +120 -0
  477. package/skills/error-handling/references/retry-and-resilience.md +154 -0
  478. package/skills/error-handling/scripts/verify.sh +110 -0
  479. package/skills/expo/SKILL.md +253 -0
  480. package/skills/expo/evals/README.md +13 -0
  481. package/skills/expo/evals/cases.yaml +44 -0
  482. package/skills/expo/references/config-plugins.md +117 -0
  483. package/skills/expo/references/eas-update.md +118 -0
  484. package/skills/expo/scripts/verify.sh +132 -0
  485. package/skills/fal/SKILL.md +210 -0
  486. package/skills/fal/evals/README.md +3 -0
  487. package/skills/fal/evals/cases.yaml +42 -0
  488. package/skills/fal/references/models-and-cost.md +53 -0
  489. package/skills/fal/references/queue-and-webhooks.md +153 -0
  490. package/skills/fal/scripts/verify.sh +72 -0
  491. package/skills/fastapi/SKILL.md +499 -0
  492. package/skills/fastapi/evals/README.md +50 -0
  493. package/skills/fastapi/evals/cases.yaml +55 -0
  494. package/skills/fastapi/references/database.md +347 -0
  495. package/skills/fastapi/references/production.md +338 -0
  496. package/skills/fastapi/references/security.md +330 -0
  497. package/skills/fastapi/references/testing.md +349 -0
  498. package/skills/fastapi/scripts/verify.sh +116 -0
  499. package/skills/finance-ops/SKILL.md +149 -0
  500. package/skills/finance-ops/evals/README.md +3 -0
  501. package/skills/finance-ops/evals/cases.yaml +39 -0
  502. package/skills/finance-ops/references/cash-flow-forecast.md +57 -0
  503. package/skills/finance-ops/references/month-close.md +59 -0
  504. package/skills/finance-ops/references/reconciliation.md +65 -0
  505. package/skills/finance-ops/scripts/verify.sh +166 -0
  506. package/skills/financial-model/SKILL.md +170 -0
  507. package/skills/financial-model/evals/README.md +3 -0
  508. package/skills/financial-model/evals/cases.yaml +53 -0
  509. package/skills/financial-model/references/benchmarks-and-scenarios.md +55 -0
  510. package/skills/financial-model/references/model-structure.md +67 -0
  511. package/skills/financial-model/references/revenue-build.md +68 -0
  512. package/skills/financial-model/scripts/verify.sh +232 -0
  513. package/skills/firebase/SKILL.md +251 -0
  514. package/skills/firebase/evals/README.md +12 -0
  515. package/skills/firebase/evals/cases.yaml +45 -0
  516. package/skills/firebase/references/cloud-functions.md +102 -0
  517. package/skills/firebase/references/data-modeling.md +108 -0
  518. package/skills/firebase/references/security-rules.md +137 -0
  519. package/skills/firebase/scripts/verify.sh +98 -0
  520. package/skills/flutter/SKILL.md +448 -0
  521. package/skills/flutter/evals/README.md +54 -0
  522. package/skills/flutter/evals/cases.yaml +69 -0
  523. package/skills/flutter/references/architecture-and-state.md +499 -0
  524. package/skills/flutter/references/i18n-and-dependencies.md +197 -0
  525. package/skills/flutter/references/performance.md +299 -0
  526. package/skills/flutter/references/testing.md +385 -0
  527. package/skills/flutter/references/ui-and-navigation.md +378 -0
  528. package/skills/flutter/scripts/verify.sh +104 -0
  529. package/skills/fly-io/SKILL.md +206 -0
  530. package/skills/fly-io/evals/README.md +3 -0
  531. package/skills/fly-io/evals/cases.yaml +42 -0
  532. package/skills/fly-io/references/fly-toml.md +155 -0
  533. package/skills/fly-io/references/multi-region.md +66 -0
  534. package/skills/fly-io/scripts/verify.sh +90 -0
  535. package/skills/forecasting/SKILL.md +139 -0
  536. package/skills/forecasting/evals/README.md +13 -0
  537. package/skills/forecasting/evals/cases.yaml +47 -0
  538. package/skills/forecasting/references/accuracy-and-backtesting.md +104 -0
  539. package/skills/forecasting/references/methods-cheatsheet.md +94 -0
  540. package/skills/forecasting/scripts/verify.sh +99 -0
  541. package/skills/fundraising/SKILL.md +162 -0
  542. package/skills/fundraising/evals/README.md +18 -0
  543. package/skills/fundraising/evals/cases.yaml +76 -0
  544. package/skills/fundraising/references/funnel-math.md +90 -0
  545. package/skills/fundraising/references/process-playbook.md +97 -0
  546. package/skills/gcp-essentials/SKILL.md +327 -0
  547. package/skills/gcp-essentials/evals/README.md +12 -0
  548. package/skills/gcp-essentials/evals/cases.yaml +38 -0
  549. package/skills/gcp-essentials/references/deploy-recipes.md +81 -0
  550. package/skills/gcp-essentials/references/iam-and-auth.md +94 -0
  551. package/skills/gcp-essentials/references/networking-and-sql.md +74 -0
  552. package/skills/gcp-essentials/scripts/verify.sh +158 -0
  553. package/skills/gdpr-privacy/SKILL.md +167 -0
  554. package/skills/gdpr-privacy/evals/README.md +3 -0
  555. package/skills/gdpr-privacy/evals/cases.yaml +47 -0
  556. package/skills/gdpr-privacy/references/dpa-and-transfers.md +63 -0
  557. package/skills/gdpr-privacy/references/dsar-and-consent.md +83 -0
  558. package/skills/gdpr-privacy/references/privacy-policy-blueprint.md +99 -0
  559. package/skills/gdpr-privacy/scripts/verify.sh +84 -0
  560. package/skills/git-workflow/SKILL.md +190 -0
  561. package/skills/git-workflow/evals/README.md +10 -0
  562. package/skills/git-workflow/evals/cases.yaml +47 -0
  563. package/skills/git-workflow/references/interactive-rebase.md +89 -0
  564. package/skills/github-actions/SKILL.md +256 -0
  565. package/skills/github-actions/evals/README.md +3 -0
  566. package/skills/github-actions/evals/cases.yaml +45 -0
  567. package/skills/github-actions/references/caching-and-matrix.md +92 -0
  568. package/skills/github-actions/references/oidc-deploys.md +130 -0
  569. package/skills/github-actions/scripts/verify.sh +105 -0
  570. package/skills/go/SKILL.md +438 -0
  571. package/skills/go/evals/README.md +56 -0
  572. package/skills/go/evals/cases.yaml +55 -0
  573. package/skills/go/references/concurrency.md +557 -0
  574. package/skills/go/references/http-services.md +529 -0
  575. package/skills/go/references/testing.md +338 -0
  576. package/skills/go/scripts/verify.sh +109 -0
  577. package/skills/google-workspace/SKILL.md +287 -0
  578. package/skills/google-workspace/evals/README.md +16 -0
  579. package/skills/google-workspace/evals/cases.yaml +44 -0
  580. package/skills/google-workspace/references/api-recipes.md +148 -0
  581. package/skills/google-workspace/references/auth-setup.md +100 -0
  582. package/skills/google-workspace/scripts/verify.sh +128 -0
  583. package/skills/grants/SKILL.md +171 -0
  584. package/skills/grants/evals/README.md +3 -0
  585. package/skills/grants/evals/cases.yaml +69 -0
  586. package/skills/grants/references/budget-justification.md +71 -0
  587. package/skills/grants/references/jurisdictions.md +35 -0
  588. package/skills/grants/references/logic-model.md +66 -0
  589. package/skills/grants/scripts/verify.sh +193 -0
  590. package/skills/harness/SKILL.md +329 -0
  591. package/skills/harness/assets/_TEMPLATE/.env.example +8 -0
  592. package/skills/harness/assets/_TEMPLATE/CREDENTIALS.md +25 -0
  593. package/skills/harness/assets/_TEMPLATE/README.md +25 -0
  594. package/skills/harness/assets/_TEMPLATE/test_connection.sh +30 -0
  595. package/skills/harness/evals/README.md +54 -0
  596. package/skills/harness/evals/cases.yaml +72 -0
  597. package/skills/harness/examples/audit-example.md +120 -0
  598. package/skills/harness/references/agents-md-template.md +41 -0
  599. package/skills/harness/references/audit-report-template.html +140 -0
  600. package/skills/harness/references/audit-report-template.md +116 -0
  601. package/skills/harness/references/claude-md-template.md +98 -0
  602. package/skills/harness/references/inbox-readme-template.md +51 -0
  603. package/skills/harness/references/ingest-formats.md +185 -0
  604. package/skills/harness/references/providers.yaml +3410 -0
  605. package/skills/harness/references/tools-readme-template.md +88 -0
  606. package/skills/harness/references/wiki-archive-template.html +81 -0
  607. package/skills/harness/references/wiki-article-template.md +20 -0
  608. package/skills/harness/references/wiki-dashboard-template.html +136 -0
  609. package/skills/harness/references/wiki-deep-improve-report-template.html +126 -0
  610. package/skills/harness/references/wiki-gaps-template.md +18 -0
  611. package/skills/harness/references/wiki-index-template.md +23 -0
  612. package/skills/harness/references/wiki-protocol.md +699 -0
  613. package/skills/harness/references/wiki-raw-template.md +7 -0
  614. package/skills/hetzner/SKILL.md +221 -0
  615. package/skills/hetzner/evals/README.md +35 -0
  616. package/skills/hetzner/evals/cases.yaml +46 -0
  617. package/skills/hetzner/references/cloud-init.md +120 -0
  618. package/skills/hetzner/references/plans-and-locations.md +56 -0
  619. package/skills/hetzner/scripts/verify.sh +122 -0
  620. package/skills/hiring/SKILL.md +248 -0
  621. package/skills/hiring/evals/README.md +13 -0
  622. package/skills/hiring/evals/cases.yaml +41 -0
  623. package/skills/hiring/references/templates.md +118 -0
  624. package/skills/htmx/SKILL.md +261 -0
  625. package/skills/htmx/evals/README.md +3 -0
  626. package/skills/htmx/evals/cases.yaml +38 -0
  627. package/skills/htmx/references/patterns.md +113 -0
  628. package/skills/htmx/references/server-contract.md +91 -0
  629. package/skills/htmx/scripts/verify.sh +93 -0
  630. package/skills/huggingface/SKILL.md +190 -0
  631. package/skills/huggingface/evals/README.md +11 -0
  632. package/skills/huggingface/evals/cases.yaml +41 -0
  633. package/skills/huggingface/references/endpoints-and-spaces.md +99 -0
  634. package/skills/huggingface/references/hub-and-cli.md +85 -0
  635. package/skills/huggingface/references/inference-providers.md +115 -0
  636. package/skills/huggingface/scripts/verify.sh +123 -0
  637. package/skills/implement/SKILL.md +283 -0
  638. package/skills/implement/evals/README.md +56 -0
  639. package/skills/implement/evals/cases.yaml +43 -0
  640. package/skills/init/SKILL.md +184 -0
  641. package/skills/init/evals/README.md +49 -0
  642. package/skills/init/evals/cases.yaml +74 -0
  643. package/skills/init/references/accompaniment-and-profile.md +140 -0
  644. package/skills/init/references/discovery.md +90 -0
  645. package/skills/init/references/recommend-skills.md +115 -0
  646. package/skills/init/scripts/verify.sh +122 -0
  647. package/skills/instagram-api/SKILL.md +241 -0
  648. package/skills/instagram-api/evals/README.md +3 -0
  649. package/skills/instagram-api/evals/cases.yaml +43 -0
  650. package/skills/instagram-api/references/insights-metrics.md +88 -0
  651. package/skills/instagram-api/references/publish-reel.md +98 -0
  652. package/skills/instagram-api/scripts/verify.sh +137 -0
  653. package/skills/inventory/SKILL.md +131 -0
  654. package/skills/inventory/evals/README.md +3 -0
  655. package/skills/inventory/evals/cases.yaml +43 -0
  656. package/skills/inventory/references/abc-xyz.md +52 -0
  657. package/skills/inventory/references/ddmrp.md +32 -0
  658. package/skills/inventory/references/reorder-policies.md +85 -0
  659. package/skills/inventory/references/safety-stock.md +63 -0
  660. package/skills/inventory/scripts/verify.sh +155 -0
  661. package/skills/investor-materials/SKILL.md +175 -0
  662. package/skills/investor-materials/evals/README.md +15 -0
  663. package/skills/investor-materials/evals/cases.yaml +60 -0
  664. package/skills/investor-materials/references/dataroom-checklist.md +134 -0
  665. package/skills/investor-materials/references/update-and-onepager-templates.md +152 -0
  666. package/skills/investor-materials/scripts/verify.sh +148 -0
  667. package/skills/invoicing/SKILL.md +154 -0
  668. package/skills/invoicing/evals/README.md +5 -0
  669. package/skills/invoicing/evals/cases.yaml +49 -0
  670. package/skills/invoicing/references/dunning-ladder.md +53 -0
  671. package/skills/invoicing/references/e-invoicing-mandates.md +43 -0
  672. package/skills/invoicing/scripts/fixtures/broken-invoice.json +13 -0
  673. package/skills/invoicing/scripts/fixtures/valid-invoice.json +15 -0
  674. package/skills/invoicing/scripts/verify.sh +133 -0
  675. package/skills/ip-trademark/SKILL.md +186 -0
  676. package/skills/ip-trademark/evals/README.md +10 -0
  677. package/skills/ip-trademark/evals/cases.yaml +47 -0
  678. package/skills/ip-trademark/references/jurisdictions.md +63 -0
  679. package/skills/ip-trademark/references/ownership-and-licensing.md +90 -0
  680. package/skills/java/SKILL.md +341 -0
  681. package/skills/java/evals/README.md +23 -0
  682. package/skills/java/evals/cases.yaml +43 -0
  683. package/skills/java/references/builds.md +133 -0
  684. package/skills/java/references/concurrency.md +108 -0
  685. package/skills/java/references/streams.md +102 -0
  686. package/skills/java/scripts/verify.sh +107 -0
  687. package/skills/knowledge-ops/SKILL.md +125 -0
  688. package/skills/knowledge-ops/evals/README.md +16 -0
  689. package/skills/knowledge-ops/evals/cases.yaml +50 -0
  690. package/skills/knowledge-ops/references/gardening-playbook.md +116 -0
  691. package/skills/kotlin-android/SKILL.md +245 -0
  692. package/skills/kotlin-android/evals/README.md +13 -0
  693. package/skills/kotlin-android/evals/cases.yaml +56 -0
  694. package/skills/kotlin-android/references/architecture.md +200 -0
  695. package/skills/kotlin-android/references/gradle-setup.md +125 -0
  696. package/skills/kotlin-android/scripts/verify.sh +109 -0
  697. package/skills/kpi-framework/SKILL.md +199 -0
  698. package/skills/kpi-framework/evals/README.md +11 -0
  699. package/skills/kpi-framework/evals/cases.yaml +42 -0
  700. package/skills/kpi-framework/references/definition-and-targets.md +64 -0
  701. package/skills/kpi-framework/references/metric-catalog.md +84 -0
  702. package/skills/landing-copy/SKILL.md +153 -0
  703. package/skills/landing-copy/evals/README.md +18 -0
  704. package/skills/landing-copy/evals/cases.yaml +63 -0
  705. package/skills/landing-copy/references/frameworks.md +61 -0
  706. package/skills/landing-copy/references/page-skeleton.md +92 -0
  707. package/skills/landing-copy/scripts/verify.sh +164 -0
  708. package/skills/laravel/SKILL.md +301 -0
  709. package/skills/laravel/evals/README.md +10 -0
  710. package/skills/laravel/evals/cases.yaml +45 -0
  711. package/skills/laravel/references/eloquent-patterns.md +126 -0
  712. package/skills/laravel/references/queues-and-scheduling.md +153 -0
  713. package/skills/laravel/scripts/verify.sh +128 -0
  714. package/skills/lead-gen/SKILL.md +155 -0
  715. package/skills/lead-gen/evals/README.md +3 -0
  716. package/skills/lead-gen/evals/cases.yaml +43 -0
  717. package/skills/lead-gen/references/data-sources.md +87 -0
  718. package/skills/lead-gen/references/scoring-model.md +93 -0
  719. package/skills/lead-gen/scripts/verify.sh +179 -0
  720. package/skills/linkedin-api/SKILL.md +211 -0
  721. package/skills/linkedin-api/evals/README.md +3 -0
  722. package/skills/linkedin-api/evals/cases.yaml +41 -0
  723. package/skills/linkedin-api/references/api-reference.md +168 -0
  724. package/skills/linkedin-api/scripts/verify.sh +98 -0
  725. package/skills/linkedin-carousels/SKILL.md +239 -0
  726. package/skills/linkedin-carousels/evals/README.md +13 -0
  727. package/skills/linkedin-carousels/evals/cases.yaml +62 -0
  728. package/skills/linkedin-carousels/references/carousel-patterns.md +200 -0
  729. package/skills/linkedin-carousels/scripts/verify.sh +160 -0
  730. package/skills/linkedin-content/SKILL.md +162 -0
  731. package/skills/linkedin-content/evals/README.md +13 -0
  732. package/skills/linkedin-content/evals/cases.yaml +62 -0
  733. package/skills/linkedin-content/references/hooks-and-formats.md +114 -0
  734. package/skills/linkedin-content/scripts/verify.sh +154 -0
  735. package/skills/linkedin-outreach/SKILL.md +174 -0
  736. package/skills/linkedin-outreach/evals/README.md +3 -0
  737. package/skills/linkedin-outreach/evals/cases.yaml +43 -0
  738. package/skills/linkedin-outreach/references/ledger-schema.md +48 -0
  739. package/skills/linkedin-outreach/references/sales-navigator-playbook.md +61 -0
  740. package/skills/linkedin-outreach/scripts/verify.sh +120 -0
  741. package/skills/linkedin-strategy/SKILL.md +167 -0
  742. package/skills/linkedin-strategy/evals/README.md +3 -0
  743. package/skills/linkedin-strategy/evals/cases.yaml +49 -0
  744. package/skills/linkedin-strategy/references/ssi-and-pillars.md +59 -0
  745. package/skills/linkedin-strategy/references/wiki-records.md +62 -0
  746. package/skills/linkedin-strategy/scripts/verify.sh +120 -0
  747. package/skills/llm-pipeline/SKILL.md +155 -0
  748. package/skills/llm-pipeline/evals/README.md +3 -0
  749. package/skills/llm-pipeline/evals/cases.yaml +44 -0
  750. package/skills/llm-pipeline/references/caching-layers.md +60 -0
  751. package/skills/llm-pipeline/references/litellm-router.md +101 -0
  752. package/skills/llm-pipeline/scripts/verify.sh +169 -0
  753. package/skills/logistics-ops/SKILL.md +219 -0
  754. package/skills/logistics-ops/evals/README.md +20 -0
  755. package/skills/logistics-ops/evals/cases.yaml +48 -0
  756. package/skills/logistics-ops/references/carriers-and-claims.md +105 -0
  757. package/skills/market-research/SKILL.md +145 -0
  758. package/skills/market-research/evals/README.md +3 -0
  759. package/skills/market-research/evals/cases.yaml +48 -0
  760. package/skills/market-research/references/demand-signals.md +63 -0
  761. package/skills/market-research/references/sizing-playbook.md +121 -0
  762. package/skills/market-research/scripts/verify.sh +215 -0
  763. package/skills/marketing/SKILL.md +233 -0
  764. package/skills/marketing/evals/README.md +61 -0
  765. package/skills/marketing/evals/cases.yaml +84 -0
  766. package/skills/marketing/references/brand-grounding.md +197 -0
  767. package/skills/marketing/references/campaigns-and-channels.md +151 -0
  768. package/skills/marketing/references/copy-frameworks.md +166 -0
  769. package/skills/marketing/references/landing-copy.md +191 -0
  770. package/skills/marketing/references/seo-geo.md +391 -0
  771. package/skills/marketing/scripts/seo_audit.py +166 -0
  772. package/skills/marketing/scripts/verify.sh +233 -0
  773. package/skills/medium-publishing/SKILL.md +152 -0
  774. package/skills/medium-publishing/evals/README.md +3 -0
  775. package/skills/medium-publishing/evals/cases.yaml +42 -0
  776. package/skills/medium-publishing/references/cross-post-and-canonical.md +65 -0
  777. package/skills/medium-publishing/references/legacy-api.md +100 -0
  778. package/skills/medium-strategy/SKILL.md +161 -0
  779. package/skills/medium-strategy/evals/README.md +3 -0
  780. package/skills/medium-strategy/evals/cases.yaml +50 -0
  781. package/skills/medium-strategy/references/distribution-and-boost.md +65 -0
  782. package/skills/medium-strategy/references/wiki-records.md +60 -0
  783. package/skills/medium-strategy/scripts/verify.sh +118 -0
  784. package/skills/medium-writing/SKILL.md +140 -0
  785. package/skills/medium-writing/evals/README.md +5 -0
  786. package/skills/medium-writing/evals/cases.yaml +39 -0
  787. package/skills/medium-writing/references/title-patterns.md +79 -0
  788. package/skills/meeting-notes/SKILL.md +168 -0
  789. package/skills/meeting-notes/evals/README.md +14 -0
  790. package/skills/meeting-notes/evals/cases.yaml +46 -0
  791. package/skills/meeting-notes/references/templates.md +140 -0
  792. package/skills/modal/SKILL.md +307 -0
  793. package/skills/modal/evals/README.md +29 -0
  794. package/skills/modal/evals/cases.yaml +50 -0
  795. package/skills/modal/references/images-gpu-cookbook.md +160 -0
  796. package/skills/modal/references/web-and-scaling.md +138 -0
  797. package/skills/modal/scripts/verify.sh +127 -0
  798. package/skills/mongodb/SKILL.md +342 -0
  799. package/skills/mongodb/evals/README.md +29 -0
  800. package/skills/mongodb/evals/cases.yaml +41 -0
  801. package/skills/mongodb/references/aggregation.md +115 -0
  802. package/skills/mongodb/references/data-modeling.md +135 -0
  803. package/skills/mongodb/references/transactions-and-ops.md +128 -0
  804. package/skills/mongodb/scripts/verify.sh +151 -0
  805. package/skills/monitoring/SKILL.md +155 -0
  806. package/skills/monitoring/evals/README.md +3 -0
  807. package/skills/monitoring/evals/cases.yaml +47 -0
  808. package/skills/monitoring/references/burn-rate-and-oncall.md +128 -0
  809. package/skills/monitoring/references/tool-setup.md +154 -0
  810. package/skills/monitoring/scripts/verify.sh +145 -0
  811. package/skills/mysql/SKILL.md +249 -0
  812. package/skills/mysql/evals/README.md +12 -0
  813. package/skills/mysql/evals/cases.yaml +49 -0
  814. package/skills/mysql/references/indexing-and-explain.md +161 -0
  815. package/skills/mysql/references/mysql-vs-mariadb.md +78 -0
  816. package/skills/mysql/references/online-ddl-and-migrations.md +120 -0
  817. package/skills/mysql/references/replication-and-ha.md +115 -0
  818. package/skills/mysql/scripts/verify.sh +141 -0
  819. package/skills/neon/SKILL.md +218 -0
  820. package/skills/neon/evals/README.md +11 -0
  821. package/skills/neon/evals/cases.yaml +45 -0
  822. package/skills/neon/references/branching-ci.md +86 -0
  823. package/skills/neon/scripts/verify.sh +78 -0
  824. package/skills/nestjs/SKILL.md +225 -0
  825. package/skills/nestjs/evals/README.md +3 -0
  826. package/skills/nestjs/evals/cases.yaml +38 -0
  827. package/skills/nestjs/references/cross-cutting.md +135 -0
  828. package/skills/nestjs/references/testing-recipes.md +105 -0
  829. package/skills/nestjs/scripts/verify.sh +98 -0
  830. package/skills/netlify/SKILL.md +208 -0
  831. package/skills/netlify/evals/README.md +13 -0
  832. package/skills/netlify/evals/cases.yaml +43 -0
  833. package/skills/netlify/references/functions.md +97 -0
  834. package/skills/netlify/references/netlify-toml.md +115 -0
  835. package/skills/netlify/scripts/verify.sh +95 -0
  836. package/skills/newsletter/SKILL.md +162 -0
  837. package/skills/newsletter/evals/README.md +12 -0
  838. package/skills/newsletter/evals/cases.yaml +42 -0
  839. package/skills/newsletter/references/growth-loops.md +73 -0
  840. package/skills/newsletter/references/welcome-sequence.md +62 -0
  841. package/skills/newsletter/scripts/verify.sh +173 -0
  842. package/skills/nextjs/SKILL.md +472 -0
  843. package/skills/nextjs/evals/README.md +59 -0
  844. package/skills/nextjs/evals/cases.yaml +56 -0
  845. package/skills/nextjs/references/data-and-caching.md +309 -0
  846. package/skills/nextjs/references/metadata.md +208 -0
  847. package/skills/nextjs/references/performance.md +325 -0
  848. package/skills/nextjs/references/react.md +383 -0
  849. package/skills/nextjs/references/security.md +239 -0
  850. package/skills/nextjs/references/testing.md +290 -0
  851. package/skills/nextjs/scripts/verify.sh +141 -0
  852. package/skills/no-code-app/SKILL.md +153 -0
  853. package/skills/no-code-app/evals/README.md +3 -0
  854. package/skills/no-code-app/evals/cases.yaml +43 -0
  855. package/skills/no-code-app/references/platform-limits.md +100 -0
  856. package/skills/nodejs/SKILL.md +242 -0
  857. package/skills/nodejs/evals/README.md +3 -0
  858. package/skills/nodejs/evals/cases.yaml +39 -0
  859. package/skills/nodejs/references/express5-migration.md +53 -0
  860. package/skills/nodejs/references/graceful-shutdown.md +73 -0
  861. package/skills/nodejs/scripts/verify.sh +122 -0
  862. package/skills/notion-connector/SKILL.md +234 -0
  863. package/skills/notion-connector/evals/README.md +15 -0
  864. package/skills/notion-connector/evals/cases.yaml +45 -0
  865. package/skills/notion-connector/references/api-versions.md +63 -0
  866. package/skills/notion-connector/references/property-shapes.md +110 -0
  867. package/skills/notion-connector/references/sync-patterns.md +95 -0
  868. package/skills/notion-connector/scripts/verify.sh +162 -0
  869. package/skills/observability/SKILL.md +231 -0
  870. package/skills/observability/evals/README.md +3 -0
  871. package/skills/observability/evals/cases.yaml +49 -0
  872. package/skills/observability/references/collector-config.md +98 -0
  873. package/skills/observability/references/instrumentation-recipes.md +115 -0
  874. package/skills/observability/scripts/verify.sh +156 -0
  875. package/skills/ollama/SKILL.md +213 -0
  876. package/skills/ollama/evals/README.md +9 -0
  877. package/skills/ollama/evals/cases.yaml +43 -0
  878. package/skills/ollama/references/api.md +148 -0
  879. package/skills/ollama/references/hardware-sizing.md +87 -0
  880. package/skills/ollama/scripts/verify.sh +116 -0
  881. package/skills/orient/SKILL.md +54 -0
  882. package/skills/orient/evals/README.md +16 -0
  883. package/skills/orient/evals/cases.yaml +57 -0
  884. package/skills/orient/references/orientation-contract.md +34 -0
  885. package/skills/parallel/SKILL.md +198 -0
  886. package/skills/parallel/evals/README.md +62 -0
  887. package/skills/parallel/evals/cases.yaml +44 -0
  888. package/skills/people-ops/SKILL.md +122 -0
  889. package/skills/people-ops/evals/README.md +14 -0
  890. package/skills/people-ops/evals/cases.yaml +43 -0
  891. package/skills/people-ops/references/templates.md +129 -0
  892. package/skills/performance/SKILL.md +221 -0
  893. package/skills/performance/evals/README.md +3 -0
  894. package/skills/performance/evals/cases.yaml +47 -0
  895. package/skills/performance/references/profiling-playbook.md +54 -0
  896. package/skills/performance/scripts/verify.sh +94 -0
  897. package/skills/phoenix/SKILL.md +169 -0
  898. package/skills/phoenix/evals/README.md +3 -0
  899. package/skills/phoenix/evals/cases.yaml +40 -0
  900. package/skills/phoenix/references/auth-and-scopes.md +82 -0
  901. package/skills/phoenix/references/ecto-patterns.md +93 -0
  902. package/skills/phoenix/references/liveview.md +134 -0
  903. package/skills/phoenix/scripts/verify.sh +73 -0
  904. package/skills/php/SKILL.md +397 -0
  905. package/skills/php/evals/README.md +12 -0
  906. package/skills/php/evals/cases.yaml +45 -0
  907. package/skills/php/references/tooling.md +170 -0
  908. package/skills/php/references/type-system.md +220 -0
  909. package/skills/php/scripts/verify.sh +155 -0
  910. package/skills/pitch-deck/SKILL.md +209 -0
  911. package/skills/pitch-deck/evals/README.md +15 -0
  912. package/skills/pitch-deck/evals/cases.yaml +55 -0
  913. package/skills/pitch-deck/references/numbers-that-matter.md +78 -0
  914. package/skills/pitch-deck/references/slide-spine.md +149 -0
  915. package/skills/pitch-deck/scripts/verify.sh +186 -0
  916. package/skills/plan/SKILL.md +204 -0
  917. package/skills/plan/evals/README.md +62 -0
  918. package/skills/plan/evals/cases.yaml +49 -0
  919. package/skills/plan/references/plan-template.md +124 -0
  920. package/skills/planetscale/SKILL.md +223 -0
  921. package/skills/planetscale/evals/README.md +11 -0
  922. package/skills/planetscale/evals/cases.yaml +46 -0
  923. package/skills/planetscale/references/deploy-requests.md +75 -0
  924. package/skills/planetscale/references/no-foreign-keys.md +88 -0
  925. package/skills/planetscale/scripts/verify.sh +115 -0
  926. package/skills/podcast/SKILL.md +166 -0
  927. package/skills/podcast/evals/README.md +17 -0
  928. package/skills/podcast/evals/cases.yaml +61 -0
  929. package/skills/podcast/references/rss-and-namespace.md +136 -0
  930. package/skills/podcast/scripts/verify.sh +246 -0
  931. package/skills/postgresdb/SKILL.md +372 -0
  932. package/skills/postgresdb/evals/README.md +55 -0
  933. package/skills/postgresdb/evals/cases.yaml +57 -0
  934. package/skills/postgresdb/references/migrations.md +279 -0
  935. package/skills/postgresdb/references/operations-and-security.md +267 -0
  936. package/skills/postgresdb/references/query-optimization.md +374 -0
  937. package/skills/postgresdb/references/schema-and-indexing.md +379 -0
  938. package/skills/postgresdb/scripts/verify.sh +191 -0
  939. package/skills/presentations/SKILL.md +296 -0
  940. package/skills/presentations/evals/README.md +61 -0
  941. package/skills/presentations/evals/cases.yaml +56 -0
  942. package/skills/presentations/references/brand-grounding.md +160 -0
  943. package/skills/presentations/references/markdown-decks.md +290 -0
  944. package/skills/presentations/references/pptx-python.md +242 -0
  945. package/skills/presentations/references/slide-design.md +261 -0
  946. package/skills/presentations/references/storytelling-and-decks.md +150 -0
  947. package/skills/presentations/scripts/verify.sh +252 -0
  948. package/skills/press-kit/SKILL.md +243 -0
  949. package/skills/press-kit/evals/README.md +15 -0
  950. package/skills/press-kit/evals/cases.yaml +55 -0
  951. package/skills/press-kit/references/release-types.md +102 -0
  952. package/skills/press-kit/references/templates.md +132 -0
  953. package/skills/press-kit/scripts/verify.sh +161 -0
  954. package/skills/pricing/SKILL.md +160 -0
  955. package/skills/pricing/evals/README.md +5 -0
  956. package/skills/pricing/evals/cases.yaml +44 -0
  957. package/skills/pricing/references/localization.md +56 -0
  958. package/skills/pricing/references/pricing-models.md +55 -0
  959. package/skills/pricing/scripts/verify.sh +91 -0
  960. package/skills/prisma-orm/SKILL.md +320 -0
  961. package/skills/prisma-orm/evals/README.md +12 -0
  962. package/skills/prisma-orm/evals/cases.yaml +56 -0
  963. package/skills/prisma-orm/references/migrations-and-v7-upgrade.md +197 -0
  964. package/skills/prisma-orm/references/queries-and-performance.md +169 -0
  965. package/skills/prisma-orm/scripts/verify.sh +137 -0
  966. package/skills/procurement/SKILL.md +179 -0
  967. package/skills/procurement/evals/README.md +20 -0
  968. package/skills/procurement/evals/cases.yaml +49 -0
  969. package/skills/procurement/references/scorecard-and-tco.md +100 -0
  970. package/skills/procurement/references/sourcing-requests.md +116 -0
  971. package/skills/procurement/scripts/verify.sh +280 -0
  972. package/skills/project-ops/SKILL.md +130 -0
  973. package/skills/project-ops/evals/README.md +3 -0
  974. package/skills/project-ops/evals/cases.yaml +71 -0
  975. package/skills/project-ops/references/raid-and-rag.md +58 -0
  976. package/skills/project-ops/references/status-report-template.md +68 -0
  977. package/skills/project-ops/scripts/verify.sh +257 -0
  978. package/skills/prompt-engineering/SKILL.md +138 -0
  979. package/skills/prompt-engineering/evals/README.md +11 -0
  980. package/skills/prompt-engineering/evals/cases.yaml +46 -0
  981. package/skills/prompt-engineering/references/eval-templates.md +94 -0
  982. package/skills/prompt-engineering/references/output-contracts.md +120 -0
  983. package/skills/prompt-engineering/scripts/verify.sh +84 -0
  984. package/skills/proposals/SKILL.md +159 -0
  985. package/skills/proposals/evals/README.md +3 -0
  986. package/skills/proposals/evals/cases.yaml +53 -0
  987. package/skills/proposals/references/proposal-skeleton.md +110 -0
  988. package/skills/proposals/references/sow-skeleton.md +79 -0
  989. package/skills/proposals/scripts/verify.sh +201 -0
  990. package/skills/python/SKILL.md +369 -0
  991. package/skills/python/evals/README.md +19 -0
  992. package/skills/python/evals/cases.yaml +46 -0
  993. package/skills/python/references/async.md +136 -0
  994. package/skills/python/references/stdlib.md +162 -0
  995. package/skills/python/references/typing.md +160 -0
  996. package/skills/python/scripts/verify.sh +125 -0
  997. package/skills/rag/SKILL.md +226 -0
  998. package/skills/rag/evals/README.md +13 -0
  999. package/skills/rag/evals/cases.yaml +45 -0
  1000. package/skills/rag/references/evaluation.md +99 -0
  1001. package/skills/rag/references/pipeline.md +151 -0
  1002. package/skills/rag/scripts/verify.sh +99 -0
  1003. package/skills/rails/SKILL.md +264 -0
  1004. package/skills/rails/evals/README.md +12 -0
  1005. package/skills/rails/evals/cases.yaml +47 -0
  1006. package/skills/rails/references/activerecord.md +148 -0
  1007. package/skills/rails/references/hotwire.md +139 -0
  1008. package/skills/rails/references/testing.md +110 -0
  1009. package/skills/rails/scripts/verify.sh +128 -0
  1010. package/skills/railway/SKILL.md +245 -0
  1011. package/skills/railway/evals/README.md +14 -0
  1012. package/skills/railway/evals/cases.yaml +44 -0
  1013. package/skills/railway/references/cli-cookbook.md +137 -0
  1014. package/skills/railway/references/config-as-code.md +120 -0
  1015. package/skills/railway/scripts/verify.sh +162 -0
  1016. package/skills/react/SKILL.md +222 -0
  1017. package/skills/react/evals/README.md +3 -0
  1018. package/skills/react/evals/cases.yaml +43 -0
  1019. package/skills/react/references/data-and-state.md +152 -0
  1020. package/skills/react/references/performance.md +75 -0
  1021. package/skills/react/references/routing.md +99 -0
  1022. package/skills/react/scripts/verify.sh +123 -0
  1023. package/skills/react-native/SKILL.md +220 -0
  1024. package/skills/react-native/evals/README.md +3 -0
  1025. package/skills/react-native/evals/cases.yaml +42 -0
  1026. package/skills/react-native/references/native-modules.md +123 -0
  1027. package/skills/react-native/references/performance-debugging.md +46 -0
  1028. package/skills/react-native/scripts/verify.sh +117 -0
  1029. package/skills/redis/SKILL.md +298 -0
  1030. package/skills/redis/evals/README.md +10 -0
  1031. package/skills/redis/evals/cases.yaml +43 -0
  1032. package/skills/redis/references/caching.md +116 -0
  1033. package/skills/redis/references/locks-and-rate-limiting.md +140 -0
  1034. package/skills/redis/references/queues.md +102 -0
  1035. package/skills/redis/scripts/verify.sh +164 -0
  1036. package/skills/remotion-video/SKILL.md +218 -0
  1037. package/skills/remotion-video/evals/README.md +23 -0
  1038. package/skills/remotion-video/evals/cases.yaml +64 -0
  1039. package/skills/remotion-video/references/captions-pipeline.md +163 -0
  1040. package/skills/remotion-video/references/render-and-pipeline.md +131 -0
  1041. package/skills/remotion-video/scripts/verify.sh +169 -0
  1042. package/skills/render/SKILL.md +256 -0
  1043. package/skills/render/evals/README.md +12 -0
  1044. package/skills/render/evals/cases.yaml +45 -0
  1045. package/skills/render/references/blueprint-reference.md +203 -0
  1046. package/skills/render/scripts/verify.sh +167 -0
  1047. package/skills/replicate/SKILL.md +210 -0
  1048. package/skills/replicate/evals/README.md +9 -0
  1049. package/skills/replicate/evals/cases.yaml +45 -0
  1050. package/skills/replicate/references/cog-packaging.md +89 -0
  1051. package/skills/replicate/references/deployments-api.md +87 -0
  1052. package/skills/replicate/references/webhooks-and-async.md +110 -0
  1053. package/skills/replicate/scripts/verify.sh +162 -0
  1054. package/skills/replicate-images/SKILL.md +241 -0
  1055. package/skills/replicate-images/evals/README.md +13 -0
  1056. package/skills/replicate-images/evals/cases.yaml +41 -0
  1057. package/skills/replicate-images/references/editing-recipes.md +129 -0
  1058. package/skills/replicate-images/references/models.md +131 -0
  1059. package/skills/replicate-images/scripts/verify.sh +178 -0
  1060. package/skills/reporting/SKILL.md +178 -0
  1061. package/skills/reporting/evals/README.md +12 -0
  1062. package/skills/reporting/evals/cases.yaml +46 -0
  1063. package/skills/reporting/references/pipeline.md +213 -0
  1064. package/skills/reporting/scripts/verify.sh +149 -0
  1065. package/skills/research-ops/SKILL.md +200 -0
  1066. package/skills/research-ops/evals/README.md +13 -0
  1067. package/skills/research-ops/evals/cases.yaml +38 -0
  1068. package/skills/research-ops/references/credibility-rubric.md +78 -0
  1069. package/skills/research-ops/references/memo-template.md +63 -0
  1070. package/skills/research-ops/scripts/verify.sh +181 -0
  1071. package/skills/retention/SKILL.md +206 -0
  1072. package/skills/retention/evals/README.md +13 -0
  1073. package/skills/retention/evals/cases.yaml +42 -0
  1074. package/skills/retention/references/health-score-and-metrics.md +97 -0
  1075. package/skills/retention/references/save-and-winback-plays.md +65 -0
  1076. package/skills/review/SKILL.md +222 -0
  1077. package/skills/review/evals/README.md +84 -0
  1078. package/skills/review/evals/cases.yaml +55 -0
  1079. package/skills/review-management/SKILL.md +204 -0
  1080. package/skills/review-management/evals/README.md +13 -0
  1081. package/skills/review-management/evals/cases.yaml +60 -0
  1082. package/skills/review-management/references/platform-apis.md +86 -0
  1083. package/skills/review-management/scripts/verify.sh +128 -0
  1084. package/skills/ruby/SKILL.md +316 -0
  1085. package/skills/ruby/evals/README.md +12 -0
  1086. package/skills/ruby/evals/cases.yaml +41 -0
  1087. package/skills/ruby/references/gems-and-testing.md +208 -0
  1088. package/skills/ruby/references/metaprogramming.md +161 -0
  1089. package/skills/ruby/scripts/verify.sh +83 -0
  1090. package/skills/runpod/SKILL.md +238 -0
  1091. package/skills/runpod/evals/README.md +11 -0
  1092. package/skills/runpod/evals/cases.yaml +47 -0
  1093. package/skills/runpod/references/cost-and-scaling.md +85 -0
  1094. package/skills/runpod/references/serverless-workers.md +101 -0
  1095. package/skills/runpod/scripts/verify.sh +126 -0
  1096. package/skills/rust/SKILL.md +395 -0
  1097. package/skills/rust/evals/README.md +12 -0
  1098. package/skills/rust/evals/cases.yaml +42 -0
  1099. package/skills/rust/references/async-tokio.md +141 -0
  1100. package/skills/rust/references/axum-service.md +132 -0
  1101. package/skills/rust/references/ownership.md +86 -0
  1102. package/skills/rust/references/testing.md +108 -0
  1103. package/skills/rust/scripts/verify.sh +91 -0
  1104. package/skills/sales-pipeline/SKILL.md +162 -0
  1105. package/skills/sales-pipeline/evals/README.md +13 -0
  1106. package/skills/sales-pipeline/evals/cases.yaml +60 -0
  1107. package/skills/sales-pipeline/references/forecasting-math.md +82 -0
  1108. package/skills/sales-pipeline/references/stage-playbook.md +84 -0
  1109. package/skills/sales-pipeline/scripts/verify.sh +210 -0
  1110. package/skills/scaling/SKILL.md +137 -0
  1111. package/skills/scaling/evals/README.md +3 -0
  1112. package/skills/scaling/evals/cases.yaml +42 -0
  1113. package/skills/scaling/references/load-testing-k6.md +127 -0
  1114. package/skills/scaling/scripts/example.load.js +24 -0
  1115. package/skills/scaling/scripts/verify.sh +70 -0
  1116. package/skills/sdd/SKILL.md +203 -0
  1117. package/skills/sdd/evals/README.md +60 -0
  1118. package/skills/sdd/evals/cases.yaml +78 -0
  1119. package/skills/sdd-init/SKILL.md +148 -0
  1120. package/skills/sdd-init/evals/README.md +3 -0
  1121. package/skills/sdd-init/evals/cases.yaml +43 -0
  1122. package/skills/secure-coding/SKILL.md +365 -0
  1123. package/skills/secure-coding/evals/README.md +68 -0
  1124. package/skills/secure-coding/evals/cases.yaml +55 -0
  1125. package/skills/secure-coding/references/authn-authz.md +249 -0
  1126. package/skills/secure-coding/references/owasp-by-stack.md +574 -0
  1127. package/skills/secure-coding/references/secrets-and-supply-chain.md +205 -0
  1128. package/skills/secure-coding/references/threat-modeling.md +213 -0
  1129. package/skills/secure-coding/scripts/verify.sh +208 -0
  1130. package/skills/security-scan/SKILL.md +239 -0
  1131. package/skills/security-scan/evals/README.md +14 -0
  1132. package/skills/security-scan/evals/cases.yaml +50 -0
  1133. package/skills/security-scan/references/tools.md +98 -0
  1134. package/skills/security-scan/references/triage.md +93 -0
  1135. package/skills/security-scan/scripts/verify.sh +108 -0
  1136. package/skills/seo-geo/SKILL.md +192 -0
  1137. package/skills/seo-geo/evals/README.md +14 -0
  1138. package/skills/seo-geo/evals/cases.yaml +45 -0
  1139. package/skills/seo-geo/references/ai-crawler-control.md +104 -0
  1140. package/skills/seo-geo/references/schema-recipes.md +130 -0
  1141. package/skills/seo-geo/scripts/verify.sh +236 -0
  1142. package/skills/ship/SKILL.md +258 -0
  1143. package/skills/ship/evals/README.md +89 -0
  1144. package/skills/ship/evals/cases.yaml +44 -0
  1145. package/skills/shopify/SKILL.md +229 -0
  1146. package/skills/shopify/evals/README.md +14 -0
  1147. package/skills/shopify/evals/cases.yaml +41 -0
  1148. package/skills/shopify/references/apps-graphql.md +103 -0
  1149. package/skills/shopify/references/checkout-extensibility.md +71 -0
  1150. package/skills/shopify/references/liquid-themes.md +89 -0
  1151. package/skills/shopify/scripts/verify.sh +120 -0
  1152. package/skills/shortform-editing/SKILL.md +161 -0
  1153. package/skills/shortform-editing/evals/README.md +16 -0
  1154. package/skills/shortform-editing/evals/cases.yaml +61 -0
  1155. package/skills/shortform-editing/references/captions.md +85 -0
  1156. package/skills/shortform-editing/references/ffmpeg-pipeline.md +126 -0
  1157. package/skills/shortform-editing/scripts/verify.sh +148 -0
  1158. package/skills/shortform-ideation/SKILL.md +153 -0
  1159. package/skills/shortform-ideation/evals/README.md +20 -0
  1160. package/skills/shortform-ideation/evals/cases.yaml +58 -0
  1161. package/skills/shortform-ideation/references/experiment-ledger.md +85 -0
  1162. package/skills/shortform-ideation/references/trend-sources.md +69 -0
  1163. package/skills/shortform-ideation/scripts/verify.sh +172 -0
  1164. package/skills/shortform-packaging/SKILL.md +247 -0
  1165. package/skills/shortform-packaging/evals/README.md +10 -0
  1166. package/skills/shortform-packaging/evals/cases.yaml +48 -0
  1167. package/skills/shortform-packaging/references/package-templates.md +117 -0
  1168. package/skills/shortform-packaging/scripts/verify.sh +210 -0
  1169. package/skills/shortform-strategy/SKILL.md +149 -0
  1170. package/skills/shortform-strategy/evals/README.md +3 -0
  1171. package/skills/shortform-strategy/evals/cases.yaml +52 -0
  1172. package/skills/shortform-strategy/references/learning-loop-template.md +49 -0
  1173. package/skills/shortform-strategy/references/platform-signals-2026.md +46 -0
  1174. package/skills/shortform-strategy/scripts/verify.sh +176 -0
  1175. package/skills/skill-scout/SKILL.md +133 -0
  1176. package/skills/skill-scout/evals/README.md +12 -0
  1177. package/skills/skill-scout/evals/cases.yaml +56 -0
  1178. package/skills/skill-scout/references/install-commands.md +76 -0
  1179. package/skills/skill-scout/scripts/verify.sh +154 -0
  1180. package/skills/social-publisher/SKILL.md +179 -0
  1181. package/skills/social-publisher/evals/README.md +14 -0
  1182. package/skills/social-publisher/evals/cases.yaml +55 -0
  1183. package/skills/social-publisher/references/calendar-schema.md +97 -0
  1184. package/skills/social-publisher/references/platform-limits.md +56 -0
  1185. package/skills/social-publisher/scripts/verify.sh +232 -0
  1186. package/skills/solid-js/SKILL.md +260 -0
  1187. package/skills/solid-js/evals/README.md +3 -0
  1188. package/skills/solid-js/evals/cases.yaml +38 -0
  1189. package/skills/solid-js/references/reactivity-deep-dive.md +89 -0
  1190. package/skills/solid-js/references/router-and-start.md +93 -0
  1191. package/skills/solid-js/scripts/verify.sh +130 -0
  1192. package/skills/sop-builder/SKILL.md +233 -0
  1193. package/skills/sop-builder/evals/README.md +14 -0
  1194. package/skills/sop-builder/evals/cases.yaml +48 -0
  1195. package/skills/sop-builder/references/sop-skeleton.md +170 -0
  1196. package/skills/specify/SKILL.md +214 -0
  1197. package/skills/specify/evals/README.md +73 -0
  1198. package/skills/specify/evals/cases.yaml +80 -0
  1199. package/skills/specify/references/eliciting-requirements.md +77 -0
  1200. package/skills/specify/references/spec-template.md +60 -0
  1201. package/skills/spreadsheet-ops/SKILL.md +180 -0
  1202. package/skills/spreadsheet-ops/evals/README.md +33 -0
  1203. package/skills/spreadsheet-ops/evals/cases.yaml +42 -0
  1204. package/skills/spreadsheet-ops/references/formula-cookbook.md +70 -0
  1205. package/skills/spreadsheet-ops/references/python-excel.md +87 -0
  1206. package/skills/spreadsheet-ops/references/sheets-api-appsscript.md +118 -0
  1207. package/skills/spreadsheet-ops/scripts/verify.sh +152 -0
  1208. package/skills/spring-boot/SKILL.md +375 -0
  1209. package/skills/spring-boot/evals/README.md +11 -0
  1210. package/skills/spring-boot/evals/cases.yaml +49 -0
  1211. package/skills/spring-boot/references/jpa.md +94 -0
  1212. package/skills/spring-boot/references/security.md +92 -0
  1213. package/skills/spring-boot/references/testing.md +95 -0
  1214. package/skills/spring-boot/scripts/verify.sh +115 -0
  1215. package/skills/sql/SKILL.md +286 -0
  1216. package/skills/sql/evals/README.md +9 -0
  1217. package/skills/sql/evals/cases.yaml +49 -0
  1218. package/skills/sql/references/ctes-and-recursion.md +63 -0
  1219. package/skills/sql/references/joins-and-sets.md +71 -0
  1220. package/skills/sql/references/portability.md +38 -0
  1221. package/skills/sql/references/window-functions.md +72 -0
  1222. package/skills/sql/scripts/verify.sh +139 -0
  1223. package/skills/sqlite-turso/SKILL.md +214 -0
  1224. package/skills/sqlite-turso/evals/README.md +24 -0
  1225. package/skills/sqlite-turso/evals/cases.yaml +45 -0
  1226. package/skills/sqlite-turso/references/embedded-replicas.md +96 -0
  1227. package/skills/sqlite-turso/scripts/verify.sh +95 -0
  1228. package/skills/stripe/SKILL.md +269 -0
  1229. package/skills/stripe/evals/README.md +11 -0
  1230. package/skills/stripe/evals/cases.yaml +45 -0
  1231. package/skills/stripe/references/going-live.md +64 -0
  1232. package/skills/stripe/references/webhook-events.md +79 -0
  1233. package/skills/stripe/scripts/verify.sh +130 -0
  1234. package/skills/structured-extraction/SKILL.md +230 -0
  1235. package/skills/structured-extraction/evals/README.md +13 -0
  1236. package/skills/structured-extraction/evals/cases.yaml +70 -0
  1237. package/skills/structured-extraction/references/providers.md +152 -0
  1238. package/skills/structured-extraction/scripts/verify.sh +160 -0
  1239. package/skills/suggest/SKILL.md +30 -0
  1240. package/skills/suggest/evals/README.md +14 -0
  1241. package/skills/suggest/evals/cases.yaml +51 -0
  1242. package/skills/supabase/SKILL.md +268 -0
  1243. package/skills/supabase/evals/README.md +12 -0
  1244. package/skills/supabase/evals/cases.yaml +42 -0
  1245. package/skills/supabase/references/auth-ssr.md +173 -0
  1246. package/skills/supabase/references/rls-cookbook.md +122 -0
  1247. package/skills/supabase/scripts/verify.sh +149 -0
  1248. package/skills/svelte/SKILL.md +238 -0
  1249. package/skills/svelte/evals/README.md +3 -0
  1250. package/skills/svelte/evals/cases.yaml +41 -0
  1251. package/skills/svelte/references/runes.md +97 -0
  1252. package/skills/svelte/references/sveltekit-data.md +156 -0
  1253. package/skills/svelte/scripts/verify.sh +128 -0
  1254. package/skills/swift-ios/SKILL.md +217 -0
  1255. package/skills/swift-ios/evals/README.md +3 -0
  1256. package/skills/swift-ios/evals/cases.yaml +46 -0
  1257. package/skills/swift-ios/references/concurrency.md +132 -0
  1258. package/skills/swift-ios/references/testing.md +112 -0
  1259. package/skills/swift-ios/scripts/verify.sh +98 -0
  1260. package/skills/tasks/SKILL.md +260 -0
  1261. package/skills/tasks/evals/README.md +70 -0
  1262. package/skills/tasks/evals/cases.yaml +75 -0
  1263. package/skills/tauri/SKILL.md +224 -0
  1264. package/skills/tauri/evals/README.md +12 -0
  1265. package/skills/tauri/evals/cases.yaml +46 -0
  1266. package/skills/tauri/references/bundling-distribution.md +129 -0
  1267. package/skills/tauri/references/security.md +143 -0
  1268. package/skills/tauri/scripts/verify.sh +178 -0
  1269. package/skills/technical-writing/SKILL.md +230 -0
  1270. package/skills/technical-writing/evals/README.md +12 -0
  1271. package/skills/technical-writing/evals/cases.yaml +53 -0
  1272. package/skills/technical-writing/references/diataxis-modes.md +131 -0
  1273. package/skills/technical-writing/references/vale-starter.md +90 -0
  1274. package/skills/technical-writing/scripts/verify.sh +83 -0
  1275. package/skills/terms-conditions/SKILL.md +147 -0
  1276. package/skills/terms-conditions/evals/README.md +14 -0
  1277. package/skills/terms-conditions/evals/cases.yaml +48 -0
  1278. package/skills/terms-conditions/references/clause-library.md +158 -0
  1279. package/skills/terms-conditions/references/notices-and-aup.md +125 -0
  1280. package/skills/terms-conditions/scripts/verify.sh +92 -0
  1281. package/skills/testing-go/SKILL.md +246 -0
  1282. package/skills/testing-go/evals/README.md +3 -0
  1283. package/skills/testing-go/evals/cases.yaml +44 -0
  1284. package/skills/testing-go/references/coverage-and-benchmarks.md +85 -0
  1285. package/skills/testing-go/references/mocks-and-fakes.md +140 -0
  1286. package/skills/testing-go/references/synctest-and-concurrency.md +82 -0
  1287. package/skills/testing-go/scripts/verify.sh +72 -0
  1288. package/skills/testing-py/SKILL.md +179 -0
  1289. package/skills/testing-py/evals/README.md +5 -0
  1290. package/skills/testing-py/evals/cases.yaml +44 -0
  1291. package/skills/testing-py/references/mocking.md +141 -0
  1292. package/skills/testing-py/references/property-testing.md +99 -0
  1293. package/skills/testing-py/scripts/verify.sh +117 -0
  1294. package/skills/testing-web/SKILL.md +224 -0
  1295. package/skills/testing-web/evals/README.md +11 -0
  1296. package/skills/testing-web/evals/cases.yaml +52 -0
  1297. package/skills/testing-web/references/jest-setup.md +88 -0
  1298. package/skills/testing-web/references/recipes.md +116 -0
  1299. package/skills/testing-web/scripts/verify.sh +111 -0
  1300. package/skills/tiktok-api/SKILL.md +315 -0
  1301. package/skills/tiktok-api/evals/README.md +17 -0
  1302. package/skills/tiktok-api/evals/cases.yaml +51 -0
  1303. package/skills/tiktok-api/references/metrics-and-publish.md +127 -0
  1304. package/skills/tiktok-api/references/oauth-setup.md +105 -0
  1305. package/skills/tiktok-api/references/wiki-schema.md +85 -0
  1306. package/skills/tiktok-api/scripts/verify.sh +96 -0
  1307. package/skills/together-fireworks/SKILL.md +181 -0
  1308. package/skills/together-fireworks/evals/README.md +3 -0
  1309. package/skills/together-fireworks/evals/cases.yaml +50 -0
  1310. package/skills/together-fireworks/references/batch-and-tuning.md +59 -0
  1311. package/skills/together-fireworks/references/models-and-pricing.md +79 -0
  1312. package/skills/together-fireworks/scripts/verify.sh +165 -0
  1313. package/skills/translation-l10n/SKILL.md +229 -0
  1314. package/skills/translation-l10n/evals/README.md +3 -0
  1315. package/skills/translation-l10n/evals/cases.yaml +39 -0
  1316. package/skills/translation-l10n/references/icu-cookbook.md +82 -0
  1317. package/skills/translation-l10n/references/rtl-and-bidi.md +60 -0
  1318. package/skills/typescript/SKILL.md +258 -0
  1319. package/skills/typescript/evals/README.md +15 -0
  1320. package/skills/typescript/evals/cases.yaml +46 -0
  1321. package/skills/typescript/references/build-and-monorepo.md +141 -0
  1322. package/skills/typescript/references/type-system.md +162 -0
  1323. package/skills/typescript/scripts/verify.sh +52 -0
  1324. package/skills/unit-economics/SKILL.md +180 -0
  1325. package/skills/unit-economics/evals/README.md +5 -0
  1326. package/skills/unit-economics/evals/cases.yaml +43 -0
  1327. package/skills/unit-economics/references/formulas.md +144 -0
  1328. package/skills/unit-economics/scripts/verify.sh +179 -0
  1329. package/skills/vector-db/SKILL.md +189 -0
  1330. package/skills/vector-db/evals/README.md +10 -0
  1331. package/skills/vector-db/evals/cases.yaml +45 -0
  1332. package/skills/vector-db/references/engines.md +175 -0
  1333. package/skills/vector-db/references/tuning.md +62 -0
  1334. package/skills/vector-db/scripts/verify.sh +110 -0
  1335. package/skills/vercel/SKILL.md +242 -0
  1336. package/skills/vercel/evals/README.md +23 -0
  1337. package/skills/vercel/evals/cases.yaml +45 -0
  1338. package/skills/vercel/references/cli-cookbook.md +98 -0
  1339. package/skills/vercel/references/vercel-json.md +120 -0
  1340. package/skills/vercel/scripts/verify.sh +168 -0
  1341. package/skills/verify/SKILL.md +188 -0
  1342. package/skills/verify/evals/README.md +78 -0
  1343. package/skills/verify/evals/cases.yaml +74 -0
  1344. package/skills/video-shorts/SKILL.md +163 -0
  1345. package/skills/video-shorts/evals/README.md +15 -0
  1346. package/skills/video-shorts/evals/cases.yaml +56 -0
  1347. package/skills/video-shorts/references/hook-and-script-patterns.md +95 -0
  1348. package/skills/video-shorts/references/specs-and-safe-zones.md +74 -0
  1349. package/skills/video-shorts/scripts/verify.sh +172 -0
  1350. package/skills/vue-nuxt/SKILL.md +384 -0
  1351. package/skills/vue-nuxt/evals/README.md +11 -0
  1352. package/skills/vue-nuxt/evals/cases.yaml +49 -0
  1353. package/skills/vue-nuxt/references/data-and-state.md +127 -0
  1354. package/skills/vue-nuxt/references/migration-nuxt4.md +79 -0
  1355. package/skills/vue-nuxt/references/nitro-and-rendering.md +117 -0
  1356. package/skills/vue-nuxt/references/reactivity.md +135 -0
  1357. package/skills/vue-nuxt/scripts/verify.sh +148 -0
  1358. package/skills/webhooks/SKILL.md +246 -0
  1359. package/skills/webhooks/evals/README.md +15 -0
  1360. package/skills/webhooks/evals/cases.yaml +46 -0
  1361. package/skills/webhooks/references/framework-raw-body.md +97 -0
  1362. package/skills/webhooks/references/signature-schemes.md +66 -0
  1363. package/skills/webhooks/scripts/verify.sh +142 -0
  1364. package/skills/webinar/SKILL.md +196 -0
  1365. package/skills/webinar/evals/README.md +14 -0
  1366. package/skills/webinar/evals/cases.yaml +44 -0
  1367. package/skills/webinar/references/email-cadence.md +75 -0
  1368. package/skills/webinar/references/run-of-show.md +83 -0
  1369. package/skills/whatsapp-telegram/SKILL.md +235 -0
  1370. package/skills/whatsapp-telegram/evals/README.md +11 -0
  1371. package/skills/whatsapp-telegram/evals/cases.yaml +44 -0
  1372. package/skills/whatsapp-telegram/references/telegram-bot-api.md +91 -0
  1373. package/skills/whatsapp-telegram/references/whatsapp-cloud-api.md +103 -0
  1374. package/skills/whatsapp-telegram/scripts/verify.sh +90 -0
  1375. package/skills/wordpress/SKILL.md +224 -0
  1376. package/skills/wordpress/evals/README.md +3 -0
  1377. package/skills/wordpress/evals/cases.yaml +50 -0
  1378. package/skills/wordpress/references/hardening.md +108 -0
  1379. package/skills/wordpress/references/performance.md +80 -0
  1380. package/skills/wordpress/references/woocommerce.md +65 -0
  1381. package/skills/wordpress/scripts/verify.sh +96 -0
  1382. package/skills/worktrees/SKILL.md +199 -0
  1383. package/skills/worktrees/evals/README.md +78 -0
  1384. package/skills/worktrees/evals/cases.yaml +47 -0
  1385. package/skills/youtube-api/SKILL.md +286 -0
  1386. package/skills/youtube-api/evals/README.md +3 -0
  1387. package/skills/youtube-api/evals/cases.yaml +50 -0
  1388. package/skills/youtube-api/references/analytics-queries.md +89 -0
  1389. package/skills/youtube-api/references/oauth-setup.md +55 -0
  1390. package/skills/youtube-api/references/wiki-schema.md +70 -0
  1391. package/skills/youtube-api/scripts/verify.sh +84 -0
  1392. package/skills/youtube-ideation/SKILL.md +234 -0
  1393. package/skills/youtube-ideation/evals/README.md +14 -0
  1394. package/skills/youtube-ideation/evals/cases.yaml +52 -0
  1395. package/skills/youtube-ideation/references/idea-ledger-and-loop.md +89 -0
  1396. package/skills/youtube-ideation/references/research-and-signals.md +92 -0
  1397. package/skills/youtube-ideation/scripts/verify.sh +237 -0
  1398. package/skills/youtube-packaging/SKILL.md +220 -0
  1399. package/skills/youtube-packaging/evals/README.md +16 -0
  1400. package/skills/youtube-packaging/evals/cases.yaml +48 -0
  1401. package/skills/youtube-packaging/references/description-and-chapters.md +135 -0
  1402. package/skills/youtube-packaging/scripts/verify.sh +250 -0
  1403. package/skills/youtube-strategy/SKILL.md +157 -0
  1404. package/skills/youtube-strategy/evals/README.md +5 -0
  1405. package/skills/youtube-strategy/evals/cases.yaml +61 -0
  1406. package/skills/youtube-strategy/references/channel-architecture.md +46 -0
  1407. package/skills/youtube-strategy/references/wiki-records.md +86 -0
  1408. package/skills/youtube-strategy/scripts/verify.sh +118 -0
  1409. package/skills/youtube-thumbnails/SKILL.md +180 -0
  1410. package/skills/youtube-thumbnails/evals/README.md +11 -0
  1411. package/skills/youtube-thumbnails/evals/cases.yaml +48 -0
  1412. package/skills/youtube-thumbnails/references/composition-and-specs.md +69 -0
  1413. package/skills/youtube-thumbnails/references/experiment-log-format.md +65 -0
  1414. package/skills/youtube-thumbnails/scripts/verify.sh +123 -0
  1415. package/targets/claude.js +23 -0
  1416. package/targets/codex.js +29 -0
  1417. package/targets/cursor.js +20 -0
  1418. package/targets/gemini.js +29 -0
  1419. package/targets/index.js +55 -0
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: security-scan
3
+ description: "Use when running automated security scanners over a repo or app and turning the raw output into a triaged, ranked, gate-able report: scan for vulnerabilities before shipping, audit dependencies/lockfiles for known CVEs, find secrets committed to the tree or git history, run SAST, or wire scanners into CI. Triggers: 'scan this repo for vulnerabilities', 'check my package-lock for CVEs', 'did anyone commit AWS keys', 'scan git history for leaked keys', 'my lockfile has a transitive CVE', 'is aquasecurity/trivy-action@latest safe', 'set up Semgrep/gitleaks to fail CI', 'escanea el repo en busca de vulnerabilidades', 'audita las dependencias', 'analitza les dependències'. NOT threat-modeling, OWASP design reasoning, or authoring the fix (that is secure-coding)."
4
+ tags: [security, sast, sca, secrets, scanning, owasp]
5
+ recommends: [secure-coding, github-actions, verify]
6
+ origin: risco
7
+ ---
8
+
9
+ # Security scan — orchestrate scanners, triage the noise, emit a gate
10
+
11
+ A **machine-first** vulnerability sweep. Point automated scanners at a codebase,
12
+ collect SARIF/JSON, then do the work that has actual value: dedupe cross-tool
13
+ overlap, rank by exploitability, and emit one gate artifact CI can act on. The
14
+ finding comes from a **tool run**, not a hunch — if you are reasoning about a
15
+ design or hand-writing a fix, that is [`secure-coding`](../secure-coding/SKILL.md),
16
+ not this skill.
17
+
18
+ Your job is orchestration + triage. Not eyeballing code, not authoring patches.
19
+
20
+ ## Operating posture
21
+
22
+ - **Read-only by default.** Scan, triage, report. Apply fixes (version bumps,
23
+ rotation, `.gitignore` edits) only when the user asks. *Why:* a security sweep
24
+ that silently mutates the tree destroys the evidence and the trust.
25
+ - **Machine-first.** Every finding must trace to a scanner run with a `ruleId`
26
+ and a source location. *Why:* "I think this looks injectable" is design
27
+ reasoning — route it to `secure-coding`. This skill ships reproducible output.
28
+ - **Pin and verify your scanners.** Pin exact versions, verify checksums/SHAs,
29
+ never pull `@latest` GitHub Actions. *Why:* in **March 2026 Trivy was
30
+ supply-chain compromised** — malicious releases `v0.69.4/0.69.5/0.69.6` and a
31
+ hijacked `aquasecurity/trivy-action` exfiltrated CI secrets. Your scanner runs
32
+ with repo + CI-secret access; an unpinned scanner is itself the attack surface.
33
+ - **SARIF everything.** Make every tool emit SARIF (or JSON you normalize to it).
34
+ *Why:* a common schema is what lets you merge four tools, dedupe, and feed one
35
+ artifact into CI instead of four incompatible logs.
36
+ - **Triage before you report.** Raw scanner output is high-noise. Rank by
37
+ exploitability and dedupe overlap; never dump 400 raw findings on the user.
38
+
39
+ ## The four scan classes
40
+
41
+ | Class | What it catches | Primary tool | Backup / fast pass |
42
+ |---|---|---|---|
43
+ | **SAST** | injection, XSS, path traversal in *first-party* code | Semgrep | — |
44
+ | **SCA / deps** | known CVEs in dependency manifests + lockfiles | osv-scanner | `npm audit`, `pip-audit` |
45
+ | **Secrets** | credentials in the tree **or git history** | gitleaks (speed) | TruffleHog (depth + live verification) |
46
+ | **Misconfig / IaC** | Dockerfile, k8s, Terraform, exposed config | Trivy `config` | Semgrep rulesets |
47
+
48
+ ### Tool selection by ecosystem
49
+
50
+ Pick by what is in the repo. This is the real branch point — match the tool to
51
+ the manifest, do not run everything everywhere.
52
+
53
+ | Repo contains | SAST | SCA | Secrets | Misconfig |
54
+ |---|---|---|---|---|
55
+ | Node (`package-lock.json`/`pnpm-lock.yaml`) | Semgrep | osv-scanner + `npm audit` (fast) | gitleaks → TruffleHog | Trivy |
56
+ | Python (`poetry.lock`/`requirements.txt`) | Semgrep | osv-scanner + `pip-audit` (fast) | gitleaks → TruffleHog | Trivy |
57
+ | Go (`go.mod`/`go.sum`) | Semgrep | osv-scanner (+ `govulncheck` for reachability) | gitleaks | Trivy |
58
+ | Containers (`Dockerfile`, images) | — | Trivy `fs`/`image` | Trivy `--scanners secret` | Trivy `config` |
59
+ | IaC (Terraform/k8s/Helm) | Semgrep (IaC rules) | — | gitleaks | Trivy `config` |
60
+ | Monorepo (mixed) | Semgrep `auto` | osv-scanner (multi-ecosystem) | gitleaks → TruffleHog | Trivy |
61
+
62
+ Full install (pinned), flag matrix, and suppression syntax: `references/tools.md`.
63
+
64
+ ## Run recipes
65
+
66
+ All recipes emit SARIF or JSON so they merge into one report. **Pin the version
67
+ shown** — the placeholders below mark where to lock an exact tag/digest.
68
+
69
+ ### SAST — Semgrep
70
+
71
+ Free OSS edition (latest `1.164.0`, 2026-05-27): 30+ languages, ~2,000 community
72
+ rules. SCA + Secrets rulesets are gated behind the hosted platform — use the
73
+ dedicated tools below for those, not Semgrep.
74
+
75
+ ```bash
76
+ # Pin via the CLI version, not @latest. OWASP ruleset, SARIF out.
77
+ semgrep scan --config p/owasp-top-ten --sarif --output sast.sarif .
78
+ # Broader local sweep (community rules), no telemetry:
79
+ semgrep scan --config auto --sarif --output sast.sarif --metrics off .
80
+ ```
81
+
82
+ ### SCA — osv-scanner (primary), native auditors (fast pass)
83
+
84
+ osv-scanner (OpenSSF/Google) checks lockfiles against OSV.dev across ecosystems
85
+ and catches **transitive** CVEs the native auditors miss. Run native first for
86
+ speed, osv-scanner for coverage — never native alone.
87
+
88
+ ```bash
89
+ # Primary: lockfile-aware, multi-ecosystem, SARIF.
90
+ osv-scanner scan source --format sarif --output sca.sarif .
91
+ # Fast first pass (ecosystem-native, weaker on transitive):
92
+ npm audit --omit=dev --audit-level=high --json > npm-audit.json # Node
93
+ pip-audit --format json --output pip-audit.json # Python
94
+ ```
95
+
96
+ ### Secrets — gitleaks (tree + history), TruffleHog (verified)
97
+
98
+ gitleaks (~150+ patterns, sub-second on diffs) is the pre-commit/CI workhorse.
99
+ TruffleHog (800+ types) adds **live credential verification** — it auth-tests a
100
+ hit to tell a real leaked key from a sample. Scan **history, not just the tree**:
101
+ a key deleted in HEAD is still in the pack files and still rotatable.
102
+
103
+ ```bash
104
+ # gitleaks: redacted SARIF over the working tree AND full git history.
105
+ gitleaks detect --redact --report-format sarif --report-path secrets.sarif
106
+ # TruffleHog: only verified (live) secrets across history.
107
+ trufflehog git file://. --only-verified --json > trufflehog.json
108
+ ```
109
+
110
+ ### Misconfig / IaC — Trivy (PINNED — see the caveat)
111
+
112
+ Trivy scans filesystems, images, and IaC and finds transitive CVEs `npm audit`
113
+ misses. After the March 2026 compromise, **never** run an unpinned Trivy.
114
+
115
+ ```bash
116
+ # Pin the EXACT version (NOT v0.69.4/.5/.6 — those were the malicious releases).
117
+ # Verify the checksum/cosign signature before first use. See references/tools.md.
118
+ trivy fs --scanners vuln,secret,misconfig --format sarif --output trivy.sarif .
119
+ ```
120
+
121
+ ## Triage — turn noise into a ranked report
122
+
123
+ The deliverable is not the four SARIF files. It is a deduped, ranked report.
124
+
125
+ 1. **Merge + dedupe.** Cross-tool overlap is real (osv-scanner and Trivy both
126
+ flag the same CVE; gitleaks and TruffleHog both flag the same key). Key on
127
+ `(class, normalized-id, path, line)` and keep the richest record — prefer the
128
+ one with verification (TruffleHog) or reachability (govulncheck).
129
+ 2. **Normalize severity.** SARIF `level` and tool-native severities disagree;
130
+ map them all to one `critical/high/medium/low` scale (`references/triage.md`).
131
+ 3. **Rank by exploitability, not by count.** A finding scores higher when it is
132
+ **reachable** (called, not just present) **+ exposed** (on an untrusted path)
133
+ **+ a sensitive sink** (auth, money, PII, RCE). A verified live secret or a
134
+ reachable RCE CVE outranks a theoretical lib finding behind a feature flag.
135
+ 4. **Suppress with a written justification, never a blanket ignore.** Each
136
+ suppression records *who, why, and an expiry* — not a silent `.semgrepignore`
137
+ that hides the next real bug too.
138
+
139
+ ```text
140
+ BAD — dump 412 raw findings from four tools, sorted alphabetically, no ranking.
141
+ GOOD — 3 unsuppressed criticals first:
142
+ 1. [secrets] VERIFIED live Stripe sk_live_… in config/.env (history) → ROTATE NOW
143
+ 2. [sca] CVE-2024-… lodash 4.17.20 transitive, reachable in src/api/parse.ts → bump 4.17.21
144
+ 3. [sast] SQL built from req.query in routes/search.js:48 → parameterize
145
+ + 7 mediums summarized, + 18 suppressed (each with justification + expiry).
146
+ ```
147
+
148
+ Full ranking rubric, dedupe keying, and severity-normalization map:
149
+ `references/triage.md`.
150
+
151
+ ## The gate artifact
152
+
153
+ Emit one `security-scan-report.json` — the machine-checkable contract CI gates on.
154
+
155
+ ```json
156
+ {
157
+ "schemaVersion": "1.0",
158
+ "scannedAt": "2026-06-02T10:00:00Z",
159
+ "target": ".",
160
+ "tools": [{ "name": "osv-scanner", "version": "2.0.2" }],
161
+ "summary": { "critical": 1, "high": 2, "medium": 7, "low": 14, "suppressed": 18 },
162
+ "findings": [
163
+ {
164
+ "class": "sca",
165
+ "ruleId": "CVE-2024-XXXXX",
166
+ "path": "package-lock.json",
167
+ "line": 0,
168
+ "severity": "critical",
169
+ "status": "open",
170
+ "tool": "osv-scanner",
171
+ "exploitability": "reachable",
172
+ "title": "Prototype pollution in lodash <4.17.21"
173
+ }
174
+ ]
175
+ }
176
+ ```
177
+
178
+ - `status` is one of `open | suppressed | fixed`; `severity` one of
179
+ `critical | high | medium | low`. Schema in full: `references/triage.md`.
180
+ - **Gate rule:** any `open` finding at `critical` (and, on a strict gate, `high`)
181
+ → fail. `suppressed` never fails. `scripts/verify.sh` enforces exactly this and
182
+ exits `0` on a clean/empty report (no false failure).
183
+
184
+ ## CI wiring (brief)
185
+
186
+ - Pin actions to a **full commit SHA**, not a tag, never `@latest` — the hijacked
187
+ `aquasecurity/trivy-action` was pulled by tag.
188
+
189
+ ```yaml
190
+ # .github/workflows/security-scan.yml — pin the SHA, verify before bumping.
191
+ - uses: aquasecurity/trivy-action@<full-40-char-sha> # NEVER @latest / @master
192
+ with: { scan-type: fs, format: sarif, output: trivy.sarif }
193
+ - run: ./scripts/verify.sh # gate on security-scan-report.json
194
+ ```
195
+
196
+ - Upload SARIF to code scanning; gate the merge on `verify.sh`, not on a human
197
+ reading logs. See [`github-actions`](../github-actions/SKILL.md) for the
198
+ pipeline shell and [`verify`](../verify/SKILL.md) for the broader green gate
199
+ this feeds.
200
+
201
+ ## Anti-patterns
202
+
203
+ | Rationalization | Reality |
204
+ |---|---|
205
+ | "Pull `aquasecurity/trivy-action@latest`, it's official." | March 2026: a hijacked tag stole CI secrets. Pin a full SHA, verify provenance. |
206
+ | "Every scanner finding is a bug to fix." | Most are noise. Rank by reachable + exposed + sensitive sink; report the few that matter. |
207
+ | "Scanned the working tree, no secrets." | History holds the deleted keys. Scan git history; a removed-in-HEAD key is still leaked and live. |
208
+ | "`npm audit` is clean, deps are fine." | Native auditors miss transitive CVEs. Run osv-scanner/Trivy too; native is the fast pass, not the only pass. |
209
+ | "Commit a blanket `.semgrepignore` to quiet CI." | A blanket ignore hides the next real bug. Suppress per-finding with a written justification + expiry. |
210
+ | "We found a verified key, I deleted it from the file." | Deleting ≠ safe. Rotate the credential first, then scrub history. The committed value is already compromised. |
211
+ | "Trust the SARIF `level`, that's the severity." | Tools disagree. Normalize to one scale before you rank or gate. |
212
+ | "Dump all four tool outputs in the PR, let the reviewer sort it." | The reviewer won't. Merge, dedupe, rank, and emit one report. |
213
+ | "Run the scan; it'll auto-fix the deps." | Read-only by default. Propose bumps; apply only when asked — never mutate during a sweep. |
214
+
215
+ ## Project grounding (02-DOCS + CLAUDE.md)
216
+
217
+ In a project with a `02-DOCS/` layer (the [`harness`](../harness/SKILL.md)
218
+ Karpathy wiki), record the scanner choices, pinned versions, gate thresholds, and
219
+ any accepted-risk suppressions in `02-DOCS/wiki/stack/security-scan.md`, and link
220
+ it from the root `CLAUDE.md` `## Knowledge map`. Read it first on every run so the
221
+ next agent inherits the pinned tools and thresholds instead of re-deriving them.
222
+ No `02-DOCS/`? Skip silently. Conventions are recorded, not gated — never block
223
+ the scan on this.
224
+
225
+ ## See Also
226
+
227
+ - [`secure-coding`](../secure-coding/SKILL.md) — the human-reasoning sibling:
228
+ threat-model a feature, hand-write the vulnerable→fixed diff. *If the answer
229
+ comes from a tool run it's this skill; if it comes from reasoning about the
230
+ design it's secure-coding.*
231
+ - [`review`](../review/SKILL.md) — adversarial review of a diff against a spec.
232
+ - [`code-review`](../code-review/SKILL.md) — general correctness/quality review.
233
+ - [`verify`](../verify/SKILL.md) — the broader lint/type/test green gate this
234
+ feeds into.
235
+ - **References** — `references/tools.md` (pinned installs, flag matrix,
236
+ suppression syntax); `references/triage.md` (ranking rubric, dedupe keying,
237
+ severity map, full report schema).
238
+ </content>
239
+ </invoke>
@@ -0,0 +1,14 @@
1
+ # Evals — security-scan
2
+
3
+ `cases.yaml` holds two kinds of checks, run by the skill eval harness — no live
4
+ scanners are invoked. `should_trigger` / `should_not_trigger` are routing cases:
5
+ each prompt asserts whether this skill should fire, and every negative names the
6
+ real sibling it belongs to (`secure-coding`, `code-review`, `review`, `verify`).
7
+ The `capability` case is a rubric: given the monorepo scenario, the agent's plan
8
+ is graded against the `must_include` list (correct tool per ecosystem, history
9
+ secret scan, SARIF merge + dedupe, exploitability ranking, the
10
+ `security-scan-report.json` artifact, scanner pinning, rotate-then-scrub, and
11
+ read-only default). Score the routing cases as pass/fail on the trigger decision
12
+ and the capability case by how many rubric items the plan covers. The
13
+ `scripts/verify.sh` gate is exercised separately by pointing it at a sample
14
+ `security-scan-report.json`.
@@ -0,0 +1,50 @@
1
+ skill: security-scan
2
+
3
+ should_trigger:
4
+ - prompt: "Scan this repo for vulnerabilities before we ship."
5
+ why: Core multi-class sweep (SAST + SCA + secrets) — the central use case.
6
+ - prompt: "Check my package-lock.json for known CVEs."
7
+ why: SCA over a lockfile; osv-scanner primary with npm audit as the fast pass.
8
+ - prompt: "Did anyone commit AWS keys? Scan the git history."
9
+ why: Non-obvious — secrets in history, not just the working tree; a deleted key is still leaked.
10
+ - prompt: "escanea el repo en busca de vulnerabilidades y secretos"
11
+ why: Spanish trigger for the full vuln + secrets sweep.
12
+ - prompt: "Set up Semgrep and gitleaks to fail CI on critical findings."
13
+ why: CI gate artifact — emit security-scan-report.json and wire verify.sh into the pipeline.
14
+ - prompt: "Is it safe to use aquasecurity/trivy-action@latest in my pipeline?"
15
+ why: Non-obvious — the scanner is itself a supply-chain risk (March 2026 Trivy compromise); pin SHA, verify provenance.
16
+ - prompt: "analitza les dependències del projecte per CVEs"
17
+ why: Catalan trigger for dependency CVE auditing.
18
+
19
+ should_not_trigger:
20
+ - prompt: "Threat-model this new payments endpoint."
21
+ route_to: secure-coding
22
+ why: Design reasoning (STRIDE on a feature), no tool run — the answer comes from a human reasoning about the design.
23
+ - prompt: "Write the fix for this SQL injection."
24
+ route_to: secure-coding
25
+ why: Authoring a vulnerable→fixed diff; this skill reports findings, it does not write fixes.
26
+ - prompt: "Review my PR diff for correctness and quality."
27
+ route_to: code-review
28
+ why: General correctness/quality review of a diff, not a scanner-driven vuln sweep.
29
+ - prompt: "Be my adversarial reviewer for this change against the spec."
30
+ route_to: review
31
+ why: SDD adversarial review gate against a spec, not automated scanning.
32
+ - prompt: "Run lint and tests and tell me if the green gate passes."
33
+ route_to: verify
34
+ why: The lint/type/test verify phase; security-scan can feed it but is not it.
35
+
36
+ capability:
37
+ - scenario: >
38
+ A Node + Python monorepo with a committed .env, a transitive lodash CVE
39
+ reachable from src/api, and a hardcoded Stripe sk_live key in config. Run a
40
+ security scan and produce the gate artifact.
41
+ must_include:
42
+ - Selects the correct tool per ecosystem (Semgrep SAST; osv-scanner SCA with npm audit / pip-audit as fast pass; gitleaks + TruffleHog secrets; Trivy misconfig)
43
+ - Scans git history for secrets, not just the working tree
44
+ - Emits SARIF/JSON per tool and merges into one report
45
+ - Dedupes cross-tool overlap (same CVE / same secret flagged twice)
46
+ - Ranks by exploitability (reachable + exposed + sensitive sink), criticals first
47
+ - Produces security-scan-report.json conforming to the documented schema
48
+ - Pins scanner versions and flags the Trivy supply-chain caveat (no @latest action)
49
+ - Recommends rotating the verified Stripe key first, then scrubbing history
50
+ - Does NOT auto-fix or mutate the tree without asking (read-only by default)
@@ -0,0 +1,98 @@
1
+ # Tools — pinned installs, flags, suppression syntax
2
+
3
+ Facts accessed 2026-06-02. Pin the exact versions shown; treat the scanner as a
4
+ supply-chain dependency, not a throwaway CLI.
5
+
6
+ ## Semgrep (SAST)
7
+
8
+ - Latest OSS `1.164.0` (2026-05-27). Community/OSS edition: 30+ languages, ~2,000
9
+ community rules. **SCA + Secrets rulesets are gated behind the hosted AppSec
10
+ platform** (login required) — do not rely on Semgrep for those; use osv-scanner
11
+ and gitleaks/TruffleHog instead.
12
+
13
+ ```bash
14
+ pip install semgrep==1.164.0 # or pipx install semgrep==1.164.0
15
+ semgrep scan --config p/owasp-top-ten --sarif --output sast.sarif --metrics off .
16
+ semgrep scan --config auto --sarif --output sast.sarif --metrics off .
17
+ ```
18
+
19
+ - Severity: gate on `ERROR`; treat `WARNING`/`INFO` as informational.
20
+ - Suppression: inline `// nosemgrep: rule-id` on the line, or a `.semgrepignore`
21
+ for **paths** (`vendor/`, `test/fixtures/`) — never a blanket rule mute.
22
+
23
+ ## osv-scanner (SCA — primary)
24
+
25
+ - OpenSSF/Google. Checks lockfiles against OSV.dev across ecosystems; ships
26
+ guided remediation. v2 CLI: `osv-scanner scan source`.
27
+
28
+ ```bash
29
+ # Install a pinned release binary from github.com/google/osv-scanner/releases.
30
+ osv-scanner scan source --format sarif --output sca.sarif .
31
+ osv-scanner scan source -L package-lock.json --format sarif --output sca.sarif
32
+ ```
33
+
34
+ - Suppression: `osv-scanner.toml` with an `[[IgnoredVulns]]` block per CVE,
35
+ including `reason` and `ignoreUntil` (expiry).
36
+
37
+ ## Native auditors (SCA — fast pass)
38
+
39
+ Weaker on transitive CVEs; a first pass, never the only pass.
40
+
41
+ ```bash
42
+ npm audit --omit=dev --audit-level=high --json > npm-audit.json # Node
43
+ pip-audit --format json --output pip-audit.json # Python (PyPA + Trail of Bits; OSV + PyPI feed)
44
+ govulncheck ./... # Go — reachability-aware
45
+ ```
46
+
47
+ ## gitleaks (Secrets — speed)
48
+
49
+ - ~150+ default regex patterns, sub-second on diffs. Ideal pre-commit + CI diff.
50
+
51
+ ```bash
52
+ # Pin a release from github.com/gitleaks/gitleaks/releases.
53
+ gitleaks detect --redact --report-format sarif --report-path secrets.sarif # tree + full history
54
+ gitleaks protect --staged --redact # pre-commit (diff only)
55
+ ```
56
+
57
+ - Suppression: `.gitleaks.toml` `[allowlist]` (regexes/paths/commits) or an inline
58
+ `# gitleaks:allow` comment on the offending line.
59
+
60
+ ## TruffleHog (Secrets — depth + verification)
61
+
62
+ - 800+ secret types. **Credential verification:** live-tests a detected secret via
63
+ auth, so a hit is a *confirmed* live leak, not a guess. Scans git history, S3,
64
+ Docker, etc.
65
+
66
+ ```bash
67
+ trufflehog git file://. --only-verified --json > trufflehog.json
68
+ ```
69
+
70
+ - Pattern most teams use: **gitleaks pre-commit** (speed) + **TruffleHog in CI**
71
+ (depth + verification).
72
+
73
+ ## Trivy (Misconfig / IaC / containers) — PINNED, VERIFIED
74
+
75
+ - Aqua Security, scans containers/filesystems/IaC/language deps, generates SBOM,
76
+ catches transitive CVEs `npm audit` misses.
77
+ - **Supply-chain caveat (March 2026):** malicious releases `v0.69.4`, `v0.69.5`,
78
+ `v0.69.6` and a hijacked `aquasecurity/trivy-action` GitHub Action stole CI
79
+ secrets. **Pin an exact known-good version, verify the cosign signature /
80
+ checksum before first use, and pin the Action to a full commit SHA — never a
81
+ tag, never `@latest`.**
82
+
83
+ ```bash
84
+ # Install a pinned, signature-verified release (NOT 0.69.4/.5/.6).
85
+ trivy fs --scanners vuln,secret,misconfig --format sarif --output trivy.sarif .
86
+ trivy config --format sarif --output trivy-iac.sarif ./infra
87
+ trivy image --format sarif --output trivy-img.sarif <pinned-image@sha256:...>
88
+ ```
89
+
90
+ - Suppression: `.trivyignore` (one CVE/check id per line) or inline
91
+ `#trivy:ignore:<id>` in IaC files. Record a reason in review, not just the id.
92
+
93
+ ## SARIF notes
94
+
95
+ - Every recipe emits SARIF 2.1.0 so findings merge into one report. Where a tool
96
+ only emits native JSON (`npm audit`, `pip-audit`, TruffleHog), normalize it to
97
+ the report schema in `triage.md` rather than gating on its raw shape.
98
+ </content>
@@ -0,0 +1,93 @@
1
+ # Triage — ranking, dedupe, severity, report schema
2
+
3
+ The value of this skill lives here: scanner output is high-noise, and the job is
4
+ turning four overlapping logs into one ranked, gate-able report.
5
+
6
+ ## Exploitability ranking rubric
7
+
8
+ Score each finding on three axes, then sort. Count of findings is irrelevant —
9
+ one reachable RCE outranks fifty theoretical lib advisories.
10
+
11
+ | Axis | High | Low |
12
+ |---|---|---|
13
+ | **Reachable** | the vulnerable code/dep is actually called (govulncheck-confirmed, in the import graph) | present but unused / behind a disabled flag |
14
+ | **Exposed** | on an untrusted path (HTTP handler, CLI arg, file upload, deserialization) | internal-only, dev-only, test fixture |
15
+ | **Sink sensitivity** | auth, money, PII, RCE, secret material | logging, cosmetic, info-leak of non-sensitive data |
16
+
17
+ - **Critical:** reachable **+** exposed **+** sensitive sink. Or any **verified
18
+ live secret** (TruffleHog confirmed) — those are critical by definition.
19
+ - **High:** two of three axes high, or a reachable CVE with a public exploit.
20
+ - **Medium:** one axis high; present-but-not-clearly-reachable CVEs.
21
+ - **Low / informational:** theoretical, unreachable, or test-only.
22
+
23
+ Report criticals first with the concrete remediation (rotate / bump to fixed
24
+ version / parameterize), then summarize the rest. Do not emit a flat list.
25
+
26
+ ## Cross-tool dedupe
27
+
28
+ Tools overlap: osv-scanner and Trivy both flag the same CVE; gitleaks and
29
+ TruffleHog both flag the same key.
30
+
31
+ - **Dedupe key:** `(class, normalized-id, path, line)`.
32
+ - `normalized-id`: CVE/GHSA for SCA; rule id for SAST; secret fingerprint
33
+ (provider + redacted last-4 + location) for secrets.
34
+ - **Keep the richest record** when two tools collide: prefer the one carrying
35
+ **verification** (TruffleHog `verified: true`) or **reachability**
36
+ (govulncheck), and merge the `tool` field into a list of contributors.
37
+
38
+ ## Severity normalization
39
+
40
+ SARIF `level` (`error`/`warning`/`note`/`none`) and tool-native severities
41
+ disagree. Map everything to one scale before ranking or gating:
42
+
43
+ | Source signal | Normalized |
44
+ |---|---|
45
+ | SARIF `error` / CVSS ≥ 9.0 / verified secret | `critical` |
46
+ | SARIF `error` / CVSS 7.0–8.9 / Semgrep `ERROR` | `high` |
47
+ | SARIF `warning` / CVSS 4.0–6.9 / Semgrep `WARNING` | `medium` |
48
+ | SARIF `note` / CVSS < 4.0 / `INFO` | `low` |
49
+
50
+ Where a tool gives both CVSS and a label, take the **higher** of the two.
51
+
52
+ ## Suppression discipline
53
+
54
+ A suppression is a per-finding record, not a silent ignore-file. Each one carries
55
+ `who`, `why`, and `expiry` so it surfaces again instead of hiding the next bug.
56
+ Use the tool-native suppression (osv-scanner.toml `ignoreUntil`, `.trivyignore`,
57
+ gitleaks allowlist, `// nosemgrep`) and set `status: "suppressed"` in the report.
58
+
59
+ ## Report schema — `security-scan-report.json`
60
+
61
+ This is the contract `scripts/verify.sh` gates on.
62
+
63
+ ```json
64
+ {
65
+ "schemaVersion": "1.0",
66
+ "scannedAt": "<ISO-8601 UTC>",
67
+ "target": "<path or repo>",
68
+ "tools": [{ "name": "<tool>", "version": "<pinned>" }],
69
+ "summary": {
70
+ "critical": 0, "high": 0, "medium": 0, "low": 0, "suppressed": 0
71
+ },
72
+ "findings": [
73
+ {
74
+ "class": "sast | sca | secrets | misconfig",
75
+ "ruleId": "<CVE / GHSA / rule-id / secret-fingerprint>",
76
+ "path": "<file>",
77
+ "line": 0,
78
+ "severity": "critical | high | medium | low",
79
+ "status": "open | suppressed | fixed",
80
+ "tool": "<tool name>",
81
+ "exploitability": "reachable | exposed | theoretical",
82
+ "title": "<short human description>"
83
+ }
84
+ ]
85
+ }
86
+ ```
87
+
88
+ - `summary` counts must agree with `findings` (verify.sh tolerates an empty
89
+ `findings` array as a clean pass).
90
+ - **Gate:** any `findings[]` with `status: "open"` and `severity: "critical"`
91
+ → fail. Strict mode also fails on `open` + `high`. `suppressed`/`fixed` never
92
+ fail. An empty/clean report exits `0`.
93
+ </content>
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # ============================================================================
5
+ # NAME
6
+ # verify.sh — security-scan gate over security-scan-report.json
7
+ #
8
+ # USAGE
9
+ # ./verify.sh [path/to/security-scan-report.json]
10
+ # Defaults to ./security-scan-report.json in the current directory.
11
+ #
12
+ # WHAT IT DOES (read-only — never writes, never auto-fixes, never runs scanners)
13
+ # 1. Locates the report. If it is ABSENT, exits 0 with a notice — the gate is
14
+ # vacuously clean (nothing scanned yet is not a failure).
15
+ # 2. Parses it as JSON (requires jq).
16
+ # 3. Validates the schema: schemaVersion, summary object, findings array, and
17
+ # that each finding carries class/ruleId/path/severity/status.
18
+ # 4. Enforces the gate: any finding with status "open" at severity "critical"
19
+ # fails (exit 1). With STRICT=1, "open" + "high" also fails.
20
+ #
21
+ # An empty/clean report (no open criticals, or an empty findings array)
22
+ # exits 0 — no false failure.
23
+ #
24
+ # ENV TOGGLES
25
+ # STRICT=1 Also fail on open HIGH findings (default: criticals only).
26
+ # NO_COLOR=1 Disable ANSI color.
27
+ #
28
+ # EXIT CODES
29
+ # 0 Clean: report missing, empty, or no open critical (/high under STRICT).
30
+ # 1 At least one open critical (or open high under STRICT).
31
+ # 2 Usage / schema / tooling error (jq missing, malformed JSON, bad schema).
32
+ # ============================================================================
33
+
34
+ REPORT="${1:-./security-scan-report.json}"
35
+ STRICT="${STRICT:-0}"
36
+
37
+ if [ -n "${NO_COLOR:-}" ]; then
38
+ RED=""; YEL=""; GRN=""; RST=""
39
+ else
40
+ RED=$'\033[31m'; YEL=$'\033[33m'; GRN=$'\033[32m'; RST=$'\033[0m'
41
+ fi
42
+
43
+ note() { printf '%s\n' "$*" >&2; }
44
+
45
+ # --- 1. report absent => vacuously clean -----------------------------------
46
+ if [ ! -e "$REPORT" ]; then
47
+ note "${YEL}notice:${RST} no report at '$REPORT' — nothing to gate. Clean."
48
+ exit 0
49
+ fi
50
+
51
+ # --- tooling ---------------------------------------------------------------
52
+ if ! command -v jq >/dev/null 2>&1; then
53
+ note "${RED}error:${RST} jq is required to validate the report."
54
+ exit 2
55
+ fi
56
+
57
+ # --- 2. valid JSON ---------------------------------------------------------
58
+ if ! jq -e . "$REPORT" >/dev/null 2>&1; then
59
+ note "${RED}error:${RST} '$REPORT' is not valid JSON."
60
+ exit 2
61
+ fi
62
+
63
+ # --- 3. schema -------------------------------------------------------------
64
+ schema_ok=$(jq -e '
65
+ (has("schemaVersion"))
66
+ and (has("summary") and (.summary | type == "object"))
67
+ and (has("findings") and (.findings | type == "array"))
68
+ and (
69
+ .findings
70
+ | all(
71
+ (has("class")) and (has("ruleId")) and (has("path"))
72
+ and (has("severity")) and (has("status"))
73
+ )
74
+ )
75
+ ' "$REPORT" 2>/dev/null || echo "false")
76
+
77
+ if [ "$schema_ok" != "true" ]; then
78
+ note "${RED}error:${RST} '$REPORT' does not conform to the schema"
79
+ note " (need schemaVersion, summary{}, findings[] with"
80
+ note " class/ruleId/path/severity/status on every finding)."
81
+ exit 2
82
+ fi
83
+
84
+ # --- 4. gate ---------------------------------------------------------------
85
+ open_crit=$(jq '[.findings[] | select(.status == "open" and .severity == "critical")] | length' "$REPORT")
86
+ open_high=$(jq '[.findings[] | select(.status == "open" and .severity == "high")] | length' "$REPORT")
87
+ total=$(jq '.findings | length' "$REPORT")
88
+ suppressed=$(jq '[.findings[] | select(.status == "suppressed")] | length' "$REPORT")
89
+
90
+ note "Report: $REPORT (findings: ${total}, suppressed: ${suppressed}, open-critical: ${open_crit}, open-high: ${open_high})"
91
+
92
+ fail=0
93
+ if [ "$open_crit" -gt 0 ]; then
94
+ note "${RED}FAIL:${RST} ${open_crit} open CRITICAL finding(s) — resolve or suppress with justification before merge."
95
+ jq -r '.findings[] | select(.status=="open" and .severity=="critical") | " - [\(.class)] \(.ruleId) \(.path) \(.title // "")"' "$REPORT" >&2
96
+ fail=1
97
+ fi
98
+ if [ "$STRICT" = "1" ] && [ "$open_high" -gt 0 ]; then
99
+ note "${RED}FAIL (STRICT):${RST} ${open_high} open HIGH finding(s)."
100
+ jq -r '.findings[] | select(.status=="open" and .severity=="high") | " - [\(.class)] \(.ruleId) \(.path) \(.title // "")"' "$REPORT" >&2
101
+ fail=1
102
+ fi
103
+
104
+ if [ "$fail" -eq 0 ]; then
105
+ note "${GRN}PASS:${RST} no open critical$([ "$STRICT" = "1" ] && echo "/high") findings."
106
+ exit 0
107
+ fi
108
+ exit 1