@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,96 @@
1
+ ---
2
+ name: contract-drafting
3
+ description: Assembles first-draft commercial agreements, namely master services agreements, NDAs, statements of work and GDPR-style data processing agreements, by filling the organisation's own clause template from a structured term sheet, logging every departure from the standard position in a deviation register with its risk and approver, and producing a plain-language redline summary, with a mandatory gate that a qualified lawyer reviews the draft before anyone signs or sends it. Use when you need a first draft of an MSA, NDA, SOW or DPA from your template and agreed terms, when the other side's paper must be compared against your playbook, or when preparing a summary of changes for legal sign-off.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Works on the user's templates and documents (Markdown, plain text or .docx through the host's document tools). Not legal advice; every output is a draft for a qualified lawyer to review.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: compliance
9
+ kete-loom/risk: writes-files
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Contract drafting
14
+
15
+ Produce a clean draft that says exactly what was agreed, in the organisation's own approved language, and make every deviation visible so a lawyer can review the draft quickly. You assemble and flag; you never decide that a term is legally acceptable.
16
+
17
+ ## Lawyer-review gate (mandatory)
18
+
19
+ Every output from this skill is marked `DRAFT - FOR LEGAL REVIEW - NOT FOR SIGNATURE`. Keep that marking until the user confirms a qualified lawyer has approved the draft. **Never** remove it, send the draft to the counterparty, or call it final on your own.
20
+
21
+ **Stop and tell the user a lawyer must handle it** (do not draft the clause yourself) when:
22
+
23
+ - There is no approved template for the agreement type or the clause, and the user asks you to write legal terms from scratch.
24
+ - The governing law, jurisdiction or a party's country is one the template was not written for.
25
+ - The deal touches regulated areas: personal data transfers outside the EEA/UK, health data, financial services, export-controlled goods, employment, consumer contracts, government contracts, or competition-sensitive terms (exclusivity, non-competes, pricing between competitors).
26
+ - The term sheet asks for unlimited liability, an uncapped indemnity, IP assignment of the organisation's core IP, or a change to any clause the template marks "non-negotiable".
27
+
28
+ ## 0. Gather inputs
29
+
30
+ 1. The template: the organisation's own clause library or standard form for this agreement type, with its version. If the user has none, see the gate above.
31
+ 2. The playbook, if there is one: preferred position, acceptable fallbacks and walk-away for each key clause.
32
+ 3. The term sheet, as structured fields. The field list per agreement type is in `references/term-sheets.md`. Ask for every missing required field; never fill a commercial term with a guess.
33
+ 4. The counterparty's draft or redline, if you are comparing their paper against yours.
34
+
35
+ ## 1. Assemble the draft
36
+
37
+ 1. Copy the template; do not rewrite its clauses for style. Approved language is approved because it was reviewed.
38
+ 2. Fill placeholders from the term sheet only. Party names must be full legal names with entity type and registration details as the user supplied them.
39
+ 3. Keep defined terms consistent: every capitalised term is defined once and used with the same spelling. Check that every cross-reference points to a clause that exists after edits.
40
+ 4. Keep the document order the template uses. Schedules (SOW, pricing, DPA, service levels) attach to the master agreement and the order-of-precedence clause says which wins on conflict.
41
+ 5. Where the term sheet asks for something the template does not say, do not invent wording. Insert `[DEVIATION D-n: <what is requested>]` and log it.
42
+
43
+ ## 2. Deviation register
44
+
45
+ Log every place the draft differs from the template or the playbook's preferred position:
46
+
47
+ ```
48
+ ID | clause | standard position | requested / drafted position | why (business reason) | risk (low | medium | high) | playbook fallback? | approver needed | status
49
+ ```
50
+
51
+ Rules for the risk rating:
52
+
53
+ - High: liability caps, indemnities, IP ownership, data protection, termination for convenience, exclusivity, governing law, anything outside the playbook.
54
+ - Medium: payment terms, warranties, service levels and credits, acceptance, notice periods, renewal.
55
+ - Low: dates, contact details, administrative wording.
56
+
57
+ When comparing the counterparty's paper, log each of their changes the same way, with the playbook position next to it.
58
+
59
+ ## 3. Redline summary
60
+
61
+ For the reviewer, in plain language, ordered by risk:
62
+
63
+ 1. One paragraph: deal, parties, agreement type, template version, governing law.
64
+ 2. A table of deviations (from the register), high risk first, each with one sentence on what it means in practice ("we would owe them up to 12 months of fees if a data breach is our fault").
65
+ 3. Missing information and open questions.
66
+ 4. Clauses that need specialist review (data protection, tax, export, employment).
67
+
68
+ Produce a tracked-changes or comparison document against the template when the host's document tools allow it; otherwise list changes clause by clause.
69
+
70
+ ## 4. Agreement-type checks
71
+
72
+ Before handing over, run the checklist for the agreement type in `references/term-sheets.md`. Short version:
73
+
74
+ - **NDA:** mutual or one-way; definition of confidential information and exclusions; permitted use and disclosees; term and survival; return or destruction; no licence granted; remedies.
75
+ - **MSA:** scope and order of precedence; fees, invoicing and payment; warranties; liability cap and exclusions; indemnities; IP ownership and licences; confidentiality; data protection hook to a DPA; term, renewal and termination; insurance; governing law and disputes.
76
+ - **SOW:** deliverables, milestones, acceptance criteria and process, assumptions, dependencies, change control, fees per milestone, named contacts; nothing in the SOW silently overrides the MSA.
77
+ - **DPA (GDPR Article 28):** the Article 28(3) contents must be present: subject matter, duration, nature and purpose, types of personal data and data subjects, and the processor obligations (documented instructions, confidentiality, security, sub-processors, assistance with data subject rights and with security and impact assessments, deletion or return, audit). International transfers need a transfer mechanism such as the EU Standard Contractual Clauses (2021) or the UK addendum; route those to a privacy lawyer and the `privacy-compliance` skill.
78
+
79
+ ## Rules
80
+
81
+ - Never remove the draft marking or send the draft outside the organisation without the user confirming lawyer approval.
82
+ - Never invent a commercial term, party detail or legal clause that is not in the template, playbook or term sheet.
83
+ - Never silently change approved template language; every change is a logged deviation.
84
+ - Do not give an opinion on whether a clause is enforceable; say it needs a lawyer.
85
+ - Keep counterparty documents confidential; do not paste them into external services the user has not approved.
86
+
87
+ ## Report
88
+
89
+ ```
90
+ Draft: <file> | type <NDA | MSA | SOW | DPA> | template <name, version> | status DRAFT - FOR LEGAL REVIEW
91
+ Parties: <legal names> Governing law: <law>
92
+ Deviations: <n high, n medium, n low> (register attached)
93
+ Missing inputs: <list>
94
+ Specialist review needed: <data protection, tax, export, employment, none>
95
+ Next step: lawyer review by <name or role, if the user named one>
96
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Use our MSA template and this term sheet to draft the agreement with Acme Logistics, and flag anything that differs from our standard",
4
+ "Draft a mutual NDA for talks with a potential acquirer using the clause library in legal/templates",
5
+ "The customer sent back our SOW with their changes, compare it to our playbook and write a redline summary for legal",
6
+ "We need a data processing agreement with our new email vendor based on our DPA template, fill in the processing details",
7
+ "Build a deviation register for this services agreement showing every change from our standard liability and indemnity clauses"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Map the personal data our signup flow collects and set retention periods for each field",
11
+ "Check whether our invention is novel before we spend money on a patent application",
12
+ "Generate invoices with the right VAT fields for our customers in Germany",
13
+ "Explain in two sentences the difference between an MSA and a SOW",
14
+ "Negotiate better rates with our truckload carriers on the Midwest lanes"
15
+ ]
16
+ }
@@ -0,0 +1,68 @@
1
+ # Term sheet fields and pre-review checklists
2
+
3
+ Read this when collecting inputs for a draft (section 0) or running the agreement-type checks (section 4). Required fields are marked `*`. Ask for every missing required field.
4
+
5
+ ## Common to all agreements
6
+
7
+ - `*` Parties: full legal name, entity type, jurisdiction of incorporation, registered address, company number where used.
8
+ - `*` Effective date, and signatories (name, title).
9
+ - `*` Governing law and dispute forum (courts or arbitration, seat, rules).
10
+ - Notices: addresses and email for formal notice.
11
+ - Template name and version used.
12
+
13
+ ## NDA
14
+
15
+ - `*` Mutual or one-way; who discloses.
16
+ - `*` Purpose (the permitted use of the information).
17
+ - `*` Term of the agreement and how long confidentiality obligations survive; any trade secrets carve-out to last longer.
18
+ - Permitted disclosees (employees, affiliates, advisers, financing sources).
19
+ - Exclusions: public, already known, independently developed, received from a third party lawfully; compelled disclosure process.
20
+ - Return or destruction on request, with a backup-copy carve-out.
21
+ - Non-solicitation or standstill (high risk; often belongs in a separate agreement).
22
+
23
+ ## MSA
24
+
25
+ - `*` Services or products in scope; how orders or SOWs are created.
26
+ - `*` Fees, currency, invoicing schedule, payment terms, late payment, price changes, taxes.
27
+ - `*` Liability cap (amount or formula, for example fees paid in the prior 12 months) and exclusions from the cap.
28
+ - `*` Term, renewal (auto-renew and notice), termination for cause and for convenience, effects of termination.
29
+ - Indemnities: who indemnifies whom, for what (IP infringement, data breach, third-party claims), procedure.
30
+ - Warranties and disclaimers; service levels and credits as a schedule.
31
+ - IP: background IP stays with its owner; ownership of deliverables; licences granted.
32
+ - Data protection: whether a DPA is needed; security schedule.
33
+ - Insurance types and minimums.
34
+ - Subcontracting, assignment and change of control.
35
+ - Order of precedence between MSA, SOW, schedules and purchase orders.
36
+
37
+ ## SOW
38
+
39
+ - `*` Reference to the governing MSA and its date.
40
+ - `*` Deliverables with descriptions; milestones and dates.
41
+ - `*` Acceptance criteria, acceptance period, and what happens on rejection.
42
+ - `*` Fees per milestone or rate card, expenses policy.
43
+ - Assumptions and customer dependencies; change-request process.
44
+ - Named contacts and governance meetings.
45
+ - Checks: the SOW must not change liability, IP or payment terms set in the MSA unless the MSA allows it, and then the change is a logged deviation.
46
+
47
+ ## DPA
48
+
49
+ - `*` Roles: controller and processor (or processor and sub-processor).
50
+ - `*` Subject matter, duration, nature and purpose of processing.
51
+ - `*` Types of personal data, special categories if any, categories of data subjects.
52
+ - `*` Security measures (usually an annex).
53
+ - `*` Sub-processors: list, approval method (specific or general with notice and objection).
54
+ - Breach notice period from processor to controller.
55
+ - Assistance with data subject requests, security, impact assessments and prior consultation.
56
+ - Deletion or return at end of services.
57
+ - Audits and information rights.
58
+ - International transfers: destinations and mechanism (EU SCCs 2021 module, UK IDTA or addendum). Route to a privacy lawyer.
59
+
60
+ Check each DPA against the processor terms of GDPR Article 28(3) and the law of the user's jurisdiction; other data protection laws have their own processor contract requirements.
61
+
62
+ ## Final pre-review checks (all types)
63
+
64
+ - Every placeholder filled or logged as a deviation; no `[ ]` left unexplained.
65
+ - Defined terms defined once and used consistently; cross-references valid.
66
+ - Dates, amounts and currencies match the term sheet exactly (amounts in words and figures agree if both are used).
67
+ - Signature blocks match the party names.
68
+ - Draft marking present on every page or in the header.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: contract-first-development
3
+ description: Coordinates frontend and backend teams, or two services, around one machine-checked interface contract in OpenAPI, AsyncAPI, protobuf or JSON Schema that is reviewed and merged before code, then drives generated clients and server stubs, mock servers for parallel work, CI gates for breaking changes with oasdiff and buf breaking, and Pact consumer-driven contract tests with can-i-deploy checks. Use when two teams or services must build against the same interface at the same time, a spec keeps drifting from the implementation, or a provider change broke a consumer that nobody tested against.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Uses the contract tooling the repo already has (for example oasdiff, buf, Prism, openapi-generator, Pact); network access only for a Pact Broker.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Contract-first development
14
+
15
+ One contract file is the source of truth for an interface. Both sides generate from it or test against it, CI blocks breaking edits to it, and nobody codes against a Slack message or a screenshot of a JSON payload.
16
+
17
+ For designing the API itself (resource naming, status codes, pagination, versioning policy) use the `api-design` skill if installed; this skill is about the workflow around the contract once its shape is being agreed.
18
+
19
+ ## 0. Pick the format and the owner
20
+
21
+ | Interface | Contract format |
22
+ |---|---|
23
+ | HTTP/REST | OpenAPI 3.x (3.1 aligns schemas with JSON Schema 2020-12) |
24
+ | Events, queues, WebSockets | AsyncAPI 3.x, payloads in JSON Schema or Avro |
25
+ | gRPC / internal RPC | protobuf with buf |
26
+ | A data file or message without a transport | JSON Schema |
27
+
28
+ 1. Use the format already in the repo. If there are several, ask the user which is authoritative; never keep two hand-written sources of the same interface.
29
+ 2. Decide where the contract lives: in the provider repo, or a shared contracts repo/package. Record the owner who approves changes (a `CODEOWNERS` entry is ideal).
30
+ 3. **Stop and ask** if the implementation exists and the spec is generated from code: switching to spec-first is a team decision.
31
+
32
+ ## 1. Write and review the contract before code
33
+
34
+ 1. Draft the change as a pull request that touches only the contract (plus examples).
35
+ 2. Every operation or message has: request and response schemas, required vs optional fields, error responses, at least one realistic example, and an `operationId` (OpenAPI) so generated code has stable names.
36
+ 3. Lint it: `redocly lint` or `spectral lint` for OpenAPI, `asyncapi validate` for AsyncAPI, `buf lint` for protobuf, and validate examples against the schemas.
37
+ 4. Both sides review. A consumer approval is required for anything they will call.
38
+ 5. Merge, then tag or version the contract so both sides pin the same revision.
39
+
40
+ ## 2. Work in parallel from the contract
41
+
42
+ - **Consumer side**: generate a typed client and start against a mock server built from the contract (`prism mock openapi.yaml` for OpenAPI; buf/connect or a generated stub for protobuf; AsyncAPI generators or a test broker for events). Never hand-write request types that the generator can produce.
43
+ - **Provider side**: generate server interfaces or stubs, or validate requests and responses against the spec at runtime in tests, so the implementation can't silently diverge.
44
+ - Commit generated code or regenerate in the build; follow whichever the repo already does, and make CI fail when the committed output is stale. Tools and commands: `references/tooling.md`.
45
+
46
+ ## 3. Block breaking changes in CI
47
+
48
+ On every PR that touches a contract, compare with the base branch:
49
+
50
+ - OpenAPI: `oasdiff breaking --fail-on ERR origin/main:openapi.yaml HEAD:openapi.yaml`; `oasdiff changelog` for the PR description.
51
+ - protobuf: `buf breaking --against '.git#branch=main'` (default rule set `FILE`; set `breaking.use` in `buf.yaml`).
52
+ - JSON Schema / AsyncAPI: run the repo's diff tool, or treat removed properties, newly required fields, narrowed types and removed enum values as breaking in review.
53
+
54
+ A breaking change needs one of: a new version (path, package, or message type), an additive alternative plus deprecation, or written agreement from every consumer. **Stop and ask the user** before merging any breaking change.
55
+
56
+ Common breaking edits: removing or renaming a field, endpoint, message or enum value; making an optional request field required; changing a type or format; tightening validation; reusing a protobuf field number. Also breaking for many consumers: adding a value to a response enum (strict clients and exhaustive switches fail) and changing default values. Usually safe: adding optional request fields, adding response fields (only if consumers ignore unknown fields), adding endpoints.
57
+
58
+ ## 4. Consumer-driven contract tests (Pact)
59
+
60
+ Use when consumers depend on behaviour a schema can't express (which fields they actually read, state-dependent responses), or when providers deploy independently.
61
+
62
+ 1. Consumer tests run against the Pact mock and write a pact file describing only the interactions the consumer uses.
63
+ 2. Publish pacts to a Pact Broker (or PactFlow) tagged with the consumer's git SHA and branch.
64
+ 3. The provider verifies pacts in its CI with provider states set up through a test hook, never against shared staging data.
65
+ 4. Before each deploy: `pact-broker can-i-deploy --pacticipant <name> --version <sha> --to-environment <env>`; after it: `pact-broker record-deployment --pacticipant <name> --version <sha> --environment <env>`.
66
+ 5. Pact does not replace schema checks; run both.
67
+
68
+ ## Never
69
+
70
+ - Never edit generated code by hand; change the contract or the generator config.
71
+ - Never let the mock server drift from the spec (generate it from the spec, don't hand-write fixtures).
72
+ - Never disable a breaking-change check to get a PR green.
73
+ - Never reuse a deleted protobuf field number or name; `reserved` them.
74
+
75
+ ## Report
76
+
77
+ ```
78
+ ## Contract: <interface> (<format>, <path>@<revision>)
79
+ Owner: <team/person>
80
+ Lint: <command> -> pass/fail
81
+ Breaking-change check: <command> -> <n breaking> (<list>)
82
+ Generated: client <tool/path>, server <tool/path>, stale: yes/no
83
+ Mock: <command or none>
84
+ Consumer contracts: <Pact status, can-i-deploy result, or not used>
85
+ Needs agreement: <breaking changes and which consumers must approve>
86
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "The mobile team and the backend team keep disagreeing about payload shapes. Set us up so both build from one OpenAPI spec with a mock server.",
4
+ "Add a CI check that fails the PR if someone makes a breaking change to our protobuf files",
5
+ "A provider deploy broke the checkout frontend again. Set up Pact consumer tests and can-i-deploy before releases.",
6
+ "Our openapi.yaml has drifted from what the Go service actually returns. Generate the server interfaces from the spec so they can't diverge.",
7
+ "We're about to start a new order-events topic. Agree the AsyncAPI contract first so both services can start in parallel."
8
+ ],
9
+ "should_not_trigger": [
10
+ "Design the REST endpoints and status codes for our new invoicing API",
11
+ "Write a typed client for the Shopify Admin API with retries and pagination",
12
+ "Write Playwright end-to-end tests for the signup flow",
13
+ "Which packages in our monorepo depend on the shared validation library?",
14
+ "Add a migration that renames the orders.total column"
15
+ ]
16
+ }
@@ -0,0 +1,46 @@
1
+ # Contract tooling
2
+
3
+ Prefer tools already in the repo. Check flags with `--help` for the installed version.
4
+
5
+ ## OpenAPI
6
+
7
+ | Job | Tool and command |
8
+ |---|---|
9
+ | Lint | `npx @redocly/cli lint openapi.yaml`, or `spectral lint openapi.yaml` with a `.spectral.yaml` ruleset |
10
+ | Breaking changes | `oasdiff breaking --fail-on ERR <base> <revision>`; bases can be files, URLs or `<git-ref>:<path>`; `--fail-on WARN` is stricter |
11
+ | Changelog | `oasdiff changelog <base> <revision>` |
12
+ | Mock server | `npx @stoplight/prism-cli mock openapi.yaml` (serves examples; `-d` for dynamic data) |
13
+ | Validating proxy | `prism proxy openapi.yaml <upstream-url>` reports requests and responses that violate the spec |
14
+ | TypeScript types | `npx openapi-typescript openapi.yaml -o src/api/schema.d.ts`, with `openapi-fetch` for a typed client |
15
+ | Clients and stubs, many languages | `openapi-generator-cli generate -i openapi.yaml -g <generator> -o <dir>` |
16
+ | Go | `oapi-codegen` with a config file selecting client, server or types |
17
+ | Property-based API tests | Schemathesis, run against a provider test instance |
18
+
19
+ ## protobuf (buf)
20
+
21
+ | Job | Command |
22
+ |---|---|
23
+ | Lint | `buf lint` |
24
+ | Breaking changes | `buf breaking --against '.git#branch=main'` (or a BSR module, or a tag) |
25
+ | Generate | `buf generate` with `buf.gen.yaml` listing plugins |
26
+ | Format | `buf format -w` |
27
+
28
+ Rules: never change a field number or type; `reserved` removed numbers and names; add fields as optional.
29
+
30
+ ## AsyncAPI
31
+
32
+ - Validate: `asyncapi validate asyncapi.yaml` (AsyncAPI CLI).
33
+ - Generate code or docs: `asyncapi generate fromTemplate asyncapi.yaml <template>`.
34
+ - Payload schemas can be JSON Schema or Avro; keep Avro schemas in a schema registry with compatibility mode set (for example BACKWARD) if the platform has one.
35
+
36
+ ## JSON Schema
37
+
38
+ - Validate examples and fixtures in tests with the language's validator (Ajv for JS/TS, `jsonschema` for Python).
39
+ - Declare `$schema` so tools pick the right draft.
40
+
41
+ ## Pact
42
+
43
+ - Consumer libraries: pact-js, pact-python, pact-jvm, pact-go, pact-net and others; consumer tests write pact files to `pacts/`.
44
+ - Publish: `pact-broker publish pacts/ --consumer-app-version <sha> --branch <branch> --broker-base-url <url>`.
45
+ - Provider verification runs in the provider's test suite with a provider-states setup endpoint or hook.
46
+ - Gate deploys: `pact-broker can-i-deploy --pacticipant <name> --version <sha> --to-environment <env>`; then `pact-broker record-deployment --pacticipant <name> --version <sha> --environment <env>`.
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: conventional-commits
3
+ description: Writes and checks commit messages in the Conventional Commits 1.0.0 format - choosing the type and scope, marking breaking changes with "!" or a BREAKING CHANGE footer, writing a body that explains why the change was made, and adding issue footers - so changelog and semantic-version tooling can read the history. Use when composing a commit message, splitting staged work into well-labelled commits, fixing a message that commitlint rejected, or deciding whether a change counts as feat, fix or breaking.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs git. Checking messages with commitlint needs Node.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: devops
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "git"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Conventional Commits
15
+
16
+ A commit message is a record for the next person who runs `git blame`, and for the tools that build the changelog and pick the next version. Write it for both.
17
+
18
+ ## 0. Before writing
19
+
20
+ 1. Look for project rules first: `commitlint.config.*`, `.commitlintrc*`, a `commitlint` key in `package.json`, `CONTRIBUTING.md`, `.czrc`, or release config (`release-please-config.json`, `.releaserc*`). Allowed types and scopes there override this skill.
21
+ 2. Read recent history for the house style: `git log --oneline -20`. Match the scopes and casing already in use.
22
+ 3. Read what is actually staged: `git diff --cached --stat`, then `git diff --cached`. Write about the staged diff, not what you remember changing.
23
+ 4. If nothing is staged, **stop and ask** what should go in the commit. Don't `git add -A` on the user's behalf.
24
+
25
+ ## 1. One change per commit
26
+
27
+ If the staged diff mixes unrelated things (a bug fix plus a rename plus a dependency bump), propose splitting it and say which files go where. If the user wants one commit anyway, use the type of the most significant change and mention the rest in the body.
28
+
29
+ ## 2. Format
30
+
31
+ ```
32
+ <type>[optional scope][!]: <description>
33
+
34
+ [optional body]
35
+
36
+ [optional footer(s)]
37
+ ```
38
+
39
+ Rules from the specification:
40
+
41
+ - `type` is a noun, followed by optional `(scope)`, optional `!`, then `: ` (colon and space) and the description.
42
+ - The body starts after one blank line and is free text.
43
+ - Footers start after one blank line. Each is `Token: value` or `Token #value`. Tokens use `-` instead of spaces (`Reviewed-by`), except `BREAKING CHANGE`.
44
+ - `BREAKING CHANGE` must be uppercase. `BREAKING-CHANGE` means the same.
45
+
46
+ House conventions on top of the spec (follow the project's config if it differs):
47
+
48
+ - Description: imperative mood ("add", not "added"/"adds"), lower case first word, no trailing period, aim for 72 characters or fewer on the whole first line.
49
+ - Wrap the body at about 72 characters.
50
+
51
+ ## 3. Choose the type
52
+
53
+ | Type | Use for | Version effect with standard tooling |
54
+ |---|---|---|
55
+ | `feat` | New behaviour a user or caller can see | minor |
56
+ | `fix` | Corrects wrong behaviour | patch |
57
+ | `perf` | Faster or leaner, same behaviour | patch in most presets |
58
+ | `refactor` | Code change with no behaviour change | none |
59
+ | `docs` | Documentation only | none |
60
+ | `test` | Adding or fixing tests only | none |
61
+ | `build` | Build system, packaging, dependencies | none |
62
+ | `ci` | CI configuration and scripts | none |
63
+ | `style` | Formatting, whitespace; no code meaning change | none |
64
+ | `chore` | Maintenance that fits nothing above | none |
65
+ | `revert` | Reverts an earlier commit | depends on the tool |
66
+
67
+ Only `feat` and `fix` have meaning in the specification itself; the rest are the widely used `@commitlint/config-conventional` set. Any type can carry a breaking change.
68
+
69
+ Decision rules:
70
+
71
+ - If a user-visible behaviour changes to correct a defect, it is `fix`, even if the code change is large.
72
+ - If you are unsure between `feat` and `refactor`, ask: would the changelog reader care? Yes means `feat` or `fix`.
73
+ - A dependency bump that fixes a user-facing bug is `fix(deps): ...`; a routine bump is `build(deps): ...` (or `chore(deps)` if that is the house style).
74
+
75
+ ## 4. Choose the scope
76
+
77
+ - A scope names the area touched: a package, module or subsystem (`feat(auth): ...`, `fix(api): ...`).
78
+ - Use scopes already in the history or config. Don't invent a new one per commit.
79
+ - Leave the scope out rather than guess, or when the change spans the whole project.
80
+
81
+ ## 5. Breaking changes
82
+
83
+ A change is breaking when existing callers, configs, data or users must change something to keep working: removed or renamed public API, changed defaults, changed output format, dropped runtime support, a required new setting.
84
+
85
+ Mark it with either or both:
86
+
87
+ ```
88
+ feat(api)!: remove v1 order endpoints
89
+
90
+ BREAKING CHANGE: /v1/orders is gone. Call /v2/orders, which returns
91
+ amounts in minor units instead of decimals.
92
+ ```
93
+
94
+ - Prefer `!` plus a `BREAKING CHANGE:` footer that says **what breaks and what to do instead**. That footer text usually lands in the changelog verbatim.
95
+ - If you think a change is breaking but the user hasn't said so, **stop and ask** before marking it; it decides a major release.
96
+ - On a project still at `0.y.z`, a breaking change is still marked; the release tooling decides how to bump.
97
+
98
+ ## 6. Write a body that explains why
99
+
100
+ The diff shows what changed. The body says:
101
+
102
+ 1. Why the change was needed (the bug, the requirement, the constraint).
103
+ 2. Why this approach, if it isn't obvious, and what was ruled out.
104
+ 3. Side effects a reviewer would not guess (migration needed, cache to clear, behaviour change at the edges).
105
+
106
+ Skip the body only for changes whose reason is self-evident (`docs: fix typo in README`). Never restate the diff line by line, and never write "update file" or "misc fixes".
107
+
108
+ ## 7. Footers
109
+
110
+ - Issue links: `Refs: #123`. On GitHub and GitLab, `Closes #123` or `Fixes #123` closes the issue when the commit reaches the default branch, so use those only when the commit really completes it.
111
+ - Co-authors: `Co-authored-by: Name <email>`.
112
+ - Reverts: `git revert --no-commit <sha>`, then commit as `revert: <original subject>` with the body line `This reverts commit <sha>.` and a `Refs: <sha>` footer. Plain `git revert` writes a `Revert "<subject>"` subject, which is not in the Conventional Commits format.
113
+
114
+ ## 8. Check before committing
115
+
116
+ - If the project has commitlint, check the message: `echo "<message>" | npx commitlint`, or a range with `npx commitlint --from origin/main --to HEAD`.
117
+ - Commit without opening an editor: `git commit -F <message-file>` or `git commit -m "<subject>" -m "<body>" -m "<footer>"`.
118
+ - If a commit hook rejects the message, fix the message. Don't skip hooks with `--no-verify` unless the user asks.
119
+ - If the commit is already pushed to a shared branch, don't amend it; the squash-merge title or a follow-up commit is the place to fix it.
120
+
121
+ ## Examples
122
+
123
+ ```
124
+ fix(cart): reject negative quantities
125
+
126
+ The quantity input accepted values below zero, which produced negative
127
+ line totals and let users reduce an order's price. Validate on the
128
+ server as well as in the form, since the API is called directly by the
129
+ mobile app.
130
+
131
+ Fixes #482
132
+ ```
133
+
134
+ ```
135
+ perf(search): cache tokenised queries per request
136
+
137
+ Profiling showed tokenisation was 40% of search latency for repeated
138
+ filter queries. The cache lives only for the request, so there is no
139
+ invalidation to manage.
140
+ ```
141
+
142
+ ## Report back
143
+
144
+ Give the final message in a code block, the files it covers, and one line on why that type, scope and breaking flag were chosen. If you proposed a split, list each commit's message and files.
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Write a conventional commit message for what I've staged",
4
+ "commitlint keeps failing with 'subject may not be empty', fix my commit message",
5
+ "Is removing the legacy config flag a feat or a breaking change? How do I mark it in the commit?",
6
+ "I've staged a bug fix and a refactor together, split them into properly typed commits",
7
+ "Rewrite this commit message so it explains why we changed the retry logic, not just what"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Decide whether the next release should be 3.0.0 or 2.5.0 and publish it",
11
+ "My rebase onto main has conflicts in the lockfile, help me finish it",
12
+ "Write the pull request description for this branch",
13
+ "Generate release notes for v1.8.0 from the changelog",
14
+ "Recover the commits I lost after a bad interactive rebase"
15
+ ]
16
+ }
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: cpp-patterns
3
+ description: Modern C++ (17/20/23) house rules for writing and restructuring code - RAII for every resource, unique_ptr/shared_ptr ownership, value semantics and the rule of zero, const-correctness, steering clear of undefined behaviour, concepts used sparingly, target-based CMake, plus sanitizer and clang-tidy setup. Use when writing new C++ code, modernising legacy C++98/03 code, deciding who owns an object, or setting up a CMake project with warnings, sanitizers and clang-tidy.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs a C++17-or-later compiler (GCC, Clang or MSVC) and CMake for the build sections.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "cmake"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Modern C++ patterns
15
+
16
+ Write C++ where ownership is visible in the types, resources clean themselves up, and the compiler plus sanitizers catch what review misses.
17
+
18
+ ## 0. Before you write code
19
+
20
+ 1. Find the language standard the project builds with: `CMAKE_CXX_STANDARD` or `target_compile_features(... cxx_std_NN)` in `CMakeLists.txt`, `-std=` in compile flags, or `compile_commands.json`. Never use a feature newer than that standard.
21
+ 2. Match the project's existing conventions (naming, error style, exceptions on or off, header layout). If the codebase builds with `-fno-exceptions`, do not introduce `throw`.
22
+ 3. If the change would alter a public header used by other libraries or shipped as a binary SDK, **stop and ask the user**: it may be an ABI break.
23
+
24
+ ## 1. Ownership and RAII
25
+
26
+ Decision rules, in order:
27
+
28
+ 1. **Store by value** when the object has one owner and a known type. `std::vector<Widget>`, not `std::vector<Widget*>`.
29
+ 2. **`std::unique_ptr<T>`** for single ownership of a heap object (polymorphic types, pimpl, large or optional objects). Create with `std::make_unique<T>(...)`.
30
+ 3. **`std::shared_ptr<T>`** only when ownership is genuinely shared and lifetimes cannot be ordered. Create with `std::make_shared`. Break cycles with `std::weak_ptr`.
31
+ 4. **Raw pointer or reference = non-owning.** `T&` when it cannot be null, `T*` when it can. A raw pointer never gets `delete`d by the code that receives it.
32
+ 5. **Views do not own.** `std::string_view` and `std::span` must not outlive the buffer they point into; never return one that points at a local or a temporary.
33
+
34
+ Every resource (file handle, socket, lock, OS handle, C library object) is wrapped in an object whose destructor releases it:
35
+
36
+ ```cpp
37
+ struct FileCloser { void operator()(std::FILE* f) const noexcept { if (f) std::fclose(f); } };
38
+ using File = std::unique_ptr<std::FILE, FileCloser>;
39
+
40
+ File open_file(const char* path) { return File{std::fopen(path, "rb")}; }
41
+ ```
42
+
43
+ Locks: `std::scoped_lock` (C++17) or `std::lock_guard`; `std::unique_lock` when you must unlock early or wait on a `std::condition_variable`. Never manual `lock()`/`unlock()`.
44
+
45
+ Never write: naked `new`/`delete` in application code, `malloc`/`free` for C++ objects, `delete this`, `std::auto_ptr`, or a `shared_ptr` passed by value into a function that only reads it (pass `const T&` instead).
46
+
47
+ ## 2. Value semantics and special members
48
+
49
+ - **Rule of zero:** if members are RAII types, declare no destructor, copy or move operations. The compiler-generated ones are correct.
50
+ - **Rule of five:** if you must write one of destructor / copy ctor / copy assign / move ctor / move assign, write or `= delete` all five.
51
+ - Mark move constructors and move assignment `noexcept`. A copyable type whose move constructor is not `noexcept` gets copied, not moved, when `std::vector` reallocates.
52
+ - Pass parameters: cheap types (ints, pointers, `string_view`, `span`) by value; read-only larger objects by `const T&`; sink parameters (the callee keeps a copy) by value then `std::move` into place.
53
+ - Return by value. Do not write `return std::move(local);`; it blocks copy elision.
54
+ - Never use an object after `std::move` from it except to assign to it or destroy it.
55
+ - Make single-argument constructors `explicit` unless implicit conversion is the point.
56
+
57
+ ## 3. Const-correctness
58
+
59
+ - Variables are `const` (or `constexpr`) unless they are mutated.
60
+ - Member functions that do not change observable state are `const`. `mutable` only for caches and mutexes.
61
+ - Prefer `constexpr` functions and `static_assert` for things knowable at compile time.
62
+ - Mark functions `[[nodiscard]]` when ignoring the result is almost always a bug (error codes, `expected`-style results, factory functions).
63
+
64
+ ## 4. Avoiding undefined behaviour
65
+
66
+ Check each of these in code you write or touch. Details and examples: `references/undefined-behaviour.md`.
67
+
68
+ - Signed integer overflow, shifting by >= the bit width, and division by zero.
69
+ - Out-of-bounds indexing: use `.at()` in non-hot code, range-for, or `std::span`; check indices from input.
70
+ - Dangling references: returning a reference or view to a local, lambdas capturing locals by reference that outlive the scope, iterators or references into a `vector` after `push_back`/`insert`/`erase`.
71
+ - Uninitialised variables: initialise at declaration (`int n{};`, `T x = make();`).
72
+ - Strict aliasing and type punning: use `std::memcpy` or `std::bit_cast` (C++20), not `reinterpret_cast` between unrelated types.
73
+ - Data races: any variable written by one thread and read by another needs a mutex or `std::atomic`.
74
+ - Deleting through a pointer to a polymorphic base class whose destructor is neither `virtual` nor `protected`.
75
+
76
+ ## 5. Errors
77
+
78
+ - Follow the project's existing strategy. If none: exceptions for errors the immediate caller cannot handle, return values for expected failures (`std::optional`, `std::expected` in C++23, or the project's own result type).
79
+ - Destructors, move operations and `swap` are `noexcept` and never throw.
80
+ - Give every function the strong or basic exception guarantee: on throw, state is unchanged or still valid, and nothing leaks (RAII makes this automatic).
81
+
82
+ ## 6. Templates and concepts in moderation
83
+
84
+ - Write a plain function or class first. Add a template only when there are two real call sites with different types.
85
+ - In C++20, constrain templates with standard concepts (`std::integral`, `std::ranges::range`) or a short named `concept`, instead of `enable_if`.
86
+ - Keep template definitions in headers. No template metaprogramming where `if constexpr` or an overload does the job.
87
+ - Prefer standard algorithms and ranges (`std::ranges::sort`, `std::ranges::find_if`) over hand-written loops when they read more clearly.
88
+
89
+ ## 7. Project structure and CMake
90
+
91
+ Use target-based CMake; never set flags globally with `CMAKE_CXX_FLAGS` edits or `include_directories()`.
92
+
93
+ ```cmake
94
+ cmake_minimum_required(VERSION 3.20)
95
+ project(app LANGUAGES CXX)
96
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
97
+
98
+ add_library(core src/core.cpp)
99
+ target_include_directories(core PUBLIC include)
100
+ target_compile_features(core PUBLIC cxx_std_20)
101
+
102
+ add_executable(app src/main.cpp)
103
+ target_link_libraries(app PRIVATE core)
104
+ ```
105
+
106
+ - Layout: `include/<project>/` public headers, `src/` sources and private headers, `tests/` tests.
107
+ - `PUBLIC` when consumers need it (it appears in your headers), `PRIVATE` when only your `.cpp` files need it.
108
+ - Get dependencies with `find_package` (fed by vcpkg or Conan) or `FetchContent`; do not vendor copies.
109
+ - Out-of-source builds only: `cmake -S . -B build && cmake --build build`.
110
+
111
+ Warnings, sanitizers, clang-tidy and a `CMakePresets.json` example: `references/cmake-and-tooling.md`.
112
+
113
+ ## 8. Tooling loop
114
+
115
+ 1. Build with warnings on: GCC/Clang `-Wall -Wextra -Wpedantic -Wshadow -Wconversion`, MSVC `/W4`. Treat new warnings in touched files as errors.
116
+ 2. Run the tests under AddressSanitizer + UndefinedBehaviorSanitizer (`-fsanitize=address,undefined -fno-omit-frame-pointer`). Run ThreadSanitizer (`-fsanitize=thread`) in a **separate** build for concurrent code; it cannot be combined with ASan.
117
+ 3. Run `clang-tidy` on changed files using `compile_commands.json` (`clang-tidy -p build <files>`). Fix findings in code you touched; do not mass-fix the rest of the codebase unasked.
118
+ 4. Format with the project's `.clang-format` if one exists (`clang-format -i <files>`). Do not add one unasked.
119
+
120
+ ## Rules
121
+
122
+ - Never silence a warning or sanitizer report with a cast, pragma or suppression file without explaining the root cause to the user.
123
+ - Never change a public header's layout, virtual functions or inline functions in a shipped library without asking (ABI).
124
+ - Do not modernise unrelated code in the same change. Keep diffs focused.
125
+ - If you cannot build the project locally, say so; do not claim code compiles.
126
+
127
+ ## Report back
128
+
129
+ End with: files changed, the build and test commands you ran (with sanitizer flags), their results, and any warnings or clang-tidy findings left unresolved.
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Rewrite this class so it stops using raw new and delete and uses smart pointers instead",
4
+ "Should this member be a unique_ptr, a shared_ptr or just a value?",
5
+ "Set up a new C++20 CMake project with warnings, sanitizers and clang-tidy",
6
+ "Modernise this old C++03 parser to C++17 style with RAII and string_view",
7
+ "Write a thread-safe connection pool class in modern C++"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Write GoogleTest unit tests for the Matrix class and hook them into CTest",
11
+ "Review my C++ pull request for dangling references and data races",
12
+ "The linker says undefined reference to vtable for Widget, fix the build",
13
+ "Refactor this Rust module to avoid cloning and use borrowed slices",
14
+ "Add idiomatic error handling with errors.Is to this Go service"
15
+ ]
16
+ }