@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,87 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { parseFrontmatter } = require('./frontmatter');
6
+
7
+ const REPO_ROOT = path.resolve(__dirname, '..', '..');
8
+ const SKILLS_DIR = path.join(REPO_ROOT, 'skills');
9
+ const AGENTS_DIR = path.join(REPO_ROOT, 'agents');
10
+ const COMMANDS_DIR = path.join(REPO_ROOT, 'commands');
11
+ const HOOKS_DIR = path.join(REPO_ROOT, 'hooks');
12
+ const RULES_DIR = path.join(REPO_ROOT, 'rules');
13
+
14
+ const csv = (s) => (s || '').split(',').map((x) => x.trim()).filter(Boolean);
15
+
16
+ // Reads one markdown item (SKILL.md, AGENT.md or a command file). `dir` is the item's name.
17
+ function loadDoc(file, extra) {
18
+ const text = fs.readFileSync(file, 'utf8');
19
+ const { data, body, errors } = parseFrontmatter(text);
20
+ const meta = (data && data.metadata) || {};
21
+ return {
22
+ file,
23
+ text,
24
+ body,
25
+ data: data || {},
26
+ parseErrors: errors,
27
+ name: data && data.name,
28
+ description: data && data.description,
29
+ version: meta['kete-loom/version'],
30
+ category: meta['kete-loom/category'],
31
+ risk: meta['kete-loom/risk'],
32
+ requires: csv(meta['kete-loom/requires']),
33
+ tools: meta['kete-loom/tools'] === undefined ? null : csv(meta['kete-loom/tools']),
34
+ argumentHint: meta['kete-loom/argument-hint'],
35
+ event: meta['kete-loom/event'],
36
+ optIn: meta['kete-loom/opt-in'] === 'true',
37
+ paths: csv(meta['kete-loom/paths']),
38
+ ...extra,
39
+ };
40
+ }
41
+
42
+ function listFolders(root, file, load) {
43
+ if (!fs.existsSync(root)) return [];
44
+ return fs
45
+ .readdirSync(root, { withFileTypes: true })
46
+ .filter((d) => d.isDirectory() && fs.existsSync(path.join(root, d.name, file)))
47
+ .map((d) => load(path.join(root, d.name)))
48
+ .sort((a, b) => a.dir.localeCompare(b.dir));
49
+ }
50
+
51
+ function loadSkill(skillPath) {
52
+ return loadDoc(path.join(skillPath, 'SKILL.md'), { kind: 'skill', dir: path.basename(skillPath), path: skillPath });
53
+ }
54
+
55
+ function loadAgent(agentPath) {
56
+ return loadDoc(path.join(agentPath, 'AGENT.md'), { kind: 'agent', dir: path.basename(agentPath), path: agentPath });
57
+ }
58
+
59
+ function loadHook(hookPath) {
60
+ return loadDoc(path.join(hookPath, 'HOOK.md'), { kind: 'hook', dir: path.basename(hookPath), path: hookPath });
61
+ }
62
+
63
+ function loadCommand(file) {
64
+ return loadDoc(file, { kind: 'command', dir: path.basename(file, '.md'), path: file });
65
+ }
66
+
67
+ function loadRule(file) {
68
+ return loadDoc(file, { kind: 'rule', dir: path.basename(file, '.md'), path: file });
69
+ }
70
+
71
+ const listSkills = (root = SKILLS_DIR) => listFolders(root, 'SKILL.md', loadSkill);
72
+ const listAgents = (root = AGENTS_DIR) => listFolders(root, 'AGENT.md', loadAgent);
73
+ const listHooks = (root = HOOKS_DIR) => listFolders(root, 'HOOK.md', loadHook);
74
+
75
+ function listFiles(root, load) {
76
+ if (!fs.existsSync(root)) return [];
77
+ return fs
78
+ .readdirSync(root)
79
+ .filter((f) => f.endsWith('.md'))
80
+ .map((f) => load(path.join(root, f)))
81
+ .sort((a, b) => a.dir.localeCompare(b.dir));
82
+ }
83
+
84
+ const listCommands = (root = COMMANDS_DIR) => listFiles(root, loadCommand);
85
+ const listRules = (root = RULES_DIR) => listFiles(root, loadRule);
86
+
87
+ module.exports = { REPO_ROOT, SKILLS_DIR, AGENTS_DIR, COMMANDS_DIR, HOOKS_DIR, RULES_DIR, listSkills, listAgents, listCommands, listHooks, listRules, loadSkill, loadAgent, loadCommand, loadHook, loadRule };
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const os = require('os');
5
+ const path = require('path');
6
+
7
+ // Where each host looks for skills, agents and commands (verified against host docs, Oct 2026).
8
+ // `agents` is the shared open-standard folder: Codex, OpenCode, Cursor, Gemini CLI, GitHub Copilot
9
+ // and Kete Code all read its skills. It defines nothing for agents or commands.
10
+ // Claude Code reads only its own folders; Cursor and VS Code Copilot also read `.claude/agents`.
11
+ // So the default install is `agents` + `claude`, plus agents and commands for hosts that need their
12
+ // own copy (`auto`, including Kete Code) when that host is detected. The other targets exist for people who want one host only.
13
+ // Kinds a target doesn't list are not supported there: Codex prompts are deprecated, Copilot CLI has
14
+ // no prompt files and Cursor commands are beta, so commands go to Claude, OpenCode and Gemini only.
15
+ const TARGETS = {
16
+ agents: {
17
+ label: 'Shared .agents folder (Codex, OpenCode, Cursor, Gemini CLI, Copilot, Kete Code)',
18
+ user: { skills: ['.agents', 'skills'] },
19
+ project: { skills: ['.agents', 'skills'] },
20
+ default: true,
21
+ },
22
+ claude: {
23
+ label: 'Claude Code (its agents are also read by Cursor and VS Code Copilot)',
24
+ // Rules go in a kete-loom subfolder (Claude Code scans .claude/rules recursively), so ours stay apart.
25
+ user: { skills: ['.claude', 'skills'], agents: ['.claude', 'agents'], commands: ['.claude', 'commands'], rules: ['.claude', 'rules', 'kete-loom'] },
26
+ project: { skills: ['.claude', 'skills'], agents: ['.claude', 'agents'], commands: ['.claude', 'commands'], rules: ['.claude', 'rules', 'kete-loom'] },
27
+ default: true,
28
+ hooks: true,
29
+ },
30
+ codex: {
31
+ label: 'Codex (agents only; skills come from .agents)',
32
+ user: { agents: ['.codex', 'agents'] },
33
+ project: { agents: ['.codex', 'agents'] },
34
+ detect: { user: ['.codex'], project: ['.codex'] },
35
+ auto: true,
36
+ hooks: true,
37
+ },
38
+ opencode: {
39
+ label: 'OpenCode',
40
+ user: { skills: ['.config', 'opencode', 'skills'], agents: ['.config', 'opencode', 'agents'], commands: ['.config', 'opencode', 'commands'] },
41
+ project: { skills: ['.opencode', 'skills'], agents: ['.opencode', 'agents'], commands: ['.opencode', 'commands'] },
42
+ detect: { user: ['.config', 'opencode'], project: ['.opencode'] },
43
+ auto: true,
44
+ hooks: true,
45
+ },
46
+ // Kete Code (an OpenCode fork) reads skills from .agents and .claude, but agents and commands only from its own folders.
47
+ // shortcut: user paths assume XDG_CONFIG_HOME is ~/.config (as for opencode); honour it if users report custom roots.
48
+ kete: {
49
+ label: 'Kete Code',
50
+ user: { skills: ['.config', 'kete', 'skills'], agents: ['.config', 'kete', 'agents'], commands: ['.config', 'kete', 'commands'] },
51
+ project: { skills: ['.kete', 'skills'], agents: ['.kete', 'agents'], commands: ['.kete', 'commands'] },
52
+ detect: { user: ['.config', 'kete'], project: ['.kete'] },
53
+ auto: true,
54
+ hooks: true,
55
+ },
56
+ cursor: {
57
+ label: 'Cursor only',
58
+ user: { skills: ['.cursor', 'skills'], agents: ['.cursor', 'agents'] },
59
+ // Cursor reads rule files only per project (user rules live in its settings UI).
60
+ project: { skills: ['.cursor', 'skills'], agents: ['.cursor', 'agents'], rules: ['.cursor', 'rules', 'kete-loom'] },
61
+ // Detected only for hooks: Cursor already reads agents from .claude.
62
+ detect: { user: ['.cursor'], project: ['.cursor'] },
63
+ hooks: true,
64
+ },
65
+ gemini: {
66
+ label: 'Gemini CLI',
67
+ user: { skills: ['.gemini', 'skills'], agents: ['.gemini', 'agents'], commands: ['.gemini', 'commands'] },
68
+ project: { skills: ['.gemini', 'skills'], agents: ['.gemini', 'agents'], commands: ['.gemini', 'commands'] },
69
+ detect: { user: ['.gemini'], project: ['.gemini'] },
70
+ auto: true,
71
+ hooks: true,
72
+ },
73
+ copilot: {
74
+ label: 'GitHub Copilot only',
75
+ user: { skills: ['.copilot', 'skills'], agents: ['.copilot', 'agents'], rules: ['.copilot', 'instructions', 'kete-loom'] },
76
+ project: { skills: ['.github', 'skills'], agents: ['.github', 'agents'], rules: ['.github', 'instructions', 'kete-loom'] },
77
+ detect: { user: ['.copilot'], project: ['.github'] },
78
+ hooks: true,
79
+ },
80
+ // Kiro reads skills only from its own folders, agents as Markdown, prompts (slash commands) and steering files.
81
+ kiro: {
82
+ label: 'Kiro (IDE and CLI)',
83
+ user: { skills: ['.kiro', 'skills'], agents: ['.kiro', 'agents'], commands: ['.kiro', 'prompts'], rules: ['.kiro', 'steering'] },
84
+ project: { skills: ['.kiro', 'skills'], agents: ['.kiro', 'agents'], commands: ['.kiro', 'prompts'], rules: ['.kiro', 'steering'] },
85
+ detect: { user: ['.kiro'], project: ['.kiro'] },
86
+ auto: true,
87
+ ownSkills: true,
88
+ },
89
+ };
90
+
91
+ const KINDS = ['skills', 'agents', 'commands', 'rules'];
92
+
93
+ // Which folders each host reads skills from, used by `doctor` to show where a skill is visible.
94
+ const HOST_READS = {
95
+ 'Claude Code': ['claude'],
96
+ Codex: ['agents'],
97
+ OpenCode: ['agents', 'claude', 'opencode'],
98
+ Cursor: ['agents', 'claude', 'cursor'],
99
+ 'Gemini CLI': ['agents', 'gemini'],
100
+ 'GitHub Copilot': ['agents', 'claude', 'copilot'],
101
+ 'Kete Code': ['agents', 'claude', 'kete'],
102
+ Kiro: ['kiro'],
103
+ };
104
+
105
+ function baseDir({ scope = 'user', home = os.homedir(), cwd = process.cwd() } = {}) {
106
+ return scope === 'project' ? cwd : home;
107
+ }
108
+
109
+ // Returns the folder for one kind, or null when the target doesn't support that kind.
110
+ function resolveTarget(name, { scope = 'user', home = os.homedir(), cwd = process.cwd(), kind = 'skills' } = {}) {
111
+ const t = TARGETS[name];
112
+ if (!t) throw new Error(`unknown target "${name}". Known: ${Object.keys(TARGETS).join(', ')}`);
113
+ const segments = t[scope === 'project' ? 'project' : 'user'][kind];
114
+ return segments ? path.join(baseDir({ scope, home, cwd }), ...segments) : null;
115
+ }
116
+
117
+ function detected(name, opts = {}) {
118
+ const t = TARGETS[name];
119
+ const segments = t.detect && t.detect[opts.scope === 'project' ? 'project' : 'user'];
120
+ return Boolean(segments) && fs.existsSync(path.join(baseDir(opts), ...segments));
121
+ }
122
+
123
+ module.exports = { TARGETS, KINDS, HOST_READS, resolveTarget, detected };
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: accounting-api-integration
3
+ description: Connects an application's sales and payments to QuickBooks Online and Xero through their accounting APIs, handling the OAuth 2.0 authorisation code flow with rotating refresh tokens, per-company realm or tenant IDs, chart of accounts and tax code mapping, posting customers, invoices, payments and credit notes, safe retries with requestid or Idempotency-Key, HMAC-verified webhooks, 429 rate-limit backoff, and nightly reconciliation against the ledger. Use when building a QuickBooks or Xero sync, fixing duplicate or missing invoices in the books, debugging invalid_grant or token expiry, mapping products to income accounts, or reconciling app revenue with what the accountant sees.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Live calls need network access to quickbooks.api.intuit.com (or the sandbox) and api.xero.com. Examples are HTTP and TypeScript-like pseudocode; official SDKs exist for most languages.
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
+ # Accounting API integration (QuickBooks Online, Xero)
14
+
15
+ Push your app's financial events into the customer's books exactly once, mapped to accounts their accountant chose, and prove it with a reconciliation. Your app stays the source of truth for what was sold; the ledger is the source of truth for the books. API detail: `references/quickbooks.md` and `references/xero.md`.
16
+
17
+ ## Ground rules
18
+
19
+ 1. **One connection per company.** QuickBooks identifies a company by `realmId`; Xero by tenant ID (send `xero-tenant-id` on every call). Store tokens per connection, encrypted at rest, never in logs.
20
+ 2. **Refresh tokens rotate.** Each refresh can return a new refresh token; store it atomically before using the new access token, and serialise refreshes per connection (a lock), or two workers will race and one gets `invalid_grant`. Treat `invalid_grant` as "reconnect needed": mark the connection, alert the user, stop syncing it.
21
+ 3. **Accounts are mapped, never guessed.** The customer (or their accountant) maps each of your product types, discounts, fees, tax rates and payment methods to an account, item and tax code in their ledger. Store the mapping by remote ID, not name. Block syncing until it is complete.
22
+ 4. **Every write is idempotent.** QuickBooks: a unique `requestid` query parameter per logical operation. Xero: an `Idempotency-Key` header. Derive the key from your own record (`invoice:<id>:create`), never a fresh random value per retry. Also store the remote ID on your record and check it before creating.
23
+ 5. **Your record links to the remote record.** Keep `remote_id`, `remote_type`, last sync status and error per record, so you can resume, update and reconcile.
24
+ 6. **Don't post what the ledger already has.** If the customer's payment provider has its own QuickBooks or Xero feed, agree with the user which system posts what, or invoices and payments appear twice.
25
+ 7. **Rate limits are mostly per company.** Queue writes per connection, back off on `429` (honour `Retry-After` where Xero sends it; QuickBooks says wait 60 seconds), and batch where the API supports it. Xero also has an app-wide per-minute limit across all tenants.
26
+ 8. **Sandbox first.** QuickBooks sandbox companies and a Xero demo company; never test against a customer's live books.
27
+
28
+ ## Workflow
29
+
30
+ 1. **Confirm scope with the user**: which provider(s), which objects flow (customers, invoices, payments, credit notes, refunds, fees, payouts), one-way or two-way, and start date for the backfill. Stop and ask if two-way: conflict rules are a product decision.
31
+ 2. **OAuth 2.0 authorisation code flow** with a `state` value bound to the user's session, the minimum scopes, and a callback that stores tokens and the realm or tenant. Endpoints and scopes in the references.
32
+ 3. **Read the chart of accounts and tax codes** and present a mapping screen. Validate mapped accounts are active and of the right type (income for sales lines, bank or undeposited funds for payments).
33
+ 4. **Sync customers** (look up by your external ID or email first; create if absent).
34
+ 5. **Post invoices** with lines carrying the mapped item/account and tax code, your invoice number, dates and currency. Amounts must match your invoice exactly; send line amounts and tax as computed by your billing or tax system rather than letting the ledger recompute them when the API allows it, and verify the total on the response.
35
+ 6. **Post payments** linked to the invoice, into the mapped deposit account, on the actual payment date. Post refunds and credit notes as their own objects linked to the original.
36
+ 7. **Webhooks** (optional, for changes made in the ledger): verify the HMAC signature on the raw body, respond fast, then fetch the changed records by ID. Payloads carry IDs, not trusted data.
37
+ 8. **Reconcile nightly** (below), and surface failures to the user with the remote error message.
38
+
39
+ ## Updates and conflicts
40
+
41
+ - QuickBooks updates need the current `SyncToken`; read, modify, write, and on a stale-object error re-read and retry once.
42
+ - Don't update invoices that are paid, or in a locked period: QuickBooks and Xero both support closing dates/lock dates and will reject or warn. Stop and ask the user how to handle changes to a closed period; usually a credit note in the current period.
43
+ - Deleting or voiding in the ledger is the accountant's call. Never auto-delete remote records.
44
+
45
+ ## Reconciliation
46
+
47
+ For each connection, for a date range:
48
+
49
+ 1. Count and sum your invoices, payments and credit notes by currency.
50
+ 2. Query the same in the ledger (QuickBooks query endpoint; CDC only looks back 30 days; Xero list endpoints with `where` filters, paging and `If-Modified-Since`).
51
+ 3. Match by stored remote ID; list missing-remote, missing-local, and amount or status mismatches.
52
+ 4. Retry missing-remote ones idempotently; report the rest to the user. Don't "fix" amounts in the ledger automatically.
53
+
54
+ ## Errors to recognise
55
+
56
+ | Symptom | Likely cause |
57
+ |---|---|
58
+ | `invalid_grant` on refresh | Refresh token already used (race), revoked, or expired; reconnect |
59
+ | `401` or `403` with a fresh token (Xero) | Missing scope (`401`, `WWW-Authenticate` names `insufficient_scope`), or `xero-tenant-id` missing, wrong or no longer authorised (`403 AuthenticationUnsuccessful`); call `/connections` to check |
60
+ | Duplicate invoices | Retry without idempotency key, or key regenerated per attempt; or the payment provider's own feed also posts |
61
+ | Total differs by a cent | Ledger recomputed tax with its own rounding; send tax explicitly or align rounding rules |
62
+ | Stale object (QuickBooks) | Old `SyncToken`; re-read and retry |
63
+ | `429` | Per-company rate limit; slow the queue for that connection |
64
+
65
+ ## Never
66
+
67
+ - Never log access or refresh tokens, or webhook verifier keys.
68
+ - Never post to a ledger without a completed account mapping.
69
+ - Never create a record without first checking for an existing remote ID or idempotency key.
70
+ - Never write to a closed period or delete accountant-entered data.
71
+
72
+ ## Report format
73
+
74
+ ```
75
+ Connection: <provider, realm/tenant, scopes>
76
+ Objects synced: <type: direction, trigger>
77
+ Mapping: <complete | gaps listed>
78
+ Idempotency: <how keys are derived>
79
+ Reconciliation <range>: local <count/sum> vs ledger <count/sum>; mismatches <list>
80
+ Needs user/accountant decision: <list>
81
+ ```
@@ -0,0 +1,17 @@
1
+ {
2
+ "should_trigger": [
3
+ "Sync our app's invoices and payments into QuickBooks Online for each customer company that connects",
4
+ "Our Xero refresh keeps failing with invalid_grant after a few days when two workers run at once",
5
+ "Build a screen where the accountant maps our product types to their Xero chart of accounts and tax rates",
6
+ "Retries are creating duplicate invoices in QuickBooks; how do we make the posting idempotent?",
7
+ "Verify the intuit-signature header on QuickBooks webhooks and fetch the changed invoices",
8
+ "We hit 429 errors from the Xero API during our nightly backfill of 20,000 invoices"
9
+ ],
10
+ "should_not_trigger": [
11
+ "Set up Stripe webhooks so we fulfil orders when checkout.session.completed arrives",
12
+ "How should VAT be shown on invoices to EU business customers under reverse charge?",
13
+ "Design our dunning emails and retry schedule for failed card renewals",
14
+ "Prepare the month-end close checklist and journal entries for our finance team",
15
+ "Review our billing code for proration and timezone bugs before release"
16
+ ]
17
+ }
@@ -0,0 +1,48 @@
1
+ # QuickBooks Online Accounting API
2
+
3
+ Check developer.intuit.com for current details; Intuit changes OAuth policy and webhook formats from time to time. Facts below were checked against Intuit's docs in October 2026: [OAuth 2.0 setup](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0), [minor versions](https://developer.intuit.com/app/developer/qbo/docs/learn/explore-the-quickbooks-online-api/minor-versions), [limits and throttles](https://static.developer.intuit.com/output_html/qbo/docs/learn/limits-and-throttles.html), [change data capture](https://developer.intuit.com/app/developer/qbo/docs/learn/explore-the-quickbooks-online-api/change-data-capture), [configure webhooks](https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/configure-webhooks) and the [release notes](https://developer.intuit.com/app/developer/qbo/docs/release-notes/general-release-notes).
4
+
5
+ ## OAuth 2.0
6
+
7
+ - Authorise: `https://appcenter.intuit.com/connect/oauth2` with `client_id`, `response_type=code`, `scope=com.intuit.quickbooks.accounting`, `redirect_uri`, `state`.
8
+ - Token exchange and refresh: `POST https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer` (Basic auth with client ID and secret).
9
+ - The callback receives `code`, `state` and `realmId`. Store `realmId` with the tokens.
10
+ - Access tokens last one hour (`expires_in` starts at 3600). Refresh tokens have a rolling 100-day expiry, the value can change on any refresh, and they now have a maximum lifetime of five years; the token response reports the remaining time in `x_refresh_token_expires_in` and `x_refresh_token_hard_expires_in` (seconds). Always store the refresh token returned by the latest refresh, and plan a reconnect before the hard expiry. The developer portal has a reconnect URL field for when users must re-authorise.
11
+
12
+ ## Base URLs
13
+
14
+ - Production: `https://quickbooks.api.intuit.com/v3/company/{realmId}/...`
15
+ - Sandbox: `https://sandbox-quickbooks.api.intuit.com/v3/company/{realmId}/...`
16
+ - Send `Accept: application/json`. Support for minor versions 1–74 ended on 1 Aug 2025; a `minorversion` below 75, or none, is answered as minor version 75. Pin `minorversion` explicitly and test before raising it.
17
+
18
+ ## Core entities
19
+
20
+ | Need | Entity / endpoint |
21
+ |---|---|
22
+ | Accounts | `Account` via `GET /query?query=select * from Account where Active = true` |
23
+ | Products and services | `Item` (each links to an income account) |
24
+ | Tax | `TaxCode`, `TaxRate` (behaviour differs between US and non-US companies) |
25
+ | Customers | `Customer` |
26
+ | Invoices | `POST /invoice` with `CustomerRef`, `Line[]` (`DetailType: SalesItemLineDetail`, `SalesItemLineDetail.ItemRef`, `Amount`), `DocNumber`, `TxnDate`, `CurrencyRef` |
27
+ | Payments | `POST /payment` with `CustomerRef`, `TotalAmt`, `Line[].LinkedTxn[{ TxnId, TxnType: "Invoice" }]`, `DepositToAccountRef` |
28
+ | Credit notes | `CreditMemo`; refunds `RefundReceipt` |
29
+ | Changes since | `GET /cdc?entities=Invoice,Payment&changedSince=<ISO time>` (look-back limited to 30 days; use `/query` for older ranges) |
30
+ | Batch | `POST /batch` with several operations in one request (Intuit's batch page says up to 10 payloads; its limits page recommends at most 30; keep batches small) |
31
+
32
+ Updates: send `Id` and the current `SyncToken`; add `"sparse": true` to change only the fields you send. A stale `SyncToken` returns a stale object error.
33
+
34
+ ## Idempotency
35
+
36
+ Add `?requestid=<unique id>` to write requests. A repeat with the same `requestid` for the same company returns the original response instead of creating a duplicate. Use a deterministic ID per logical operation, unique per company. Maximum length is 50 characters (36 for batch requests), so hash long keys. Intuit does not publish how long it remembers a request ID, so also check for the remote record before retrying a create.
37
+
38
+ ## Rate limits
39
+
40
+ Intuit documents 500 requests per minute per realm ID and 10 requests per second per realm ID and app; batch calls are throttled at 40 per minute per realm ID and app. Requests taking over 120 seconds time out. On `429`, Intuit says to wait 60 seconds before retrying; retry with the same `requestid`.
41
+
42
+ ## Webhooks
43
+
44
+ - Configure the endpoint and entities in the developer portal; it shows a verifier token per environment.
45
+ - Verify: HMAC-SHA256 of the raw request body keyed with the verifier token, base64-encoded, compared in constant time to the `intuit-signature` header. Reject if the header is missing or the token is unset.
46
+ - Payloads now use the CloudEvents format: a JSON array of events, each with `type` (for example `qbo.invoice.created.v1`), `intuitentityid` and `intuitaccountid` (the realm ID). One notification can carry events for several companies, so route each event by its realm. The legacy format's retirement date moved more than once; check Intuit's current webhook docs if you still receive the old shape.
47
+ - Payloads carry entity types, IDs and operations, not the record. Fetch the entity, or use CDC, to get the data.
48
+ - Respond quickly with `200` and process asynchronously; also run CDC periodically, because webhooks can be missed.
@@ -0,0 +1,45 @@
1
+ # Xero Accounting API
2
+
3
+ Check developer.xero.com for current details, especially scopes, which changed in 2026. Facts below were checked in October 2026 against Xero's [token types](https://developer.xero.com/documentation/guides/oauth2/token-types/), [scopes](https://developer.xero.com/documentation/guides/oauth2/scopes/), [granular scopes FAQ](https://developer.xero.com/faq/granular-scopes), [limits](https://developer.xero.com/documentation/guides/oauth2/limits/), [idempotency](https://developer.xero.com/documentation/guides/idempotent-requests/idempotency/), [troubleshooting](https://developer.xero.com/documentation/guides/oauth2/troubleshooting/) and [webhooks](https://developer.xero.com/documentation/guides/webhooks/overview/) pages.
4
+
5
+ ## OAuth 2.0
6
+
7
+ - Authorise: `https://login.xero.com/identity/connect/authorize` with `response_type=code`, `client_id`, `redirect_uri`, `scope`, `state`.
8
+ - Token exchange and refresh: `POST https://identity.xero.com/connect/token`.
9
+ - Include `offline_access` to get a refresh token. Access tokens last up to 30 minutes. Refresh tokens are valid for up to 60 days and rotate on every use; always store the newest one. If you lose the response, the previous refresh token still works for a 30-minute grace period, then the user must re-authorise.
10
+ - After authorising, `GET https://api.xero.com/connections` lists the tenants the user connected. Store each `tenantId`; send it as `xero-tenant-id` on every API call. A user can connect several organisations.
11
+ - **Scopes**: apps created on or after 2 March 2026 use granular scopes (for example `accounting.invoices` instead of the broad `accounting.transactions`). Older apps can request granular scopes from April 2026 and can keep broad scopes until September 2027; existing tokens only gain new scopes when the user re-authorises. Calling an endpoint without the needed scope returns `401` with a `WWW-Authenticate` header naming `insufficient_scope`.
12
+
13
+ ## Base URL
14
+
15
+ `https://api.xero.com/api.xro/2.0/...` with `Authorization: Bearer <token>`, `xero-tenant-id`, `Accept: application/json`.
16
+
17
+ ## Core endpoints
18
+
19
+ | Need | Endpoint |
20
+ |---|---|
21
+ | Accounts | `GET /Accounts` (use `Code` or `AccountID`; check `Status` is `ACTIVE`) |
22
+ | Tax rates | `GET /TaxRates` (`TaxType` values go on lines) |
23
+ | Items | `GET/POST /Items` |
24
+ | Contacts | `GET/POST /Contacts` (search by `ContactNumber` or email before creating) |
25
+ | Invoices | `POST /Invoices` (create or update) with `Type: "ACCREC"`, `Contact.ContactID`, `Date`, `DueDate`, `InvoiceNumber`, `LineAmountTypes` (`Exclusive`, `Inclusive`, `NoTax`), `LineItems[]` (`Description`, `Quantity`, `UnitAmount`, `AccountCode`, `TaxType`, optionally `TaxAmount`), `Status` (`DRAFT`, `SUBMITTED`, `AUTHORISED`), `CurrencyCode` |
26
+ | Payments | `PUT /Payments` with `Invoice.InvoiceID`, `Account.Code` or `AccountID` (a bank account or one with payments enabled), `Amount`, `Date` |
27
+ | Credit notes | `POST /CreditNotes` with `Type: "ACCRECCREDIT"`; allocate to an invoice with `PUT /CreditNotes/{id}/Allocations` |
28
+ | Changes since | `If-Modified-Since` header on list endpoints, plus `where` filters and paging |
29
+
30
+ Send several records in one request where the endpoint accepts an array; add `?SummarizeErrors=false` to get a status and validation errors per record instead of failing the whole batch. List endpoints page with `?page=` and `pageSize` (default 100, maximum 1000). Some changes (for example `DueDate` or `SentToContact` on paid transactions) don't update `UpdatedDateUTC`, so `If-Modified-Since` can miss them.
31
+
32
+ ## Idempotency
33
+
34
+ Send an `Idempotency-Key` header (at most 128 characters) on `POST`, `PUT` and `PATCH`; other methods ignore it. Use a deterministic key per logical operation and keep it for retries. Xero keeps keys for only 6 minutes, and reusing a key with a different request returns `400`, so for retries after that window rely on the stored remote ID check, not the key.
35
+
36
+ ## Rate limits
37
+
38
+ Per tenant: 5 concurrent calls, 60 calls per minute, and a daily limit of 1,000 calls on the starter tier or 5,000 on higher tiers; plus an app-wide limit of 10,000 calls per minute across all tenants. Responses include `X-DayLimit-Remaining`, `X-MinLimit-Remaining` and `X-AppMinLimit-Remaining`. A `429` carries `X-Rate-Limit-Problem` naming the limit hit, and `Retry-After` (seconds) when the minute or daily limit was exceeded.
39
+
40
+ ## Webhooks
41
+
42
+ - Configure in the developer portal; it gives a webhook key.
43
+ - Verify: HMAC-SHA256 of the raw request body keyed with the webhook key, base64-encoded, compared in constant time to the `x-xero-signature` header. Return a `2xx` for a valid signature and `401` for an invalid one, over HTTPS on port 443, within 5 seconds, with no cookies in the response.
44
+ - "Intent to receive": when you set up the endpoint, Xero sends test requests, some with bad signatures, and only activates the webhook if you answer correctly. Process events asynchronously. Xero retries failed deliveries and disables the webhook after 24 hours of failures.
45
+ - Events carry `resourceId`, `eventCategory` (for example `INVOICE`, `CONTACT`), `eventType` and `tenantId`. Fetch the resource by ID; don't trust the payload as data.
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: agent-failure-debugging
3
+ description: Post-mortem for a single failed or poor LLM agent run, reading its transcript, tool-call log or trace to find the first step where it went wrong, sorting the cause into a fixed taxonomy (tool loop, tool error mishandled, context lost or overflowed, ambiguous or conflicting instructions, wrong tool chosen, missing tool or permission, model limit), then changing the prompt, tool definitions or harness and re-running the same task to prove the fix. Use when an agent got stuck repeating itself, ignored an instruction, gave up early, edited the wrong files, hallucinated a tool result, or produced a bad answer and someone has the session log and wants to know why.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs read access to the run's transcript, JSONL session log or trace export, and a way to re-run the agent on the same task.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: ai
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Agent failure debugging
14
+
15
+ Debug one bad run the way you would debug a crash: get the evidence, find the first wrong step, name the cause, change one thing, re-run, compare.
16
+
17
+ Scope: one run (or a handful of runs of the same task). To score many outputs against a rubric, use `llm-evals` or the `agent-evaluator` agent. To redesign the harness from scratch, use `agent-harness-design`. To rewrite a prompt in general, use `prompt-engineering`.
18
+
19
+ ## 1. Collect the evidence
20
+
21
+ Ask for, or find, all of:
22
+
23
+ - The task as given: the user prompt and any files or links it named.
24
+ - The full transcript or log: every model turn, every tool call with its arguments, every tool result, and any errors from the harness. Session logs are usually JSONL (one event per line).
25
+ - The system prompt, instruction files (`AGENTS.md`, `CLAUDE.md` and similar), loaded skills, and the tool definitions as the model saw them.
26
+ - The model and settings: model name, temperature or effort, context window, max turns, timeouts.
27
+ - What "good" would have looked like: the expected result in one or two sentences.
28
+
29
+ If the transcript is missing or truncated, stop and say so. Do not reconstruct a run from memory or from the final answer alone.
30
+
31
+ Large logs: don't read them whole. Extract a compact timeline first (turn number, role, tool name, first 200 characters of arguments and result, token count if logged), then read in full only the turns around the failure. `context-budget` covers techniques for huge files.
32
+
33
+ ## 2. Find the first wrong step
34
+
35
+ Walk the timeline from the start and mark:
36
+
37
+ 1. The last step where the agent was clearly on track.
38
+ 2. The first step that was wrong: a wrong tool, wrong arguments, a misread result, a skipped instruction, or a false claim.
39
+ 3. What the agent had in view at that moment: was the needed fact in the context, already compacted away, or never provided?
40
+
41
+ The first wrong step, not the final symptom, is what you fix. A run that ends in a loop often went wrong five turns earlier when a tool error was misread.
42
+
43
+ ## 3. Classify the failure
44
+
45
+ Pick one primary cause (and at most one contributing cause):
46
+
47
+ | Cause | Signs in the log | Usual fix |
48
+ |---|---|---|
49
+ | **Loop** | Same tool and near-identical arguments 3+ times, no new information gained | Return clearer tool results; add a repeat detector or turn cap in the harness; tell the agent what to do when stuck |
50
+ | **Tool error mishandled** | Error result ignored, misread as success, or retried unchanged | Make errors explicit and actionable (`isError`, what to change); instruct "on error, read it and change the call or stop" |
51
+ | **Context lost** | Agent forgets an earlier decision or file after compaction or truncation; re-reads the same file | Keep key facts in a notes file or pinned summary; compact earlier and keep decisions; split the task |
52
+ | **Context overflow** | Huge tool output (logs, lockfiles, minified code) right before quality drops; window near its limit | Cap and paginate tool output; search instead of dumping; delegate bulky reads to a subagent |
53
+ | **Ambiguous instructions** | Two reasonable readings; agent picked the other one; instruction files contradict each other or the user | Rewrite the instruction with a concrete example; remove the contradiction; say which source wins |
54
+ | **Wrong tool** | A tool that exists and fits was skipped for a worse one (shell `cat` instead of a read tool, guessing instead of searching) | Sharpen tool names and descriptions so the right one is obvious; remove overlapping tools |
55
+ | **Missing tool or permission** | Agent improvises around a denied or absent capability, or hallucinates a result | Grant the narrow capability, or tell the agent to stop and ask when it is missing |
56
+ | **Premature stop** | Agent declares done without running the check the task required | Add an explicit completion check; harness verifies before accepting "done" |
57
+ | **Hallucinated result** | Claims a file, test pass or API field that the log shows never existed | Require evidence (command output, path:line) in the answer; verify in the harness |
58
+ | **Model limit** | Task needs reasoning or knowledge the model lacks even with perfect inputs | Break the task down, give examples, or use a more capable model |
59
+
60
+ If nothing fits, write a one-line new category rather than forcing one.
61
+
62
+ ## 4. Fix one thing
63
+
64
+ 1. State a hypothesis: "The run failed at turn N because X; changing Y will make it succeed."
65
+ 2. Make the smallest change in the right layer: prompt or instruction file, tool definition or result format, or harness (caps, compaction, retries, permissions).
66
+ 3. Change one thing at a time so the re-run tells you something.
67
+ 4. Show the user the diff before editing a shared system prompt, instruction file or tool schema.
68
+
69
+ Never "fix" a run by adding instructions that hard-code the answer to this one task.
70
+
71
+ ## 5. Re-run and confirm
72
+
73
+ 1. Re-run the same task with the same inputs and model settings, changing only the fix.
74
+ 2. Agents are not deterministic: run it 3 times if cost allows (more for a flaky failure) and count successes before and after.
75
+ 3. Compare timelines: the failing step should now go right, and no new failure should appear later.
76
+ 4. Re-run one or two other tasks that the change could affect, so the fix doesn't break something else.
77
+ 5. If the failure persists after two hypotheses, stop and report what you tried; the cause may be in an area you don't control (provider outage, model limit).
78
+
79
+ Stop and ask the user before re-running anything that writes outside a scratch area, costs real money, sends messages or touches production.
80
+
81
+ ## Report
82
+
83
+ ```
84
+ ## Agent run diagnosis: <task, run id or log path>
85
+ Expected: <one line>
86
+ Got: <one line>
87
+ First wrong step: turn <N> — <what happened> (evidence: <quoted log excerpt, under 3 lines>)
88
+ Cause: <category> (contributing: <category or none>)
89
+ Fix: <layer: prompt | tools | harness> — <change, with diff or file:line>
90
+ Re-run: <k>/<n> succeeded before, <k>/<n> after; side checks: <tasks re-run and result>
91
+ Remaining risk: <what this fix does not cover>
92
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Here's the JSONL log of our coding agent's run. It called grep 30 times in a row and never finished. Why?",
4
+ "The agent ignored the rule in AGENTS.md about not touching migrations. Figure out from the transcript what went wrong",
5
+ "Our support bot made up an order status that the lookup tool never returned. Diagnose this session and fix it",
6
+ "After context compaction the agent forgot which files it had already changed and redid them. Here's the trace",
7
+ "Why did the agent stop and say done without running the tests? I attached the session transcript"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Grade these 200 agent transcripts against our rubric and tell me the overall pass rate",
11
+ "Design the context compaction and tool permissions for the new agent harness we're building",
12
+ "My Python service crashes with a KeyError in production, here is the stack trace",
13
+ "Write a blameless postmortem for last week's database outage",
14
+ "Summarise how many tokens and dollars my agent sessions used this week"
15
+ ]
16
+ }