@ketecode/loom 0.0.0-stage → 0.2.0

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 (851) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +616 -2
  3. package/agents/accessibility-reviewer/AGENT.md +70 -0
  4. package/agents/accessibility-reviewer/evals/triggers.json +15 -0
  5. package/agents/agent-evaluator/AGENT.md +74 -0
  6. package/agents/agent-evaluator/evals/triggers.json +15 -0
  7. package/agents/architect/AGENT.md +82 -0
  8. package/agents/architect/evals/triggers.json +17 -0
  9. package/agents/billing-reviewer/AGENT.md +68 -0
  10. package/agents/billing-reviewer/evals/triggers.json +16 -0
  11. package/agents/code-reviewer/AGENT.md +51 -0
  12. package/agents/code-reviewer/evals/behavior.json +60 -0
  13. package/agents/code-reviewer/evals/triggers.json +14 -0
  14. package/agents/code-simplifier/AGENT.md +74 -0
  15. package/agents/code-simplifier/evals/triggers.json +15 -0
  16. package/agents/cpp-build-resolver/AGENT.md +73 -0
  17. package/agents/cpp-build-resolver/evals/triggers.json +16 -0
  18. package/agents/cpp-reviewer/AGENT.md +59 -0
  19. package/agents/cpp-reviewer/evals/triggers.json +16 -0
  20. package/agents/csharp-build-resolver/AGENT.md +84 -0
  21. package/agents/csharp-build-resolver/evals/triggers.json +17 -0
  22. package/agents/csharp-reviewer/AGENT.md +88 -0
  23. package/agents/csharp-reviewer/evals/triggers.json +17 -0
  24. package/agents/dart-build-resolver/AGENT.md +80 -0
  25. package/agents/dart-build-resolver/evals/triggers.json +17 -0
  26. package/agents/dart-reviewer/AGENT.md +66 -0
  27. package/agents/dart-reviewer/evals/triggers.json +17 -0
  28. package/agents/database-reviewer/AGENT.md +72 -0
  29. package/agents/database-reviewer/evals/triggers.json +16 -0
  30. package/agents/django-reviewer/AGENT.md +61 -0
  31. package/agents/django-reviewer/evals/triggers.json +15 -0
  32. package/agents/doc-updater/AGENT.md +92 -0
  33. package/agents/doc-updater/evals/triggers.json +14 -0
  34. package/agents/e2e-runner/AGENT.md +88 -0
  35. package/agents/e2e-runner/evals/triggers.json +16 -0
  36. package/agents/fastapi-reviewer/AGENT.md +63 -0
  37. package/agents/fastapi-reviewer/evals/triggers.json +15 -0
  38. package/agents/flutter-reviewer/AGENT.md +70 -0
  39. package/agents/flutter-reviewer/evals/triggers.json +15 -0
  40. package/agents/fsharp-build-resolver/AGENT.md +81 -0
  41. package/agents/fsharp-build-resolver/evals/triggers.json +15 -0
  42. package/agents/fsharp-reviewer/AGENT.md +77 -0
  43. package/agents/fsharp-reviewer/evals/triggers.json +15 -0
  44. package/agents/go-build-resolver/AGENT.md +85 -0
  45. package/agents/go-build-resolver/evals/triggers.json +16 -0
  46. package/agents/go-reviewer/AGENT.md +66 -0
  47. package/agents/go-reviewer/evals/triggers.json +16 -0
  48. package/agents/healthcare-reviewer/AGENT.md +65 -0
  49. package/agents/healthcare-reviewer/evals/triggers.json +16 -0
  50. package/agents/i18n-reviewer/AGENT.md +64 -0
  51. package/agents/i18n-reviewer/evals/triggers.json +16 -0
  52. package/agents/inbox-triager/AGENT.md +98 -0
  53. package/agents/inbox-triager/evals/triggers.json +16 -0
  54. package/agents/infra-reviewer/AGENT.md +93 -0
  55. package/agents/infra-reviewer/evals/triggers.json +15 -0
  56. package/agents/java-build-resolver/AGENT.md +82 -0
  57. package/agents/java-build-resolver/evals/triggers.json +16 -0
  58. package/agents/java-reviewer/AGENT.md +64 -0
  59. package/agents/java-reviewer/evals/triggers.json +16 -0
  60. package/agents/kotlin-build-resolver/AGENT.md +89 -0
  61. package/agents/kotlin-build-resolver/evals/triggers.json +16 -0
  62. package/agents/kotlin-reviewer/AGENT.md +75 -0
  63. package/agents/kotlin-reviewer/evals/triggers.json +16 -0
  64. package/agents/mle-reviewer/AGENT.md +68 -0
  65. package/agents/mle-reviewer/evals/triggers.json +16 -0
  66. package/agents/network-config-reviewer/AGENT.md +68 -0
  67. package/agents/network-config-reviewer/evals/triggers.json +17 -0
  68. package/agents/payments-reviewer/AGENT.md +64 -0
  69. package/agents/payments-reviewer/evals/triggers.json +16 -0
  70. package/agents/performance-optimizer/AGENT.md +86 -0
  71. package/agents/performance-optimizer/evals/triggers.json +16 -0
  72. package/agents/perl-build-resolver/AGENT.md +84 -0
  73. package/agents/perl-build-resolver/evals/triggers.json +15 -0
  74. package/agents/perl-reviewer/AGENT.md +77 -0
  75. package/agents/perl-reviewer/evals/triggers.json +15 -0
  76. package/agents/php-build-resolver/AGENT.md +88 -0
  77. package/agents/php-build-resolver/evals/triggers.json +16 -0
  78. package/agents/php-reviewer/AGENT.md +61 -0
  79. package/agents/php-reviewer/evals/triggers.json +15 -0
  80. package/agents/planner/AGENT.md +75 -0
  81. package/agents/planner/evals/triggers.json +17 -0
  82. package/agents/pr-test-analyzer/AGENT.md +82 -0
  83. package/agents/pr-test-analyzer/evals/triggers.json +16 -0
  84. package/agents/python-build-resolver/AGENT.md +87 -0
  85. package/agents/python-build-resolver/evals/triggers.json +16 -0
  86. package/agents/python-reviewer/AGENT.md +63 -0
  87. package/agents/python-reviewer/evals/triggers.json +15 -0
  88. package/agents/rag-reviewer/AGENT.md +71 -0
  89. package/agents/rag-reviewer/evals/triggers.json +16 -0
  90. package/agents/react-reviewer/AGENT.md +70 -0
  91. package/agents/react-reviewer/evals/triggers.json +16 -0
  92. package/agents/refactor-cleaner/AGENT.md +82 -0
  93. package/agents/refactor-cleaner/evals/triggers.json +16 -0
  94. package/agents/ruby-build-resolver/AGENT.md +93 -0
  95. package/agents/ruby-build-resolver/evals/triggers.json +16 -0
  96. package/agents/ruby-reviewer/AGENT.md +62 -0
  97. package/agents/ruby-reviewer/evals/triggers.json +16 -0
  98. package/agents/rust-build-resolver/AGENT.md +98 -0
  99. package/agents/rust-build-resolver/evals/triggers.json +16 -0
  100. package/agents/rust-reviewer/AGENT.md +78 -0
  101. package/agents/rust-reviewer/evals/triggers.json +15 -0
  102. package/agents/security-reviewer/AGENT.md +84 -0
  103. package/agents/security-reviewer/evals/triggers.json +16 -0
  104. package/agents/silent-failure-hunter/AGENT.md +66 -0
  105. package/agents/silent-failure-hunter/evals/triggers.json +16 -0
  106. package/agents/solidity-reviewer/AGENT.md +70 -0
  107. package/agents/solidity-reviewer/evals/triggers.json +16 -0
  108. package/agents/spec-reviewer/AGENT.md +95 -0
  109. package/agents/spec-reviewer/evals/behavior.json +57 -0
  110. package/agents/spec-reviewer/evals/triggers.json +16 -0
  111. package/agents/swift-build-resolver/AGENT.md +85 -0
  112. package/agents/swift-build-resolver/evals/triggers.json +15 -0
  113. package/agents/swift-reviewer/AGENT.md +75 -0
  114. package/agents/swift-reviewer/evals/triggers.json +15 -0
  115. package/agents/task-implementer/AGENT.md +89 -0
  116. package/agents/task-implementer/evals/behavior.json +47 -0
  117. package/agents/task-implementer/evals/triggers.json +16 -0
  118. package/agents/typescript-build-resolver/AGENT.md +76 -0
  119. package/agents/typescript-build-resolver/evals/triggers.json +15 -0
  120. package/agents/typescript-reviewer/AGENT.md +76 -0
  121. package/agents/typescript-reviewer/evals/triggers.json +15 -0
  122. package/agents/vue-reviewer/AGENT.md +75 -0
  123. package/agents/vue-reviewer/evals/triggers.json +15 -0
  124. package/bin/kete-loom.js +723 -0
  125. package/commands/aside.md +19 -0
  126. package/commands/brainstorm.md +25 -0
  127. package/commands/build-fix.md +26 -0
  128. package/commands/campaign.md +19 -0
  129. package/commands/changelog.md +36 -0
  130. package/commands/checkpoint.md +26 -0
  131. package/commands/codemap.md +25 -0
  132. package/commands/commit.md +26 -0
  133. package/commands/debug.md +27 -0
  134. package/commands/deps-audit.md +32 -0
  135. package/commands/dual-review.md +34 -0
  136. package/commands/epic-decompose.md +21 -0
  137. package/commands/explain.md +37 -0
  138. package/commands/feature-dev.md +23 -0
  139. package/commands/finish-branch.md +26 -0
  140. package/commands/fix-bug.md +38 -0
  141. package/commands/hookify.md +23 -0
  142. package/commands/i18n-check.md +39 -0
  143. package/commands/issue-sync.md +22 -0
  144. package/commands/jira.md +19 -0
  145. package/commands/learn.md +23 -0
  146. package/commands/loom.md +21 -0
  147. package/commands/loop.md +20 -0
  148. package/commands/model-route.md +27 -0
  149. package/commands/onboard.md +35 -0
  150. package/commands/orchestrate.md +21 -0
  151. package/commands/plan-feature.md +36 -0
  152. package/commands/postmortem.md +42 -0
  153. package/commands/pr-describe.md +39 -0
  154. package/commands/pr.md +22 -0
  155. package/commands/prd.md +41 -0
  156. package/commands/production-readiness.md +45 -0
  157. package/commands/project-init.md +21 -0
  158. package/commands/refactor-clean.md +24 -0
  159. package/commands/resume-session.md +22 -0
  160. package/commands/review.md +35 -0
  161. package/commands/save-session.md +37 -0
  162. package/commands/security-scan.md +32 -0
  163. package/commands/sessions.md +21 -0
  164. package/commands/skill-create.md +21 -0
  165. package/commands/tdd.md +36 -0
  166. package/commands/test-coverage.md +24 -0
  167. package/commands/threat-model.md +36 -0
  168. package/commands/update-docs.md +25 -0
  169. package/commands/usage-report.md +43 -0
  170. package/commands/verify.md +21 -0
  171. package/hooks/block-dangerous-commands/HOOK.md +30 -0
  172. package/hooks/block-dangerous-commands/cases.json +50 -0
  173. package/hooks/block-dangerous-commands/hook.js +75 -0
  174. package/hooks/block-foreground-servers/HOOK.md +34 -0
  175. package/hooks/block-foreground-servers/cases.json +31 -0
  176. package/hooks/block-foreground-servers/hook.js +41 -0
  177. package/hooks/block-no-verify/HOOK.md +25 -0
  178. package/hooks/block-no-verify/cases.json +30 -0
  179. package/hooks/block-no-verify/hook.js +43 -0
  180. package/hooks/capture-lessons/HOOK.md +24 -0
  181. package/hooks/capture-lessons/hook.js +48 -0
  182. package/hooks/format-on-edit/HOOK.md +24 -0
  183. package/hooks/format-on-edit/hook.js +89 -0
  184. package/hooks/guard-secrets/HOOK.md +19 -0
  185. package/hooks/guard-secrets/cases.json +110 -0
  186. package/hooks/guard-secrets/hook.js +44 -0
  187. package/hooks/load-session-context/HOOK.md +20 -0
  188. package/hooks/load-session-context/hook.js +56 -0
  189. package/hooks/notify-on-stop/HOOK.md +25 -0
  190. package/hooks/notify-on-stop/hook.js +27 -0
  191. package/hooks/protect-files/HOOK.md +24 -0
  192. package/hooks/protect-files/cases.json +27 -0
  193. package/hooks/protect-files/hook.js +39 -0
  194. package/hooks/protect-lint-config/HOOK.md +29 -0
  195. package/hooks/protect-lint-config/cases.json +18 -0
  196. package/hooks/protect-lint-config/fixtures/.eslintrc.json +1 -0
  197. package/hooks/protect-lint-config/fixtures/.golangci.yml +1 -0
  198. package/hooks/protect-lint-config/fixtures/.prettierrc +1 -0
  199. package/hooks/protect-lint-config/fixtures/.rubocop.yml +1 -0
  200. package/hooks/protect-lint-config/fixtures/biome.json +1 -0
  201. package/hooks/protect-lint-config/fixtures/eslint.config.mjs +1 -0
  202. package/hooks/protect-lint-config/fixtures/ruff.toml +1 -0
  203. package/hooks/protect-lint-config/hook.js +25 -0
  204. package/hooks/read-before-edit/HOOK.md +26 -0
  205. package/hooks/read-before-edit/cases.json +15 -0
  206. package/hooks/read-before-edit/hook.js +50 -0
  207. package/hooks/run.js +148 -0
  208. package/hooks/verify-before-stop/HOOK.md +32 -0
  209. package/hooks/verify-before-stop/hook.js +70 -0
  210. package/mcp/atlassian.json +11 -0
  211. package/mcp/chrome-devtools.json +18 -0
  212. package/mcp/clickhouse.json +11 -0
  213. package/mcp/cloudflare.json +11 -0
  214. package/mcp/context7.json +11 -0
  215. package/mcp/exa.json +11 -0
  216. package/mcp/fetch.json +17 -0
  217. package/mcp/figma.json +11 -0
  218. package/mcp/firecrawl.json +11 -0
  219. package/mcp/git.json +17 -0
  220. package/mcp/github.json +11 -0
  221. package/mcp/linear.json +11 -0
  222. package/mcp/memory.json +18 -0
  223. package/mcp/notion.json +11 -0
  224. package/mcp/playwright.json +18 -0
  225. package/mcp/sentry.json +11 -0
  226. package/mcp/stripe.json +11 -0
  227. package/mcp/supabase.json +11 -0
  228. package/mcp/time.json +17 -0
  229. package/mcp/vercel.json +11 -0
  230. package/package.json +61 -4
  231. package/profiles.json +214 -0
  232. package/rules/common.md +21 -0
  233. package/rules/cpp.md +29 -0
  234. package/rules/csharp.md +25 -0
  235. package/rules/dart.md +29 -0
  236. package/rules/fsharp.md +28 -0
  237. package/rules/git.md +26 -0
  238. package/rules/go.md +29 -0
  239. package/rules/java.md +29 -0
  240. package/rules/kotlin.md +27 -0
  241. package/rules/perl.md +26 -0
  242. package/rules/php.md +28 -0
  243. package/rules/python.md +30 -0
  244. package/rules/ruby.md +27 -0
  245. package/rules/rust.md +26 -0
  246. package/rules/security.md +29 -0
  247. package/rules/swift.md +28 -0
  248. package/rules/testing.md +25 -0
  249. package/rules/typescript.md +29 -0
  250. package/rules/use-skills.md +23 -0
  251. package/schemas/skill-frontmatter.schema.json +52 -0
  252. package/scripts/lib/audit.js +96 -0
  253. package/scripts/lib/behavior.js +52 -0
  254. package/scripts/lib/frontmatter.js +65 -0
  255. package/scripts/lib/hooks-install.js +294 -0
  256. package/scripts/lib/i18n.js +51 -0
  257. package/scripts/lib/inventory.js +85 -0
  258. package/scripts/lib/lint.js +180 -0
  259. package/scripts/lib/mcp-install.js +288 -0
  260. package/scripts/lib/profiles.js +128 -0
  261. package/scripts/lib/render.js +92 -0
  262. package/scripts/lib/rules-install.js +118 -0
  263. package/scripts/lib/skills.js +87 -0
  264. package/scripts/lib/targets.js +123 -0
  265. package/skills/accounting-api-integration/SKILL.md +81 -0
  266. package/skills/accounting-api-integration/evals/triggers.json +17 -0
  267. package/skills/accounting-api-integration/references/quickbooks.md +48 -0
  268. package/skills/accounting-api-integration/references/xero.md +45 -0
  269. package/skills/agent-failure-debugging/SKILL.md +92 -0
  270. package/skills/agent-failure-debugging/evals/triggers.json +16 -0
  271. package/skills/agent-harness-design/SKILL.md +125 -0
  272. package/skills/agent-harness-design/evals/triggers.json +21 -0
  273. package/skills/agent-outbound-messaging/SKILL.md +92 -0
  274. package/skills/agent-outbound-messaging/evals/triggers.json +16 -0
  275. package/skills/agent-security/SKILL.md +117 -0
  276. package/skills/agent-security/evals/triggers.json +16 -0
  277. package/skills/agent-security/references/host-configs.md +37 -0
  278. package/skills/ai-media-generation/SKILL.md +89 -0
  279. package/skills/ai-media-generation/evals/triggers.json +16 -0
  280. package/skills/ai-media-generation/references/job-pipeline.md +76 -0
  281. package/skills/angular-patterns/SKILL.md +122 -0
  282. package/skills/angular-patterns/evals/triggers.json +16 -0
  283. package/skills/api-client-integration/SKILL.md +86 -0
  284. package/skills/api-client-integration/evals/triggers.json +16 -0
  285. package/skills/api-client-integration/references/resilience.md +57 -0
  286. package/skills/api-design/SKILL.md +96 -0
  287. package/skills/api-design/evals/triggers.json +18 -0
  288. package/skills/api-design/references/conventions.md +133 -0
  289. package/skills/architecture-decision-records/SKILL.md +98 -0
  290. package/skills/architecture-decision-records/evals/triggers.json +17 -0
  291. package/skills/article-writing/SKILL.md +108 -0
  292. package/skills/article-writing/evals/triggers.json +16 -0
  293. package/skills/aspnet-core-patterns/SKILL.md +149 -0
  294. package/skills/aspnet-core-patterns/evals/triggers.json +16 -0
  295. package/skills/auth-patterns/SKILL.md +104 -0
  296. package/skills/auth-patterns/evals/triggers.json +17 -0
  297. package/skills/auth-patterns/references/oauth-oidc.md +64 -0
  298. package/skills/autonomous-loops/SKILL.md +99 -0
  299. package/skills/autonomous-loops/evals/triggers.json +14 -0
  300. package/skills/aws-patterns/SKILL.md +91 -0
  301. package/skills/aws-patterns/evals/triggers.json +16 -0
  302. package/skills/azure-patterns/SKILL.md +86 -0
  303. package/skills/azure-patterns/evals/triggers.json +16 -0
  304. package/skills/benchmark-methodology/SKILL.md +88 -0
  305. package/skills/benchmark-methodology/evals/triggers.json +16 -0
  306. package/skills/benchmark-methodology/references/language-harnesses.md +130 -0
  307. package/skills/bgp-diagnostics/SKILL.md +84 -0
  308. package/skills/bgp-diagnostics/evals/triggers.json +18 -0
  309. package/skills/bgp-diagnostics/references/bgp-reference.md +81 -0
  310. package/skills/bioinformatics-workflows/SKILL.md +108 -0
  311. package/skills/bioinformatics-workflows/evals/triggers.json +16 -0
  312. package/skills/bioinformatics-workflows/references/commands.md +71 -0
  313. package/skills/bioinformatics-workflows/references/formats.md +24 -0
  314. package/skills/bioinformatics-workflows/references/workflow-managers.md +107 -0
  315. package/skills/blender-automation/SKILL.md +100 -0
  316. package/skills/blender-automation/evals/triggers.json +16 -0
  317. package/skills/blender-automation/references/batch-and-render.md +77 -0
  318. package/skills/blender-automation/references/bpy-inspection.md +91 -0
  319. package/skills/blender-automation/references/rig-and-retarget-checks.md +23 -0
  320. package/skills/brand-strategy/SKILL.md +83 -0
  321. package/skills/brand-strategy/evals/triggers.json +16 -0
  322. package/skills/brand-voice/SKILL.md +112 -0
  323. package/skills/brand-voice/evals/triggers.json +16 -0
  324. package/skills/browser-qa/SKILL.md +99 -0
  325. package/skills/browser-qa/evals/triggers.json +16 -0
  326. package/skills/bun-runtime/SKILL.md +93 -0
  327. package/skills/bun-runtime/evals/triggers.json +16 -0
  328. package/skills/change-impact-analysis/SKILL.md +89 -0
  329. package/skills/change-impact-analysis/evals/triggers.json +16 -0
  330. package/skills/change-impact-analysis/references/graph-commands.md +28 -0
  331. package/skills/cisco-ios-config/SKILL.md +101 -0
  332. package/skills/cisco-ios-config/evals/triggers.json +18 -0
  333. package/skills/cisco-ios-config/references/verification.md +63 -0
  334. package/skills/clickhouse-patterns/SKILL.md +101 -0
  335. package/skills/clickhouse-patterns/evals/triggers.json +18 -0
  336. package/skills/clickhouse-patterns/references/engines-and-views.md +138 -0
  337. package/skills/clinical-decision-support/SKILL.md +90 -0
  338. package/skills/clinical-decision-support/evals/triggers.json +16 -0
  339. package/skills/clinical-decision-support/references/cds-hooks.md +76 -0
  340. package/skills/clinical-decision-support/references/regulatory-boundaries.md +37 -0
  341. package/skills/code-tour/SKILL.md +97 -0
  342. package/skills/code-tour/evals/triggers.json +14 -0
  343. package/skills/codebase-onboarding/SKILL.md +112 -0
  344. package/skills/codebase-onboarding/evals/triggers.json +14 -0
  345. package/skills/cold-outreach-sequences/SKILL.md +90 -0
  346. package/skills/cold-outreach-sequences/evals/triggers.json +16 -0
  347. package/skills/content-repurposing/SKILL.md +82 -0
  348. package/skills/content-repurposing/evals/triggers.json +16 -0
  349. package/skills/context-budget/SKILL.md +84 -0
  350. package/skills/context-budget/evals/triggers.json +14 -0
  351. package/skills/contract-drafting/SKILL.md +96 -0
  352. package/skills/contract-drafting/evals/triggers.json +16 -0
  353. package/skills/contract-drafting/references/term-sheets.md +68 -0
  354. package/skills/contract-first-development/SKILL.md +86 -0
  355. package/skills/contract-first-development/evals/triggers.json +16 -0
  356. package/skills/contract-first-development/references/tooling.md +46 -0
  357. package/skills/conventional-commits/SKILL.md +144 -0
  358. package/skills/conventional-commits/evals/triggers.json +16 -0
  359. package/skills/cpp-patterns/SKILL.md +129 -0
  360. package/skills/cpp-patterns/evals/triggers.json +16 -0
  361. package/skills/cpp-patterns/references/cmake-and-tooling.md +88 -0
  362. package/skills/cpp-patterns/references/undefined-behaviour.md +75 -0
  363. package/skills/cpp-testing/SKILL.md +131 -0
  364. package/skills/cpp-testing/evals/triggers.json +16 -0
  365. package/skills/csharp-patterns/SKILL.md +110 -0
  366. package/skills/csharp-patterns/evals/triggers.json +17 -0
  367. package/skills/csharp-patterns/references/analyzers.md +59 -0
  368. package/skills/csharp-testing/SKILL.md +85 -0
  369. package/skills/csharp-testing/evals/triggers.json +17 -0
  370. package/skills/csharp-testing/references/integration-tests.md +77 -0
  371. package/skills/css-architecture/SKILL.md +143 -0
  372. package/skills/css-architecture/evals/triggers.json +16 -0
  373. package/skills/customs-trade-compliance/SKILL.md +95 -0
  374. package/skills/customs-trade-compliance/evals/triggers.json +16 -0
  375. package/skills/customs-trade-compliance/references/incoterms-2020.md +42 -0
  376. package/skills/dart-patterns/SKILL.md +157 -0
  377. package/skills/dart-patterns/evals/triggers.json +18 -0
  378. package/skills/dart-testing/SKILL.md +164 -0
  379. package/skills/dart-testing/evals/triggers.json +18 -0
  380. package/skills/data-analysis-notebooks/SKILL.md +113 -0
  381. package/skills/data-analysis-notebooks/evals/triggers.json +16 -0
  382. package/skills/data-analysis-notebooks/references/dataframe-pitfalls.md +49 -0
  383. package/skills/data-analysis-notebooks/references/statistics-pitfalls.md +24 -0
  384. package/skills/data-pipelines/SKILL.md +90 -0
  385. package/skills/data-pipelines/evals/triggers.json +16 -0
  386. package/skills/data-pipelines/references/orchestrators.md +64 -0
  387. package/skills/database-migrations/SKILL.md +102 -0
  388. package/skills/database-migrations/evals/triggers.json +16 -0
  389. package/skills/database-migrations/references/recipes.md +98 -0
  390. package/skills/database-migrations/references/tools.md +21 -0
  391. package/skills/dbt-patterns/SKILL.md +96 -0
  392. package/skills/dbt-patterns/evals/triggers.json +16 -0
  393. package/skills/dbt-patterns/references/yaml-examples.md +114 -0
  394. package/skills/decision-council/SKILL.md +98 -0
  395. package/skills/decision-council/evals/triggers.json +16 -0
  396. package/skills/deep-research/SKILL.md +107 -0
  397. package/skills/deep-research/evals/triggers.json +14 -0
  398. package/skills/dependency-audit/SKILL.md +103 -0
  399. package/skills/dependency-audit/evals/triggers.json +16 -0
  400. package/skills/dependency-audit/references/tools.md +124 -0
  401. package/skills/deployment-strategies/SKILL.md +108 -0
  402. package/skills/deployment-strategies/evals/triggers.json +16 -0
  403. package/skills/design-brainstorming/SKILL.md +132 -0
  404. package/skills/design-brainstorming/evals/behavior.json +55 -0
  405. package/skills/design-brainstorming/evals/triggers.json +16 -0
  406. package/skills/design-brainstorming/references/visual-mockups.md +34 -0
  407. package/skills/desktop-app-testing/SKILL.md +104 -0
  408. package/skills/desktop-app-testing/evals/triggers.json +16 -0
  409. package/skills/desktop-app-testing/references/drivers.md +81 -0
  410. package/skills/django-patterns/SKILL.md +123 -0
  411. package/skills/django-patterns/evals/triggers.json +16 -0
  412. package/skills/docker-patterns/SKILL.md +132 -0
  413. package/skills/docker-patterns/evals/triggers.json +16 -0
  414. package/skills/docker-patterns/references/dockerfiles.md +105 -0
  415. package/skills/document-processing/SKILL.md +100 -0
  416. package/skills/document-processing/evals/triggers.json +17 -0
  417. package/skills/document-processing/references/extraction-and-ocr.md +71 -0
  418. package/skills/document-processing/references/forms-and-conversion.md +69 -0
  419. package/skills/document-processing/references/redaction.md +61 -0
  420. package/skills/e2e-testing-playwright/SKILL.md +94 -0
  421. package/skills/e2e-testing-playwright/evals/triggers.json +16 -0
  422. package/skills/e2e-testing-playwright/references/config-and-ci.md +129 -0
  423. package/skills/ef-core-patterns/SKILL.md +117 -0
  424. package/skills/ef-core-patterns/evals/triggers.json +16 -0
  425. package/skills/email-deliverability/SKILL.md +99 -0
  426. package/skills/email-deliverability/evals/triggers.json +17 -0
  427. package/skills/email-deliverability/references/dns-records.md +85 -0
  428. package/skills/energy-procurement/SKILL.md +106 -0
  429. package/skills/energy-procurement/evals/triggers.json +16 -0
  430. package/skills/error-handling-patterns/SKILL.md +112 -0
  431. package/skills/error-handling-patterns/evals/triggers.json +18 -0
  432. package/skills/error-handling-patterns/references/language-idioms.md +49 -0
  433. package/skills/estimation-and-scoping/SKILL.md +97 -0
  434. package/skills/estimation-and-scoping/evals/triggers.json +14 -0
  435. package/skills/evm-dapp-integration/SKILL.md +73 -0
  436. package/skills/evm-dapp-integration/evals/triggers.json +16 -0
  437. package/skills/fastapi-patterns/SKILL.md +127 -0
  438. package/skills/fastapi-patterns/evals/triggers.json +16 -0
  439. package/skills/ffmpeg-media-processing/SKILL.md +94 -0
  440. package/skills/ffmpeg-media-processing/evals/triggers.json +16 -0
  441. package/skills/ffmpeg-media-processing/references/recipes.md +112 -0
  442. package/skills/fhir-integration/SKILL.md +81 -0
  443. package/skills/fhir-integration/evals/triggers.json +16 -0
  444. package/skills/fhir-integration/references/search-and-bundles.md +73 -0
  445. package/skills/fhir-integration/references/smart-on-fhir.md +50 -0
  446. package/skills/finishing-a-branch/SKILL.md +127 -0
  447. package/skills/finishing-a-branch/evals/behavior.json +49 -0
  448. package/skills/finishing-a-branch/evals/triggers.json +16 -0
  449. package/skills/flask-patterns/SKILL.md +132 -0
  450. package/skills/flask-patterns/evals/triggers.json +16 -0
  451. package/skills/flutter-patterns/SKILL.md +99 -0
  452. package/skills/flutter-patterns/evals/triggers.json +16 -0
  453. package/skills/flutterwave-integration/SKILL.md +75 -0
  454. package/skills/flutterwave-integration/evals/triggers.json +16 -0
  455. package/skills/flutterwave-integration/references/api.md +73 -0
  456. package/skills/flutterwave-integration/references/webhooks.md +49 -0
  457. package/skills/freight-carrier-management/SKILL.md +107 -0
  458. package/skills/freight-carrier-management/evals/triggers.json +16 -0
  459. package/skills/fsharp-patterns/SKILL.md +133 -0
  460. package/skills/fsharp-patterns/evals/triggers.json +16 -0
  461. package/skills/fsharp-testing/SKILL.md +136 -0
  462. package/skills/fsharp-testing/evals/triggers.json +16 -0
  463. package/skills/gcp-patterns/SKILL.md +86 -0
  464. package/skills/gcp-patterns/evals/triggers.json +16 -0
  465. package/skills/git-workflow/SKILL.md +114 -0
  466. package/skills/git-workflow/evals/triggers.json +16 -0
  467. package/skills/git-worktrees/SKILL.md +130 -0
  468. package/skills/git-worktrees/evals/behavior.json +56 -0
  469. package/skills/git-worktrees/evals/triggers.json +16 -0
  470. package/skills/github-actions-ci/SKILL.md +117 -0
  471. package/skills/github-actions-ci/evals/triggers.json +16 -0
  472. package/skills/github-api-automation/SKILL.md +101 -0
  473. package/skills/github-api-automation/evals/triggers.json +17 -0
  474. package/skills/go-patterns/SKILL.md +118 -0
  475. package/skills/go-patterns/evals/triggers.json +17 -0
  476. package/skills/go-patterns/references/concurrency.md +162 -0
  477. package/skills/go-testing/SKILL.md +154 -0
  478. package/skills/go-testing/evals/triggers.json +17 -0
  479. package/skills/google-workspace-integration/SKILL.md +65 -0
  480. package/skills/google-workspace-integration/evals/triggers.json +17 -0
  481. package/skills/google-workspace-integration/references/api.md +121 -0
  482. package/skills/harmonyos-arkts/SKILL.md +117 -0
  483. package/skills/harmonyos-arkts/evals/triggers.json +16 -0
  484. package/skills/harmonyos-arkts/references/build-errors.md +42 -0
  485. package/skills/hexagonal-architecture/SKILL.md +89 -0
  486. package/skills/hexagonal-architecture/evals/triggers.json +17 -0
  487. package/skills/hipaa-compliance/SKILL.md +91 -0
  488. package/skills/hipaa-compliance/evals/triggers.json +18 -0
  489. package/skills/hipaa-compliance/references/safeguards.md +68 -0
  490. package/skills/hl7v2-integration/SKILL.md +69 -0
  491. package/skills/hl7v2-integration/evals/triggers.json +16 -0
  492. package/skills/hl7v2-integration/references/messages-and-ack.md +78 -0
  493. package/skills/homelab-network-setup/SKILL.md +125 -0
  494. package/skills/homelab-network-setup/evals/triggers.json +18 -0
  495. package/skills/homelab-network-setup/references/firewall-and-dns.md +45 -0
  496. package/skills/homelab-network-setup/references/wireguard.md +72 -0
  497. package/skills/hubtel-integration/SKILL.md +77 -0
  498. package/skills/hubtel-integration/evals/triggers.json +16 -0
  499. package/skills/hubtel-integration/references/api.md +92 -0
  500. package/skills/i18n-localization/SKILL.md +114 -0
  501. package/skills/i18n-localization/evals/triggers.json +16 -0
  502. package/skills/i18n-localization/references/libraries.md +52 -0
  503. package/skills/implementation-plans/SKILL.md +117 -0
  504. package/skills/implementation-plans/evals/behavior.json +54 -0
  505. package/skills/implementation-plans/evals/triggers.json +16 -0
  506. package/skills/incident-postmortem/SKILL.md +118 -0
  507. package/skills/incident-postmortem/evals/triggers.json +14 -0
  508. package/skills/inventory-demand-planning/SKILL.md +89 -0
  509. package/skills/inventory-demand-planning/evals/triggers.json +16 -0
  510. package/skills/inventory-demand-planning/references/formulas.md +62 -0
  511. package/skills/investor-materials/SKILL.md +127 -0
  512. package/skills/investor-materials/evals/triggers.json +16 -0
  513. package/skills/investor-materials/references/templates.md +74 -0
  514. package/skills/invoicing-and-tax/SKILL.md +84 -0
  515. package/skills/invoicing-and-tax/evals/triggers.json +17 -0
  516. package/skills/invoicing-and-tax/references/e-invoicing.md +24 -0
  517. package/skills/invoicing-and-tax/references/invoice-fields.md +38 -0
  518. package/skills/invoicing-and-tax/references/rounding.md +26 -0
  519. package/skills/ios-platform-features/SKILL.md +99 -0
  520. package/skills/ios-platform-features/evals/triggers.json +16 -0
  521. package/skills/ios-platform-features/references/foundation-models.md +90 -0
  522. package/skills/java-patterns/SKILL.md +141 -0
  523. package/skills/java-patterns/evals/triggers.json +17 -0
  524. package/skills/java-testing/SKILL.md +142 -0
  525. package/skills/java-testing/evals/triggers.json +16 -0
  526. package/skills/jetpack-compose-patterns/SKILL.md +88 -0
  527. package/skills/jetpack-compose-patterns/evals/triggers.json +16 -0
  528. package/skills/jira-integration/SKILL.md +92 -0
  529. package/skills/jira-integration/evals/triggers.json +17 -0
  530. package/skills/jpa-hibernate/SKILL.md +92 -0
  531. package/skills/jpa-hibernate/evals/triggers.json +18 -0
  532. package/skills/jpa-hibernate/references/mapping.md +99 -0
  533. package/skills/jvm-sql-mappers/SKILL.md +98 -0
  534. package/skills/jvm-sql-mappers/evals/triggers.json +16 -0
  535. package/skills/jvm-sql-mappers/references/examples.md +129 -0
  536. package/skills/kotlin-multiplatform/SKILL.md +97 -0
  537. package/skills/kotlin-multiplatform/evals/triggers.json +16 -0
  538. package/skills/kotlin-patterns/SKILL.md +128 -0
  539. package/skills/kotlin-patterns/evals/triggers.json +16 -0
  540. package/skills/kotlin-testing/SKILL.md +117 -0
  541. package/skills/kotlin-testing/evals/triggers.json +16 -0
  542. package/skills/ktor-patterns/SKILL.md +135 -0
  543. package/skills/ktor-patterns/evals/triggers.json +18 -0
  544. package/skills/kubernetes-patterns/SKILL.md +106 -0
  545. package/skills/kubernetes-patterns/evals/triggers.json +16 -0
  546. package/skills/kubernetes-patterns/references/manifests.md +115 -0
  547. package/skills/laravel-patterns/SKILL.md +136 -0
  548. package/skills/laravel-patterns/evals/triggers.json +16 -0
  549. package/skills/linear-integration/SKILL.md +98 -0
  550. package/skills/linear-integration/evals/triggers.json +17 -0
  551. package/skills/literature-review/SKILL.md +109 -0
  552. package/skills/literature-review/evals/triggers.json +16 -0
  553. package/skills/literature-review/references/appraisal.md +41 -0
  554. package/skills/literature-review/references/search-sources.md +39 -0
  555. package/skills/llm-app-patterns/SKILL.md +97 -0
  556. package/skills/llm-app-patterns/evals/triggers.json +17 -0
  557. package/skills/llm-evals/SKILL.md +98 -0
  558. package/skills/llm-evals/evals/triggers.json +16 -0
  559. package/skills/llm-evals/references/graders.md +66 -0
  560. package/skills/logistics-exception-management/SKILL.md +90 -0
  561. package/skills/logistics-exception-management/evals/triggers.json +16 -0
  562. package/skills/manim-animations/SKILL.md +106 -0
  563. package/skills/manim-animations/evals/triggers.json +16 -0
  564. package/skills/market-research/SKILL.md +117 -0
  565. package/skills/market-research/evals/triggers.json +16 -0
  566. package/skills/marketing-campaign/SKILL.md +111 -0
  567. package/skills/marketing-campaign/evals/triggers.json +16 -0
  568. package/skills/mcp-server-patterns/SKILL.md +127 -0
  569. package/skills/mcp-server-patterns/evals/triggers.json +18 -0
  570. package/skills/mcp-server-patterns/references/protocol-notes.md +68 -0
  571. package/skills/metrics-dashboards/SKILL.md +113 -0
  572. package/skills/metrics-dashboards/evals/triggers.json +16 -0
  573. package/skills/ml-experiment-workflow/SKILL.md +125 -0
  574. package/skills/ml-experiment-workflow/evals/triggers.json +16 -0
  575. package/skills/mobile-accessibility/SKILL.md +94 -0
  576. package/skills/mobile-accessibility/evals/triggers.json +16 -0
  577. package/skills/mongodb-patterns/SKILL.md +115 -0
  578. package/skills/mongodb-patterns/evals/triggers.json +18 -0
  579. package/skills/mongodb-patterns/references/indexes-and-aggregation.md +94 -0
  580. package/skills/mpesa-daraja-integration/SKILL.md +70 -0
  581. package/skills/mpesa-daraja-integration/evals/triggers.json +16 -0
  582. package/skills/mpesa-daraja-integration/references/api.md +103 -0
  583. package/skills/mpesa-daraja-integration/references/callbacks.md +74 -0
  584. package/skills/mtn-momo-integration/SKILL.md +66 -0
  585. package/skills/mtn-momo-integration/evals/triggers.json +16 -0
  586. package/skills/mtn-momo-integration/references/api.md +153 -0
  587. package/skills/mtn-momo-integration/references/callbacks.md +92 -0
  588. package/skills/mtn-momo-integration/references/sandbox-and-go-live.md +51 -0
  589. package/skills/mtn-momo-integration/scripts/sandbox-setup.js +79 -0
  590. package/skills/mysql-patterns/SKILL.md +96 -0
  591. package/skills/mysql-patterns/evals/triggers.json +16 -0
  592. package/skills/mysql-patterns/references/explain.md +34 -0
  593. package/skills/mysql-patterns/references/online-ddl.md +41 -0
  594. package/skills/nestjs-patterns/SKILL.md +114 -0
  595. package/skills/nestjs-patterns/evals/triggers.json +16 -0
  596. package/skills/nestjs-patterns/references/testing.md +68 -0
  597. package/skills/network-automation/SKILL.md +107 -0
  598. package/skills/network-automation/evals/triggers.json +18 -0
  599. package/skills/network-automation/references/tool-snippets.md +153 -0
  600. package/skills/network-design/SKILL.md +98 -0
  601. package/skills/network-design/evals/triggers.json +16 -0
  602. package/skills/network-troubleshooting/SKILL.md +152 -0
  603. package/skills/network-troubleshooting/evals/triggers.json +18 -0
  604. package/skills/network-troubleshooting/references/commands.md +33 -0
  605. package/skills/nextjs-patterns/SKILL.md +150 -0
  606. package/skills/nextjs-patterns/evals/triggers.json +18 -0
  607. package/skills/nextjs-patterns/references/caching.md +87 -0
  608. package/skills/node-backend-patterns/SKILL.md +103 -0
  609. package/skills/node-backend-patterns/evals/triggers.json +16 -0
  610. package/skills/node-backend-patterns/references/templates.md +122 -0
  611. package/skills/nuxt-patterns/SKILL.md +103 -0
  612. package/skills/nuxt-patterns/evals/triggers.json +16 -0
  613. package/skills/observability/SKILL.md +125 -0
  614. package/skills/observability/evals/triggers.json +17 -0
  615. package/skills/observability/references/otel-setup.md +87 -0
  616. package/skills/observability/references/slo-alerts.md +70 -0
  617. package/skills/open-source-release/SKILL.md +107 -0
  618. package/skills/open-source-release/evals/triggers.json +15 -0
  619. package/skills/open-source-release/references/history-scrub.md +65 -0
  620. package/skills/parallel-agent-orchestration/SKILL.md +106 -0
  621. package/skills/parallel-agent-orchestration/evals/triggers.json +14 -0
  622. package/skills/patent-research/SKILL.md +94 -0
  623. package/skills/patent-research/evals/triggers.json +16 -0
  624. package/skills/patent-research/references/databases-and-queries.md +52 -0
  625. package/skills/paystack-integration/SKILL.md +59 -0
  626. package/skills/paystack-integration/evals/triggers.json +14 -0
  627. package/skills/paystack-integration/references/api.md +73 -0
  628. package/skills/paystack-integration/references/mobile-money.md +50 -0
  629. package/skills/paystack-integration/references/webhooks.md +80 -0
  630. package/skills/pci-dss-scope/SKILL.md +103 -0
  631. package/skills/pci-dss-scope/evals/triggers.json +18 -0
  632. package/skills/pci-dss-scope/references/saq-and-data.md +36 -0
  633. package/skills/perl-patterns/SKILL.md +135 -0
  634. package/skills/perl-patterns/evals/triggers.json +18 -0
  635. package/skills/perl-testing/SKILL.md +126 -0
  636. package/skills/perl-testing/evals/triggers.json +17 -0
  637. package/skills/php-patterns/SKILL.md +116 -0
  638. package/skills/php-patterns/evals/triggers.json +16 -0
  639. package/skills/php-testing/SKILL.md +123 -0
  640. package/skills/php-testing/evals/triggers.json +16 -0
  641. package/skills/postgres-patterns/SKILL.md +103 -0
  642. package/skills/postgres-patterns/evals/triggers.json +17 -0
  643. package/skills/postgres-patterns/references/explain.md +59 -0
  644. package/skills/postgres-patterns/references/locks.md +53 -0
  645. package/skills/prd-writing/SKILL.md +124 -0
  646. package/skills/prd-writing/evals/triggers.json +15 -0
  647. package/skills/prisma-patterns/SKILL.md +83 -0
  648. package/skills/prisma-patterns/evals/triggers.json +18 -0
  649. package/skills/prisma-patterns/references/prisma-8.md +46 -0
  650. package/skills/prisma-patterns/references/workflow.md +50 -0
  651. package/skills/privacy-compliance/SKILL.md +121 -0
  652. package/skills/privacy-compliance/evals/triggers.json +18 -0
  653. package/skills/privacy-compliance/references/jurisdictions.md +51 -0
  654. package/skills/production-scheduling/SKILL.md +98 -0
  655. package/skills/production-scheduling/evals/triggers.json +16 -0
  656. package/skills/prompt-engineering/SKILL.md +92 -0
  657. package/skills/prompt-engineering/evals/triggers.json +16 -0
  658. package/skills/prospect-research/SKILL.md +87 -0
  659. package/skills/prospect-research/evals/triggers.json +16 -0
  660. package/skills/python-app-distribution/SKILL.md +107 -0
  661. package/skills/python-app-distribution/evals/triggers.json +16 -0
  662. package/skills/python-app-distribution/references/pypi-trusted-publishing.md +55 -0
  663. package/skills/python-app-distribution/references/windows-macos-signing.md +70 -0
  664. package/skills/python-patterns/SKILL.md +107 -0
  665. package/skills/python-patterns/evals/triggers.json +16 -0
  666. package/skills/python-patterns/references/tooling.md +101 -0
  667. package/skills/python-testing/SKILL.md +126 -0
  668. package/skills/python-testing/evals/triggers.json +16 -0
  669. package/skills/python-testing/references/mocking.md +71 -0
  670. package/skills/pytorch-patterns/SKILL.md +139 -0
  671. package/skills/pytorch-patterns/evals/triggers.json +16 -0
  672. package/skills/pytorch-patterns/references/debugging.md +39 -0
  673. package/skills/quality-nonconformance/SKILL.md +107 -0
  674. package/skills/quality-nonconformance/evals/triggers.json +16 -0
  675. package/skills/quality-nonconformance/references/8d-and-capa.md +46 -0
  676. package/skills/quarkus-patterns/SKILL.md +93 -0
  677. package/skills/quarkus-patterns/evals/triggers.json +18 -0
  678. package/skills/rag-pipeline-patterns/SKILL.md +117 -0
  679. package/skills/rag-pipeline-patterns/evals/triggers.json +18 -0
  680. package/skills/rag-pipeline-patterns/references/evaluation.md +37 -0
  681. package/skills/rag-pipeline-patterns/references/retrieval-recipes.md +78 -0
  682. package/skills/rails-patterns/SKILL.md +132 -0
  683. package/skills/rails-patterns/evals/triggers.json +16 -0
  684. package/skills/react-native-patterns/SKILL.md +101 -0
  685. package/skills/react-native-patterns/evals/triggers.json +16 -0
  686. package/skills/react-patterns/SKILL.md +140 -0
  687. package/skills/react-patterns/evals/triggers.json +18 -0
  688. package/skills/react-performance/SKILL.md +107 -0
  689. package/skills/react-performance/evals/triggers.json +18 -0
  690. package/skills/react-testing/SKILL.md +121 -0
  691. package/skills/react-testing/evals/triggers.json +18 -0
  692. package/skills/react-testing/references/msw.md +64 -0
  693. package/skills/react-testing/references/queries.md +41 -0
  694. package/skills/react-testing/references/setup.md +74 -0
  695. package/skills/recommender-systems/SKILL.md +119 -0
  696. package/skills/recommender-systems/evals/triggers.json +16 -0
  697. package/skills/recommender-systems/references/evaluation.md +39 -0
  698. package/skills/redis-patterns/SKILL.md +109 -0
  699. package/skills/redis-patterns/evals/triggers.json +18 -0
  700. package/skills/redis-patterns/references/operations.md +61 -0
  701. package/skills/refactoring-safely/SKILL.md +107 -0
  702. package/skills/refactoring-safely/evals/behavior.json +57 -0
  703. package/skills/refactoring-safely/evals/triggers.json +17 -0
  704. package/skills/release-management/SKILL.md +141 -0
  705. package/skills/release-management/evals/triggers.json +16 -0
  706. package/skills/remotion-video/SKILL.md +91 -0
  707. package/skills/remotion-video/evals/triggers.json +16 -0
  708. package/skills/remotion-video/references/lambda.md +66 -0
  709. package/skills/reproducible-dev-environments/SKILL.md +132 -0
  710. package/skills/reproducible-dev-environments/evals/triggers.json +16 -0
  711. package/skills/responding-to-code-review/SKILL.md +124 -0
  712. package/skills/responding-to-code-review/evals/behavior.json +54 -0
  713. package/skills/responding-to-code-review/evals/triggers.json +16 -0
  714. package/skills/returns-reverse-logistics/SKILL.md +97 -0
  715. package/skills/returns-reverse-logistics/evals/triggers.json +16 -0
  716. package/skills/ruby-patterns/SKILL.md +127 -0
  717. package/skills/ruby-patterns/evals/triggers.json +18 -0
  718. package/skills/ruby-testing/SKILL.md +113 -0
  719. package/skills/ruby-testing/evals/triggers.json +18 -0
  720. package/skills/runbook-writing/SKILL.md +101 -0
  721. package/skills/runbook-writing/evals/triggers.json +14 -0
  722. package/skills/rust-patterns/SKILL.md +118 -0
  723. package/skills/rust-patterns/evals/triggers.json +16 -0
  724. package/skills/rust-patterns/references/cargo-and-clippy.md +105 -0
  725. package/skills/rust-patterns/references/errors-and-traits.md +97 -0
  726. package/skills/rust-testing/SKILL.md +148 -0
  727. package/skills/rust-testing/evals/triggers.json +16 -0
  728. package/skills/rust-testing/references/fakes-proptest-async.md +113 -0
  729. package/skills/search-first/SKILL.md +73 -0
  730. package/skills/search-first/evals/triggers.json +14 -0
  731. package/skills/security-review/SKILL.md +58 -0
  732. package/skills/security-review/evals/behavior.json +56 -0
  733. package/skills/security-review/evals/triggers.json +14 -0
  734. package/skills/security-review/references/checklist.md +54 -0
  735. package/skills/security-review/scripts/scan-secrets.js +79 -0
  736. package/skills/seo-audit/SKILL.md +111 -0
  737. package/skills/seo-audit/evals/triggers.json +16 -0
  738. package/skills/seo-audit/references/checks.md +65 -0
  739. package/skills/session-handoff/SKILL.md +101 -0
  740. package/skills/session-handoff/evals/behavior.json +55 -0
  741. package/skills/session-handoff/evals/triggers.json +14 -0
  742. package/skills/skill-authoring/SKILL.md +98 -0
  743. package/skills/skill-authoring/evals/triggers.json +15 -0
  744. package/skills/skill-authoring/references/frontmatter.md +40 -0
  745. package/skills/skill-authoring/references/pressure-testing.md +87 -0
  746. package/skills/slack-app-integration/SKILL.md +108 -0
  747. package/skills/slack-app-integration/evals/triggers.json +17 -0
  748. package/skills/slide-decks/SKILL.md +107 -0
  749. package/skills/slide-decks/evals/triggers.json +18 -0
  750. package/skills/slide-decks/references/html-decks.md +86 -0
  751. package/skills/slide-decks/references/layouts.md +45 -0
  752. package/skills/slide-decks/references/pptx.md +87 -0
  753. package/skills/smart-contract-security/SKILL.md +110 -0
  754. package/skills/smart-contract-security/evals/triggers.json +16 -0
  755. package/skills/smart-contract-security/references/vulnerability-checklist.md +79 -0
  756. package/skills/social-media-publishing/SKILL.md +84 -0
  757. package/skills/social-media-publishing/evals/triggers.json +17 -0
  758. package/skills/social-media-publishing/references/platform-apis.md +116 -0
  759. package/skills/solidity-patterns/SKILL.md +95 -0
  760. package/skills/solidity-patterns/evals/triggers.json +16 -0
  761. package/skills/spring-boot-patterns/SKILL.md +128 -0
  762. package/skills/spring-boot-patterns/evals/triggers.json +18 -0
  763. package/skills/spring-boot-patterns/references/testing.md +72 -0
  764. package/skills/stripe-integration/SKILL.md +69 -0
  765. package/skills/stripe-integration/evals/triggers.json +16 -0
  766. package/skills/stripe-integration/references/api.md +71 -0
  767. package/skills/stripe-integration/references/billing.md +58 -0
  768. package/skills/stripe-integration/references/webhooks.md +76 -0
  769. package/skills/subagent-driven-development/SKILL.md +109 -0
  770. package/skills/subagent-driven-development/evals/behavior.json +53 -0
  771. package/skills/subagent-driven-development/evals/triggers.json +15 -0
  772. package/skills/subagent-driven-development/references/implementer-brief.md +60 -0
  773. package/skills/subagent-driven-development/references/reviewer-briefs.md +52 -0
  774. package/skills/subscription-billing-ops/SKILL.md +118 -0
  775. package/skills/subscription-billing-ops/evals/triggers.json +17 -0
  776. package/skills/subscription-billing-ops/references/proration.md +47 -0
  777. package/skills/subscription-billing-ops/references/revenue-metrics.md +38 -0
  778. package/skills/svelte-patterns/SKILL.md +122 -0
  779. package/skills/svelte-patterns/evals/triggers.json +16 -0
  780. package/skills/swift-patterns/SKILL.md +113 -0
  781. package/skills/swift-patterns/evals/triggers.json +16 -0
  782. package/skills/swift-patterns/references/concurrency-migration.md +40 -0
  783. package/skills/swift-testing/SKILL.md +121 -0
  784. package/skills/swift-testing/evals/triggers.json +16 -0
  785. package/skills/swift-testing/references/swift-testing-cheatsheet.md +81 -0
  786. package/skills/swiftui-patterns/SKILL.md +102 -0
  787. package/skills/swiftui-patterns/evals/triggers.json +16 -0
  788. package/skills/systematic-debugging/SKILL.md +92 -0
  789. package/skills/systematic-debugging/evals/behavior.json +59 -0
  790. package/skills/systematic-debugging/evals/triggers.json +16 -0
  791. package/skills/systematic-debugging/references/condition-waiting.md +52 -0
  792. package/skills/systematic-debugging/references/root-cause-tracing.md +49 -0
  793. package/skills/systematic-debugging/references/test-pollution.md +46 -0
  794. package/skills/tdd-workflow/SKILL.md +69 -0
  795. package/skills/tdd-workflow/evals/behavior.json +55 -0
  796. package/skills/tdd-workflow/evals/triggers.json +15 -0
  797. package/skills/tdd-workflow/references/testing-anti-patterns.md +87 -0
  798. package/skills/technical-writing/SKILL.md +95 -0
  799. package/skills/technical-writing/evals/triggers.json +14 -0
  800. package/skills/terraform-patterns/SKILL.md +122 -0
  801. package/skills/terraform-patterns/evals/triggers.json +16 -0
  802. package/skills/terraform-patterns/references/backends.md +67 -0
  803. package/skills/test-coverage-improvement/SKILL.md +107 -0
  804. package/skills/test-coverage-improvement/evals/triggers.json +16 -0
  805. package/skills/threat-modeling/SKILL.md +113 -0
  806. package/skills/threat-modeling/evals/triggers.json +16 -0
  807. package/skills/transactional-email/SKILL.md +68 -0
  808. package/skills/transactional-email/evals/triggers.json +17 -0
  809. package/skills/transactional-email/references/providers.md +63 -0
  810. package/skills/typescript-patterns/SKILL.md +122 -0
  811. package/skills/typescript-patterns/evals/triggers.json +16 -0
  812. package/skills/typescript-testing/SKILL.md +101 -0
  813. package/skills/typescript-testing/evals/triggers.json +16 -0
  814. package/skills/ui-demo-recording/SKILL.md +93 -0
  815. package/skills/ui-demo-recording/evals/triggers.json +16 -0
  816. package/skills/ui-demo-recording/references/cursor-and-captions.md +48 -0
  817. package/skills/ui-demo-recording/references/playwright-recording.md +63 -0
  818. package/skills/ui-demo-recording/references/post-processing.md +57 -0
  819. package/skills/ui-design-polish/SKILL.md +113 -0
  820. package/skills/ui-design-polish/evals/triggers.json +18 -0
  821. package/skills/ui-design-polish/references/detail-checklist.md +45 -0
  822. package/skills/ui-design-polish/references/tokens.md +68 -0
  823. package/skills/ui-flow-audit/SKILL.md +112 -0
  824. package/skills/ui-flow-audit/evals/triggers.json +17 -0
  825. package/skills/ui-motion/SKILL.md +103 -0
  826. package/skills/ui-motion/evals/triggers.json +18 -0
  827. package/skills/ui-motion/references/patterns.md +138 -0
  828. package/skills/ui-motion/references/tokens.md +52 -0
  829. package/skills/unicode-text-processing/SKILL.md +103 -0
  830. package/skills/unicode-text-processing/evals/triggers.json +17 -0
  831. package/skills/unicode-text-processing/references/apis.md +89 -0
  832. package/skills/unicode-text-processing/references/script-notes.md +50 -0
  833. package/skills/verification-loop/SKILL.md +70 -0
  834. package/skills/verification-loop/evals/behavior.json +52 -0
  835. package/skills/verification-loop/evals/triggers.json +14 -0
  836. package/skills/verification-loop/scripts/detect-checks.js +102 -0
  837. package/skills/video-editing/SKILL.md +111 -0
  838. package/skills/video-editing/evals/triggers.json +16 -0
  839. package/skills/video-editing/references/edl-and-logging.md +44 -0
  840. package/skills/video-editing/references/ffmpeg-edit-recipes.md +92 -0
  841. package/skills/video-editing/references/resolve-scripting.md +53 -0
  842. package/skills/vite-patterns/SKILL.md +117 -0
  843. package/skills/vite-patterns/evals/triggers.json +16 -0
  844. package/skills/vue-patterns/SKILL.md +104 -0
  845. package/skills/vue-patterns/evals/triggers.json +16 -0
  846. package/skills/web-accessibility/SKILL.md +119 -0
  847. package/skills/web-accessibility/evals/triggers.json +16 -0
  848. package/skills/web-performance/SKILL.md +107 -0
  849. package/skills/web-performance/evals/triggers.json +16 -0
  850. package/skills/web-scraping/SKILL.md +80 -0
  851. package/skills/web-scraping/evals/triggers.json +16 -0
@@ -0,0 +1,71 @@
1
+ # Mocking and patching in pytest
2
+
3
+ Read this when a test needs to replace a dependency and the short rules in `SKILL.md` aren't enough.
4
+
5
+ ## Where to patch
6
+
7
+ ```python
8
+ # app/http.py
9
+ def post(url, data): ...
10
+
11
+ # app/billing.py
12
+ from app.http import post
13
+ def charge(amount): return post("/charge", {"amount": amount})
14
+ ```
15
+
16
+ - `patch("app.billing.post")` works: `charge` looks up `post` in `app.billing`.
17
+ - `patch("app.http.post")` does nothing for `charge`, because `app.billing` already holds its own reference.
18
+ - If the module does `import app.http` and calls `app.http.post(...)`, then patch `app.http.post`.
19
+
20
+ ## monkeypatch vs unittest.mock
21
+
22
+ | Need | Use |
23
+ |---|---|
24
+ | Set or remove an env var | `monkeypatch.setenv` / `monkeypatch.delenv` |
25
+ | Replace a function with a simple fake | `monkeypatch.setattr("app.billing.post", fake_post)` |
26
+ | Assert how a boundary was called | `mocker.patch(...)` (pytest-mock) or `unittest.mock.patch(...)` |
27
+ | Fake an object with a real class's signature | `create_autospec(RealClass, instance=True)` |
28
+ | Fake an `async def` | `AsyncMock`, or `patch(..., autospec=True)` on the coroutine function |
29
+
30
+ Both monkeypatch and `patch` used as a context manager or decorator undo themselves. A `patch(...).start()` without `.stop()` leaks into later tests; use `mocker` (pytest-mock) or a fixture with `yield` instead.
31
+
32
+ ## Asserting calls
33
+
34
+ ```python
35
+ from unittest.mock import patch
36
+
37
+ def test_charge_posts_amount():
38
+ with patch("app.billing.post", autospec=True) as post:
39
+ post.return_value = {"ok": True}
40
+ charge(500)
41
+ post.assert_called_once_with("/charge", {"amount": 500})
42
+ ```
43
+
44
+ - A plain `Mock` raises `AttributeError` for misspelled names starting with `assert` / `assret` / `asert` / `aseert` / `assrt`. On Python before 3.12, `post.called_once_with(...)` (no `assert_`) just creates a child mock and the test passes without checking anything; 3.12 also rejects that. Autospecced mocks reject unknown attributes on every version, so prefer `autospec=True`.
45
+ - `side_effect=Exception("boom")` to test error paths; `side_effect=[1, 2, StopIteration]` for sequences.
46
+
47
+ ## Fakes over mocks
48
+
49
+ For repositories, caches and queues, an in-memory fake is clearer than a mock:
50
+
51
+ ```python
52
+ class FakeUserRepo:
53
+ def __init__(self): self.users = {}
54
+ def get(self, uid): return self.users.get(uid)
55
+ def save(self, user): self.users[user.id] = user
56
+ ```
57
+
58
+ Inject it through the constructor or a fixture. The test then asserts on state (`repo.users`) instead of call sequences.
59
+
60
+ ## HTTP
61
+
62
+ - httpx: `respx` (`respx.mock` fixture or decorator) or `httpx.MockTransport`.
63
+ - requests: `responses` (`@responses.activate`) or `requests-mock`.
64
+ - Block accidental real calls in CI: the project's choice, for example pytest-socket's `--disable-socket`.
65
+
66
+ ## Common pitfalls
67
+
68
+ - Patching `datetime.datetime.now` directly fails (built-in type). Inject a clock or use `time-machine` / `freezegun`.
69
+ - `MagicMock` is truthy and returns more mocks for any attribute, so code under test can "succeed" on nonsense. Autospec, or use a fake.
70
+ - Mocks in a `session`-scoped fixture are shared by every test; keep mocks `function`-scoped.
71
+ - Over-mocking: if a test patches more than two or three things, test a smaller unit or use a fake.
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: pytorch-patterns
3
+ description: Writes and fixes PyTorch training code, covering nn.Module and training loop structure, device and dtype placement, DataLoader setup, torch.amp mixed precision, checkpoint save and resume, seeding for reproducibility, and tracking down NaN losses and tensor shape errors. Use when building or debugging a PyTorch model, a training or evaluation loop, or a checkpoint that will not load.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs Python and PyTorch 2.x; GPU sections assume CUDA but the rules hold for CPU and MPS.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: ai
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "python"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # PyTorch patterns
15
+
16
+ Write training code that runs the same way twice, fails loudly on bad shapes, and can resume after a crash. For how to design the experiment itself (splits, baselines, metrics), use the `ml-experiment-workflow` skill instead.
17
+
18
+ ## 0. Before you write code
19
+
20
+ 1. Find the PyTorch version (`python -c "import torch; print(torch.__version__)"`) and the target device. Write for that version.
21
+ 2. Find the existing training entry point, config and data code. Extend them; do not start a second training script.
22
+ 3. **Stop and ask the user** if the target device, the metric being optimised, or the expected input shape is unclear.
23
+
24
+ ## 1. Structure
25
+
26
+ - One `nn.Module` per model. `__init__` builds layers; `forward` only computes. No data loading, logging or `.to(device)` inside `forward`.
27
+ - Keep three separate functions: `train_one_epoch(model, loader, optimizer, ...)`, `evaluate(model, loader)`, and a `main()` that wires config, data, model and checkpoints.
28
+ - Put hyperparameters in one config object (dataclass, YAML, argparse). Save it next to every checkpoint.
29
+ - Register non-trainable tensors with `self.register_buffer(...)` so they move with `.to()` and land in `state_dict`. Store sub-modules in `nn.ModuleList`/`nn.ModuleDict`, never a plain list or dict, or their parameters are invisible to the optimizer.
30
+
31
+ ## 2. The training step
32
+
33
+ ```python
34
+ use_amp = device.type == "cuda"
35
+ scaler = torch.amp.GradScaler("cuda", enabled=use_amp and amp_dtype == torch.float16)
36
+ model.train()
37
+ for x, y in loader:
38
+ x, y = x.to(device, non_blocking=True), y.to(device, non_blocking=True)
39
+ optimizer.zero_grad(set_to_none=True)
40
+ with torch.amp.autocast(device_type=device.type, dtype=amp_dtype, enabled=use_amp):
41
+ loss = criterion(model(x), y)
42
+ scaler.scale(loss).backward()
43
+ scaler.unscale_(optimizer) # only if clipping
44
+ torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm)
45
+ scaler.step(optimizer)
46
+ scaler.update()
47
+ scheduler.step() # per-step schedulers only
48
+ ```
49
+
50
+ Evaluation:
51
+
52
+ ```python
53
+ model.eval()
54
+ with torch.inference_mode():
55
+ for x, y in loader: ...
56
+ ```
57
+
58
+ Rules:
59
+
60
+ - Always pair `model.train()` / `model.eval()`. Forgetting `eval()` leaves dropout on and batch norm updating running stats.
61
+ - Log `loss.item()` (or `.detach()`) not `loss`, or you keep the whole graph alive and leak memory.
62
+ - Call `scheduler.step()` after `optimizer.step()`. Decide once whether the scheduler steps per batch or per epoch and match the schedule's length to that.
63
+ - For gradient accumulation, divide the loss by the number of accumulation steps and only step/zero the optimizer every N batches.
64
+
65
+ ## 3. Device and dtype
66
+
67
+ - Pick the device once: `device = torch.device("cuda" if torch.cuda.is_available() else "cpu")` (add `"mps"` if the project targets Apple silicon). Pass it down; do not call `.cuda()` in scattered places.
68
+ - Move the model to the device **before** creating the optimizer.
69
+ - Create new tensors on the right device and dtype: `torch.zeros(n, device=x.device, dtype=x.dtype)`, not `torch.zeros(n).to(...)` later.
70
+ - Classification targets for `CrossEntropyLoss` are `long` class indices of shape `(N,)` (or probabilities of shape `(N, C)`); logits are raw, no softmax first. `BCEWithLogitsLoss` takes float targets the same shape as the logits.
71
+
72
+ ## 4. Data loading
73
+
74
+ - `Dataset.__getitem__` returns one sample; batching is the `DataLoader`'s job.
75
+ - Training loader: `shuffle=True`, `num_workers>0`, `pin_memory=True` on CUDA, `persistent_workers=True` when `num_workers>0`, `drop_last=True` if batch norm sees tiny last batches.
76
+ - Eval loader: `shuffle=False`, `drop_last=False`, so every sample is scored once.
77
+ - Fit normalisation statistics, vocabularies and tokenizers on the training split only.
78
+ - First debug step for a slow loop: time an epoch with the model step removed. If the loader alone is slow, fix the loader before touching the model.
79
+
80
+ ## 5. Mixed precision
81
+
82
+ - Use the device-generic API: `torch.amp.autocast("cuda", dtype=...)` and `torch.amp.GradScaler("cuda")`. `torch.cuda.amp.*` is deprecated.
83
+ - `float16` needs a `GradScaler`. `bfloat16` (Ampere-class GPUs and newer, and CPU) has float32's range and is normally run without one; pass `enabled=False` to the scaler so the loop stays the same.
84
+ - Wrap only the forward pass and loss in `autocast`. Run `backward()` outside it.
85
+ - Use built-in ops for precision-sensitive maths (`log_softmax`, `cross_entropy`, `mse_loss`, `binary_cross_entropy_with_logits`): autocast runs these in float32. Hand-written `exp`/`log`/sum chains get no such protection.
86
+
87
+ ## 6. Checkpoints
88
+
89
+ Save everything needed to resume, not just the weights:
90
+
91
+ ```python
92
+ torch.save({
93
+ "model": model.state_dict(), "optimizer": optimizer.state_dict(),
94
+ "scheduler": scheduler.state_dict(), "scaler": scaler.state_dict(),
95
+ "epoch": epoch, "step": step, "config": asdict(cfg),
96
+ "rng": {"torch": torch.get_rng_state(), "cuda": torch.cuda.get_rng_state_all()},
97
+ }, tmp_path)
98
+ os.replace(tmp_path, path) # atomic: a crash never leaves a half-written file
99
+ ```
100
+
101
+ - Load with `torch.load(path, map_location=device)`. Since PyTorch 2.6 the default is `weights_only=True`, so a checkpoint holding custom objects fails to load. Store plain types (dicts, lists, tensors, numbers) instead, or allowlist the class with `torch.serialization.add_safe_globals([...])`. Only pass `weights_only=False` for files you created yourself.
102
+ - If the model was wrapped (`DistributedDataParallel`, `torch.compile`), save the unwrapped module's `state_dict` (`model.module` or `model._orig_mod`) so keys have no `module.` / `_orig_mod.` prefix.
103
+ - Keep the best checkpoint (by validation metric) separate from the latest one.
104
+
105
+ ## 7. Reproducibility
106
+
107
+ ```python
108
+ def seed_everything(seed: int):
109
+ random.seed(seed); np.random.seed(seed); torch.manual_seed(seed) # seeds all devices
110
+ ```
111
+
112
+ - DataLoader workers: pass `generator=torch.Generator().manual_seed(seed)` and a `worker_init_fn` that seeds NumPy and `random` from `torch.initial_seed() % 2**32`.
113
+ - For bit-exact runs: `torch.use_deterministic_algorithms(True)`, `torch.backends.cudnn.benchmark = False`, and set the environment variable `CUBLAS_WORKSPACE_CONFIG=:4096:8` before CUDA starts. This costs speed; turn it on for debugging and comparisons, not by default.
114
+ - Log the seed, the git commit and the library versions with each run.
115
+
116
+ ## 8. Debugging
117
+
118
+ Read `references/debugging.md` for the full NaN and shape checklists. The short version:
119
+
120
+ - **Shape errors**: print `x.shape` at each layer boundary for one batch, or assert expected shapes (`assert x.shape[1:] == (3, 224, 224), x.shape`). Watch for silent broadcasting: `(N,)` minus `(N, 1)` gives `(N, N)` without an error.
121
+ - **NaN or inf loss**: check the input batch first (`torch.isfinite(x).all()`), then the learning rate, then the loss (log of zero, division by zero), then fp16 overflow. Turn on `torch.autograd.set_detect_anomaly(True)` for one short run to find the op that produced it; it is slow, never leave it on.
122
+ - **Loss does not go down**: overfit a single batch of 2 to 32 samples. If the model can't drive loss near zero on one batch, the bug is in the model, loss or labels, not in the hyperparameters.
123
+
124
+ ## Never
125
+
126
+ - Never call `model(x)` for evaluation without `model.eval()` and `inference_mode()`/`no_grad()`.
127
+ - Never apply softmax before `CrossEntropyLoss` or sigmoid before `BCEWithLogitsLoss`.
128
+ - Never `torch.load` an untrusted file with `weights_only=False`.
129
+ - Never compare runs that used different seeds, data splits or eval code without saying so.
130
+
131
+ ## Report
132
+
133
+ When you change training code, end with:
134
+
135
+ ```
136
+ Changed: <files and what changed>
137
+ Verified: <command run, e.g. one-batch overfit or 1-epoch smoke run, and its result>
138
+ Not checked: <e.g. multi-GPU, full-length run>
139
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "My PyTorch training loss turns into NaN after about 300 steps, help me find out why",
4
+ "Add bf16 mixed precision and gradient clipping to this torch training loop",
5
+ "RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2048 and 512x10) in my nn.Module",
6
+ "Make my PyTorch checkpoints resumable, including optimizer and scheduler state",
7
+ "Two runs of the same torch script with seed 42 give different accuracy, make it deterministic"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Set up a proper train/validation/test split and a baseline before we try the transformer",
11
+ "Review this training notebook for data leakage and wrong metrics before we publish the results",
12
+ "Write pytest unit tests for the Python utility module that parses CSV files",
13
+ "Build a retrieval pipeline that chunks our docs and stores embeddings in pgvector",
14
+ "Write an eval harness that scores our chatbot's answers against a golden set"
15
+ ]
16
+ }
@@ -0,0 +1,39 @@
1
+ # PyTorch debugging checklists
2
+
3
+ Read this when a run produces NaN/inf, a shape error, or a loss that will not move.
4
+
5
+ ## NaN or inf loss
6
+
7
+ Work top to bottom and stop at the first thing that is wrong.
8
+
9
+ 1. **Inputs.** For the failing batch: `torch.isfinite(x).all()`, `x.min()`, `x.max()`. Missing values in tabular data, empty images and divide-by-zero in preprocessing are the most common cause.
10
+ 2. **Labels.** Class indices must be in `[0, num_classes)`. An out-of-range label on CUDA often shows as a device-side assert; rerun on CPU, or with `CUDA_LAUNCH_BLOCKING=1`, to get a readable traceback.
11
+ 3. **Learning rate.** Drop it by 10x. If the NaN disappears, add warmup or gradient clipping (`clip_grad_norm_`) rather than keeping the smaller rate blindly.
12
+ 4. **Loss maths.** Replace hand-written `log(softmax(x))` with `log_softmax` or the built-in loss; add `eps` to denominators and to `sqrt`/`log` arguments.
13
+ 5. **Mixed precision.** Rerun with autocast disabled. If fp32 is stable, switch to bfloat16 or check that the `GradScaler` is used and that its scale is not collapsing (`scaler.get_scale()`).
14
+ 6. **Find the op.** Wrap one short run in `torch.autograd.set_detect_anomaly(True)`; the error names the backward op that produced the NaN. Or register forward hooks that assert `torch.isfinite(output).all()` per module.
15
+
16
+ ## Shape errors
17
+
18
+ 1. Print the shapes at the error line, and the shapes of the inputs to the module that raised it.
19
+ 2. Check the layer's expected layout: `Conv2d` wants `(N, C, H, W)`, `nn.Linear` acts on the last dimension, `nn.LSTM`/`nn.MultiheadAttention` default to `batch_first=False` (`(T, N, E)`).
20
+ 3. A `Linear` input-size mismatch after a conv stack: compute it from a dummy forward (`model.features(torch.zeros(1, *input_shape)).shape`) or use `nn.LazyLinear`.
21
+ 4. **Silent broadcasting.** These run without error and give wrong numbers:
22
+ - `pred` of shape `(N, 1)` with `target` of shape `(N,)` in `MSELoss` or arithmetic: result is `(N, N)`. PyTorch warns for `MSELoss`; it does not warn for plain arithmetic.
23
+ - `x.sum()` or `x.mean()` without `dim=` collapsing the batch.
24
+ - `view` after `permute`/`transpose` on a non-contiguous tensor raises; `reshape` silently copies. Neither is wrong, but a `view(N, -1)` over the wrong axis order scrambles data. Check with a small hand-made tensor.
25
+ 5. Add shape asserts at module boundaries in the fixed code, so the next regression fails loudly.
26
+
27
+ ## Loss does not decrease
28
+
29
+ 1. Overfit one small batch for a few hundred steps. Failure means a bug, not tuning.
30
+ 2. Check the optimizer sees the parameters: `sum(p.numel() for g in optimizer.param_groups for p in g["params"])` equals the model's trainable count.
31
+ 3. Check gradients flow: after `backward()`, every trainable parameter has a non-None, non-zero `.grad`. A `None` grad usually means a `.detach()`, `.item()`, `torch.no_grad()` or a NumPy round-trip broke the graph.
32
+ 4. Check `optimizer.zero_grad()` is called each step, and that `requires_grad` is not off on layers you meant to train.
33
+ 5. Check the labels line up with the inputs (shuffle applied to one but not the other, off-by-one in a sequence target).
34
+
35
+ ## Out of memory
36
+
37
+ 1. Log `torch.cuda.max_memory_allocated()` per step.
38
+ 2. Look for tensors kept across steps: accumulating `loss` instead of `loss.item()`, appending outputs to a list during training.
39
+ 3. Then reduce batch size with gradient accumulation, enable mixed precision, or use activation checkpointing (`torch.utils.checkpoint.checkpoint`).
@@ -0,0 +1,107 @@
1
+ ---
2
+ name: quality-nonconformance
3
+ description: Nonconformance report (NCR) and corrective and preventive action (CAPA) workflow for regulated manufacturing such as medical devices under FDA's Quality Management System Regulation (21 CFR 820, which incorporates ISO 13485:2016) and automotive suppliers under IATF 16949, covering NCR intake and severity triage, containment and quarantine, root cause analysis with 5 Whys, Ishikawa diagrams and 8D, disposition decisions (use as is, rework, repair, scrap, return to supplier), CAPA plans, and effectiveness verification before closure. Use when a part, lot or process fails a specification, a customer complaint or audit finding needs a CAPA, you are writing or fixing an NCR or CAPA procedure or tracker, or a corrective action keeps failing to stop a repeat defect.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Works from the user's NCR, inspection, complaint and production records. Quotes clause numbers, not licensed standard text; the user needs their own copies of ISO 13485 and IATF 16949. Not regulatory or legal advice.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: compliance
9
+ kete-loom/risk: read-only
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Quality nonconformance and CAPA
14
+
15
+ Stop bad product reaching the customer, find the cause that actually explains the defect, fix it so it does not come back, and leave a record an auditor can follow. This skill structures the work; the organisation's quality management system (QMS) procedures and its quality and regulatory staff decide.
16
+
17
+ ## Boundary: when a qualified person must decide
18
+
19
+ **Stop and tell the user a qualified quality or regulatory person must decide**, and do not draft a conclusion for them, when:
20
+
21
+ - The defect could affect patient or user safety, or a device already shipped: field action, recall, correction or removal, and Medical Device Reporting (21 CFR 803) or reports of corrections and removals (21 CFR 806) decisions belong to regulatory affairs.
22
+ - A disposition would ship product outside specification (use as is, concession or deviation). Automotive: the customer must authorise it in writing under IATF 16949 and the customer's own requirements.
23
+ - A design change, validated process change, or supplier change follows from the CAPA; it needs the change control and, where required, revalidation or customer approval (for example a PPAP resubmission).
24
+ - Anyone asks to close a CAPA without objective evidence of effectiveness.
25
+
26
+ ## 1. Intake: open the NCR
27
+
28
+ Record, from evidence, not memory:
29
+
30
+ 1. What failed: part number, revision, lot or serial numbers, quantity affected and quantity inspected.
31
+ 2. Requirement violated: drawing, specification, procedure or customer requirement, with revision.
32
+ 3. Where found (incoming, in process, final inspection, customer, field, audit) and by whom, when.
33
+ 4. Objective evidence: measurements, photos, test records.
34
+ 5. Severity and risk: link to the product's risk file (ISO 14971 risk management for devices; PFMEA and control plan for automotive). A failure mode not in the risk file is itself a finding.
35
+
36
+ Number every NCR, never delete one, and keep its history (records and electronic signatures under 21 CFR Part 11 if records are electronic and the site is FDA-regulated).
37
+
38
+ ## 2. Containment, within hours
39
+
40
+ 1. Quarantine and tag all suspect material: in stock, in process, in transit, at suppliers, at distribution.
41
+ 2. Define the suspect range from the last known good to the first known good, using lot traceability. If you cannot bound it, widen it.
42
+ 3. Add a 100% check or sort at the point of detection until the fix is proven, and record results.
43
+ 4. Decide whether the customer must be told now (automotive customers usually require notification; device field impact goes to regulatory per the boundary above).
44
+
45
+ Containment is not correction. Record both separately.
46
+
47
+ ## 3. Root cause
48
+
49
+ Pick the method by the problem, and check the cause against the data:
50
+
51
+ - **5 Whys** for a single, clear failure chain. Each "why" must be backed by evidence. Stop at a cause the organisation can control and that, if removed, would have prevented the defect.
52
+ - **Ishikawa (fishbone)** when several causes are possible: list candidates under Man (people), Machine, Method, Material, Measurement, Environment, then test each one with data.
53
+ - **8D** for customer complaints, recurring or cross-functional problems, and where the customer requires it (common in automotive). Steps and the report outline are in `references/8d-and-capa.md`.
54
+ - Use is/is-not analysis, process data, and a test that turns the defect on and off when you can.
55
+
56
+ Find two causes: why it **occurred** and why it **escaped** detection. Also ask why the system allowed it (systemic cause), for example a control plan that never covered the characteristic.
57
+
58
+ Never accept "operator error" or "retrain the operator" as the root cause on its own. Ask what made the error possible and prefer error-proofing (IATF 16949 expects it in problem solving).
59
+
60
+ Verify measurement before blaming the process: check that the gauge is calibrated and that measurement system analysis (gauge R&R) is acceptable for that characteristic.
61
+
62
+ ## 4. Disposition
63
+
64
+ | Disposition | Needs |
65
+ |---|---|
66
+ | Use as is / concession | documented justification, authorised approver, customer authorisation where required |
67
+ | Rework (back to specification) | approved rework instruction, re-inspection, record on the lot, batch or device production record (QMSR no longer uses the term device history record) |
68
+ | Repair (still not fully to specification) | as concession, plus customer authorisation in automotive |
69
+ | Scrap | controlled scrapping so it cannot re-enter stock |
70
+ | Return to supplier | supplier NCR or SCAR, replacement or credit, supplier containment |
71
+
72
+ Record who decided, when, and on what evidence.
73
+
74
+ ## 5. CAPA
75
+
76
+ 1. Decide whether a CAPA is needed by your procedure's rules (for example: safety impact, recurrence, customer complaint, audit finding, trend). Not every NCR needs one; record the decision either way.
77
+ 2. Corrective action removes the cause found in section 3; preventive action removes the cause of a potential problem elsewhere (similar products, lines or suppliers). ISO 13485 treats these as separate requirements (clauses 8.5.2 and 8.5.3).
78
+ 3. Each action has an owner, due date, and the evidence that will show it is done. Actions must not adversely affect product conformity or safety; check that before implementation.
79
+ 4. Update the documents the action touches: drawings, work instructions, PFMEA, control plan, risk file, training records, supplier requirements.
80
+
81
+ ## 6. Effectiveness check, then close
82
+
83
+ 1. Define the effectiveness criteria when the CAPA is opened, not when it is closed: for example zero recurrences in the next N lots or N weeks, a capability index above target, or complaint rate below a threshold.
84
+ 2. Wait long enough to see the result, then check against the criteria with data.
85
+ 3. Not effective: reopen the root cause analysis. Do not stack new actions on an unverified cause.
86
+ 4. Close only with objective evidence and the approver your procedure names. Feed the result into management review and trend analysis.
87
+
88
+ Clause references and the records auditors expect are in `references/8d-and-capa.md`.
89
+
90
+ ## Rules
91
+
92
+ - Never back-date, edit or delete a quality record; correct with a dated, signed amendment.
93
+ - Never close a CAPA on "action completed" alone; closure needs verified effectiveness.
94
+ - Never ship quarantined material without a recorded disposition.
95
+ - Do not quote standard text you do not have; cite clause numbers and tell the user to check their licensed copy.
96
+
97
+ ## Report
98
+
99
+ ```
100
+ NCR <id> | part <pn rev> | lots <range> | qty affected <n> | found at <stage> | severity <level>
101
+ Requirement: <spec, rev> Evidence: <refs>
102
+ Containment: <actions, locations, qty quarantined, sort results>
103
+ Root cause (occurrence): <cause + evidence> Root cause (escape): <cause + evidence> Method: <5 Whys | Ishikawa | 8D>
104
+ Disposition: <type, approver, customer authorisation ref>
105
+ CAPA <id>: actions (owner, due, evidence) | effectiveness criteria | check date | result
106
+ Needs qualified decision: <reportability, concession, change control, other>
107
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Incoming inspection rejected 300 molded housings for a wall thickness out of tolerance, write the NCR and the containment plan",
4
+ "Our automotive customer wants an 8D for cracked brackets they found at their assembly line, help me run it",
5
+ "The FDA inspector flagged our CAPAs for closing without effectiveness checks, rewrite our CAPA procedure for the new QMSR",
6
+ "We keep getting the same burr defect even after three corrective actions, help me do a proper root cause with a fishbone",
7
+ "Should these out-of-spec catheter lots be reworked, scrapped or used as is, and who has to approve it?"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Reschedule tomorrow's production after the CNC machine broke down",
11
+ "A customer wants to return a defective blender, set up the RMA and refund flow",
12
+ "Make our patient records system meet HIPAA audit logging requirements",
13
+ "Draft a mutual NDA with a new contract manufacturer from our standard template",
14
+ "Write unit tests for the function that calculates tolerance limits"
15
+ ]
16
+ }
@@ -0,0 +1,46 @@
1
+ # 8D steps and CAPA record checklist
2
+
3
+ Read this when running an 8D, writing a CAPA procedure, or preparing CAPA records for an audit.
4
+
5
+ ## 8D (Eight Disciplines)
6
+
7
+ | Step | Purpose | Output |
8
+ |---|---|---|
9
+ | D0 Plan | decide 8D is warranted, emergency response | symptom, emergency actions |
10
+ | D1 Team | cross-functional team with process knowledge and a champion | names, roles |
11
+ | D2 Describe the problem | what, where, when, how many, is/is-not | problem statement with data |
12
+ | D3 Interim containment | protect the customer now | containment actions, verification |
13
+ | D4 Root causes | occurrence and escape causes, verified | cause statements with evidence |
14
+ | D5 Choose corrective actions | actions proven to remove each cause | selected actions, verification plan |
15
+ | D6 Implement and validate | put actions in place, remove containment when proven | results data |
16
+ | D7 Prevent recurrence | update systems: PFMEA, control plan, procedures, similar products | updated documents, lessons learned |
17
+ | D8 Recognise the team | close formally | closure approval |
18
+
19
+ Customers often impose their own 8D form and response times (for example containment within 24 hours, root cause within days). Use the customer's form and deadlines when they exist.
20
+
21
+ ## Clause map (check against licensed copies)
22
+
23
+ | Topic | ISO 13485:2016 | IATF 16949:2016 (with ISO 9001:2015) |
24
+ |---|---|---|
25
+ | Control of nonconforming product or outputs | 8.3 (8.3.2 before delivery, 8.3.3 after delivery, 8.3.4 rework) | 8.7 and 8.7.1.x (customer authorisation for concession, rework, repair, disposition) |
26
+ | Corrective action | 8.5.2 | 10.2 and 10.2.3 problem solving |
27
+ | Preventive action | 8.5.3 | (ISO 9001 handles through risk-based thinking) |
28
+ | Error-proofing | — | 10.2.4 |
29
+ | Complaints, warranty | 8.2.2 complaint handling | 10.2.5 warranty, 10.2.6 customer complaints and field failure testing |
30
+ | Analysis of data | 8.4 | 9.1.3 |
31
+
32
+ FDA QMSR (effective 2 February 2026): 21 CFR 820 incorporates ISO 13485:2016 by reference (820.7) and adds FDA-specific requirements, including on records such as complaint and servicing records. Read the current 21 CFR 820 text on eCFR for the exact additions.
33
+
34
+ ## CAPA record checklist
35
+
36
+ - Source (NCR, complaint, audit, trend, supplier) with link.
37
+ - Problem statement with data and scope.
38
+ - Investigation proportionate to risk, with root cause evidence.
39
+ - Actions, owners, due dates, and verification that actions do not harm product safety or conformity.
40
+ - Documents changed, with revision.
41
+ - Training done, with records.
42
+ - Effectiveness criteria set at opening, the check, the data, the result.
43
+ - Approvals and dates, with signatures meeting the site's electronic records rules.
44
+ - Link to management review and trend reports.
45
+
46
+ Common audit findings: CAPAs closed without effectiveness evidence, root cause stated as "human error", overdue CAPAs with no escalation, preventive actions missing, and trend data not feeding the CAPA system.
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: quarkus-patterns
3
+ description: Quarkus service conventions for ArC CDI beans, Quarkus REST (formerly RESTEasy Reactive) endpoints, Hibernate ORM with Panache, @ConfigMapping and %dev/%test/%prod profiles, Dev Services containers, GraalVM native-image limits, and @QuarkusTest or @QuarkusIntegrationTest suites. Use when writing or debugging a Quarkus application, choosing blocking versus reactive endpoints, configuring a Quarkus extension, or getting a Quarkus build to work as a native executable.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs a JDK and the project's Maven or Gradle wrapper (or the Quarkus CLI). Dev Services and container tests need Docker or Podman. Native builds need GraalVM/Mandrel or a container runtime. Written for Quarkus 3.x.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "java"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Quarkus patterns
15
+
16
+ Quarkus moves work to build time. Most surprises come from forgetting that: beans, config and reflection are resolved when the app is built, not when it starts. Write code that the build can see.
17
+
18
+ ## 0. Before you start
19
+
20
+ 1. Read the Quarkus version and extensions from `pom.xml` (`quarkus-bom`) or `build.gradle(.kts)`. Note whether the project uses `quarkus-rest` (Quarkus REST) or the legacy `quarkus-resteasy` (Classic). **Never mix** `quarkus-rest*` and `quarkus-resteasy*` extensions; that causes duplicate-implementation startup errors.
21
+ 2. Find the build and test command: `./mvnw verify`, `./gradlew build`, or `quarkus build`. Run tests once and record the result; stop and tell the user if they already fail.
22
+ 3. Add extensions with `./mvnw quarkus:add-extension -Dextensions="..."` or `quarkus ext add ...`, not by guessing artifact ids.
23
+
24
+ ## 1. CDI (ArC)
25
+
26
+ - Default to `@ApplicationScoped` for services. Use `@Singleton` only when you need no client proxy, and `@RequestScoped` for per-request state.
27
+ - Use constructor injection; a single constructor needs no `@Inject`. Package-private field injection also works without reflection, but private field injection forces reflection; avoid it.
28
+ - ArC discovers beans at build time. A class in a dependency jar without a Jandex index is invisible; add the index (`jandex-maven-plugin`) or `quarkus.index-dependency.*` config.
29
+ - Unused beans are removed at build time. If a bean is only looked up programmatically, mark it `@Unremovable`.
30
+ - Produce third-party objects with `@Produces` methods in an `@ApplicationScoped` class.
31
+ - Use `@Startup` or `void onStart(@Observes StartupEvent ev)` for startup work; keep it fast.
32
+
33
+ ## 2. REST endpoints (Quarkus REST)
34
+
35
+ - Resources use Jakarta REST annotations: `@Path`, `@GET`, `@POST`, `@Produces`, `@Consumes`. Add `quarkus-rest-jackson` (or `-jsonb`) for JSON.
36
+ - **Threading rule**: a method returning a plain type or `Response` runs on a worker thread and may block. A method returning `Uni` or `Multi` runs on the event loop and **must never block** (no JDBC, no `Thread.sleep`, no blocking HTTP). Use `@Blocking` or `@NonBlocking` to override when needed. Blocking on the event loop logs a "blocked thread" warning; treat it as a bug.
37
+ - Pick one model per service. Hibernate ORM (blocking) with plain return types is the simple default; use Hibernate Reactive with `Uni` only when the project already does.
38
+ - Return DTO records, not entities. Validate input with `quarkus-hibernate-validator` and `@Valid`.
39
+ - Map exceptions to responses with `@ServerExceptionMapper` methods (or an `ExceptionMapper`). Never leak stack traces.
40
+ - Call other services with the REST client: an interface annotated `@RegisterRestClient(configKey = "orders-api")`, injected with `@RestClient`, base URL in `quarkus.rest-client.orders-api.url`.
41
+
42
+ ## 3. Panache
43
+
44
+ - Choose one style per project and keep it:
45
+ - **Active record**: `class Order extends PanacheEntity` (gives a `Long id`), static finders like `Order.find("status", s).list()`.
46
+ - **Repository**: `class OrderRepository implements PanacheRepository<Order>`, injected into services. Easier to mock.
47
+ - Panache entities use public fields; Quarkus rewrites access into getters and setters at build time.
48
+ - Writes need a transaction: annotate the service or resource method with `@Transactional` (`jakarta.transaction`). Reads outside a transaction work but lazy loading after the method returns fails.
49
+ - Page large queries: `find(...).page(Page.of(index, size))`. Never `listAll()` on a table that grows.
50
+ - The fetch, N+1 and locking rules in the `jpa-hibernate` skill apply here too.
51
+
52
+ ## 4. Configuration and profiles
53
+
54
+ - Group related settings in an interface with `@ConfigMapping(prefix = "payments")`; use `@ConfigProperty(name = "...")` only for one-off values. Missing required values fail startup, which is what you want.
55
+ - Profiles prefix keys: `%dev.`, `%test.`, `%prod.` in `application.properties`, or `application-{profile}.properties`. A custom profile is set with `quarkus.profile`.
56
+ - Know the two kinds of config: **build-time** properties (marked with a lock in the config reference, such as `quarkus.datasource.db-kind`) are fixed when you build and can't be changed by environment at runtime. Runtime properties can be set by env vars (`QUARKUS_DATASOURCE_JDBC_URL`).
57
+ - Secrets come from environment variables or a config source like Vault or Kubernetes secrets, never committed properties.
58
+
59
+ ## 5. Dev Services
60
+
61
+ - With an extension such as `quarkus-jdbc-postgresql` and **no** URL configured, dev and test mode start a container automatically. Don't configure `%dev`/`%test` datasource URLs unless you want to opt out.
62
+ - Set `quarkus.datasource.devservices.image-name` to match the production database version.
63
+ - Dev Services never runs in prod. Production config must set real URLs and credentials.
64
+ - Use `quarkus dev` (or `./mvnw quarkus:dev`) for live reload and the Dev UI at `/q/dev-ui`.
65
+
66
+ ## 6. Native image constraints
67
+
68
+ Build with `./mvnw install -Dnative`, `./gradlew build -Dquarkus.native.enabled=true`, or `quarkus build --native`. Add `-Dquarkus.native.container-build=true` when no local GraalVM is installed. Native code is closed-world:
69
+
70
+ - Reflection, dynamic proxies and resources must be known at build time. Register classes used only reflectively (for example DTOs serialised by a library Quarkus doesn't know) with `@RegisterForReflection`; include resource files with `quarkus.native.resources.includes`.
71
+ - Static initialisers run at build time by default. Code that reads the clock, randomness, env vars or opens connections in a static block must be moved to runtime init.
72
+ - Prefer Quarkus extensions over plain libraries; extensions carry the native configuration.
73
+ - Run `@QuarkusIntegrationTest` against the native build. Passing JVM tests prove nothing about native.
74
+ - **Stop and ask the user** before switching a project to native: builds are slow and memory-hungry, and some libraries won't work.
75
+
76
+ ## 7. Testing
77
+
78
+ - `@QuarkusTest` starts the app once per test run in JVM mode, with Dev Services, on the `test` profile. Use REST Assured (`given().when().get("/orders/1").then().statusCode(200)`).
79
+ - `@QuarkusIntegrationTest` runs the packaged artifact (jar, native binary or container) as a black box; it can't inject beans.
80
+ - Mock beans with `@InjectMock` (needs `quarkus-junit5-mockito`); it works for normal-scoped beans like `@ApplicationScoped`; a `@Singleton` bean can only be mocked with `@MockitoConfig(convertScopes = true)`, which changes its scope in the test, so prefer making the bean `@ApplicationScoped`. Beans used during startup are not mocked. Use `@TestProfile` for different config; each profile restarts the app, so use few.
81
+ - Use `@TestTransaction` to roll back database changes after each test.
82
+ - Use a test resource (`@QuarkusTestResource`, or `@WithTestResource` to group tests by resource) only for dependencies Dev Services can't provide.
83
+
84
+ ## Never
85
+
86
+ - Blocking calls inside a `Uni`/`Multi` method or on the event loop.
87
+ - `quarkus-rest` and `quarkus-resteasy` in the same build.
88
+ - Private field injection or reflection-heavy libraries in a native build without registering them.
89
+ - Hard-coded datasource URLs in `%dev`/`%test` that disable Dev Services by accident.
90
+
91
+ ## Before you finish
92
+
93
+ Run the tests (and `-Dnative` integration tests if the project ships native). Report: extensions added, config keys and which profile they apply to, threading model of new endpoints, tests added, and the final test counts.
@@ -0,0 +1,18 @@
1
+ {
2
+ "should_trigger": [
3
+ "Build a Quarkus REST endpoint backed by Panache and make it compile to a native image",
4
+ "Quarkus logs 'You have attempted to perform a blocking operation on an IO thread' in my Uni endpoint",
5
+ "How do Dev Services in Quarkus start Postgres for tests, and why did it stop after I set a JDBC url?",
6
+ "Set up %dev and %prod profiles with @ConfigMapping in our Quarkus microservice",
7
+ "My Quarkus native executable fails at runtime with a ClassNotFoundException for a Jackson DTO",
8
+ "Use @InjectMock in a @QuarkusTest to replace the payment client bean"
9
+ ],
10
+ "should_not_trigger": [
11
+ "Add a new REST endpoint to our Spring Boot order service with request validation and proper 404 responses",
12
+ "Write a Ktor route for uploading files with coroutines",
13
+ "Add a Flyway migration that adds a NOT NULL column to the orders table without downtime",
14
+ "Write the Dockerfile and Kubernetes deployment for our Java service",
15
+ "Explain idiomatic Java records and sealed interfaces for our domain model",
16
+ "Our Gradle build fails with a dependency resolution conflict in the Java module"
17
+ ]
18
+ }