@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,86 @@
1
+ # HTML decks
2
+
3
+ ## reveal.js
4
+
5
+ Install from npm (`npm i reveal.js`) or load from a CDN with a pinned version. Check the current major on revealjs.com before pinning.
6
+
7
+ ```html
8
+ <!doctype html>
9
+ <html lang="en">
10
+ <head>
11
+ <meta charset="utf-8">
12
+ <title>Checkout reliability</title>
13
+ <link rel="stylesheet" href="node_modules/reveal.js/dist/reveal.css">
14
+ <link rel="stylesheet" href="node_modules/reveal.js/dist/theme/white.css">
15
+ <link rel="stylesheet" href="deck.css">
16
+ </head>
17
+ <body>
18
+ <div class="reveal"><div class="slides">
19
+ <section>
20
+ <h1>Checkout failures cost us 4% of orders</h1>
21
+ <p>Q3 review, Payments team</p>
22
+ <aside class="notes">Open with the cost, then say we found one main cause.</aside>
23
+ </section>
24
+ <section data-auto-animate>
25
+ <h2>70% come from one provider timeout</h2>
26
+ <ul>
27
+ <li class="fragment">Timeouts after 10s</li>
28
+ <li class="fragment">No retry on our side</li>
29
+ </ul>
30
+ </section>
31
+ </div></div>
32
+ <script src="node_modules/reveal.js/dist/reveal.js"></script>
33
+ <script src="node_modules/reveal.js/dist/plugin/notes.js"></script>
34
+ <script src="node_modules/reveal.js/dist/plugin/highlight.js"></script>
35
+ <script>
36
+ Reveal.initialize({ hash: true, plugins: [RevealNotes, RevealHighlight] });
37
+ </script>
38
+ </body>
39
+ </html>
40
+ ```
41
+
42
+ These are the paths the current revealjs.com plugin docs give (`dist/plugin/*.js`, with `.mjs` ES modules alongside). Older 4.x packages used `plugin/notes/notes.js` and `plugin/highlight/highlight.js`; check the installed package's folders.
43
+
44
+ Key features:
45
+
46
+ - Speaker notes: `<aside class="notes">` inside a `<section>`, or `data-notes="..."`. Press `S` for the speaker view; it needs the deck served over HTTP (`npx serve .` or `python3 -m http.server`), not opened from `file://`.
47
+ - Vertical slides: nest `<section>` inside `<section>`; use for optional depth, not the main path.
48
+ - Fragments: `class="fragment"` reveals items step by step. Use sparingly.
49
+ - Auto-animate: `data-auto-animate` on consecutive slides animates matching elements.
50
+ - Code: `<pre><code data-line-numbers="3-5|8" class="language-js">` with the highlight plugin steps through highlighted lines.
51
+ - Size: default canvas 960x700, scaled to fit. For 16:9 set `width: 1280, height: 720` (or 1920x1080) in `Reveal.initialize`.
52
+ - Markdown slides: the markdown plugin with `<section data-markdown>`, `---` between slides, `Note:` for notes.
53
+ - Pandoc can also write reveal.js: `pandoc -s -t revealjs slides.md -o slides.html`.
54
+
55
+ ## Plain HTML/CSS deck
56
+
57
+ For a handful of slides with no dependency:
58
+
59
+ ```html
60
+ <main class="deck">
61
+ <section class="slide"><h1>...</h1></section>
62
+ <section class="slide"><h2>...</h2></section>
63
+ </main>
64
+ ```
65
+
66
+ ```css
67
+ .slide { width: 100vw; height: 100vh; display: grid; place-content: center;
68
+ padding: 6vh 7vw; box-sizing: border-box; scroll-snap-align: start; }
69
+ .deck { height: 100vh; overflow-y: auto; scroll-snap-type: y mandatory; }
70
+ @page { size: 1920px 1080px; margin: 0; }
71
+ @media print {
72
+ .deck { height: auto; overflow: visible; }
73
+ .slide { width: 1920px; height: 1080px; break-after: page; }
74
+ }
75
+ ```
76
+
77
+ Add arrow-key navigation with a few lines of script (`scrollIntoView` on the next `.slide`) if needed. Notes can live in `<aside class="notes" hidden>` and be printed separately.
78
+
79
+ ## PDF export
80
+
81
+ - reveal.js in the browser: open `http://localhost:8000/?print-pdf`, print, destination Save as PDF, landscape, margins None, background graphics on. Chrome or Chromium only.
82
+ - `showNotes: true` (overlay) or `showNotes: 'separate-page'` prints notes.
83
+ - `pdfSeparateFragments: false` prints each slide once with all fragments shown.
84
+ - `pdfMaxPagesPerSlide: 1` stops tall slides spilling onto extra pages.
85
+ - Headless: `npx decktape reveal http://localhost:8000 slides.pdf` (decktape also supports other HTML frameworks and a generic mode; add `--size 1920x1080` to set the page size).
86
+ - Plain HTML: headless Chrome, e.g. `chrome --headless --print-to-pdf=slides.pdf http://localhost:8000/` (binary name varies: `google-chrome`, `chromium`, or the full app path on macOS), using the print CSS above.
@@ -0,0 +1,45 @@
1
+ # Slide types and layouts
2
+
3
+ 16:9 canvas. Work on a 12-column grid with generous outer margins (about 5-7% of width).
4
+
5
+ | Slide type | Layout | Content rule |
6
+ |---|---|---|
7
+ | Title | Centered or left-aligned title, subtitle, presenter and date | Title states the talk's promise, not just the topic |
8
+ | Section divider | Large section title, optional progress marker | Use only in long decks |
9
+ | Big number | One number very large, one line of context below | "4.1% of orders failed" + source |
10
+ | Statement | One sentence, large, left-aligned | The takeaway of a section |
11
+ | Chart | Action title, chart filling most of the slide, source line | One highlighted series |
12
+ | Comparison | Two columns, same structure each side | Before/after, option A/B |
13
+ | Image + text | Image 50-60% width, 1-3 short lines | Screenshot with callouts beats raw screenshot |
14
+ | Process | 3-5 steps left to right or top to bottom | Verbs, numbered |
15
+ | Code | Monospace, 12-20 lines max, highlight the lines that matter | Reveal.js `data-line-numbers="3-5"` |
16
+ | Quote | Quote, name, role | Only real, attributed quotes |
17
+ | Ask / next steps | The decision or action, owner, date | Last content slide |
18
+ | Appendix | Dense tables, methodology | Not presented; for readers |
19
+
20
+ ## Type sizes (presented, 1920x1080 or 13.33x7.5 in)
21
+
22
+ | Element | Size |
23
+ |---|---|
24
+ | Action title | 32-44pt |
25
+ | Body | 24-28pt |
26
+ | Labels, sources | 14-18pt (sources only; never body text this small) |
27
+ | Big number | 96-160pt |
28
+
29
+ For a read-alone deck, body can drop to 16-20pt with more words, but keep one idea per slide.
30
+
31
+ ## Charts
32
+
33
+ - Bar for comparing categories, line for change over time, scatter for relationships; avoid pie charts with more than 3 slices.
34
+ - Start bar axes at zero.
35
+ - Grey for everything, accent colour for the point the title makes.
36
+ - Write the takeaway in the title, and the source and date in a small line underneath.
37
+
38
+ ## Speaker notes template
39
+
40
+ ```
41
+ Point: <the one thing this slide says>
42
+ Say: <2-5 sentences, conversational>
43
+ Evidence: <where the number comes from>
44
+ Transition: <the sentence that leads to the next slide>
45
+ ```
@@ -0,0 +1,87 @@
1
+ # PowerPoint decks
2
+
3
+ ## pandoc: Markdown to .pptx
4
+
5
+ ```markdown
6
+ ---
7
+ title: Checkout reliability
8
+ author: Payments team
9
+ ---
10
+
11
+ # Checkout failures cost us 4% of orders
12
+
13
+ - 1,240 failed orders in Q3
14
+ - Mostly at the payment step
15
+
16
+ ::: notes
17
+ Open with the cost, then say we found one main cause.
18
+ :::
19
+
20
+ # 70% come from one provider timeout
21
+
22
+ ![Failures by cause](failures.png)
23
+ ```
24
+
25
+ ```bash
26
+ pandoc slides.md -o slides.pptx --slide-level=1 --reference-doc=template.pptx
27
+ ```
28
+
29
+ - `--slide-level` picks which heading level starts a slide (here `#`).
30
+ - `--reference-doc` takes a template whose layouts are named Title Slide, Title and Content, Section Header, Two Content, Comparison, Content with Caption and Blank; missing layouts fall back to pandoc's default with a warning.
31
+ - Get pandoc's default template to edit: `pandoc -o custom-reference.pptx --print-default-data-file reference.pptx`.
32
+ - Two columns: `:::::: {.columns}` with two `::: {.column}` blocks.
33
+ - Speaker notes: `::: notes` blocks.
34
+
35
+ ## python-pptx: generate or fill a template
36
+
37
+ `pip install python-pptx`.
38
+
39
+ ```python
40
+ from pptx import Presentation
41
+ from pptx.util import Inches, Pt
42
+
43
+ prs = Presentation("template.pptx") # or Presentation() for a blank 4:3 default
44
+ # Blank default is 4:3; for 16:9:
45
+ # prs.slide_width, prs.slide_height = Inches(13.333), Inches(7.5)
46
+
47
+ for i, layout in enumerate(prs.slide_layouts): # find layout names first
48
+ print(i, layout.name, [p.placeholder_format.idx for p in layout.placeholders])
49
+
50
+ slide = prs.slides.add_slide(prs.slide_layouts[1]) # Title and Content in most templates
51
+ slide.shapes.title.text = "70% of failures come from one provider timeout"
52
+ body = slide.placeholders[1].text_frame
53
+ body.text = "Timeouts after 10 seconds"
54
+ p = body.add_paragraph(); p.text = "No retry on our side"; p.level = 0
55
+ slide.notes_slide.notes_text_frame.text = "Explain the timeout, then move to the fix."
56
+
57
+ pic = slide.shapes.add_picture("chart.png", Inches(1), Inches(2), width=Inches(8))
58
+ # alt text: python-pptx has no direct API; set the descr attribute on the cNvPr element
59
+ pic._element.nvPicPr.cNvPr.set("descr", "Bar chart: provider timeouts are 70% of failures")
60
+
61
+ prs.save("deck.pptx")
62
+ ```
63
+
64
+ Rules:
65
+
66
+ - Fill **placeholders** from the template's layouts; do not add free text boxes over them, or the template's styling and accessibility reading order break.
67
+ - Print the layouts and placeholder indexes first (loop above); indexes differ between templates.
68
+ - Native charts: `slide.shapes.add_chart(XL_CHART_TYPE.BAR_CLUSTERED, x, y, cx, cy, chart_data)` with `CategoryChartData` keeps them editable; use an image only if the user does not need to edit.
69
+ - Fonts render with whatever is installed on the viewer's machine; stick to the template's fonts.
70
+ - Deleting slides and reordering need XML manipulation in python-pptx; for heavy edits of an existing deck, consider asking the user to do structural changes in PowerPoint and automate only the content.
71
+
72
+ ## Reading an existing .pptx
73
+
74
+ ```python
75
+ for n, slide in enumerate(prs.slides, 1):
76
+ texts = [s.text_frame.text for s in slide.shapes if s.has_text_frame]
77
+ notes = slide.notes_slide.notes_text_frame.text if slide.has_notes_slide else ""
78
+ print(n, slide.slide_layout.name, texts, notes)
79
+ ```
80
+
81
+ ## PDF from .pptx
82
+
83
+ ```bash
84
+ soffice --headless --convert-to pdf --outdir out deck.pptx
85
+ ```
86
+
87
+ LibreOffice substitutes missing fonts; check the PDF. For pixel-exact output, export from PowerPoint or Keynote itself.
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: smart-contract-security
3
+ description: Security audit procedure for Solidity and EVM smart contracts that maps the system's funds, roles and trust assumptions, then hunts reentrancy (including cross-function and read-only), broken access control, price oracle and flash-loan manipulation, rounding and precision loss in share maths, front-running and MEV exposure, signature replay across chains and nonces, and proxy upgrade risks, backed by Slither static analysis plus Foundry, Echidna or Medusa fuzzing and invariant tests, ending in a severity-rated report with a clear professional-audit boundary. Use when auditing a protocol or token contract before deployment, investigating a suspected exploit path, writing invariant tests to break a contract, or deciding whether code is ready for an external audit.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs Foundry (forge) or Hardhat to build and test; Slither (Python 3.10+) for static analysis; Echidna or Medusa optional for property fuzzing.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: security
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "forge, slither"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Smart contract security
15
+
16
+ Find the ways a contract loses or locks funds, prove each with a failing test, and say plainly what the review did not cover. Exploits are permanent and public, so a finding without a reproduction is a lead, not a conclusion.
17
+
18
+ ## What this skill is not
19
+
20
+ - **Not a professional audit.** It is a structured internal review. Any contract that will hold meaningful user funds, mint a token with market value, or bridge assets needs at least one independent audit by a qualified firm, and ideally a bug bounty, before mainnet. Say so in every report.
21
+ - Not financial, legal or token-regulation advice.
22
+ - Not a guarantee: no finding list proves the absence of bugs.
23
+
24
+ ## 1. Scope and threat model
25
+
26
+ 1. Pin the exact commit, compiler version and the list of in-scope files. Build it (`forge build` or `npx hardhat compile`); if it doesn't compile, stop and ask.
27
+ 2. Write down, before reading code in depth:
28
+ - **Assets**: what the contracts hold (ETH, tokens, NFTs, accounting balances) and where the totals live.
29
+ - **Actors and roles**: users, admins, keepers, oracles, bridges, other protocols; what each can do.
30
+ - **Trust assumptions**: which external contracts and tokens are trusted, which price feeds, and what a malicious or upgraded dependency could do.
31
+ - **Invariants**: statements that must always hold (solvency, `totalShares` matches the sum of balances, only role X changes parameter Y).
32
+ 3. Map every external and public function that moves value or changes privileged state. Run `slither . --print human-summary` and `--print function-summary` to get the inventory.
33
+
34
+ ## 2. Automated pass
35
+
36
+ 1. `slither .` from the project root (filter out `lib/` or `node_modules` per the Slither wiki). Triage every high and medium detector result: true positive, false positive with reason, or needs a test.
37
+ 2. For proxies, `slither-check-upgradeability` against the old and new implementation, plus the OpenZeppelin Upgrades plugin's validation.
38
+ 3. Existing tests: `forge test -vvv` and `forge coverage`. Note functions with no test of their revert paths.
39
+
40
+ Tool output is a starting point. Never report a detector result as a finding without reading the code path.
41
+
42
+ ## 3. Manual review, in this order
43
+
44
+ Work through `references/vulnerability-checklist.md`. The headline classes:
45
+
46
+ 1. **Reentrancy**: external calls (ETH sends, token transfers, hooks in ERC-721/1155/777 receivers, arbitrary `call`) before state is updated; cross-function and cross-contract reentrancy that `nonReentrant` on one function doesn't cover; read-only reentrancy where another protocol reads a stale view mid-call.
47
+ 2. **Access control**: unguarded privileged functions, unprotected or re-callable initializers, uninitialized implementation contracts, role admin misconfiguration, `tx.origin` auth, missing two-step ownership transfer.
48
+ 3. **Oracle and price manipulation**: spot prices from an AMM pool's reserves or `balanceOf`, which a flash loan can move within one transaction; Chainlink answers used without checking staleness (`updatedAt`), round completeness and sequencer uptime on L2s; donation attacks on share-price vaults (ERC-4626 inflation).
49
+ 4. **Integer and rounding**: rounding in the user's favour on deposit/withdraw or mint/redeem, division before multiplication, precision loss with low-decimal tokens, `unchecked` blocks, unsafe downcasts (`uint128(x)` silently truncates; use `SafeCast`).
50
+ 5. **Front-running and MEV**: missing slippage limits (`minAmountOut`) and deadlines on swaps, commit-reveal missing where order matters, approval race conditions, sandwichable liquidations or auctions.
51
+ 6. **Signature replay**: signatures without a nonce, without `block.chainid` and contract address in the EIP-712 domain, reusable after cancel, malleable (use OZ `ECDSA`, not raw `ecrecover`), or `ecrecover` returning `address(0)` accepted as a valid signer.
52
+ 7. **Upgrade risks**: storage layout collisions between versions, missing `_authorizeUpgrade` guard, selector clashes in proxies, upgrade keys held by a single EOA, no timelock.
53
+ 8. **Token integration**: fee-on-transfer and rebasing tokens, tokens that return `false` instead of reverting (use `SafeERC20`), tokens with blocklists or pausable transfers, 6 vs 18 decimals.
54
+ 9. **Denial of service and griefing**: unbounded loops, push payments to contracts that revert, dust positions that block liquidation.
55
+
56
+ ## 4. Prove it
57
+
58
+ For every candidate finding, write a Foundry test that demonstrates it (an exploit test that passes when the bug exists), or a fuzz/invariant test that breaks:
59
+
60
+ - Fuzz: functions taking `uint256 amount` with `bound()` to realistic ranges.
61
+ - Invariant: a handler contract that calls the system's functions in random order, with `invariant_` functions asserting the invariants from step 1 (`[invariant] runs` and `depth` in `foundry.toml`).
62
+ - Fork tests (`forge test --fork-url $RPC_URL`) for oracle and integration issues against real pool state.
63
+ - Echidna or Medusa for longer property campaigns when the invariants are numerous.
64
+
65
+ Findings you couldn't reproduce are reported as "unconfirmed", with the reasoning.
66
+
67
+ ## Severity
68
+
69
+ | Severity | Meaning |
70
+ |---|---|
71
+ | Critical | Direct theft or permanent freezing of user funds, or takeover of admin/upgrade, by an unprivileged attacker |
72
+ | High | Loss of funds under realistic conditions, or protocol insolvency |
73
+ | Medium | Loss of yield, temporary freezing, or a privileged role able to harm users beyond the documented trust model |
74
+ | Low | Hardening, best-practice deviations with no direct loss path |
75
+ | Info | Gas, style, documentation |
76
+
77
+ ## Stop and ask the user
78
+
79
+ - If you find a critical issue in a contract that is already deployed with funds: stop the review, tell the user immediately, and recommend they contact a security firm or an emergency response group and follow responsible disclosure. Do not publish details, open public issues, or run the exploit on mainnet.
80
+ - Before running anything against a live network other than read-only fork tests.
81
+ - If scope, the trust model or intended admin powers are unclear.
82
+
83
+ ## Never
84
+
85
+ - Never broadcast transactions, use real private keys, or test exploits on mainnet or public testnets against contracts you don't own.
86
+ - Never mark a contract "secure", "safe" or "audited". Say "no issues found in the reviewed scope".
87
+ - Never drop the professional-audit recommendation for contracts that will hold funds.
88
+
89
+ ## Report format
90
+
91
+ ```
92
+ ## Smart contract review: <repo>@<commit>
93
+ Scope: <files>, solc <version>. Out of scope: <...>
94
+ Threat model: assets, roles, trust assumptions, invariants (short)
95
+
96
+ ### Findings
97
+ 1. [Critical] Vault.sol:142 — <title>
98
+ Class: reentrancy | access control | oracle | rounding | MEV | signature | upgrade | token | DoS
99
+ Impact: <who loses what, under what conditions>
100
+ Proof: test/exploits/<Name>.t.sol (passes = bug present) | unconfirmed: <why>
101
+ Fix: <smallest change that removes the root cause>
102
+
103
+ ### Tooling
104
+ Slither: <n> results triaged (<n> true positives). Fuzz/invariant: <runs, depth, results>. Coverage: <%>.
105
+
106
+ ### Not covered
107
+ <economic design, off-chain components, dependencies, anything skipped>
108
+
109
+ This is an internal review, not a professional audit. Contracts that will hold user funds need an independent audit before mainnet.
110
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Audit our lending protocol contracts for oracle manipulation and reentrancy before launch",
4
+ "Can a flash loan drain our ERC-4626 vault through a share price inflation attack?",
5
+ "Write Foundry invariant tests that try to break the solvency of our staking contract",
6
+ "Our permit-based meta-transaction signatures don't include a nonce, is that exploitable and how bad is it?",
7
+ "Is our DEX router code ready for an external audit? Run Slither and do a security pass first"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Write an ERC-20 token contract with a capped supply and an owner-only mint using Foundry",
11
+ "Show the token balance with the right decimals in our wagmi frontend and send an approve transaction",
12
+ "Review my last commit for security vulnerabilities in the login flow",
13
+ "Check our npm dependencies for known CVEs and abandoned packages",
14
+ "Explain how proof of stake consensus works on Ethereum"
15
+ ]
16
+ }
@@ -0,0 +1,79 @@
1
+ # Smart contract vulnerability checklist
2
+
3
+ Read this during the manual review step. Each item is a question; answer it for every in-scope contract and note the line you checked.
4
+
5
+ ## Reentrancy
6
+
7
+ - Does any function make an external call (`call`, `transfer`/`send`, token `transfer`/`transferFrom`, `safeTransferFrom` on ERC-721/1155 which calls `onERC721Received`/`onERC1155Received`, ERC-777 hooks, a callback into a user-supplied address) before it finishes writing state?
8
+ - Are all functions sharing the same state protected together (cross-function reentrancy), not just the one that makes the call?
9
+ - Can another contract read a view function (price, share value, balance) while this contract is mid-call with inconsistent state (read-only reentrancy)?
10
+ - Is `nonReentrant` present where needed and absent from functions that must call each other internally?
11
+
12
+ ## Access control
13
+
14
+ - Is every function that mints, burns, pauses, sets parameters, moves treasury funds, or upgrades guarded by a modifier or explicit check?
15
+ - Can `initialize` be called by anyone, called twice, or front-run after deployment? Is `_disableInitializers()` in the implementation constructor?
16
+ - Does `_authorizeUpgrade` have access control (UUPS)?
17
+ - Are `AccessControl` role admins set correctly (who can grant `DEFAULT_ADMIN_ROLE`)?
18
+ - Is ownership transfer two-step (`Ownable2Step`)? Is renouncing ownership possible by accident?
19
+ - Any use of `tx.origin` for authorization?
20
+ - Are admin powers documented and bounded (fee caps, timelocks)?
21
+
22
+ ## Oracles and price manipulation
23
+
24
+ - Is any price derived from AMM reserves, `balanceOf(address(this))`, or a single-block value that a flash loan can move?
25
+ - For Chainlink `latestRoundData`: are `answer > 0`, `updatedAt` freshness against the feed's heartbeat, and (on L2s) the sequencer uptime feed checked? Are feed decimals read, not assumed?
26
+ - Are TWAP windows long enough for the liquidity involved?
27
+ - ERC-4626 or share vaults: can the first depositor inflate the share price by donating assets (virtual shares/offset, minimum deposit, or dead shares)?
28
+
29
+ ## Integer maths and rounding
30
+
31
+ - Does every conversion round against the user and in favour of the protocol (deposit rounds shares down, withdraw rounds shares up)?
32
+ - Any division before multiplication? Use `Math.mulDiv` for `a * b / c` with large values.
33
+ - Any `unchecked` block without a proven bound?
34
+ - Any downcast (`uint128(x)`, `int256(x)`) without `SafeCast`?
35
+ - Do calculations handle tokens with 6, 8 and 18 decimals, and zero amounts?
36
+
37
+ ## Front-running and MEV
38
+
39
+ - Do swaps, deposits into AMM positions, and liquidations take a `minAmountOut`/`maxAmountIn` and a `deadline` from the caller?
40
+ - Can an observer of the mempool profit by inserting a transaction before or after (sandwich, back-running oracle updates)?
41
+ - Are approvals set with `forceApprove` or increase/decrease patterns rather than overwriting non-zero allowances?
42
+ - Would commit-reveal or a batch auction be needed for fairness (games, NFT mints, auctions)?
43
+
44
+ ## Signatures
45
+
46
+ - Does the signed message include a nonce that's consumed, an expiry, `block.chainid`, and the verifying contract (EIP-712 domain separator, rebuilt if the chain ID changes)?
47
+ - Is `ECDSA.recover` (or `SignatureChecker` for smart-contract wallets via ERC-1271) used instead of raw `ecrecover`, and is a `address(0)` signer rejected?
48
+ - Can the same signature be used on another function, another contract, or after cancellation?
49
+ - `permit` (EIP-2612) calls: is a front-run `permit` (which makes the second call revert) handled so it can't grief the user?
50
+
51
+ ## Upgrades and proxies
52
+
53
+ - Compare storage layouts between versions: no reordered, removed or retyped variables; namespaced storage (ERC-7201) or gaps used consistently.
54
+ - Do inherited contracts change order between versions?
55
+ - Any function selector in the implementation clashing with the proxy's admin functions (transparent proxy)?
56
+ - Who holds the upgrade key? Is there a timelock so users can exit before an upgrade?
57
+ - Does any new `reinitializer(n)` use the right version number?
58
+
59
+ ## Token integration
60
+
61
+ - Fee-on-transfer: is the received amount measured by balance difference?
62
+ - Rebasing tokens: do stored balances drift from actual balances?
63
+ - Tokens that return `false` or no value: is `SafeERC20` used?
64
+ - Tokens with blocklists, pause, or upgradeable logic (USDC, USDT): can a blocked address freeze the whole system?
65
+ - ERC-777 or tokens with hooks: reentrancy on transfer.
66
+
67
+ ## Denial of service and griefing
68
+
69
+ - Loops over arrays users can grow (holders, orders, positions)?
70
+ - Push payments where one reverting recipient blocks everyone?
71
+ - Can dust positions, tiny orders or zero-amount calls block liquidation, settlement or withdrawal queues?
72
+ - Does anything depend on `address(this).balance` equalling an internal counter (forced ETH via `selfdestruct` from another contract or coinbase still works)?
73
+
74
+ ## Miscellaneous
75
+
76
+ - `delegatecall` to user-influenced addresses or to libraries with storage.
77
+ - Randomness from `block.timestamp`, `blockhash` or `block.prevrandao` for anything valuable (use Chainlink VRF or commit-reveal).
78
+ - Hard-coded addresses that differ per chain.
79
+ - Events missing for parameter changes, so monitoring can't see an admin action.
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: social-media-publishing
3
+ description: Posts text, images and video to X, LinkedIn, Facebook Pages and Instagram through their official APIs, covering OAuth app setup and token refresh, the scopes each platform needs, media upload flows, rate and publishing limits, queued scheduling with retries, and per-platform length and formatting rules. Use when building or fixing code that publishes or schedules social posts programmatically, a post or media upload call fails with a 401, 403 or rate-limit error, or one message must be formatted correctly for several networks.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Live calls need network access to api.x.com, api.linkedin.com and graph.facebook.com, and developer apps the user owns on each platform. Examples are plain HTTP; the rules apply to any SDK.
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
+ # Social media publishing
14
+
15
+ Publish to social networks through official APIs only, with tokens stored safely, media uploaded the way each platform expects, every post idempotent, and failures retried without double-posting.
16
+
17
+ ## Ground rules
18
+
19
+ 1. **Official APIs only.** No browser automation, scraped endpoints or shared passwords; they break platform terms and get accounts banned.
20
+ 2. **The user owns the developer apps.** Each platform needs an app the user registers and, for some scopes, gets approved (LinkedIn's Community Management API for company pages, Meta App Review for Page and Instagram publishing). **Stop and ask the user** for app IDs and which accounts to post as; never invent them.
21
+ 3. **Tokens are secrets.** Store access and refresh tokens encrypted server-side, per connected account, with their expiry and granted scopes. Never log them or send them to the browser.
22
+ 4. **Request the least scope** that the feature needs (table below).
23
+ 5. **Media first, then the post.** Every platform uploads or registers media in a separate step and returns an ID or container that the post references. Wait until processing finishes before posting.
24
+ 6. **Idempotent posting.** Write a `scheduled_posts` row (account, platform, body, media, `publish_at`, status) before calling the API; mark `publishing` with a conditional update, store the returned post ID, and never retry a call that may have succeeded without first checking whether the post exists.
25
+ 7. **Respect rate limits.** Read the platform's rate-limit headers or usage endpoint, back off on `429`, and spread scheduled posts instead of firing them all at the top of the hour.
26
+ 8. **Read the current docs.** These APIs, their access tiers and pricing change often. Check the version and limits in the official docs before stating them; details in `references/platform-apis.md`.
27
+
28
+ ## Platform map
29
+
30
+ | Platform | Auth | Post endpoint | Media | Scopes / permissions |
31
+ |---|---|---|---|---|
32
+ | X | OAuth 2.0 with PKCE, user context | `POST https://api.x.com/2/tweets` | `POST /2/media/upload/initialize`, `/{id}/append`, `/{id}/finalize`, then poll status | `tweet.read`, `tweet.write`, `users.read`, `media.write`, `offline.access` for refresh |
33
+ | LinkedIn | OAuth 2.0 three-legged | `POST https://api.linkedin.com/rest/posts` with `Linkedin-Version: YYYYMM` and `X-Restli-Protocol-Version: 2.0.0` | `POST /rest/images?action=initializeUpload`, PUT bytes to `uploadUrl`, use the `urn:li:image:...` | `w_member_social` (member), `w_organization_social` (company page; member needs the ADMINISTRATOR, CONTENT_ADMIN or DIRECT_SPONSORED_CONTENT_POSTER page role) |
34
+ | Facebook Page | Facebook Login, Page access token | `POST /{page-id}/feed` (text, link) or `/{page-id}/photos`, `/{page-id}/videos` | in the same call by URL or upload | `pages_manage_posts`, `pages_manage_engagement`, `pages_read_engagement`, `pages_read_user_engagement`; add `publish_video` for video |
35
+ | Instagram (professional account) | Instagram Login or Facebook Login | `POST /{ig-user-id}/media` creates a container, then `POST /{ig-user-id}/media_publish` | media fetched by Meta from a public `image_url` / `video_url` | `instagram_business_basic` + `instagram_business_content_publish` (Instagram Login), or `instagram_basic` + `instagram_content_publish` + `pages_read_engagement` (Facebook Login) |
36
+
37
+ ## Build steps
38
+
39
+ 1. **Connect accounts.** Implement the OAuth authorization-code flow per platform with a `state` value checked on return (and PKCE for X). Save tokens, expiry, scopes and the account's ID or URN (`urn:li:person:...` from LinkedIn's OpenID `userinfo` `sub`, `urn:li:organization:...` for pages, the Page ID, the IG user ID).
40
+ 2. **Refresh before expiry.** A job refreshes tokens ahead of `expires_at`. When refresh fails (revoked, password changed, scope removed), mark the account `needs_reconnect` and tell the user; do not keep retrying.
41
+ 3. **Format per platform** using the rules below. Validate length and media count before queueing, not at publish time.
42
+ 4. **Upload media.** X: chunked upload (keep chunks at or under 5 MB), then poll status until `processing_info.state` is `succeeded`. LinkedIn: `initializeUpload`, PUT the file, wait until the image or video is `AVAILABLE`. Instagram: host the file at a public HTTPS URL, create the container, poll `status_code` until `FINISHED` (about once a minute, at most 5 minutes) before `media_publish`.
43
+ 5. **Publish** from a worker that picks due rows, claims them with `UPDATE ... SET status='publishing' WHERE id=? AND status='scheduled'`, calls the API, then stores the platform post ID and URL.
44
+ 6. **Handle errors** by class: `401` refresh once then mark reconnect; `403` missing scope, role or tier (do not retry); `429` back off using the reset header; `5xx` or timeout check whether the post exists, then retry with backoff. Record the platform's error body.
45
+ 7. **Scheduling.** Store `publish_at` in UTC with the user's time zone for display. Native scheduling exists on some platforms (Facebook Pages accept `published=false` with `scheduled_publish_time`, 10 minutes to 30 days ahead), but a single queue of your own keeps behaviour the same everywhere.
46
+
47
+ ## Formatting differences
48
+
49
+ | | X | LinkedIn | Facebook Page | Instagram |
50
+ |---|---|---|---|---|
51
+ | Text length | 280 weighted characters (emoji and CJK count as 2); any URL counts as 23 | 3,000 characters | long posts allowed; first lines show before "See more" | caption up to 2,200 characters |
52
+ | Links | inline, shortened by t.co | inline; link preview via article content | link preview from the `link` field | not clickable in captions |
53
+ | Hashtags | 1 or 2 (style choice) | a few at the end (style choice) | sparing | at most 30 per caption |
54
+ | Mentions | `@handle` in text | `@` + `[Name]` + `(urn)` mention syntax in the commentary; name must match | Page tags need IDs | `@handle` in caption, at most 20 |
55
+ | Media | up to 4 media IDs per post | images, video, documents, multi-image | photos, video | required: image, video, reel, or carousel of up to 10 |
56
+
57
+ Confirm current limits in each platform's docs before enforcing them in code.
58
+
59
+ ## Stop and ask the user
60
+
61
+ - Which accounts and pages to post as, and who approved posting on their behalf.
62
+ - Before applying for elevated access or a paid API tier.
63
+ - Before posting anything live during development: use a test account, private visibility, or draft state where the platform offers one.
64
+ - Before deleting or editing published posts in bulk.
65
+
66
+ ## Never
67
+
68
+ - Post the same text to every network unchanged when it breaks a platform's length or mention rules.
69
+ - Automate likes, follows, replies or DMs at scale; platform rules forbid most of it.
70
+ - Store tokens in the client, or share one token across customers.
71
+ - Retry a publish blindly after a timeout.
72
+
73
+ ## Report format
74
+
75
+ When reviewing or finishing an integration, report:
76
+
77
+ ```
78
+ Platforms: ... Accounts: member / page / IG professional
79
+ Auth: flow, scopes granted, refresh handled yes|no
80
+ Media: upload path and processing wait per platform
81
+ Queue: idempotent claim yes|no, retry policy, timezone handling
82
+ Gaps: ... (each with the fix)
83
+ Needs user action: app review, tier, page roles
84
+ ```
@@ -0,0 +1,17 @@
1
+ {
2
+ "should_trigger": [
3
+ "Build a scheduler that posts to our LinkedIn company page and X account from our CMS",
4
+ "LinkedIn rest/posts returns 403 ACCESS_DENIED when I post as our organization",
5
+ "How do I upload a video to X with the v2 media upload endpoints and attach it to a post?",
6
+ "Instagram media_publish fails because the container status is still IN_PROGRESS",
7
+ "Our social posting worker sometimes publishes the same Facebook Page post twice after a timeout",
8
+ "Which OAuth scopes do I need to let users connect their X and LinkedIn accounts for posting?"
9
+ ],
10
+ "should_not_trigger": [
11
+ "Turn this 40-minute conference talk into a LinkedIn post, an X thread and a newsletter",
12
+ "Write a voice and tone guide for how our brand sounds on social",
13
+ "Our marketing emails fail DMARC, fix the DNS records",
14
+ "Plan a six-week launch campaign with a budget split across paid social and email",
15
+ "Write a three-touch outbound email sequence to VPs of engineering"
16
+ ]
17
+ }