@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,102 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ // Detects a project's verification commands and prints them as JSON.
5
+ // Usage: node detect-checks.js [project-dir]
6
+ // Read-only: it never runs the commands it finds.
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ const root = path.resolve(process.argv[2] || '.');
12
+ const has = (f) => fs.existsSync(path.join(root, f));
13
+ const read = (f) => {
14
+ try {
15
+ return fs.readFileSync(path.join(root, f), 'utf8');
16
+ } catch {
17
+ return '';
18
+ }
19
+ };
20
+ const checks = [];
21
+ const add = (kind, command, source) => {
22
+ if (!checks.some((c) => c.command === command)) checks.push({ kind, command, source });
23
+ };
24
+
25
+ // JavaScript / TypeScript
26
+ if (has('package.json')) {
27
+ let pkg = {};
28
+ try {
29
+ pkg = JSON.parse(read('package.json'));
30
+ } catch {}
31
+ const pm = has('pnpm-lock.yaml') ? 'pnpm' : has('yarn.lock') ? 'yarn' : has('bun.lockb') || has('bun.lock') ? 'bun' : 'npm';
32
+ // bun needs `run`: `bun test` / `bun build` are its own runner and bundler, not the scripts.
33
+ const run = (s) => (pm === 'npm' || pm === 'bun' ? `${pm} run ${s}` : `${pm} ${s}`);
34
+ const scripts = pkg.scripts || {};
35
+ const map = [
36
+ ['build', /^build$/],
37
+ ['format', /^(format:check|fmt:check|prettier:check|check:format)$/],
38
+ ['lint', /^(lint|eslint|biome)$/],
39
+ ['typecheck', /^(typecheck|type-check|tsc|check:types|types)$/],
40
+ ['test', /^(test|test:unit|vitest|jest)$/],
41
+ ['test-integration', /^test:(integration|int)$/],
42
+ ];
43
+ for (const [kind, re] of map) for (const s of Object.keys(scripts)) if (re.test(s)) add(kind, s === 'test' && pm === 'npm' ? 'npm test' : run(s), 'package.json');
44
+ if (!Object.keys(scripts).some((s) => /type/.test(s)) && has('tsconfig.json')) add('typecheck', `${pm === 'npm' ? 'npx' : pm + ' exec'} tsc --noEmit`, 'tsconfig.json');
45
+ }
46
+
47
+ // Python
48
+ if (has('pyproject.toml') || has('setup.cfg') || has('requirements.txt')) {
49
+ const py = read('pyproject.toml') + read('setup.cfg');
50
+ const runner = has('uv.lock') ? 'uv run ' : has('poetry.lock') ? 'poetry run ' : '';
51
+ if (/\[tool\.ruff/.test(py) || has('ruff.toml')) {
52
+ add('format', `${runner}ruff format --check .`, 'ruff');
53
+ add('lint', `${runner}ruff check .`, 'ruff');
54
+ } else if (/flake8/.test(py) || has('.flake8')) add('lint', `${runner}flake8`, 'flake8');
55
+ if (/\[tool\.black/.test(py)) add('format', `${runner}black --check .`, 'black');
56
+ if (/\[tool\.mypy/.test(py) || has('mypy.ini')) add('typecheck', `${runner}mypy .`, 'mypy');
57
+ if (/\[tool\.pyright/.test(py) || has('pyrightconfig.json')) add('typecheck', `${runner}pyright`, 'pyright');
58
+ if (/pytest/.test(py) || has('pytest.ini') || has('tests') || has('conftest.py')) add('test', `${runner}pytest`, 'pytest');
59
+ }
60
+
61
+ // Go
62
+ if (has('go.mod')) {
63
+ add('build', 'go build ./...', 'go.mod');
64
+ add('lint', 'go vet ./...', 'go.mod');
65
+ if (has('.golangci.yml') || has('.golangci.yaml')) add('lint', 'golangci-lint run', '.golangci.yml');
66
+ add('test', 'go test ./...', 'go.mod');
67
+ }
68
+
69
+ // Rust
70
+ if (has('Cargo.toml')) {
71
+ add('format', 'cargo fmt --check', 'Cargo.toml');
72
+ add('lint', 'cargo clippy --all-targets -- -D warnings', 'Cargo.toml');
73
+ add('test', 'cargo test', 'Cargo.toml');
74
+ }
75
+
76
+ // JVM
77
+ if (has('gradlew')) {
78
+ add('build', './gradlew build -x test', 'gradlew');
79
+ add('test', './gradlew test', 'gradlew');
80
+ } else if (has('pom.xml')) {
81
+ add('build', 'mvn -q -DskipTests package', 'pom.xml');
82
+ add('test', 'mvn -q test', 'pom.xml');
83
+ }
84
+
85
+ // .NET
86
+ if (fs.readdirSync(root).some((f) => /\.(sln|csproj|fsproj)$/.test(f))) {
87
+ add('build', 'dotnet build', '.NET');
88
+ add('test', 'dotnet test', '.NET');
89
+ }
90
+
91
+ // Makefile targets
92
+ const make = read('Makefile');
93
+ for (const [kind, target] of [['build', 'build'], ['lint', 'lint'], ['typecheck', 'typecheck'], ['test', 'test']]) {
94
+ if (new RegExp(`^${target}:`, 'm').test(make)) add(kind, `make ${target}`, 'Makefile');
95
+ }
96
+
97
+ const order = ['build', 'format', 'lint', 'typecheck', 'test', 'test-integration'];
98
+ checks.sort((a, b) => order.indexOf(a.kind) - order.indexOf(b.kind));
99
+
100
+ const ci = has('.github/workflows') ? fs.readdirSync(path.join(root, '.github/workflows')).map((f) => `.github/workflows/${f}`) : [];
101
+ console.log(JSON.stringify({ root, checks, ciFilesToReview: ci }, null, 2));
102
+ if (!checks.length) process.exitCode = 3;
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: video-editing
3
+ description: Editorial workflow for turning raw footage into a finished cut - logging clips and pulling selects, building a paper edit, rough cut then fine cut, pacing and J/L cuts, matching the rhythm of a reference edit, subtitles and captions in SRT or WebVTT, loudness to a delivery target, basic colour correction, and conforming from an edit decision list with FFmpeg or DaVinci Resolve's Python scripting API. Use when someone hands you interviews, B-roll or screen footage and wants a finished video, asks to tighten a rough cut, wants subtitles and levels fixed before delivery, or needs a timeline assembled or rendered from a script.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs ffmpeg and ffprobe; Resolve scripting needs DaVinci Resolve running with scripting enabled and its API on PYTHONPATH. Transcription needs a speech-to-text tool the user approves.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "ffmpeg, ffprobe"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Video editing
15
+
16
+ Edit like an editor, not like a transcoder: decide what the piece says, choose the moments that say it, then make the cuts invisible. Keep every decision in an edit decision list (EDL) so the cut can be re-rendered, reviewed and changed. Single FFmpeg command recipes live in the `ffmpeg-media-processing` skill; this skill is about the edit.
17
+
18
+ ## 0. Brief first
19
+
20
+ Before touching footage, get answers (ask the user for any that are missing):
21
+
22
+ 1. **Purpose and audience**: what should a viewer know or feel at the end?
23
+ 2. **Target length** and **delivery**: platform, aspect ratio (16:9, 9:16, 1:1), resolution, frame rate, captions burned in or as a sidecar file.
24
+ 3. **Reference**: a link or file whose pacing or look the user wants matched.
25
+ 4. **Must-haves and no-gos**: quotes that must stay, people or logos that must not appear, music licence.
26
+
27
+ Never use music, footage or fonts the user has not confirmed they have rights to.
28
+
29
+ ## 1. Ingest and log
30
+
31
+ 1. Copy the camera originals to a read-only `source/` folder. Never edit or re-encode originals in place.
32
+ 2. Probe every clip: `ffprobe -v error -show_entries stream=codec_name,width,height,r_frame_rate,sample_rate,channels -show_entries format=duration -of json <clip>`. Flag mixed frame rates (for example 23.976 and 29.97) and variable frame rate phone footage now; they cause drift later.
33
+ 3. For VFR or long-GOP clips that will be cut a lot, make constant-frame-rate intermediates (`references/ffmpeg-edit-recipes.md`, "Proxies and intermediates").
34
+ 4. Transcribe speech (with the user's approval of the tool) to timestamped text. Spoken footage is edited from the transcript.
35
+ 5. Write a log, one row per clip: file, duration, content, usable ranges, quality notes (focus, noise, wind), best moments. Format in `references/edl-and-logging.md`.
36
+
37
+ ## 2. Selects and paper edit
38
+
39
+ 1. Mark selects: in and out timecodes of every moment worth keeping, with a one-line reason.
40
+ 2. Build a **paper edit**: the story order as a list of selects, before any rendering. Structure: hook (first 3 to 5 seconds), context, body in clear beats, payoff, call to action if any.
41
+ 3. Estimate running time from the list. If it is more than about 20% over target, cut whole beats now rather than trimming everything.
42
+ 4. **Stop and show the user the paper edit** for anything longer than a minute or with interview content. Changing a list is cheap; re-cutting is not.
43
+
44
+ ## 3. Rough cut
45
+
46
+ Assemble the selects in order from the EDL with straight cuts and no polish. Render a low-resolution review copy with burned-in timecode (recipe in `references/ffmpeg-edit-recipes.md`) so feedback can cite exact times.
47
+
48
+ Check: does it make sense with no music, titles or effects? If not, fix structure before moving on.
49
+
50
+ ## 4. Fine cut
51
+
52
+ Work through these in order:
53
+
54
+ 1. **Trim**: remove ums, false starts, repeated points and dead air at clip heads and tails. Cut on the breath, not mid-word; leave 2 to 6 frames of room after the last syllable.
55
+ 2. **Pacing**: vary shot length; hold on what matters, move fast through what does not. Cut on action or a look; avoid jump cuts in an interview unless the style calls for them, otherwise cover them with B-roll.
56
+ 3. **J and L cuts**: let audio lead (J) or trail (L) the picture across a cut so speech flows.
57
+ 4. **B-roll**: cover edits and illustrate what is being said; never let B-roll contradict the words.
58
+ 5. **Match a reference**: measure the reference before imitating it (`references/ffmpeg-edit-recipes.md`, "Measure a reference"): average shot length, cuts per minute, text style, music level. Report the numbers next to yours.
59
+
60
+ ## 5. Sound
61
+
62
+ 1. Dialogue is king. Clean it first (noise reduction, high-pass around 80 Hz for voice), then set music under it.
63
+ 2. Duck music under speech by roughly 10 to 20 dB.
64
+ 3. Normalise the final mix to the delivery spec with a two-pass loudness measurement (`references/ffmpeg-edit-recipes.md`, "Loudness"). Common targets: EBU R128 broadcast -23 LUFS integrated; many streaming and social platforms normalise near -14 LUFS; keep true peak at or below -1 dBTP. Confirm the user's platform spec rather than assuming.
65
+ 4. Listen to every cut for pops; add short audio crossfades (a few frames) at each edit.
66
+
67
+ ## 6. Colour
68
+
69
+ 1. Correct before you grade: white balance, exposure, contrast, so shots of the same scene match.
70
+ 2. Then apply one look consistently. A LUT designed for a camera log profile goes on log footage only.
71
+ 3. Check skin tones and that nothing is clipped. Do not grade on an uncalibrated laptop screen and call it final; tell the user.
72
+
73
+ ## 7. Captions and subtitles
74
+
75
+ 1. Start from the transcript, corrected by hand against the final cut, not the raw footage.
76
+ 2. Write SRT or WebVTT timed to the final timeline. Rules of thumb (check the platform's style guide): at most 2 lines, about 42 characters per line, reading speed around 17 to 20 characters per second, minimum about 1 second on screen, break lines at phrase boundaries.
77
+ 3. Sidecar files keep captions accessible and editable; burn in only when the platform needs it (many social feeds autoplay muted). See `references/ffmpeg-edit-recipes.md`, "Subtitles".
78
+ 4. Re-time captions after every picture change.
79
+
80
+ ## 8. Conform and render
81
+
82
+ - **FFmpeg path**: generate the render from the EDL (trim and concat, then the audio chain, then subtitles). Recipes in `references/ffmpeg-edit-recipes.md`.
83
+ - **DaVinci Resolve path**: build the timeline, import an EDL, FCPXML or AAF, set render settings and queue the job from Python. API calls in `references/resolve-scripting.md`.
84
+ - Render a master (high bitrate or mezzanine codec) and derive delivery files from it; never re-encode a delivery file to make another.
85
+
86
+ ## 9. QC before delivery
87
+
88
+ Watch the whole render once, start to finish, then check:
89
+
90
+ - [ ] Duration, resolution, frame rate and aspect ratio match the brief (probe the file).
91
+ - [ ] No black frames, flash frames or frozen frames at cut points (`blackdetect`, `freezedetect` in the recipes).
92
+ - [ ] Audio in sync at the start, middle and end; loudness measured on the final file.
93
+ - [ ] Captions match the words and timing; names spelled correctly.
94
+ - [ ] Nothing from the no-go list appears.
95
+
96
+ ## Never
97
+
98
+ - Never alter source files or delete footage the user has not approved deleting.
99
+ - Never invent quotes or re-order an interviewee's words so the meaning changes. Flag any edit that compresses what someone said.
100
+ - Never deliver without watching the final render.
101
+
102
+ ## Report back
103
+
104
+ ```
105
+ Cut: <title> v<n> Length: mm:ss (target mm:ss) Format: WxH @ fps, codec
106
+ EDL: <path> Master: <path> Deliverables: <paths>
107
+ Structure: hook / beats / payoff (one line each)
108
+ Audio: integrated LUFS, true peak Captions: <file or burned in>
109
+ Changes since last version: ...
110
+ Open questions / needs a human: grading on a calibrated display, legal clearance, ...
111
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "I have three hours of interview footage and B-roll, cut it into a 4-minute documentary short",
4
+ "Tighten this rough cut: remove the ums, fix the pacing and add J and L cuts between speakers",
5
+ "Make my edit feel like this reference video, same rhythm of cuts and same music level",
6
+ "Build a DaVinci Resolve timeline from my selects list with a Python script and queue the render",
7
+ "Before we deliver, fix the audio levels to -14 LUFS, colour match the two cameras and add subtitles to the final cut"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Convert this MKV to an MP4 that plays on an iPhone",
11
+ "Record a walkthrough video of our web app's onboarding flow using Playwright",
12
+ "Animate a title card sequence in React and render it to MP4",
13
+ "Generate a 10-second product clip from a text prompt with a video model",
14
+ "Repurpose our webinar recording into a LinkedIn post and a thread"
15
+ ]
16
+ }
@@ -0,0 +1,44 @@
1
+ # Logs, selects and EDLs
2
+
3
+ ## Clip log (CSV)
4
+
5
+ ```
6
+ file,duration,content,usable_in,usable_out,quality,best_moment,notes
7
+ A001_C003.mov,00:04:12,Interview Ana wide,00:00:08,00:04:02,good,"00:01:15 'we almost quit'",slight wind at 3:40
8
+ ```
9
+
10
+ ## Working EDL (JSON, the source of truth for the FFmpeg path)
11
+
12
+ Keep times as seconds with three decimals, or as frames at the project rate. One entry per event, in timeline order.
13
+
14
+ ```json
15
+ {
16
+ "fps": 25,
17
+ "width": 1920, "height": 1080,
18
+ "events": [
19
+ { "id": 1, "src": "source/A001_C003.mov", "in": 75.20, "out": 82.04, "track": "V1+A1", "note": "hook quote" },
20
+ { "id": 2, "src": "source/B012.mov", "in": 3.00, "out": 6.50, "track": "V1", "audio_from": 1, "note": "B-roll over quote" }
21
+ ],
22
+ "music": [{ "src": "music/bed.wav", "start": 0.0, "gain_db": -18 }],
23
+ "captions": "captions/final.srt"
24
+ }
25
+ ```
26
+
27
+ Rules:
28
+ - `in`/`out` refer to the source clip; the timeline position is the running sum of durations.
29
+ - Snap cut points to frame boundaries at the project frame rate (`round(t * fps) / fps`).
30
+ - Bump a version number on every change and keep old EDLs.
31
+
32
+ ## CMX 3600 EDL (for handing to an NLE)
33
+
34
+ ```
35
+ TITLE: MY_CUT_V3
36
+ FCM: NON-DROP FRAME
37
+
38
+ 001 A001C003 V C 00:01:15:05 00:01:22:01 01:00:00:00 01:00:06:21
39
+ 002 A001C003 A C 00:01:15:05 00:01:22:01 01:00:00:00 01:00:06:21
40
+ ```
41
+
42
+ Fields: event number, reel name (max 8 characters in strict CMX 3600), track (V, A, A2, B for both), transition (C = cut, D = dissolve with duration), source in, source out, record in, record out. CMX 3600 carries one video track; use FCPXML or AAF for multitrack timelines, titles and effects.
43
+
44
+ Timecode: `HH:MM:SS:FF`. Use drop-frame (`;` before frames, `FCM: DROP FRAME`) only for 29.97 or 59.94 material that is delivered drop-frame.
@@ -0,0 +1,92 @@
1
+ # FFmpeg recipes for editing
2
+
3
+ Pass arguments as arrays from code, never via shell strings built from user input.
4
+
5
+ ## Proxies and intermediates
6
+
7
+ Constant frame rate, all-intra, easy to cut:
8
+
9
+ ```bash
10
+ ffmpeg -i in.mp4 -vf "fps=25,scale=-2:1080" -c:v prores_ks -profile:v 1 -c:a pcm_s16le -ar 48000 inter.mov
11
+ # smaller review proxy
12
+ ffmpeg -i in.mp4 -vf "fps=25,scale=-2:540" -c:v libx264 -g 1 -crf 23 -c:a aac proxy.mp4
13
+ ```
14
+
15
+ ## Trim one event frame-accurately
16
+
17
+ Re-encode when cutting long-GOP sources; `-c copy` cuts on keyframes only.
18
+
19
+ ```bash
20
+ ffmpeg -ss 75.20 -i source/A001_C003.mov -t 6.84 -c:v libx264 -crf 16 -preset slow -c:a pcm_s16le -ar 48000 seg001.mov
21
+ ```
22
+
23
+ ## Join events
24
+
25
+ After all segments share codec, resolution, frame rate and audio layout:
26
+
27
+ ```bash
28
+ printf "file '%s'\n" seg001.mov seg002.mov > list.txt
29
+ ffmpeg -f concat -safe 0 -i list.txt -c copy assembled.mov
30
+ ```
31
+
32
+ For short cross-dissolves, use `xfade` (video) and `acrossfade` (audio) in a filter graph instead of the concat demuxer.
33
+
34
+ ## Burned-in timecode for review copies
35
+
36
+ ```bash
37
+ ffmpeg -i assembled.mov -vf "drawtext=timecode='00\:00\:00\:00':rate=25:fontsize=36:fontcolor=white:box=1:boxcolor=black@0.5:x=20:y=h-th-20" -c:v libx264 -crf 26 -c:a aac review.mp4
38
+ ```
39
+
40
+ Some builds need `fontfile=/path/to/font.ttf` in `drawtext`.
41
+
42
+ ## Measure a reference
43
+
44
+ Shot boundaries (scene score above 0.3 is a common starting threshold; tune per footage):
45
+
46
+ ```bash
47
+ ffmpeg -i reference.mp4 -vf "select='gt(scene,0.3)',showinfo" -f null - 2>&1 | grep -o "pts_time:[0-9.]*"
48
+ ```
49
+
50
+ Cuts per minute = number of boundaries / duration in minutes. Average shot length = duration / (boundaries + 1). Measure loudness of the reference the same way as your mix (below).
51
+
52
+ ## Loudness (two-pass loudnorm)
53
+
54
+ ```bash
55
+ # pass 1: measure
56
+ ffmpeg -i mix.wav -af loudnorm=I=-14:TP=-1:LRA=11:print_format=json -f null -
57
+ # pass 2: apply with the measured values
58
+ ffmpeg -i mix.wav -af "loudnorm=I=-14:TP=-1:LRA=11:measured_I=<i>:measured_TP=<tp>:measured_LRA=<lra>:measured_thresh=<thr>:offset=<off>:linear=true" -ar 48000 mix_norm.wav
59
+ # verify on the final file
60
+ ffmpeg -i final.mp4 -af ebur128=peak=true -f null -
61
+ ```
62
+
63
+ Change `I` to the delivery target (for example -23 for EBU R128).
64
+
65
+ ## Ducking music under dialogue
66
+
67
+ ```bash
68
+ ffmpeg -i dialogue.wav -i music.wav -filter_complex "[1:a][0:a]sidechaincompress=threshold=0.05:ratio=8:attack=20:release=400[duck];[0:a][duck]amix=inputs=2:duration=first:normalize=0[out]" -map "[out]" mix.wav
69
+ ```
70
+
71
+ ## Subtitles
72
+
73
+ ```bash
74
+ # soft subtitles in MP4 (mov_text) or MKV (srt)
75
+ ffmpeg -i final.mp4 -i captions.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=eng final_subs.mp4
76
+ # burn in
77
+ ffmpeg -i final.mp4 -vf "subtitles=captions.srt:force_style='FontSize=24,Outline=2'" -c:a copy final_burned.mp4
78
+ ```
79
+
80
+ ## QC detectors
81
+
82
+ ```bash
83
+ ffmpeg -i final.mp4 -vf "blackdetect=d=0.1:pix_th=0.10" -an -f null - 2>&1 | grep blackdetect
84
+ ffmpeg -i final.mp4 -vf "freezedetect=n=0.003:d=0.5" -an -f null - 2>&1 | grep freeze
85
+ ```
86
+
87
+ ## Basic colour correction
88
+
89
+ ```bash
90
+ ffmpeg -i in.mov -vf "eq=contrast=1.05:brightness=0.02:saturation=1.1,colortemperature=temperature=5600" out.mov
91
+ ffmpeg -i log.mov -vf "lut3d=camera_log_to_rec709.cube" graded.mov
92
+ ```
@@ -0,0 +1,53 @@
1
+ # DaVinci Resolve scripting (Python)
2
+
3
+ The authoritative reference is the README shipped with Resolve (Help > Documentation > Developer, `Scripting/README.txt`). Method names and supported export formats change between versions; check that file for the installed version before relying on a call below.
4
+
5
+ ## Setup
6
+
7
+ - Resolve must be running. Scripting access (local or network) is set in Preferences > System > General > External scripting using.
8
+ - External scripts need the environment the README describes, typically `RESOLVE_SCRIPT_API`, `RESOLVE_SCRIPT_LIB` and `PYTHONPATH` pointing at the bundled `Modules` folder.
9
+ - Which features need the paid Studio edition varies by version; check the README and tell the user if a call fails for that reason.
10
+
11
+ ## Common calls
12
+
13
+ ```python
14
+ import time
15
+ import DaVinciResolveScript as dvr
16
+
17
+ resolve = dvr.scriptapp("Resolve")
18
+ pm = resolve.GetProjectManager()
19
+ project = pm.GetCurrentProject() or pm.CreateProject("my_cut")
20
+ media_pool = project.GetMediaPool()
21
+
22
+ clips = media_pool.ImportMedia(["/abs/source/A001_C003.mov", "/abs/source/B012.mov"])
23
+ timeline = media_pool.CreateEmptyTimeline("my_cut_v1")
24
+ project.SetCurrentTimeline(timeline)
25
+
26
+ # Append sub-clips by source frame range
27
+ media_pool.AppendToTimeline([
28
+ {"mediaPoolItem": clips[0], "startFrame": 1880, "endFrame": 2051},
29
+ {"mediaPoolItem": clips[1], "startFrame": 75, "endFrame": 162},
30
+ ])
31
+
32
+ # Or import a whole timeline from an EDL / FCPXML / AAF
33
+ media_pool.ImportTimelineFromFile("/abs/edl/my_cut_v3.fcpxml")
34
+
35
+ # Export the timeline for review or hand-off
36
+ timeline.Export("/abs/out/my_cut_v3.edl", resolve.EXPORT_EDL, resolve.EXPORT_NONE)
37
+
38
+ # Render
39
+ resolve.OpenPage("deliver")
40
+ project.LoadRenderPreset("H.264 Master") # a preset that exists on this machine
41
+ project.SetRenderSettings({"TargetDir": "/abs/out", "CustomName": "my_cut_v3"})
42
+ job_id = project.AddRenderJob()
43
+ project.StartRendering(job_id)
44
+ while project.IsRenderingInProgress():
45
+ time.sleep(2)
46
+ ```
47
+
48
+ ## Rules
49
+
50
+ - Check every return value: most calls return `None` or `False` on failure without raising.
51
+ - Use absolute paths.
52
+ - Never delete media pool items, timelines or projects the script did not create.
53
+ - Save the project (`pm.SaveProject()`) before and after a scripted change.
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: vite-patterns
3
+ description: Configuring and debugging Vite builds and dev servers, covering vite.config with defineConfig and loadEnv, VITE_ env variables and modes, path aliases, plugin ordering and writing small plugins, library mode with package exports, SSR entry builds, base path and build output, and fixing breakage when moving from webpack or Create React App or across Vite majors (Rollup to Rolldown). Use when editing vite.config, env variables are undefined in the browser, an alias or import fails only in build, publishing a library with Vite, or upgrading Vite.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs Node.js and the project's package manager. Option names changed between Vite majors; check the installed version (npx vite --version) and vite.dev/guide/migration.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: writes-files
10
+ kete-loom/requires: "node"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Vite patterns
15
+
16
+ Vite serves source over native ESM in dev and bundles for production. Most bugs come from the gap between those two modes, from env variables, or from options renamed between majors.
17
+
18
+ ## First, look at the project
19
+
20
+ 1. Read `package.json` for the `vite` major and framework plugin (`@vitejs/plugin-react`, `@vitejs/plugin-vue`, `@sveltejs/vite-plugin-svelte`), and whether a meta-framework (Nuxt, SvelteKit, Astro, Remix/React Router) owns the config.
21
+ 2. Read `vite.config.*` and `tsconfig.json`.
22
+ 3. If a meta-framework wraps Vite, change Vite settings through that framework's config key (for example `vite:` in `nuxt.config`), not a separate `vite.config`.
23
+
24
+ **Version matters.** Vite 8 builds with Rolldown and transforms with Oxc: `build.rollupOptions` became `build.rolldownOptions`, top-level `esbuild` options became `oxc`, and `optimizeDeps.esbuildOptions` became `optimizeDeps.rolldownOptions`. The old names are deprecated but still accepted. Use the names that match the installed major.
25
+
26
+ ## Config
27
+
28
+ ```ts
29
+ import { defineConfig, loadEnv } from 'vite';
30
+ import react from '@vitejs/plugin-react';
31
+
32
+ export default defineConfig(({ command, mode }) => {
33
+ const env = loadEnv(mode, process.cwd(), ''); // '' = load all vars, for config use only
34
+ return {
35
+ plugins: [react()],
36
+ server: { port: 5173, proxy: { '/api': { target: env.API_URL, changeOrigin: true } } },
37
+ build: { sourcemap: mode !== 'production' ? true : 'hidden' },
38
+ };
39
+ });
40
+ ```
41
+
42
+ - `import.meta.env` is **not** available inside `vite.config`; env files load after the config runs. Use `loadEnv(mode, root, prefixes)` there.
43
+ - Use `server.proxy` in dev to avoid CORS instead of adding CORS headers to the backend for localhost.
44
+
45
+ ## Env variables and modes
46
+
47
+ - Only variables starting with `VITE_` (or a custom `envPrefix`) reach client code, through `import.meta.env.VITE_*`. All values are strings.
48
+ - Files: `.env`, `.env.local`, `.env.[mode]`, `.env.[mode].local`; mode-specific files win, and variables already set in the shell win over all files. Restart the dev server after editing them.
49
+ - Built-ins: `import.meta.env.MODE`, `BASE_URL`, `PROD`, `DEV`, `SSR`.
50
+ - `mode` and `NODE_ENV` are different: `vite build --mode staging` still builds with `NODE_ENV=production` and loads `.env.staging`.
51
+ - **Everything with the client prefix is embedded in the shipped JS.** Never put secrets in `VITE_*`. Keep `*.local` in `.gitignore`.
52
+ - Type them in `src/vite-env.d.ts` with an `interface ImportMetaEnv { readonly VITE_API_URL: string }`.
53
+ - `process.env.X` in client code is not replaced; use `import.meta.env` or `define`.
54
+ - Bun auto-loads `.env` into `process.env`, which can mask Vite's own loading; run Vite under Node or disable Bun's env loading.
55
+
56
+ ## Aliases
57
+
58
+ - Declare once and keep TypeScript in sync. Either set `resolve.alias` (`{ '@': fileURLToPath(new URL('./src', import.meta.url)) }`) and mirror it in `tsconfig` `paths`, or on Vite 8 enable `resolve.tsconfigPaths` to read `paths` from `tsconfig` directly (the `vite-tsconfig-paths` plugin on older majors).
59
+ - Tests (Vitest) reuse `vite.config`, so aliases defined there work in tests too.
60
+
61
+ ## Plugins
62
+
63
+ - Order: framework plugin first, then others. A plugin can set `enforce: 'pre' | 'post'` and `apply: 'serve' | 'build'`.
64
+ - A small project plugin is an object with `name` plus hooks (`config`, `configResolved`, `resolveId`, `load`, `transform`, `configureServer`, `transformIndexHtml`). Return `null` from `resolveId`/`load`/`transform` for ids you do not handle.
65
+ - Prefer an existing official or widely used plugin over a custom one. Check that a plugin supports the installed Vite major before adding it.
66
+
67
+ ## Library mode
68
+
69
+ ```ts
70
+ build: {
71
+ lib: { entry: 'src/index.ts', name: 'MyLib', fileName: 'my-lib', formats: ['es', 'cjs'] },
72
+ rolldownOptions: { external: ['react', 'react-dom', 'react/jsx-runtime'] }, // rollupOptions before Vite 8
73
+ }
74
+ ```
75
+
76
+ - Externalise every `peerDependency` and usually every `dependency`; bundling React into a component library breaks hooks.
77
+ - `package.json`: `"type": "module"`, `"files": ["dist"]`, and an `exports` map with `types`, `import` and `require` conditions pointing at real files. Add `"./style.css"` if CSS is emitted.
78
+ - Vite does not emit `.d.ts`: run `tsc --emitDeclarationOnly` or a declarations plugin.
79
+ - Verify with `npm pack --dry-run` and by importing the packed tarball in a scratch project.
80
+
81
+ ## SSR
82
+
83
+ - Prefer a framework (Nuxt, SvelteKit, Astro, React Router) over hand-rolled SSR. For a custom server: create Vite in middleware mode (`createServer({ server: { middlewareMode: true }, appType: 'custom' })`), mount `vite.middlewares`, and load the entry with `vite.ssrLoadModule('/src/entry-server.ts')` in dev.
84
+ - Production: build twice, the client (`vite build --outDir dist/client`) and the server entry (`vite build --ssr src/entry-server.ts --outDir dist/server`).
85
+ - Dependencies that ship untranspiled code or CSS imports may need `ssr.noExternal: ['pkg']`.
86
+ - Guard browser globals (`window`, `document`) behind `import.meta.env.SSR` or lifecycle hooks.
87
+
88
+ ## Build output
89
+
90
+ - `base`: set it when the app is served from a sub-path (`base: '/app/'`), and use `import.meta.env.BASE_URL` when building URLs at runtime.
91
+ - Files in `public/` are copied as-is and referenced by absolute path; imported assets get hashed names. Do not import from `public/`.
92
+ - `build.target` defaults to a Baseline-widely-available browser set; Vite adds no polyfills. Use `@vitejs/plugin-legacy` only if old browsers are a real requirement.
93
+ - Check bundle size with `vite build` output, and split heavy routes with dynamic `import()`. On Vite 8 the object form of `manualChunks` is no longer supported and the function form is deprecated; use Rolldown's `codeSplitting` option instead.
94
+ - `vite preview` serves `dist` locally to test the production build; it is not a production server.
95
+
96
+ ## Common migration issues
97
+
98
+ | Symptom | Fix |
99
+ |---|---|
100
+ | `process is not defined` after leaving webpack/CRA | Replace `process.env.REACT_APP_*` with `import.meta.env.VITE_*`; `define` only for third-party code |
101
+ | `require is not defined` | Convert to `import`; Vite source is ESM |
102
+ | `index.html` not found / blank page | `index.html` lives at the project root with `<script type="module" src="/src/main.tsx">` |
103
+ | JSX in `.js` files fails | Rename to `.jsx`/`.tsx` |
104
+ | Works in dev, broken in build | Case-sensitive import paths, CJS default-import interop, or a dynamic import with a variable path; run `vite build && vite preview` to reproduce |
105
+ | Default import from a CJS package changed after a Vite major | Fix the import; `legacy.inconsistentCjsInterop` only as a temporary bridge |
106
+ | Dependency pre-bundling stale | Delete `node_modules/.vite` or run with `--force` |
107
+
108
+ ## Never
109
+
110
+ - Put secrets in `VITE_*` variables or `define`.
111
+ - Bundle peer dependencies into a library build.
112
+ - Copy a config snippet written for a different Vite major without checking option names.
113
+ - Serve production traffic with `vite` or `vite preview`.
114
+
115
+ ## Before you finish
116
+
117
+ Run `vite build` (and `vite preview` for app changes) plus the project's type-check and tests. Report the config keys changed, any new plugin, env variables the user must set, and the build result.
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "import.meta.env.API_URL is undefined in the browser in my Vite app",
4
+ "Set up Vite library mode so our component package ships ESM and CJS without bundling React",
5
+ "We're moving off Create React App to Vite and get 'process is not defined'",
6
+ "The @ alias resolves in dev but the vite build fails to find the module",
7
+ "Upgrade our vite.config from rollupOptions to the new Vite 8 options"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Our React components re-render too often, how do I memoize them properly",
11
+ "Configure nuxt.config route rules for prerendering the marketing pages",
12
+ "Migrate our Jest tests to bun test",
13
+ "Reduce our Largest Contentful Paint on the landing page",
14
+ "Add helmet and CORS to the Fastify API server"
15
+ ]
16
+ }