@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,15 @@
1
+ {
2
+ "should_trigger": [
3
+ "We want to open-source our internal CLI tool. What do we need to do before making the repo public?",
4
+ "Make sure there are no old API keys or internal hostnames anywhere in the git history before we flip this GitHub repo to public",
5
+ "Prepare this company project for its first public release under an open licence, with SECURITY.md and a code of conduct",
6
+ "Use git filter-repo to strip the customer data that was committed three years ago, then check we can publish the repo"
7
+ ],
8
+ "should_not_trigger": [
9
+ "Cut version 2.3.0 and write the release notes from the merged PRs",
10
+ "Scan the current change for vulnerabilities and leaked secrets before I push",
11
+ "Audit our npm dependencies for known CVEs and typosquatted packages",
12
+ "Rewrite the README so new users can get started faster",
13
+ "Squash my last five commits into one before I open the pull request"
14
+ ]
15
+ }
@@ -0,0 +1,65 @@
1
+ # History scrubbing, licence tools and final checklist
2
+
3
+ ## Fresh history (safest)
4
+
5
+ ```sh
6
+ git clone <private-url> work && cd work
7
+ # after cleaning the tree and committing:
8
+ rm -rf .git && git init -b main && git add -A
9
+ gitleaks dir -v . # must be clean before the first commit
10
+ git commit -m "Initial public release"
11
+ ```
12
+
13
+ Keep the private repository as the archive of old history.
14
+
15
+ ## Rewriting history with git filter-repo
16
+
17
+ Rotate secrets before you start. Work in a fresh clone.
18
+
19
+ `replacements.txt`, one expression per line (literal by default; `regex:` and `glob:` prefixes allowed; `==>` sets the replacement, otherwise matches become `***REMOVED***`):
20
+
21
+ ```
22
+ AKIAEXAMPLEKEY==>REDACTED
23
+ regex:[a-z0-9-]+\.corp\.example\.com==>internal.example
24
+ ```
25
+
26
+ ```sh
27
+ git filter-repo --sensitive-data-removal --replace-text ../replacements.txt
28
+ git filter-repo --sensitive-data-removal --invert-paths --path config/prod.env --path dumps/
29
+ git filter-repo --replace-message ../message-replacements.txt # same format, for commit messages
30
+ git filter-repo --mailmap ../mailmap # rewrite author/committer names and emails
31
+ ```
32
+
33
+ - `--sensitive-data-removal` fetches all refs first, reports the first changed commits and orphaned LFS objects, and prints cleanup steps for the remote and other clones.
34
+ - Keep `replacements.txt` outside the repository; it contains the secrets.
35
+ - Re-run `gitleaks git -v --log-opts="--all"` and the manual searches until clean.
36
+ - If the private remote must also be cleaned: `git push --force --mirror origin` only with the user's sign-off; hosts block some refs (`refs/pull/*`) and keep cached views, so follow the host's sensitive-data removal guide and contact its support to purge them. Every other clone must be re-cloned or cleaned.
37
+
38
+ ## Third-party licence inventory
39
+
40
+ | Ecosystem | Tool |
41
+ |---|---|
42
+ | npm / pnpm / Yarn | `npx license-checker-rseidelsohn --summary` (or the maintained checker the project uses) |
43
+ | Python | `pip-licenses --format=markdown` in the project's environment |
44
+ | Go | `go-licenses report ./...` |
45
+ | Rust | `cargo deny check licenses` with an allow-list in `deny.toml` |
46
+ | Java / Kotlin | Gradle or Maven licence plugins the build already uses |
47
+ | Any | `licensee detect` for the repository's own licence; `reuse lint` for REUSE compliance |
48
+
49
+ Also check for an SBOM requirement; `syft` or the ecosystem's SBOM tool can produce one.
50
+
51
+ ## Final checklist (all must be yes)
52
+
53
+ - [ ] Owner approval recorded
54
+ - [ ] Every found secret rotated, and scans of tree and full history are clean
55
+ - [ ] No PII, customer data, internal hostnames, IPs, account IDs or internal URLs remain
56
+ - [ ] `LICENSE` present, SPDX id in manifests, third-party licence flags resolved by a qualified person
57
+ - [ ] README quick-start works from a clean clone on a machine without internal network access
58
+ - [ ] Build and tests pass without private registries, internal services or company VPN
59
+ - [ ] CONTRIBUTING, SECURITY (with a real contact), CODE_OF_CONDUCT (with a real contact)
60
+ - [ ] Public CI green; secret scanning, push protection and branch protection enabled
61
+ - [ ] Internal-only workflows, runbooks and deploy config removed
62
+ - [ ] Trademarks and project name cleared by the owner
63
+ - [ ] Publishing to a new public repository, or, if flipping the existing one, issues, PRs, wiki, releases and Actions logs reviewed
64
+ - [ ] Commit authors, emails and messages reviewed (fresh history, or `--mailmap` / `--replace-message` applied)
65
+ - [ ] User gave explicit sign-off to change visibility
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: parallel-agent-orchestration
3
+ description: Fans a large coding job out to several subagents at once and merges the results. Covers cutting the job into independent units with disjoint file ownership, writing a self-contained brief and return contract for each worker, isolating writers in separate git worktrees or branches, and checking every result before integrating it. Use when work splits naturally into pieces that can run side by side (many modules, many packages, a survey plus several fixes), or when the user asks to run agents in parallel or orchestrate a team of subagents.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host that can start subagents. Worktree isolation needs git 2.17 or later (for git worktree remove).
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: meta
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "git"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Parallel agent orchestration
15
+
16
+ You are the orchestrator. Workers do the units; you own the plan, the contracts, the merge and the final verification. Parallelism only pays when units are truly independent. Two agents editing the same file is a merge conflict you chose.
17
+
18
+ ## 1. Decide whether to parallelise
19
+
20
+ Parallelise only if all are true:
21
+
22
+ - The work splits into 2 or more units that don't need each other's output to start.
23
+ - Each unit can be checked on its own (a test, a lint, a build, a clear review question).
24
+ - The units touch different files, or are read-only.
25
+
26
+ Otherwise do it sequentially, or run a read-only survey in parallel and the edits in sequence. If the split is unclear, **stop and propose the split to the user** before starting workers.
27
+
28
+ ## 2. Cut the units
29
+
30
+ 1. Search the codebase to map what each unit touches. Write the plan as a table:
31
+
32
+ | Unit | Goal | Owns (may edit) | May read | Check command |
33
+ |---|---|---|---|---|
34
+
35
+ 2. Give every file at most one owner. Shared files (lockfiles, `package.json`, route tables, barrel `index` files, generated catalogs, changelogs) belong to **you**: workers report what they need there and you apply it at merge time.
36
+ 3. Do shared groundwork first and yourself: interfaces, types, config that several units depend on. Commit it, then start workers from that commit.
37
+ 4. Keep the count small. Three to six workers is easier to verify than twenty. More units than that: run in waves.
38
+
39
+ ## 3. Isolate writers
40
+
41
+ - Read-only workers (search, review, research) can share the working tree.
42
+ - Writing workers each get their own worktree and branch, so they can't clobber each other:
43
+
44
+ ```
45
+ git worktree add -b work/<unit> ../<repo>-<unit> <base-sha>
46
+ ```
47
+
48
+ Start every worktree from the groundwork commit of step 2. If the host creates worktrees for its subagents itself, use those instead. Remove them after merging with `git worktree remove ../<repo>-<unit>`.
49
+ - If the host runs workers in the same tree, ownership from step 2 is the only protection: state it in every brief.
50
+
51
+ ## 4. Write each brief
52
+
53
+ A worker starts with none of your context. Every brief contains:
54
+
55
+ ```
56
+ Goal: <one sentence, the outcome>
57
+ Context: <the 3-6 facts it needs: paths, conventions, decisions already made>
58
+ You own: <files/folders you may edit>. Do not edit anything else.
59
+ Do not: <push / commit anywhere but work/<unit> / install dependencies / touch shared files / ask the user>
60
+ Done when: <check command> passes and <acceptance criteria>
61
+ Return exactly:
62
+ status: done | blocked | partial
63
+ changed: list of paths
64
+ check: <command> -> <result>
65
+ needs_from_orchestrator: shared-file changes or decisions, or "none"
66
+ notes: max 5 lines
67
+ ```
68
+
69
+ Ask for a fixed, short return format. Free-form essays are hard to merge and eat your context.
70
+
71
+ ## 5. Run and watch
72
+
73
+ - Start the independent workers together. Don't start a worker whose inputs aren't ready.
74
+ - If a worker returns `blocked`, decide yourself or **ask the user**; don't let it guess.
75
+ - Don't re-run a failed worker with the same brief. Fix the brief (missing context, wrong ownership) first.
76
+
77
+ ## 6. Verify every result
78
+
79
+ Treat worker output as a claim, not a fact:
80
+
81
+ 1. Check `changed` against ownership: `git diff --name-only <base-sha>..work/<unit>`, plus `git -C ../<repo>-<unit> status --short` for anything left uncommitted. Any file outside its ownership: reject or redo that part.
82
+ 2. Re-run the unit's check command yourself.
83
+ 3. Read the diff. Look for skipped or deleted tests, stubs, TODOs and silent scope creep.
84
+
85
+ ## 7. Merge
86
+
87
+ 1. Merge units one at a time onto the integration branch, in dependency order.
88
+ 2. Apply the `needs_from_orchestrator` changes to shared files yourself.
89
+ 3. After each merge run the affected checks; after the last, run the project's full check (tests, lint, build).
90
+ 4. On a conflict, resolve it yourself with both briefs in mind, or redo the smaller unit on top of the merged result. Never pick a side blindly.
91
+
92
+ ## Report
93
+
94
+ ```
95
+ Units: <n> (<n> done, <n> redone, <n> dropped)
96
+ Merged: <branch> at <sha>
97
+ Full check: <command> -> <result>
98
+ Left over: <blocked items and open questions>
99
+ ```
100
+
101
+ ## Never
102
+
103
+ - Never give two workers write access to the same file.
104
+ - Never merge a unit you haven't re-checked yourself.
105
+ - Never let workers commit to the integration branch or push.
106
+ - Never parallelise a task whose steps depend on each other's results just to go faster.
@@ -0,0 +1,14 @@
1
+ {
2
+ "should_trigger": [
3
+ "Spin up several subagents to migrate each of our 8 packages to ESM at the same time",
4
+ "Split this big refactor across parallel workers without them stepping on each other's files",
5
+ "Run one agent per service to add health checks, then merge everything into one branch",
6
+ "How should I divide this job between a team of agents and combine what they produce"
7
+ ],
8
+ "should_not_trigger": [
9
+ "Keep retrying the flaky integration test fix overnight until CI is green",
10
+ "Design the message queue so our worker processes handle jobs concurrently",
11
+ "The context keeps overflowing when I read this monorepo, help me budget it",
12
+ "Plan the implementation steps for the new invoicing feature"
13
+ ]
14
+ }
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: patent-research
3
+ description: Patent and trademark search groundwork across USPTO Patent Public Search and Trademark Search, EPO Espacenet, Google Patents and WIPO PATENTSCOPE and Global Brand Database, covering breaking an invention into searchable features, keyword and CPC classification queries, prior-art and freedom-to-operate lead lists, reading independent claims element by element, checking legal status, family and expiry, and knockout trademark screens by Nice class, with every result labelled as leads for a registered patent attorney or trademark lawyer to assess. Use when checking whether an idea looks new before filing, looking for patents that might block a product launch, mapping competitors' patent filings, summarising what a patent actually claims, or screening a brand name before adopting it.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs network access to the public patent and trademark databases. Not legal advice; novelty, patentability, infringement, validity and registrability opinions need a qualified patent attorney or trademark lawyer.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: compliance
9
+ kete-loom/risk: network
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Patent and trademark research
14
+
15
+ Find the documents a professional should look at, explain what they claim in plain language, and hand over a search record they can rely on. You produce leads and summaries; you never give an opinion that something is patentable, infringing, invalid, or free to use.
16
+
17
+ ## Attorney-review gate
18
+
19
+ Every output carries: `Search leads only, not a legal opinion. Have a registered patent attorney or agent (or a trademark lawyer for marks) review before any filing, launch or licensing decision.`
20
+
21
+ **Stop and tell the user they need a qualified professional now** when:
22
+
23
+ - They plan to file, launch, invest, or respond to a demand letter based on the result.
24
+ - A lead looks close to their product or invention (a claim where most elements seem present). Do not write an infringement or validity analysis; list the lead and say why it needs review.
25
+ - They received a cease-and-desist, an infringement claim, or an office action.
26
+ - They ask whether they can safely use a mark or a technology.
27
+
28
+ Also warn the user, before they describe an unfiled invention: public disclosure can destroy patent rights in many countries (Europe has no general grace period; the US has a limited one-year inventor grace period). Keep details in a confidential setting and do not paste unpublished invention details into services the user has not approved.
29
+
30
+ ## 0. Define the question
31
+
32
+ Ask, then restate:
33
+
34
+ 1. Search type: novelty or prior art (before filing), freedom to operate (FTO, before launch), landscape (who files what), single-patent summary, or trademark knockout.
35
+ 2. The invention or product as features: what it is, the problem it solves, how it works, each technical feature separately.
36
+ 3. Jurisdictions that matter (where they will file, make or sell). FTO is per country: only patents in force there matter.
37
+ 4. Dates: the user's earliest filing or disclosure date for novelty; launch date for FTO.
38
+
39
+ ## 1. Build the search
40
+
41
+ 1. Split the invention into 3 to 6 key concepts. For each, list synonyms, broader and narrower terms, and how a patent drafter would say it ("fastening member" for "screw").
42
+ 2. Find the CPC classes: search keywords, open the most relevant hits, note the CPC codes they share, then read the class definitions on the CPC scheme (cooperativepatentclassification.org) to confirm. Search by class and keyword together.
43
+ 3. Run the search in at least two databases. What each one is good for, and query syntax, are in `references/databases-and-queries.md`.
44
+ 4. Follow citations both ways from the best hits (what they cite, and what cites them), and check the family to find versions in other languages and jurisdictions.
45
+ 5. Record every query, database, date and number of hits. A search nobody can repeat is worth little.
46
+
47
+ Remember the blind spot: applications usually publish about 18 months after their earliest priority date, so the most recent filings cannot be found yet.
48
+
49
+ For novelty, prior art also includes non-patent literature: papers, standards, product manuals, websites. Search those too (for example Google Scholar) and note the publication date.
50
+
51
+ ## 2. Screen and read
52
+
53
+ 1. Screen titles, abstracts and drawings first; keep anything plausibly relevant.
54
+ 2. For each kept document, read the **claims**, not the abstract. The claims define the rights; the description only explains them.
55
+ 3. Find the independent claims (those that do not refer to another claim). Break each into elements (preamble, then each "comprising" feature).
56
+ 4. Make a claim chart: one row per element, with where the same feature appears in the user's product or invention (for FTO) or in the prior art (for novelty). Mark each as `present`, `absent`, or `unclear`. This is a reading aid for the attorney, not a conclusion.
57
+ 5. Note claim language that matters: "comprising" (open) versus "consisting of" (closed), means-plus-function language, numeric ranges.
58
+
59
+ ## 3. Check status and dates
60
+
61
+ For each lead that matters for FTO:
62
+
63
+ - Granted or only an application? Applications are not enforceable until granted, and pending claims can change.
64
+ - Legal status: in force, lapsed for non-payment, expired, withdrawn, revoked. Use the official register (EP Register, USPTO Patent Center, national registers) and Espacenet's INPADOC legal status; Google Patents' status is a hint, not a record.
65
+ - Expiry: usually 20 years from the patent's filing date (in the US, from the earliest US non-provisional or PCT application whose benefit it claims; provisionals and foreign Paris Convention priority do not start the clock), adjusted for term adjustments, extensions, terminal disclaimers and lapses. Give the estimate with the reasoning, and say a professional must confirm it.
66
+ - Where it is in force: list the family members and their countries.
67
+
68
+ ## 4. Trademark knockout screen
69
+
70
+ 1. Identify the goods and services and their Nice classes.
71
+ 2. Search identical and similar marks (spelling variants, sound-alikes, translations, design elements) in the target registers: USPTO Trademark Search (tmsearch.uspto.gov), EUIPO and national offices through TMview, and the WIPO Global Brand Database, plus common-law use (web, app stores, company registries, domain names).
72
+ 3. List live marks in the same or related classes as conflicts to review; note dead marks separately.
73
+ 4. A clean knockout screen does not mean the mark is available; a full clearance search and lawyer opinion are needed before launch.
74
+
75
+ ## Rules
76
+
77
+ - Never say something is "new", "patentable", "not infringing", "invalid" or "free to use". Say what you found and what needs review.
78
+ - Never rely on the abstract or title for what a patent covers; read the claims.
79
+ - Never state a legal status or expiry date without the source and the date checked.
80
+ - Do not paste confidential invention details into a public search tool the user has not approved; search with generic concept terms.
81
+ - Quote claims exactly when you cite them, with the publication number and claim number.
82
+
83
+ ## Report
84
+
85
+ ```
86
+ Search: <type> | question: <one line> | jurisdictions: <list> | date run: <date>
87
+ Search log: database | query | hits | reviewed
88
+ Leads (most relevant first):
89
+ <pub number> | title | assignee | priority date | status (source, date) | est. expiry | CPC | why relevant
90
+ Claim chart for independent claim <n>: element | present / absent / unclear | where
91
+ Trademark screen: mark | register | class | status | similarity note
92
+ Gaps: unpublished applications, databases not searched, non-patent literature not covered
93
+ Search leads only, not a legal opinion. Needs review by a registered patent attorney or trademark lawyer.
94
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Before we file, search Espacenet and Google Patents for prior art on our self-cleaning water bottle cap",
4
+ "We launch a smart thermostat in the US and Germany next year, find patents in force that could block it",
5
+ "Summarise what claim 1 of US patent 10,123,456 actually covers and when it expires",
6
+ "Map which competitors are filing patents in CPC class H01M 10 for battery cooling",
7
+ "Screen the brand name Lumora for conflicting trademarks in class 9 and 42 before we adopt it"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Draft an NDA to share our invention with a manufacturer",
11
+ "Add an open source licence and NOTICE file to our repository",
12
+ "Check our npm dependencies for licences that conflict with commercial use",
13
+ "Write the brand voice guidelines for our new product line",
14
+ "Classify our products with HS codes for export to Canada"
15
+ ]
16
+ }
@@ -0,0 +1,52 @@
1
+ # Databases and query patterns
2
+
3
+ Read this when building a search (section 1). Syntax changes; if a query fails, check the database's own help page and note the syntax you used in the search log.
4
+
5
+ ## Patent databases
6
+
7
+ | Database | URL | Best for |
8
+ |---|---|---|
9
+ | USPTO Patent Public Search | ppubs.uspto.gov | full text of US grants and published applications; Basic and Advanced search with field codes |
10
+ | USPTO Patent Center | patentcenter.uspto.gov | US file wrappers, status, fees paid |
11
+ | Global Dossier | via the USPTO site | file histories across the main patent offices for one family |
12
+ | EPO Espacenet | worldwide.espacenet.com | worldwide coverage, families (simple and INPADOC), CPC browsing, INPADOC legal status |
13
+ | European Patent Register | register.epo.org | authoritative status of European applications and patents |
14
+ | Google Patents | patents.google.com | fast full-text search with machine translation, CPC filters, citations, "similar documents"; status is not authoritative |
15
+ | WIPO PATENTSCOPE | patentscope.wipo.int | PCT international applications, national collections, cross-lingual search |
16
+ | CPC scheme | cooperativepatentclassification.org | class definitions and titles (CPC is run jointly by the EPO and USPTO) |
17
+
18
+ ## Trademark databases
19
+
20
+ | Database | URL | Notes |
21
+ |---|---|---|
22
+ | USPTO Trademark Search | tmsearch.uspto.gov | replaced TESS in November 2023; different syntax from TESS |
23
+ | TMview | via tmdn.org | EUIPO and many national and international registers in one search |
24
+ | WIPO Global Brand Database | branddb.wipo.int | international registrations (Madrid) and many national collections |
25
+ | Nice Classification | WIPO site | goods and services classes; check the edition in force |
26
+
27
+ ## Query patterns
28
+
29
+ Build each query as concept blocks joined with AND, synonyms inside a block joined with OR, and a class block when you have one.
30
+
31
+ Espacenet Smart search (field identifiers such as `ti` title, `ab` abstract, `ta` title or abstract, `cl` claims, `cpc` classification, `pa` applicant, `pd` publication date; `txt` covers different fields in different interfaces, and a `/low` qualifier widens a CPC symbol to its child groups; check the current help page):
32
+
33
+ ```
34
+ ta=(drone OR "unmanned aerial") AND ta=(parcel OR package) AND cpc=B64U
35
+ pa="acme" AND pd>=2018
36
+ ```
37
+
38
+ Google Patents (search box terms plus filters; `cpc:B64U` includes child codes, `CPC=B64U/low` is the field form; `TI=`, `AB=`, `CL=`, `TAC=` restrict to title, abstract, claims or all three; the advanced form shows the date and country syntax it generates):
39
+
40
+ ```
41
+ (drone OR "unmanned aerial vehicle") (parcel OR package) (winch OR tether)
42
+ cpc:B64U before:priority:20200101 country:US,EP
43
+ ```
44
+
45
+ USPTO Patent Public Search: use the Advanced search with field codes (for example `.ti.` title, `.ab.` abstract, `.clm.` claims, `.cpc.` classification) and proximity operators such as `ADJ`, `NEAR` and `SAME`; the system's help lists the full set.
46
+
47
+ ## Tips
48
+
49
+ - Start broad, then add a block at a time; record hit counts at each step.
50
+ - Search claims text separately for FTO; a feature that appears only in the description is not claimed.
51
+ - Use applicant searches for competitors, then harmonise name variants (subsidiaries, old names).
52
+ - Check translations of non-English hits before dismissing them.
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: paystack-integration
3
+ description: Builds and reviews Paystack payment integrations, including transaction initialisation, server-side verification, webhooks with HMAC-SHA512 signature checks, idempotent fulfilment, and Ghana mobile money (MTN, Telecel, AT) charges. Use when adding Paystack checkout, card or mobile money payments, handling Paystack webhooks, or debugging a Paystack payment flow.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs network access to api.paystack.co for live calls. Examples are TypeScript (Node 18+); the rules apply to any backend language.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: integrations
9
+ kete-loom/risk: network
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Paystack integration
14
+
15
+ Build a payment flow that can't be faked from the browser and never gives value twice. These rules cover cards, bank and mobile money.
16
+
17
+ ## Ground rules
18
+
19
+ 1. **The secret key stays on the server.** Read it from the environment (`PAYSTACK_SECRET_KEY`). Only the public key (`pk_...`) may reach the browser or app.
20
+ 2. **Amounts are in the currency's subunit**: pesewas for GHS, kobo for NGN, cents for USD, KES and ZAR. GHS 25.50 is `2550`. Use integers, never floats.
21
+ 3. **The server decides the price.** Compute the amount from your own database (order total, plan price). Never trust an amount sent by the client.
22
+ 4. **Value is given only after verification.** Either a webhook with a valid signature, or a call to the Verify Transaction endpoint, must confirm `status: "success"` **and** that the amount and currency match what you expected.
23
+ 5. **Fulfilment is idempotent.** Store the `reference` with a unique constraint and process each reference once, because Paystack retries webhooks and users refresh pages.
24
+ 6. **Test keys first.** Use `sk_test_` / `pk_test_` until the full flow, including failures, works end to end.
25
+
26
+ ## Flow
27
+
28
+ ```
29
+ client ──(order id)──▶ server: create order, compute amount, POST /transaction/initialize
30
+ server ──(authorization_url or access_code)──▶ client: redirect or open Popup
31
+ customer pays on Paystack
32
+ Paystack ──(charge.success webhook)──▶ server: verify signature, verify amount, fulfil once
33
+ client returns to callback_url ──▶ server: GET /transaction/verify/:reference, show result
34
+ ```
35
+
36
+ The callback page only *shows* status. Fulfilment happens in the webhook (or a verify call), guarded by the idempotency check, so it is safe whichever arrives first.
37
+
38
+ ## Implementation steps
39
+
40
+ 1. **Initialise** with `POST https://api.paystack.co/transaction/initialize`, `Authorization: Bearer <secret key>`, and a body containing `email`, `amount` (subunit), `currency`, a `reference` you generate and store, `callback_url`, and `metadata` (for example the order id). See `references/api.md` for request and response shapes.
41
+ 2. **Webhook endpoint**: follow `references/webhooks.md` exactly. Verify the signature on the **raw** body, return `200` quickly, and do the work asynchronously.
42
+ 3. **Verify** with `GET https://api.paystack.co/transaction/verify/:reference` on the callback page and as a fallback when no webhook arrives.
43
+ 4. **Mobile money (Ghana)**: use the Charge API or the standard checkout, and follow `references/mobile-money.md` for the `pay_offline` pending flow and the 180-second approval window.
44
+ 5. **Persist** an order and payment record holding `reference`, expected amount and currency, status, the Paystack transaction id, and timestamps.
45
+
46
+ ## Reviewing an existing integration
47
+
48
+ Check each ground rule above, then look for these common bugs:
49
+
50
+ - Signature computed over re-serialised JSON instead of the raw bytes.
51
+ - Webhook does heavy work before responding, which causes timeouts and duplicate retries.
52
+ - Fulfilment keyed on `id` from the client, or done in the callback page without verification.
53
+ - Float arithmetic on amounts (`25.5 * 100`), or amounts in cedis instead of pesewas.
54
+ - Secret key committed in code or exposed in a `NEXT_PUBLIC_`/`VITE_` variable.
55
+ - No handling for `failed`, `abandoned` or `reversed` transactions.
56
+
57
+ ## Before you finish
58
+
59
+ Confirm field names and endpoints against Paystack's current docs at paystack.com/docs when generating new code; this skill gives the rules and the shape, the docs are the final word on the API. Then test: successful payment, declined payment, a duplicate webhook delivery, a webhook with a bad signature (must be rejected), and mobile money approval timing out.
@@ -0,0 +1,14 @@
1
+ {
2
+ "should_trigger": [
3
+ "Add Paystack checkout to our Next.js shop so Ghanaian customers can pay",
4
+ "My Paystack webhook says invalid signature every time, can you fix it?",
5
+ "Let users pay with MTN MoMo through Paystack in the mobile app",
6
+ "Customers are getting their orders twice when Paystack retries the webhook"
7
+ ],
8
+ "should_not_trigger": [
9
+ "Integrate Stripe subscriptions into the billing page",
10
+ "Review my last commit for security vulnerabilities",
11
+ "Write a blog post about mobile money adoption in West Africa",
12
+ "Build an invoice PDF generator for the accounting module"
13
+ ]
14
+ }
@@ -0,0 +1,73 @@
1
+ # Paystack API shapes used by this skill
2
+
3
+ Base URL: `https://api.paystack.co`. All server calls send `Authorization: Bearer <PAYSTACK_SECRET_KEY>` and `Content-Type: application/json`. Responses look like `{ "status": true, "message": "...", "data": { ... } }`; `status` there means the API call succeeded, not that a payment did.
4
+
5
+ Confirm fields against paystack.com/docs/api before shipping; this is a working summary.
6
+
7
+ ## Initialise a transaction
8
+
9
+ `POST /transaction/initialize`
10
+
11
+ ```json
12
+ {
13
+ "email": "customer@example.com",
14
+ "amount": 2550,
15
+ "currency": "GHS",
16
+ "reference": "ord_8f2c1a",
17
+ "callback_url": "https://app.example.com/pay/callback",
18
+ "channels": ["card", "mobile_money"],
19
+ "metadata": { "order_id": "8f2c1a" }
20
+ }
21
+ ```
22
+
23
+ Response `data`: `authorization_url` (redirect the customer here), `access_code` (for the inline Popup), `reference`.
24
+
25
+ ## Verify a transaction
26
+
27
+ `GET /transaction/verify/:reference`
28
+
29
+ Check in `data`:
30
+
31
+ | Field | Expect |
32
+ |---|---|
33
+ | `status` | `"success"` (others: `failed`, `abandoned`, `reversed`, `pending`) |
34
+ | `amount` | equals the amount you stored, in subunits |
35
+ | `currency` | equals the currency you stored |
36
+ | `reference` | the reference you generated |
37
+ | `id` | Paystack transaction id; store it |
38
+ | `channel` | `card`, `mobile_money`, `bank`, ... |
39
+
40
+ ## Minimal server client (TypeScript)
41
+
42
+ ```ts
43
+ const BASE = 'https://api.paystack.co';
44
+
45
+ async function paystack<T>(path: string, init: RequestInit = {}): Promise<T> {
46
+ const res = await fetch(`${BASE}${path}`, {
47
+ ...init,
48
+ headers: {
49
+ authorization: `Bearer ${process.env.PAYSTACK_SECRET_KEY}`,
50
+ 'content-type': 'application/json',
51
+ ...init.headers,
52
+ },
53
+ });
54
+ const body = await res.json();
55
+ if (!res.ok || body.status !== true) throw new Error(`Paystack ${path} failed: ${body.message ?? res.status}`);
56
+ return body.data as T;
57
+ }
58
+
59
+ export const initialize = (input: object) =>
60
+ paystack<{ authorization_url: string; access_code: string; reference: string }>('/transaction/initialize', {
61
+ method: 'POST',
62
+ body: JSON.stringify(input),
63
+ });
64
+
65
+ export const verify = (reference: string) =>
66
+ paystack<{ status: string; amount: number; currency: string; reference: string; id: number }>(
67
+ `/transaction/verify/${encodeURIComponent(reference)}`
68
+ );
69
+ ```
70
+
71
+ ## References
72
+
73
+ Generate references on the server, unique per payment attempt (for example `ord_<orderId>_<random>`). A retry after a failure gets a new reference; the order keeps a list of attempts.
@@ -0,0 +1,50 @@
1
+ # Ghana mobile money with Paystack
2
+
3
+ Two ways to accept mobile money:
4
+
5
+ 1. **Standard checkout** (simplest): initialise a transaction with `currency: "GHS"`, and optionally `channels: ["mobile_money"]`. The customer picks the network and approves on their phone. Fulfil from the webhook as usual.
6
+ 2. **Charge API** (your own UI): `POST https://api.paystack.co/charge` with your secret key.
7
+
8
+ ## Charge API request
9
+
10
+ ```json
11
+ {
12
+ "email": "customer@example.com",
13
+ "amount": 2550,
14
+ "currency": "GHS",
15
+ "reference": "ord_8f2c1a",
16
+ "mobile_money": {
17
+ "phone": "0551234987",
18
+ "provider": "mtn"
19
+ }
20
+ }
21
+ ```
22
+
23
+ Provider codes for Ghana:
24
+
25
+ | Code | Network |
26
+ |---|---|
27
+ | `mtn` | MTN Mobile Money |
28
+ | `vod` | Telecel Cash |
29
+ | `atl` | AT Money / Airtel Money |
30
+
31
+ `amount` is in pesewas (`2550` = GHS 25.50).
32
+
33
+ ## Pending flow
34
+
35
+ 1. The response usually has `data.status: "pay_offline"` and a `data.display_text`. Show that text to the customer ("Approve the prompt on your phone...").
36
+ 2. The customer has about **180 seconds** to approve on their handset; the networks set this limit.
37
+ 3. Wait for the `charge.success` webhook. Do not fulfil on the initial response.
38
+ 4. If no webhook arrives within ~180 seconds, call `GET /transaction/verify/:reference`. A failure reason is in `data.message`. Let the customer retry with a **new** reference.
39
+
40
+ Other statuses you may see on the charge response include `send_otp` and `pending`; follow the `display_text` and the Charge API docs for the submit endpoint each one requires.
41
+
42
+ ## UX notes
43
+
44
+ - Validate the phone number format before calling the API, and make sure the chosen provider matches the number's network.
45
+ - Show a countdown and a "Check status" button rather than polling Paystack aggressively.
46
+ - Make clear that the customer must approve on their phone, and that no PIN is ever entered in your app.
47
+
48
+ ## Testing
49
+
50
+ Use test keys and the mobile money test numbers on Paystack's Test Payments page. Cover approved, declined and timed-out approvals.
@@ -0,0 +1,80 @@
1
+ # Paystack webhooks
2
+
3
+ ## What Paystack sends
4
+
5
+ - `POST` with a JSON body, for example `{ "event": "charge.success", "data": { ... } }`.
6
+ - Header `x-paystack-signature`: HMAC SHA512 of the request body, keyed with your **secret key**, hex encoded.
7
+ - Paystack treats anything other than `200 OK` as a failed delivery and retries. In live mode it retries every 3 minutes for the first 4 tries, then hourly for 72 hours.
8
+ - Paystack documents a fixed set of source IPs you can additionally allow-list; check the webhooks page for the current list.
9
+
10
+ ## Handler rules
11
+
12
+ 1. Read the **raw body bytes** before any JSON parsing. Re-serialising parsed JSON changes whitespace and key order and breaks the signature.
13
+ 2. Compute `HMAC_SHA512(secretKey, rawBody)` as hex and compare with the header using a **constant-time** comparison. Mismatch → respond `401` and stop.
14
+ 3. Respond `200` immediately after the signature check, then process the event asynchronously (a queue or background job).
15
+ 4. In the processor: look up your order by `data.reference`, check `data.status === "success"`, and check `data.amount` and `data.currency` equal what you stored. Then mark the order paid **in the same transaction** as an idempotency check (unique `reference`, or `UPDATE ... WHERE status = 'pending'`).
16
+ 5. Log the event id and reference. Never log card data or the secret key.
17
+
18
+ ## Express (TypeScript)
19
+
20
+ ```ts
21
+ import crypto from 'node:crypto';
22
+ import express from 'express';
23
+
24
+ const app = express();
25
+ const SECRET = process.env.PAYSTACK_SECRET_KEY!;
26
+
27
+ app.post('/webhooks/paystack', express.raw({ type: 'application/json' }), (req, res) => {
28
+ const signature = req.header('x-paystack-signature') ?? '';
29
+ const expected = crypto.createHmac('sha512', SECRET).update(req.body).digest('hex');
30
+ const valid =
31
+ signature.length === expected.length &&
32
+ crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
33
+ if (!valid) return res.sendStatus(401);
34
+
35
+ res.sendStatus(200); // acknowledge first
36
+ const event = JSON.parse(req.body.toString('utf8'));
37
+ queue.add('paystack-event', event); // process asynchronously and idempotently
38
+ });
39
+ ```
40
+
41
+ ## Next.js route handler
42
+
43
+ ```ts
44
+ import crypto from 'node:crypto';
45
+
46
+ export async function POST(req: Request) {
47
+ const raw = Buffer.from(await req.arrayBuffer());
48
+ const signature = req.headers.get('x-paystack-signature') ?? '';
49
+ const expected = crypto.createHmac('sha512', process.env.PAYSTACK_SECRET_KEY!).update(raw).digest('hex');
50
+ if (signature.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
51
+ return new Response('invalid signature', { status: 401 });
52
+ }
53
+ const event = JSON.parse(raw.toString('utf8'));
54
+ await enqueue(event); // keep this fast
55
+ return new Response('ok', { status: 200 });
56
+ }
57
+ ```
58
+
59
+ ## Python (FastAPI)
60
+
61
+ ```python
62
+ import hashlib, hmac, os
63
+ from fastapi import FastAPI, Request, Response
64
+
65
+ app = FastAPI()
66
+ SECRET = os.environ["PAYSTACK_SECRET_KEY"].encode()
67
+
68
+ @app.post("/webhooks/paystack")
69
+ async def paystack_webhook(request: Request):
70
+ raw = await request.body()
71
+ expected = hmac.new(SECRET, raw, hashlib.sha512).hexdigest()
72
+ if not hmac.compare_digest(expected, request.headers.get("x-paystack-signature", "")):
73
+ return Response(status_code=401)
74
+ enqueue(raw) # process asynchronously and idempotently
75
+ return Response(status_code=200)
76
+ ```
77
+
78
+ ## Local testing
79
+
80
+ Webhooks can't reach `localhost`. Use a tunnel (for example `cloudflared` or `ngrok`) and set the tunnel URL in the Paystack dashboard for test mode. Use the dashboard's resend option, or the Webhook Events API, to replay an event and confirm your handler is idempotent.