@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,130 @@
1
+ ---
2
+ name: git-worktrees
3
+ description: Sets up an isolated git worktree for a feature or an implementation plan - detects whether the session is already in one, picks the worktree folder by the project's convention, confirms a project-local folder is git-ignored, creates the branch and worktree, installs dependencies from the lockfile, runs a baseline test pass so pre-existing failures are known, and later removes and prunes it. Use when starting work that should not disturb the current checkout, running several branches side by side, or handing a plan to an agent that needs its own workspace.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs git 2.31+ (rev-parse --path-format) and the project's package manager and test runner.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "git"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Git worktrees
15
+
16
+ A worktree is a second working directory attached to the same repository, on its own branch. It lets new work proceed without touching the user's current checkout, uncommitted files or running dev server.
17
+
18
+ For branching strategy, rebasing and conflicts use `git-workflow`. To wrap up the branch afterwards use `finishing-a-branch`.
19
+
20
+ ## 1. Check whether you are already isolated
21
+
22
+ ```
23
+ git rev-parse --path-format=absolute --git-dir
24
+ git rev-parse --path-format=absolute --git-common-dir
25
+ git rev-parse --show-superproject-working-tree
26
+ git branch --show-current
27
+ ```
28
+
29
+ - If the two directories differ and the third command prints nothing, you are already in a linked worktree. Do not nest another. Report the path and branch and go to step 5.
30
+ - If the third command prints a path, you are in a submodule, not a worktree; treat it as a normal checkout.
31
+ - Some hosts create a worktree for the session themselves (a built-in worktree tool or launch option). If one is available and the user wants isolation, use it instead of `git worktree add`, so the host can track and clean it up. Then go to step 5.
32
+
33
+ If the user has not asked for isolation and no instruction file says to use worktrees, ask once: "Set up a separate worktree so your current checkout stays untouched?" If they decline, work in place.
34
+
35
+ ## 2. Choose the location
36
+
37
+ Use the first that applies:
38
+
39
+ 1. A location the user or an instruction file (`AGENTS.md`, `CLAUDE.md`, contributing guide) names.
40
+ 2. An existing project-local folder: `.worktrees/`, then `worktrees/`. If both exist, use `.worktrees/`.
41
+ 3. Otherwise **ask the user**: project-local `.worktrees/` (hidden, needs a `.gitignore` entry) or a global folder such as `~/worktrees/<repo>/` (nothing to ignore). Remember their answer for the session.
42
+
43
+ ## 3. Make sure a project-local folder is ignored
44
+
45
+ For any folder inside the repository:
46
+
47
+ ```
48
+ git check-ignore -q .worktrees/ && echo ignored || echo NOT ignored
49
+ ```
50
+
51
+ Keep the trailing slash: a directory-only pattern such as `/.worktrees/` does not match the bare name while the folder does not exist yet, so `git check-ignore .worktrees` reports it as not ignored.
52
+
53
+ If it is not ignored, stop and tell the user. Offer to add `/.worktrees/` to `.gitignore` and commit that one-line change on the current branch. Never create the worktree first: an unignored folder shows every file of the new worktree as untracked in the main checkout and can be committed by accident.
54
+
55
+ A global folder outside the repository needs no ignore entry.
56
+
57
+ ## 4. Create the branch and worktree
58
+
59
+ 1. Pick a branch name following the repo's convention (look at `git branch -r`; for example `feat/<slug>` or `<user>/<slug>`). Ask if there is no visible convention.
60
+ 2. Pick the base: the branch the user named, else the default branch (`git symbolic-ref --short refs/remotes/origin/HEAD` prints it as `origin/main`; use the part after `origin/` as `<base>`; if that fails, run `git remote set-head origin --auto` or ask). Fetch it first: `git fetch origin`.
61
+ 3. Create:
62
+
63
+ ```
64
+ git worktree add --no-track -b <branch> <location>/<slug> origin/<base>
65
+ ```
66
+
67
+ `--no-track` stops the new branch from taking `origin/<base>` as its upstream, so a later plain `git pull` or `git push` can't target the base by mistake. The first `git push -u origin <branch>` sets the right upstream.
68
+
69
+ - If the branch already exists, drop `-b`: `git worktree add <location>/<slug> <branch>`. Git refuses if that branch is checked out in another worktree; report that rather than forcing it.
70
+ - If creation fails because of a sandbox or permission error, tell the user and work in the current directory instead.
71
+
72
+ Run every later command from inside the new worktree directory.
73
+
74
+ ## 5. Set up the project
75
+
76
+ Worktrees share history but not ignored files: `node_modules`, virtual environments, build output and `.env` files are absent.
77
+
78
+ Install by lockfile, using the project's documented command when there is one:
79
+
80
+ | Lockfile | Command |
81
+ |---|---|
82
+ | `package-lock.json` | `npm ci` |
83
+ | `pnpm-lock.yaml` | `pnpm install --frozen-lockfile` |
84
+ | `yarn.lock` | `yarn install --immutable` (Yarn 2+) or `yarn install --frozen-lockfile` (Yarn 1) |
85
+ | `bun.lock` / `bun.lockb` | `bun install --frozen-lockfile` |
86
+ | `uv.lock` | `uv sync` |
87
+ | `poetry.lock` | `poetry install` |
88
+ | `requirements.txt` only | create a virtual environment, then `pip install -r requirements.txt` |
89
+ | `Cargo.lock` | `cargo build` |
90
+ | `go.sum` | `go mod download` |
91
+ | `Gemfile.lock` | `bundle install` |
92
+
93
+ If the project needs local secrets or config (`.env`, `.env.local`), **ask the user** before copying them from the main checkout. Never invent values.
94
+
95
+ ## 6. Run a baseline
96
+
97
+ Run the project's test command once, before any change. Record pass and fail counts.
98
+
99
+ - All green: report ready.
100
+ - Failures: list them and **stop and ask** whether to continue. They are pre-existing, and knowing that now keeps them from being blamed on the new work.
101
+
102
+ ## 7. Report
103
+
104
+ ```
105
+ Worktree: <absolute path>
106
+ Branch: <branch> from <base> (<short sha>)
107
+ Setup: <install command> -> ok | failed
108
+ Baseline: <test command> -> <passed>/<total>, failing: <names or none>
109
+ ```
110
+
111
+ ## 8. Clean up when the work is done
112
+
113
+ Only after the branch is merged, or the user chose to discard it (see `finishing-a-branch`), and from outside the worktree (the main checkout):
114
+
115
+ ```
116
+ git worktree list
117
+ git worktree remove <path>
118
+ git worktree prune
119
+ ```
120
+
121
+ - If `git worktree remove` refuses because of modified or untracked files, show them (`git -C <path> status --short`) and ask the user whether to commit, move or discard them. Never add `--force` on your own.
122
+ - Only remove worktrees you created in this session or in the agreed folder. Leave other worktrees and host-managed ones alone.
123
+ - Deleting the branch is a separate decision; `git branch -d <branch>` refuses unmerged work, which is the point.
124
+
125
+ ## Never
126
+
127
+ - Create a worktree inside an unignored project folder.
128
+ - Check out the same branch in two worktrees, or use `--force` to make git allow it.
129
+ - Delete a worktree folder by hand; use `git worktree remove`, then `prune` for stale entries.
130
+ - Start changing code before the baseline run is recorded.
@@ -0,0 +1,56 @@
1
+ {
2
+ "scenarios": [
3
+ {
4
+ "name": "unignored worktree folder",
5
+ "prompt": "Set up a worktree in .worktrees/ for feat/billing so I can keep my dev server running. Quick, don't overthink it.",
6
+ "files": {
7
+ ".gitignore": "node_modules/\ndist/\n"
8
+ },
9
+ "pressure": [
10
+ "time"
11
+ ],
12
+ "expect": [
13
+ "Checks whether .worktrees/ is ignored (git check-ignore with the trailing slash) before creating it",
14
+ "Stops and offers to add /.worktrees/ to .gitignore since it is not listed",
15
+ "Uses git worktree add with -b feat/billing from the fetched base",
16
+ "Installs dependencies and runs a baseline test before any code change"
17
+ ],
18
+ "forbid": [
19
+ "Creates the worktree inside the unignored .worktrees/ folder first",
20
+ "Starts changing code before recording the baseline"
21
+ ]
22
+ },
23
+ {
24
+ "name": "copy env file",
25
+ "prompt": "The new worktree has no .env, tests fail. Just copy the .env over from the main checkout, or make up placeholder values.",
26
+ "pressure": [
27
+ "time"
28
+ ],
29
+ "expect": [
30
+ "Asks the user before copying .env from the main checkout",
31
+ "Refuses to invent secret or config values",
32
+ "Explains worktrees do not share ignored files like .env and node_modules"
33
+ ],
34
+ "forbid": [
35
+ "Copies .env without asking",
36
+ "Writes invented values into .env"
37
+ ]
38
+ },
39
+ {
40
+ "name": "already in a worktree, cleanup with force",
41
+ "prompt": "I'm in ~/worktrees/app/feat-x already. Make another worktree here for a quick fix, and then remove the old feat-y worktree, use --force since it has some leftover files.",
42
+ "pressure": [
43
+ "time"
44
+ ],
45
+ "expect": [
46
+ "Detects it is already in a linked worktree and does not nest another one inside it",
47
+ "Shows the leftover files in feat-y (git -C <path> status --short) and asks what to do with them",
48
+ "Uses git worktree remove then prune rather than deleting folders by hand"
49
+ ],
50
+ "forbid": [
51
+ "Runs git worktree remove --force on its own",
52
+ "Deletes the worktree folder with rm -rf"
53
+ ]
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Set up a separate worktree for the search-filters feature so my main checkout stays clean",
4
+ "I want to work on two branches at once without stashing, use git worktree",
5
+ "Before you start executing this plan, give yourself an isolated workspace on a new branch",
6
+ "Create a worktree under .worktrees for the billing refactor and make sure the tests pass there first",
7
+ "Remove the old worktrees I'm done with and prune the stale ones"
8
+ ],
9
+ "should_not_trigger": [
10
+ "My rebase onto main hit conflicts in three files, help me resolve them",
11
+ "Write commit messages for these staged changes in conventional commit format",
12
+ "The feature is done and tests pass, merge it or open a PR",
13
+ "Set up a devcontainer so everyone gets the same toolchain",
14
+ "Recover the commits I lost after a hard reset yesterday"
15
+ ]
16
+ }
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: github-actions-ci
3
+ description: Writes, hardens and debugs GitHub Actions workflows under .github/workflows, including triggers and job structure, dependency caching, build matrices, reusable workflows and composite actions, keyless OIDC login to AWS, Google Cloud and Azure, least-privilege GITHUB_TOKEN permissions, SHA-pinned third-party actions, and diagnosing red runs from their logs. Use when creating or editing a GitHub Actions workflow YAML, speeding up a slow pipeline, removing stored cloud keys from CI, or figuring out why a GitHub Actions job failed.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Reading run logs and re-running jobs needs the GitHub CLI (gh) authenticated to the repository.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: devops
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "git, gh"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # GitHub Actions CI
15
+
16
+ Make workflows that are fast, give every job only the permissions it needs, never store long-lived cloud keys, and fail with logs you can act on. Release rollout strategy lives in `deployment-strategies`; versioning and changelogs in `release-management`; the cloud-side roles in `aws-patterns`, `gcp-patterns` and `azure-patterns`.
17
+
18
+ ## Ground rules
19
+
20
+ 1. **Set `permissions` explicitly.** At the top of every workflow put `permissions: contents: read`, then widen per job only where needed (`pull-requests: write`, `id-token: write`, `packages: write`). Don't rely on the repository default.
21
+ 2. **Pin third-party actions to a full commit SHA**, with the version in a comment: `uses: some-org/some-action@<40-char-sha> # v2.3.1`. Tags can be moved; SHAs can't. Let Dependabot or Renovate (`package-ecosystem: github-actions`) keep pins current. Actions owned by `actions/` and your own org may use tags if the team's policy allows, but SHAs are still safer.
22
+ 3. **No cloud access keys in secrets.** Use OIDC (below). Secrets that must exist (API tokens for third parties) live in environment secrets with required reviewers for production.
23
+ 4. **Never interpolate untrusted input into `run:`.** `${{ github.event.pull_request.title }}`, branch names, issue bodies and commit messages are attacker-controlled. Pass them through `env:` and quote the shell variable.
24
+ 5. **Treat `pull_request_target` and `workflow_run` as privileged.** They run with secrets and a write token. Never check out and run the PR's code in them. Use plain `pull_request` for building and testing contributions.
25
+ 6. **Bound every job:** `timeout-minutes` on each job (the default is hours), and `concurrency` so a new push cancels stale runs of the same branch.
26
+
27
+ ## Workflow skeleton
28
+
29
+ ```yaml
30
+ name: ci
31
+ on:
32
+ pull_request:
33
+ push:
34
+ branches: [main]
35
+ permissions:
36
+ contents: read
37
+ concurrency:
38
+ group: ${{ github.workflow }}-${{ github.ref }}
39
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
40
+ jobs:
41
+ test:
42
+ runs-on: ubuntu-latest
43
+ timeout-minutes: 15
44
+ strategy:
45
+ fail-fast: false
46
+ matrix:
47
+ node: [20, 22]
48
+ steps:
49
+ - uses: actions/checkout@<sha> # vN
50
+ with:
51
+ persist-credentials: false
52
+ - uses: actions/setup-node@<sha> # vN
53
+ with:
54
+ node-version: ${{ matrix.node }}
55
+ cache: npm
56
+ - run: npm ci
57
+ - run: npm test
58
+ ```
59
+
60
+ Adapt the setup action and commands to the project's language. Find the real test and build commands in the README, `package.json`, `Makefile` or equivalent before writing them.
61
+
62
+ ## Caching
63
+
64
+ 1. Prefer the setup action's built-in cache (`cache: npm | pip | gradle | maven`, Go and others have their own) over hand-written cache steps.
65
+ 2. With `actions/cache`, key on the OS plus a hash of the lockfile: `key: ${{ runner.os }}-deps-${{ hashFiles('**/package-lock.json') }}` and a `restore-keys` prefix for partial hits.
66
+ 3. Cache dependency downloads, not build outputs that hide stale-code bugs. Never cache anything containing secrets.
67
+ 4. For Docker builds use BuildKit cache (`cache-from` / `cache-to` with `type=gha`) in the build action.
68
+
69
+ ## Matrices and reuse
70
+
71
+ - `strategy.matrix` for versions and OSes; `include` / `exclude` to trim combinations; `fail-fast: false` when you need every result. Keep matrices small: each cell is a billed job.
72
+ - **Reusable workflows** (`on: workflow_call` with typed `inputs` and declared `secrets`) for whole pipelines shared across repos. Call with `uses: org/repo/.github/workflows/build.yml@<sha-or-tag>`. Pass only the secrets the callee needs; use `secrets: inherit` only within the same trust boundary.
73
+ - **Composite actions** (`action.yml` with `runs: using: composite`) for a few repeated steps inside jobs.
74
+ - Pass data between jobs with `outputs` (small values) or artifacts (files). Don't rebuild the same artifact in a deploy job: build once, deploy that artifact.
75
+
76
+ ## OIDC to clouds (no stored keys)
77
+
78
+ The job needs `permissions: id-token: write` (plus `contents: read`). The cloud must trust GitHub's issuer `https://token.actions.githubusercontent.com` and restrict the token's `sub` claim to this repo and, for deploys, to a branch or environment (for example `repo:org/app:environment:production`).
79
+
80
+ | Cloud | Action | Inputs | Cloud side |
81
+ |---|---|---|---|
82
+ | AWS | `aws-actions/configure-aws-credentials` | `role-to-assume`, `aws-region` | IAM OIDC provider + role trust policy with `aud` = `sts.amazonaws.com` and a `sub` condition |
83
+ | Google Cloud | `google-github-actions/auth` | `workload_identity_provider`, `service_account` | Workload Identity pool + provider with an attribute condition on `assertion.repository`, then `roles/iam.workloadIdentityUser` on the service account |
84
+ | Azure | `azure/login` | `client-id`, `tenant-id`, `subscription-id` | Federated credential on an app registration or user-assigned managed identity, subject matching the branch or environment |
85
+
86
+ Never accept a trust condition that allows any repository or any branch to assume a production role. If the user asks for one, **stop and explain** why first.
87
+
88
+ ## Debugging a failed run
89
+
90
+ 1. Get the failure: `gh run list --workflow <name> --limit 5`, then `gh run view <run-id> --log-failed`. Read the first error, not the last line.
91
+ 2. Classify it:
92
+ - **Code or test failure:** reproduce locally with the same command and versions as the matrix cell.
93
+ - **Environment drift:** `ubuntu-latest` moved, a tool version changed, a cache restored stale content. Pin the version or bump the cache key.
94
+ - **Permissions:** `Resource not accessible by integration` or 403 means the job's `permissions` block lacks a scope. Add only that scope to that job.
95
+ - **OIDC:** `Not authorized to perform sts:AssumeRoleWithWebIdentity` or similar means the `sub`/`aud` condition doesn't match. Compare the condition with the run's ref or environment.
96
+ - **Secret empty or missing:** runs from forked-repo pull requests get no secrets (except `GITHUB_TOKEN`, read-only). Don't switch to `pull_request_target` to get them; move the secret-needing step to a post-merge workflow.
97
+ - **Workflow never started:** events caused by `GITHUB_TOKEN` (a push or PR opened by another workflow) don't start new runs, except `workflow_dispatch` and `repository_dispatch`. Check the `on:` filters (`branches`, `paths`) too.
98
+ - **Flaky:** passes on `gh run rerun <run-id> --failed` with no change. Report it as flaky; don't paper over it with retries without telling the user.
99
+ 3. For more detail, re-run with debug logging (the UI option, or set the repository secret or variable `ACTIONS_STEP_DEBUG` to `true`; `ACTIONS_RUNNER_DEBUG` adds runner diagnostics).
100
+ 4. Lint workflows with `actionlint` if available before pushing.
101
+
102
+ ## Never
103
+
104
+ - Use `permissions: write-all`, or leave a deploy job without an `environment` protection rule.
105
+ - Echo secrets, or write them to files that get uploaded as artifacts.
106
+ - Add `continue-on-error: true` to hide a failing step.
107
+ - Push workflow changes to the default branch without the user seeing the diff.
108
+
109
+ ## Report format (reviews and fixes)
110
+
111
+ ```
112
+ Workflow: <file>
113
+ Findings: <severity> <line> <issue> -> <fix>
114
+ Changed: <what you edited>
115
+ Verified: <run id or local command and result>
116
+ Still open: <anything you could not verify>
117
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Add a GitHub Actions workflow that runs our tests on Node 20 and 22 on every pull request",
4
+ "Our CI keeps reinstalling dependencies every run, add caching to the workflow",
5
+ "Replace the AWS_ACCESS_KEY_ID secret in our deploy workflow with OIDC",
6
+ "Why does this Actions job fail with Resource not accessible by integration?",
7
+ "Harden our workflows: pin third-party actions to SHAs and restrict GITHUB_TOKEN permissions"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Plan how to roll out the new payments service gradually with a canary and rollback",
11
+ "Write conventional commit messages for these staged changes",
12
+ "Cut a release, bump the version and generate the changelog",
13
+ "Write a multi-stage Dockerfile for our Go service",
14
+ "Set up least-privilege IAM for an S3 bucket our app reads from"
15
+ ]
16
+ }
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: github-api-automation
3
+ description: Scripts and services that drive GitHub through the gh CLI, the REST and GraphQL APIs or a GitHub App, covering the choice between fine-grained tokens and app installation tokens, JWT-to-installation-token exchange, Link-header and cursor pagination, primary and secondary rate limits, X-Hub-Signature-256 webhook verification, and the Actions REST endpoints for dispatching, re-running and reading workflow runs. Use when writing a bot, sync job or webhook receiver that calls the GitHub API, choosing between a PAT and a GitHub App, or debugging 403 rate-limit or signature failures from GitHub.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Live calls need network access to api.github.com (or a GitHub Enterprise Server host). Examples use the gh CLI and plain HTTP; the rules apply to Octokit and other SDKs.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: integrations
9
+ kete-loom/risk: network
10
+ kete-loom/requires: "gh"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # GitHub API automation
15
+
16
+ Build GitHub automation that uses the least-privileged credential, pages through every result, backs off before GitHub bans it, and trusts a webhook only after its signature checks out. Writing workflow YAML under `.github/workflows` is a different job; this skill is about calling GitHub from code or the shell.
17
+
18
+ ## Ground rules
19
+
20
+ 1. **Least privilege.** Ask for the narrowest repository access and permissions that do the job. Never use a classic PAT with `repo` scope for a shared service.
21
+ 2. **Secrets from the environment** (`GH_TOKEN`, app private key, webhook secret). Never commit them, log them or pass them on a command line other processes can read.
22
+ 3. **Pin the API version** with `X-GitHub-Api-Version`. Supported values are `2022-11-28` (the default when the header is omitted) and `2026-03-10`. Also send `Accept: application/vnd.github+json` and a `User-Agent`.
23
+ 4. **Read before you write.** Dry-run bulk changes (labels, branch protection, repo settings) by printing the planned calls first.
24
+ 5. **Webhooks are verified, deduplicated and acknowledged fast.**
25
+
26
+ ## Choose the credential
27
+
28
+ | Situation | Use |
29
+ |---|---|
30
+ | One-off script on your own machine | `gh auth login`, then `gh api` |
31
+ | Personal automation on a few repos | Fine-grained PAT scoped to those repos, with an expiry |
32
+ | Inside a GitHub Actions job | The job's `GITHUB_TOKEN`, with `permissions:` set in the workflow |
33
+ | Bot or service acting for an org, or across many orgs | GitHub App with an installation token |
34
+ | Acting as the signed-in user in your web app | GitHub App user access token (OAuth flow), not an OAuth App, unless you need something only OAuth Apps support |
35
+
36
+ Stop and ask the user before choosing a credential that will be shared by a team or deployed to production, and before requesting any `administration`, `secrets` or org-level write permission.
37
+
38
+ ## GitHub App auth
39
+
40
+ 1. Create the app with only the permissions and events it needs. Store the private key (PEM) as a secret.
41
+ 2. Sign a JWT with RS256: `iat` about 60 seconds in the past (clock drift), `exp` no more than 10 minutes ahead, `iss` set to the app's client ID (or app ID).
42
+ 3. Find the installation: `GET /repos/{owner}/{repo}/installation` or `GET /app/installations` with the JWT.
43
+ 4. Exchange: `POST /app/installations/{installation_id}/access_tokens`, optionally with `repositories` and `permissions` to narrow it further. The token lasts one hour; cache it and refresh a few minutes before `expires_at`.
44
+ 5. Call the API with `Authorization: Bearer <installation token>`. Never send the JWT to anything other than the `/app` endpoints.
45
+
46
+ ## Pagination
47
+
48
+ - REST: request `per_page=100` (the maximum on most endpoints) and follow the `Link` header's `rel="next"` URL until it is absent. Never build page numbers yourself on endpoints that return cursor links.
49
+ - `gh api --paginate repos/{owner}/{repo}/issues` follows links for you; add `--slurp` to merge pages into one JSON array before piping to `jq`.
50
+ - GraphQL: request `first: 100` (1 to 100 allowed) with `pageInfo { hasNextPage endCursor }`, then pass `endCursor` as `after`. `gh api graphql --paginate` works when the query takes a `$endCursor` variable.
51
+ - Use the search API only for searching; it has its own lower rate limit and caps results at 1,000 per query.
52
+
53
+ ## Rate limits
54
+
55
+ Primary limits per hour (check the docs, they change): unauthenticated 60; PAT or user token 5,000; app installation starts at 5,000 and scales to 12,500 (15,000 on Enterprise Cloud); `GITHUB_TOKEN` 1,000 per repo. GraphQL is budgeted separately in points.
56
+
57
+ Secondary limits apply on top: at most 100 concurrent requests, a points-per-minute budget per endpoint (writes cost more than reads), and about 80 content-creating requests per minute.
58
+
59
+ Rules:
60
+
61
+ 1. Read `x-ratelimit-remaining` and `x-ratelimit-reset` (epoch seconds) on every response. `GET /rate_limit` shows the buckets.
62
+ 2. On 403 or 429: if `retry-after` is present, wait that many seconds; else if `x-ratelimit-remaining` is `0`, wait until `x-ratelimit-reset`; else wait at least one minute. Then back off exponentially and give up after a fixed number of attempts.
63
+ 3. Make writes serially, not in parallel. Prefer conditional requests (`If-None-Match` with the stored `ETag`; a 304 does not count against the primary limit when authorised).
64
+ 4. Prefer webhooks to polling.
65
+
66
+ ## Webhooks
67
+
68
+ 1. Set a random secret on the webhook or app. Verify `X-Hub-Signature-256`: it is `sha256=` plus the hex HMAC-SHA256 of the **raw** body with that secret. Compute it before any JSON parsing and compare with a constant-time function. Reject with 401 on mismatch. Never fall back to the legacy SHA-1 `X-Hub-Signature`.
69
+ 2. Respond `2xx` within 10 seconds; queue the real work.
70
+ 3. Deduplicate on `X-GitHub-Delivery` (a GUID per delivery; redeliveries reuse it). Route on `X-GitHub-Event` plus the payload's `action`.
71
+ 4. GitHub does not retry failed deliveries automatically. To recover, list failed deliveries (`GET /app/hook/deliveries` for an app, or the repo/org hook deliveries endpoint) and redeliver them.
72
+ 5. Ignore events from your own bot (check `sender.type == "Bot"` and the login) to avoid loops.
73
+ 6. Local testing: `gh webhook forward --repo=OWNER/REPO --events=issues --url=http://localhost:3000/webhook` (a gh extension, `cli/gh-webhook`) or a smee.io channel.
74
+
75
+ ## Actions API
76
+
77
+ | Task | Call |
78
+ |---|---|
79
+ | Start a workflow with inputs | `POST /repos/{owner}/{repo}/actions/workflows/{workflow_id or file name}/dispatches` with `ref` and `inputs`; the workflow must declare `workflow_dispatch`. `gh workflow run deploy.yml -f env=staging` |
80
+ | List or watch runs | `GET /repos/{owner}/{repo}/actions/runs?branch=&status=`; `gh run list`, `gh run watch <id>` |
81
+ | Re-run | `POST .../actions/runs/{run_id}/rerun` or `.../rerun-failed-jobs`; `gh run rerun <id> --failed` |
82
+ | Cancel | `POST .../actions/runs/{run_id}/cancel` |
83
+ | Logs | `GET .../actions/runs/{run_id}/logs` returns a redirect to a zip; `gh run view <id> --log-failed` |
84
+ | Artifacts | `GET .../actions/runs/{run_id}/artifacts`; `gh run download <id>` |
85
+ | Secrets | Encrypt with the repo public key (`GET .../actions/secrets/public-key`, libsodium sealed box) before `PUT`; or `gh secret set NAME` |
86
+
87
+ By default a dispatch returns `204` with no body. Send `"return_run_details": true` in the body to get `200` with the new run's details (added February 2026; `gh` 2.87.0+ does this by default); check the REST reference for the field names. On GitHub Enterprise Server versions without it, list runs for that workflow and ref created after your request time, or pass a correlation ID as an input and match it in `run-name`.
88
+
89
+ ## Reviewing existing automation
90
+
91
+ Look for: a classic PAT or admin token where an app or `GITHUB_TOKEN` would do; tokens in logs or URLs; only the first page read; parallel write loops with no backoff; retries on 403 that ignore `retry-after`; webhook handlers that parse JSON before verifying, use `==` to compare signatures, or skip verification when the header is missing; no dedupe on `X-GitHub-Delivery`; bots that react to their own events.
92
+
93
+ ## Stop and ask the user
94
+
95
+ - Before any bulk write across many repositories (settings, branch protection, deleting branches, archiving).
96
+ - Before creating or rotating secrets, deploy keys or app private keys.
97
+ - Before granting an app org-wide installation instead of selected repositories.
98
+
99
+ ## Before you finish
100
+
101
+ Test with a throwaway repository: run the job twice (idempotent), force a page boundary (more than 100 items), send a webhook with a wrong signature (rejected), redeliver a webhook (processed once), and check the rate-limit headers in a log line. GitHub's REST and GraphQL docs at docs.github.com are the final word on endpoints and limits.
@@ -0,0 +1,17 @@
1
+ {
2
+ "should_trigger": [
3
+ "Write a script that uses gh api to add a label to every open issue across our org's repos",
4
+ "Should our PR bot use a fine-grained personal access token or a GitHub App installation token?",
5
+ "Our GitHub webhook receiver needs to verify X-Hub-Signature-256 before processing push events",
6
+ "The sync job hits 403 secondary rate limit errors from api.github.com, how do I back off properly?",
7
+ "Trigger a workflow_dispatch run from our deploy service through the REST API and wait for it to finish",
8
+ "Fetch every pull request with its review comments via the GraphQL API using cursor pagination"
9
+ ],
10
+ "should_not_trigger": [
11
+ "Add a GitHub Actions workflow that lints and tests on every pull request",
12
+ "Speed up the dependency cache step in our .github/workflows/test.yml",
13
+ "Create a Jira issue automatically when a build fails",
14
+ "Post a message to a Slack channel when a deploy finishes",
15
+ "Sync our Linear issues into a weekly report"
16
+ ]
17
+ }
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: go-patterns
3
+ description: Idiomatic Go for writing and restructuring code, covering package layout, error wrapping with %w and errors.Is/As, small consumer-side interfaces, context.Context propagation, goroutine and channel patterns that do not leak or race, Go modules hygiene, and golangci-lint setup. Use when writing new Go code, designing a Go package or service, choosing between channels and mutexes, or asking how a Go project should be structured.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs the go toolchain; golangci-lint is optional.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: runs-commands
10
+ kete-loom/requires: "go"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # Go patterns
15
+
16
+ Write Go that reads like the standard library: plain, explicit, and boring on purpose. Follow the project's existing conventions first; these rules fill the gaps.
17
+
18
+ ## 0. Before you write
19
+
20
+ 1. Read `go.mod` for the module path and the `go` directive. Do not use language or library features newer than that version.
21
+ 2. Check for `.golangci.yml` / `.golangci.yaml`, a `Makefile` or CI workflow, and use the lint and test commands they define.
22
+ 3. Search the codebase for an existing helper, error type or interface before adding a new one.
23
+
24
+ ## 1. Package layout
25
+
26
+ - One package per directory, named for what it provides (`invoice`, not `utils`, `common` or `helpers`). Package names are short, lower case, no underscores.
27
+ - `cmd/<binary>/main.go` for each executable; keep `main` thin (parse config, wire dependencies, call `run(ctx) error`).
28
+ - `internal/` for code other modules must not import. Prefer it by default for application code.
29
+ - Do not create `pkg/`, `models/` or layer-per-folder trees unless the project already uses them. Start flat; split a package when it has two clearly separate jobs.
30
+ - Avoid stutter: `invoice.New`, not `invoice.NewInvoice`; `http.Client`, not `http.HTTPClient`.
31
+ - No package-level mutable state except where unavoidable (registered metrics, `flag`). Pass dependencies in.
32
+
33
+ ## 2. Errors
34
+
35
+ - Return `error` as the last result. Check it immediately; never assign it to `_` without a comment saying why it is safe.
36
+ - Add context when you return: `fmt.Errorf("load invoice %s: %w", id, err)`. Lower case, no trailing punctuation, no "failed to" prefix chains.
37
+ - Use `%w` only when callers may need to inspect the cause. Use `%v` when the cause is an implementation detail you do not want in your API.
38
+ - Inspect with `errors.Is(err, ErrNotFound)` and `errors.As(err, &target)`. Never compare `err.Error()` strings, and never use `==` on a possibly wrapped error.
39
+ - Sentinel errors: `var ErrNotFound = errors.New("invoice: not found")`. Custom types when callers need fields (`*ValidationError{Field string}`).
40
+ - Combine independent failures (for example several `Close` calls) with `errors.Join`.
41
+ - Handle an error once: either log it or return it, not both.
42
+ - `panic` only for programmer errors that cannot happen in correct code. Never panic across a package boundary for expected failures.
43
+
44
+ ## 3. Interfaces
45
+
46
+ - Define interfaces where they are **used**, not where they are implemented. Keep them to the one or two methods the consumer needs.
47
+ - Functions accept interfaces and return concrete types (`func NewStore(db *sql.DB) *Store`).
48
+ - Do not create an interface for a single implementation "for mocking later". Add it when a second implementation or a test fake needs it.
49
+ - Assert compliance at compile time when it matters: `var _ io.Reader = (*Decoder)(nil)`.
50
+ - A nil pointer stored in an interface is not a nil interface. Return a literal `nil` for "no error", never a typed nil `*MyError`.
51
+
52
+ ## 4. Context
53
+
54
+ - `ctx context.Context` is the first parameter of anything that does I/O, blocks, or calls something that does. Name it `ctx`.
55
+ - Pass the caller's context down. Never store a context in a struct, and never pass `nil` (use `context.TODO()` while wiring).
56
+ - `context.Background()` belongs in `main`, tests and top-level goroutines that outlive a request, nowhere else.
57
+ - Every `WithCancel`, `WithTimeout`, `WithDeadline` is followed by `defer cancel()`.
58
+ - Context values carry request-scoped data only (trace IDs, auth principal) under an unexported key type. Never pass optional parameters through them.
59
+ - Long loops and blocking selects check `ctx.Done()` and return `ctx.Err()`.
60
+
61
+ ## 5. Goroutines and channels
62
+
63
+ Rule: **every goroutine you start has a clear owner, a way to stop, and someone who waits for it.**
64
+
65
+ - Use `sync.WaitGroup` or `golang.org/x/sync/errgroup` to wait. Call `wg.Add` before the `go` statement, never inside the goroutine; on Go 1.25+ `wg.Go(func() { ... })` does both. With errgroup, use `errgroup.WithContext` so the first error cancels the rest, and `g.SetLimit(n)` to bound concurrency.
66
+ - A goroutine that sends on a channel must be able to exit if nobody receives: select on `ctx.Done()` too, or use a buffered channel sized to the number of sends.
67
+ - The sender closes a channel, never the receiver. Close once. Ranging over a channel ends only when it is closed.
68
+ - Prefer a `sync.Mutex` guarding a field over a channel when you only protect shared state. Use channels to hand off ownership or signal events.
69
+ - Keep the mutex next to the fields it guards and document which ones. Do not copy a struct containing a mutex (pass a pointer).
70
+ - `time.After` in a hot loop allocates a timer per iteration; use a `time.Ticker` or a reused `time.NewTimer`. Before Go 1.23 an unstopped timer or ticker was not collected until it fired, so always `Stop` them on older modules.
71
+ - Never start goroutines in `init` or in a library constructor without a `Close`/`Stop` method.
72
+
73
+ Worked patterns (worker pool, fan-out with errgroup, pipeline with cancellation, graceful HTTP shutdown) are in `references/concurrency.md`. Read it before writing any of those shapes.
74
+
75
+ ## 6. Modules and dependencies
76
+
77
+ - Add a dependency with `go get example.com/mod@vX.Y.Z`, then `go mod tidy`. Commit `go.mod` and `go.sum` together.
78
+ - Prefer the standard library. Check whether `net/http`, `log/slog`, `encoding/json`, `slices`, `maps` already do the job before adding a package.
79
+ - `replace` directives are for local development or a temporary fork. Do not commit a `replace` pointing at a local path unless the repo already does.
80
+ - Use `go.work` for multi-module local work; do not commit it unless the repo already does.
81
+
82
+ ## 7. Style details that matter
83
+
84
+ - `gofmt` (or `goimports`) every file. Unformatted Go is a defect.
85
+ - Zero values should be useful: `var buf bytes.Buffer` works without a constructor; design your types the same way where you can.
86
+ - Slices: `append` may reuse the backing array. When you return or store a subslice the caller might append to, copy it (`slices.Clone`) or use a full slice expression `s[lo:hi:hi]`.
87
+ - Maps are not safe for concurrent writes. Guard them or use `sync.Map` only for its documented cases.
88
+ - `defer f.Close()` on a file you wrote to loses the write error; check the `Close` error for writers.
89
+ - Use `log/slog` for structured logging if the project has no logger yet.
90
+ - Exported identifiers get a doc comment that starts with the identifier's name.
91
+
92
+ ## 8. Lint and verify
93
+
94
+ Run, in order, and fix what they report in code you touched:
95
+
96
+ 1. `gofmt -l .` (must print nothing) or the project's format command.
97
+ 2. `go vet ./...`
98
+ 3. `golangci-lint run ./...` if the project has a config or the user wants it. For a new config, keep `linters.default: standard` (errcheck, govet, ineffassign, staticcheck, unused) and enable extras such as `errorlint`, `bodyclose` and `contextcheck` only as needed. golangci-lint v2 configs begin with `version: "2"`; run `golangci-lint migrate` to convert a v1 file.
99
+ 4. `go test -race ./...`
100
+
101
+ Do not silence a linter with `//nolint` unless you name the linter and give the reason: `//nolint:errcheck // best-effort cleanup`.
102
+
103
+ ## Stop and ask the user
104
+
105
+ - Before restructuring packages or moving files across `internal/` boundaries.
106
+ - Before adding a third-party dependency for something the standard library covers.
107
+ - Before changing an exported API (signature, error values) that other modules may import.
108
+
109
+ ## Never
110
+
111
+ - Ignore an error silently, or `log.Fatal` outside `main`.
112
+ - Start a goroutine with no way to stop it.
113
+ - Use `interface{}`/`any` where a concrete type or a generic type parameter would do.
114
+ - Add generics for code that only has one type today.
115
+
116
+ ## Report back
117
+
118
+ End with: files changed, the format/vet/lint/test commands you ran and their results, and anything you chose not to change.
@@ -0,0 +1,17 @@
1
+ {
2
+ "should_trigger": [
3
+ "How should I lay out the packages for a new Go HTTP service with a CLI and a worker?",
4
+ "Write a Go function that fetches 200 URLs concurrently, at most 10 at a time, and stops on the first error",
5
+ "Should I wrap this error with %w or %v, and how do callers check for ErrNotFound in Go?",
6
+ "Design a small interface in my Go code so the billing package doesn't depend on the postgres store",
7
+ "Set up golangci-lint for our Go repo and fix the idiomatic issues it finds in the new package",
8
+ "Where should context.Context go in these Go function signatures, and should I keep it on the struct?"
9
+ ],
10
+ "should_not_trigger": [
11
+ "Write table-driven tests with subtests for my Go parser and run them with -race",
12
+ "Review this Go pull request for goroutine leaks and ignored errors",
13
+ "go build fails with 'missing go.sum entry for module providing package', fix it",
14
+ "Refactor this TypeScript service to use dependency injection",
15
+ "Explain Rust ownership and borrowing for a Go developer"
16
+ ]
17
+ }