@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,127 @@
1
+ ---
2
+ name: investor-materials
3
+ description: Drafts startup fundraising documents, namely a pitch deck outline, a one-page investor summary and the recurring investor update, built around a clear narrative, the few metrics investors judge a company on, a specific ask and use of funds. Use when a founder is preparing to raise a seed or Series A round, writing to existing investors about progress, or wants a deck or one-pager reviewed for gaps and common fundraising mistakes.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. No tools required; uses the metrics and documents the founder provides.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: business
9
+ kete-loom/risk: read-only
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Investor materials
14
+
15
+ Help a founder tell a true, specific story that makes an investor want the next meeting. You draft structure and words; the founder owns every number and claim.
16
+
17
+ ## 0. Pick the document and collect facts
18
+
19
+ Ask which of these is needed (often several):
20
+
21
+ | Document | Purpose | Length |
22
+ |---|---|---|
23
+ | Pitch deck | Get and run the meeting | 10-15 slides plus appendix |
24
+ | One-pager | Cold or warm intro, forwardable | One page |
25
+ | Investor update | Keep current investors informed and helpful | One screen of email, sent on a fixed cadence |
26
+
27
+ Collect before writing, and ask for anything missing:
28
+
29
+ 1. What the company does in one sentence, for whom, and why now.
30
+ 2. Stage, amount raised so far, the round being raised (amount, instrument such as a SAFE or priced round), and any committed investors.
31
+ 3. Real metrics with dates: revenue or MRR, growth rate, customers or users, retention, gross margin, burn and runway.
32
+ 4. Team: founders and why they are the right people.
33
+ 5. Target investors (stage, sector, geography).
34
+
35
+ **Stop and ask** rather than fill a gap with an invented or rounded-up number. If a metric is weak, the narrative must deal with it honestly, not hide it.
36
+
37
+ ## 1. Narrative first
38
+
39
+ Write the story in five sentences before any slide:
40
+
41
+ 1. The problem, for a specific customer, with evidence it hurts.
42
+ 2. The solution and what is different about it.
43
+ 3. Proof it is working (traction, the best single metric).
44
+ 4. Why this becomes big (market and business model).
45
+ 5. Why this team, and what this money achieves.
46
+
47
+ Every slide must support one of these sentences. Cut slides that do not.
48
+
49
+ ## 2. Pitch deck outline
50
+
51
+ Use this order unless the founder's strongest point should come earlier (often traction):
52
+
53
+ 1. **Title**: company, one-line description, contact.
54
+ 2. **Problem**: who has it, how they cope today, what it costs them.
55
+ 3. **Solution**: the product and the key insight. Show it (screenshot or demo flow).
56
+ 4. **Why now**: what changed (technology, regulation, behaviour, cost).
57
+ 5. **Traction**: one chart of the best metric over time, plus two or three supporting numbers.
58
+ 6. **Market**: bottom-up size (number of customers times price), not only a top-down headline figure. See the `market-research` skill for sizing.
59
+ 7. **Business model**: how you charge, price points, unit economics if known.
60
+ 8. **Competition**: honest map of alternatives, including "do nothing" and spreadsheets, and why customers pick you.
61
+ 9. **Go-to-market**: how customers are acquired today and how that scales.
62
+ 10. **Team**: relevant experience, not job-title lists.
63
+ 11. **The ask**: amount, instrument, what it funds, milestones it reaches and how many months of runway.
64
+ 12. **Appendix**: detailed financials, cohort data, product detail, for questions.
65
+
66
+ Slide-writing rules: one message per slide, written as the slide headline ("Revenue grew 3x in 6 months", not "Traction"); numbers with dates and definitions; readable at a glance.
67
+
68
+ Detailed slide prompts and a one-pager and update template are in `references/templates.md`. Read it when drafting the document itself.
69
+
70
+ ## 3. Metrics that matter
71
+
72
+ Choose the ones that fit the business model and define each one:
73
+
74
+ - **SaaS / subscription**: MRR or ARR, month-on-month growth, net revenue retention, logo churn, CAC payback, gross margin.
75
+ - **Marketplace**: GMV, take rate, net revenue, repeat purchase rate, liquidity on both sides.
76
+ - **Consumer**: active users (define active), retention cohorts, engagement frequency, organic share of acquisition.
77
+ - **Fintech / payments**: total payment volume, revenue as a share of volume, loss and fraud rates, licences held.
78
+ - **All**: burn, runway in months, revenue or usage concentration in top customers.
79
+
80
+ Say "revenue" only for recognised revenue. Label bookings, pilots, letters of intent and GMV as what they are.
81
+
82
+ ## 4. The ask
83
+
84
+ - State an exact amount or a narrow range, the instrument and the terms already agreed (for example a valuation cap on a SAFE).
85
+ - Use of funds as three to five buckets with percentages that sum to 100.
86
+ - Tie the money to milestones that make the next round possible, and the runway it buys.
87
+
88
+ ## 5. Investor update
89
+
90
+ Send on a fixed cadence (monthly or quarterly), short, same structure every time:
91
+
92
+ 1. Headline: one-line summary of the period.
93
+ 2. Key metrics table, same metrics each time, with change versus last period.
94
+ 3. Wins.
95
+ 4. Challenges, stated plainly, with what you are doing about them.
96
+ 5. Asks: specific introductions, hires or advice.
97
+ 6. Cash and runway.
98
+
99
+ Never skip bad months; consistency builds trust.
100
+
101
+ ## Common mistakes to flag when reviewing
102
+
103
+ - No clear ask, or an ask with no milestones.
104
+ - Top-down market size only ("1% of a $50B market").
105
+ - Vanity metrics (downloads, sign-ups) without retention or revenue.
106
+ - Undefined or cherry-picked metrics, or charts without axes and dates.
107
+ - "No competitors".
108
+ - Too much text; slides that need the founder to explain them.
109
+ - Financial projections presented as facts.
110
+ - Inconsistent numbers between deck, one-pager and data room.
111
+
112
+ ## Rules
113
+
114
+ - Never invent, inflate or round up traction, revenue, customers, logos or committed investors. Misrepresenting facts to investors can be fraud.
115
+ - Do not give legal, tax or securities advice; for instruments, terms and fundraising rules in the founder's jurisdiction, tell them to confirm with a lawyer.
116
+ - Keep confidential figures out of anything the founder says will be shared publicly.
117
+
118
+ ## Output
119
+
120
+ Deliver the requested document(s) in Markdown, followed by:
121
+
122
+ ```
123
+ ## Gaps and questions
124
+ - <missing metric or claim that needs a source>
125
+ ## Review notes
126
+ - <mistakes from the list above that apply, with the fix>
127
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "We're raising a $1.5M seed round. Help me outline the pitch deck.",
4
+ "Write our monthly update to investors: MRR is up 12%, we lost a big customer and runway is 14 months",
5
+ "Turn these notes into a one-page summary I can send to angel investors",
6
+ "Review my Series A deck and tell me what VCs will push back on",
7
+ "What metrics should a B2B SaaS startup put on the traction slide, and how do I phrase the ask?"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Estimate TAM, SAM and SOM for a pharmacy inventory app in Nigeria with sources",
11
+ "Plan a launch campaign with a budget split across paid social and email",
12
+ "Write a long-form blog post on lessons from our first year as a startup",
13
+ "Define the voice and tone guidelines for our company's website copy",
14
+ "Prepare release notes for version 2.0 of our CLI"
15
+ ]
16
+ }
@@ -0,0 +1,74 @@
1
+ # Investor materials: templates
2
+
3
+ Read this when drafting. Replace every `<...>` with the founder's facts; leave a visible `TODO` where a fact is missing instead of guessing.
4
+
5
+ ## Pitch deck slide prompts
6
+
7
+ | Slide | Headline pattern | Body | Check |
8
+ |---|---|---|---|
9
+ | Title | `<Company>: <what it does for whom>` | Logo, contact, round | Understandable without speaking |
10
+ | Problem | `<Customer> loses <cost> because <cause>` | Quote or data point, current workaround | Specific customer, not "everyone" |
11
+ | Solution | `<Product> lets <customer> <outcome>` | Screenshot or 3-step flow | Shows the product |
12
+ | Why now | `<Change> makes this possible now` | 1-3 changes with dates | Real change, not hype |
13
+ | Traction | `<Metric> grew <x> in <period>` | One chart, 2-3 supporting numbers | Dates, definitions, axes |
14
+ | Market | `<N> <customers> x <price> = <size>` | Bottom-up arithmetic, sources | Shows the calculation |
15
+ | Business model | `We earn <price> per <unit>` | Pricing, margin, unit economics | Matches traction numbers |
16
+ | Competition | `Customers choose us because <reason>` | Matrix or table of alternatives | Includes "do nothing" |
17
+ | Go-to-market | `We acquire customers through <channel>` | Current CAC or conversion if known | Evidence, not plans only |
18
+ | Team | `<Team> has done <relevant thing>` | Founders, key hires, advisers | Relevance to this problem |
19
+ | Ask | `Raising <amount> to reach <milestone>` | Instrument, use of funds, runway | Percentages sum to 100 |
20
+
21
+ ## One-pager
22
+
23
+ ```
24
+ # <Company>: <one-line description>
25
+ <Website> | <Founder name, email> | Raising <amount> <instrument>
26
+
27
+ **Problem.** <2 sentences>
28
+ **Solution.** <2 sentences>
29
+ **Traction.** <best metric with date>; <2 supporting numbers>
30
+ **Market.** <bottom-up size, one line of arithmetic>
31
+ **Business model.** <how you charge, price>
32
+ **Competition.** <alternatives and why customers pick you>
33
+ **Team.** <founders, one line each>
34
+ **The ask.** <amount>, <use of funds in 3 buckets>, reaching <milestone> with <n> months runway
35
+ ```
36
+
37
+ ## Investor update (email)
38
+
39
+ ```
40
+ Subject: <Company> update, <Month Year>: <headline>
41
+
42
+ Hi all,
43
+
44
+ TL;DR: <one line>
45
+
46
+ | Metric | This period | Last period | Change |
47
+ |---|---|---|---|
48
+ | <MRR> | | | |
49
+ | <Active customers> | | | |
50
+ | <Burn / month> | | | |
51
+ | Runway (months) | | | |
52
+
53
+ Wins
54
+ - <...>
55
+
56
+ Challenges
57
+ - <problem>, what we are doing: <action>
58
+
59
+ Asks
60
+ - <specific intro: name or profile, why>
61
+
62
+ Thanks,
63
+ <Founder>
64
+ ```
65
+
66
+ ## Review checklist
67
+
68
+ - [ ] Narrative fits in five sentences and every slide supports one.
69
+ - [ ] Each metric is defined and dated, and matches across documents.
70
+ - [ ] The ask has an amount, instrument, use of funds and milestone.
71
+ - [ ] Market size includes a bottom-up calculation.
72
+ - [ ] Competition slide names real alternatives.
73
+ - [ ] Projections are labelled as projections.
74
+ - [ ] No claim without a source the founder can show.
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: invoicing-and-tax
3
+ description: Guides software teams through issuing legally usable invoices and charging sales tax, VAT or GST correctly, covering required invoice fields and sequential numbering, choosing a tax calculation service or merchant of record over hand-rolled rate tables, registration thresholds and nexus at a high level, reverse charge for B2B, tax-inclusive versus exclusive pricing, line-level rounding, and national e-invoicing mandates such as Peppol, KSeF and Factur-X, with a firm handoff to a qualified accountant for anything that is a tax position. Use when building or fixing invoice generation, adding VAT or sales tax to checkout, deciding whether to integrate Avalara, Stripe Tax or a merchant of record, or preparing for an e-invoicing deadline in a country you sell into.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Provider-neutral. Tax thresholds, rates and mandate dates change often; the agent must check official sources before quoting them.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: business
9
+ kete-loom/risk: writes-files
10
+ kete-loom/owner: "Kete-org"
11
+ ---
12
+
13
+ # Invoicing and tax
14
+
15
+ Produce invoices that a tax authority would accept and tax amounts a customer can re-add by hand, while keeping every tax *decision* with a qualified person. You build the machinery; an accountant or tax adviser decides where you are registered, what is taxable and at which rate.
16
+
17
+ ## What this skill does not cover
18
+
19
+ - It is not tax or legal advice. It does not decide whether a product is taxable, whether you have nexus or a VAT obligation somewhere, which rate or exemption applies, or how to file returns.
20
+ - It does not cover payroll tax, income or corporate tax, customs duties (see `customs-trade-compliance` if installed), or revenue recognition policy.
21
+ - Thresholds, rates and deadlines in this skill and its references are orientation only and may be out of date. Before relying on one, check the tax authority's own site and say which source and date you used.
22
+
23
+ **Stop and ask for a qualified accountant or tax adviser** before: registering or not registering somewhere, choosing a product tax code or exemption, applying reverse charge or zero rating, issuing invoices in a new country, changing how past invoices were taxed, or answering a customer's tax dispute.
24
+
25
+ ## Ground rules
26
+
27
+ 1. **Never hand-roll rate tables** for more than a single jurisdiction you are registered in. Rates, product taxability and US local jurisdictions change constantly. Use a tax engine (Avalara AvaTax, Stripe Tax, Anrok, TaxJar, Quaderno and similar) or a merchant of record (Paddle, Lemon Squeezy and similar), which becomes the seller and takes on the tax liability.
28
+ 2. **Store the tax decision on the invoice line**, not just the result: jurisdiction, rate, tax code, taxable amount, tax amount, and the engine's transaction or calculation ID. You must be able to explain an old invoice after rates change.
29
+ 3. **Invoices are immutable once issued.** Correct with a credit note that references the original and reverses its tax in proportion. Never edit, renumber or delete.
30
+ 4. **Numbering**: one sequential series per legal entity (and per series type if the jurisdiction allows), assigned at finalisation inside a transaction, no reuse. Many VAT regimes require a unique sequential number; gaps need an explanation.
31
+ 5. **Money is integer minor units plus currency.** Round with the method the jurisdiction specifies, at the level it specifies (line or invoice total). Details in `references/rounding.md`.
32
+ 6. **Customer location evidence** is stored with each sale (billing address, IP country, payment method country, VAT ID validation result) because B2C digital sales in many regimes are taxed where the customer is.
33
+ 7. **Validate B2B tax IDs** before applying reverse charge: EU VAT numbers via the EU [VIES](https://ec.europa.eu/taxation_customs/vies/) service, UK VAT numbers via HMRC's [check a UK VAT number](https://www.gov.uk/check-uk-vat-number) service, and store the check result and timestamp.
34
+
35
+ ## Workflow
36
+
37
+ 1. **Inventory.** Search the codebase for invoice generation, PDF templates, numbering, tax calculation, the checkout price display, and credit notes. List which legal entity issues invoices and where customers are.
38
+ 2. **Ask the user for the tax position** (from their accountant): where they are registered, products' tax codes, whether prices are tax-inclusive per market, B2B vs B2C mix. If unknown, stop; don't guess.
39
+ 3. **Pick the approach** with the table below and confirm with the user.
40
+ 4. **Required fields.** Check the invoice against the jurisdiction's list. EU baseline is in `references/invoice-fields.md`; others vary.
41
+ 5. **Integrate the engine**: calculate at quote/checkout with the full address and tax IDs, commit (record) the transaction when the invoice is finalised, and void or refund it in the engine when you issue a credit note. Calculate-only calls without commits leave the engine's reports empty.
42
+ 6. **Prices display**: show tax-inclusive prices to consumers where that is the norm (EU, UK, Australia) and tax-exclusive plus tax at checkout where that is the norm (US). Decide per market with the user.
43
+ 7. **E-invoicing**: check whether any country you invoice in mandates structured e-invoices for your customer type; see `references/e-invoicing.md`. Usually this means an accredited provider or Peppol access point, not building the transmission yourself.
44
+ 8. **Test** with fixtures: one domestic B2C, one domestic B2B, one cross-border B2B with a valid tax ID (reverse charge), one with an invalid tax ID, one US address in a taxing state, a refund producing a credit note, a multi-line invoice that stresses rounding.
45
+
46
+ ## Choose the approach
47
+
48
+ | Situation | Usually |
49
+ |---|---|
50
+ | One country, registered there, simple products | Engine is optional; a reviewed, tested rate config for that one country is acceptable |
51
+ | Selling to consumers in many countries, small team | Merchant of record, or a tax engine plus registrations your adviser sets up |
52
+ | US sales across states | Tax engine; economic nexus thresholds differ by state |
53
+ | Marketplace or platform paying out to sellers | Stop and ask; marketplace facilitator rules may make you the collector |
54
+ | Large B2B, ERP-driven | Tax engine integrated with the ERP; invoices issued from one system only |
55
+
56
+ ## Thresholds at a high level
57
+
58
+ Registration duty depends on where you are established, what you sell and to whom. Orientation only, all to be verified with the authority before use:
59
+
60
+ - **US sales tax**: since [*South Dakota v. Wayfair*](https://www.supremecourt.gov/opinions/17pdf/17-494_j4el.pdf) (2018), states can require remote sellers to collect once they cross an economic nexus threshold. The South Dakota law upheld there used more than 100,000 USD of sales or 200 transactions a year into the state; each state sets its own figures and tests, so check that state's revenue department. Taxability of SaaS and digital goods differs by state.
61
+ - **EU VAT**: a seller established in only one EU member state has a 10,000 EUR EU-wide annual threshold (current and preceding calendar year) for cross-border B2C telecoms, broadcasting and electronic services and intra-EU distance sales of goods; above it, VAT is due in the customer's country, usually declared via the [One Stop Shop](https://vat-one-stop-shop.ec.europa.eu/one-stop-shop_en) (OSS). Sellers not established in the EU have no threshold for B2C services and use the non-Union OSS.
62
+ - **UK VAT**: [registration threshold](https://www.gov.uk/register-for-vat) 90,000 GBP of taxable turnover over the last 12 months, or expected within the next 30 days, for UK-established businesses; [non-established taxable persons](https://www.gov.uk/government/publications/vat-notice-7001-should-i-be-registered-for-vat/vat-notice-7001-should-i-be-registered-for-vat) must register on their first UK taxable supply, with no threshold.
63
+ - **Others** (Australia, Canada, India, Norway, Switzerland, Singapore, many more) have their own regimes for foreign digital sellers. Look them up per country.
64
+
65
+ ## Never
66
+
67
+ - Never present computed tax as advice, or tell a user they don't need to register somewhere.
68
+ - Never silently apply 0% because a tax ID field is non-empty; validate it.
69
+ - Never recalculate tax on an issued invoice with today's rates.
70
+ - Never compute tax on floats or round the total separately from lines without a defined rule.
71
+ - Never generate invoices from two systems for the same sale (for example, both the payment provider and your app).
72
+
73
+ ## Report format
74
+
75
+ When reviewing or designing, return:
76
+
77
+ ```
78
+ Issuing entity and series: <entity, numbering scheme>
79
+ Approach: <engine | merchant of record | single-country config>
80
+ Markets checked: <country: B2B/B2C, registered?, inclusive/exclusive, e-invoice mandate?, source + date checked>
81
+ Field gaps: <missing required fields per market>
82
+ Rounding rule: <method, level>
83
+ Needs accountant decision: <list>
84
+ ```
@@ -0,0 +1,17 @@
1
+ {
2
+ "should_trigger": [
3
+ "Our generated PDF invoices are missing the customer's VAT number and the reverse charge note for EU business customers",
4
+ "Should we integrate Avalara or Stripe Tax, or switch to a merchant of record like Paddle for selling SaaS worldwide?",
5
+ "Belgium now requires Peppol e-invoices for B2B; what do we need to change in our invoicing system?",
6
+ "Tax on our invoices is off by a cent compared with the total; should VAT be rounded per line or per invoice?",
7
+ "We start selling to US customers in several states. How do we figure out where we need to collect sales tax?",
8
+ "Make our invoice numbers sequential and gap-free per legal entity, they currently use random IDs"
9
+ ],
10
+ "should_not_trigger": [
11
+ "Implement mid-cycle proration when a customer upgrades from the monthly to the annual plan",
12
+ "Classify our product under the right HS code for importing into the EU",
13
+ "Sync invoices from our app into Xero with the right account codes",
14
+ "Check our payroll setup for the right employer tax withholding",
15
+ "Review this pull request that changes how invoice totals are calculated"
16
+ ]
17
+ }
@@ -0,0 +1,24 @@
1
+ # E-invoicing mandates
2
+
3
+ An e-invoice here means a structured, machine-readable invoice (XML such as UBL or CII), often sent through a network or a government platform. A PDF by email is not one.
4
+
5
+ **Dates below were checked against the national authorities' own pages in October 2026 (linked in the table) and change often. Check the authority again before acting, and record the source and date you used.**
6
+
7
+ | Country | Status as reported | Format / channel |
8
+ |---|---|---|
9
+ | Italy ([Agenzia delle Entrate](https://www.agenziaentrate.gov.it/portale/web/guest/schede/comunicazioni/fatture-e-corrispettivi/faq-fe/risposte-alle-domande-piu-frequenti-categoria/emissione-delle-fatture-elettroniche-imprese)) | Domestic B2B and B2C via SDI since 1 Jan 2019 (consumers can get a paper or PDF copy) | FatturaPA XML through Sistema di Interscambio |
10
+ | Germany ([BMF FAQ](https://www.bundesfinanzministerium.de/Content/DE/FAQ/e-rechnung.html)) | Domestic B2B: all businesses must be able to receive e-invoices since 1 Jan 2025. Other invoice types allowed until 31 Dec 2026, or until 31 Dec 2027 for issuers with prior-year turnover up to 800,000 EUR. So issuing is mandatory from 1 Jan 2027 for larger issuers and from 1 Jan 2028 for all | EN 16931 formats such as XRechnung or ZUGFeRD/Factur-X |
11
+ | Belgium ([einvoice.belgium.be](https://einvoice.belgium.be/en/article/structured-electronic-invoices-between-companies-are-compulsory-2026)) | Structured e-invoices mandatory between Belgian VAT-registered businesses since 1 Jan 2026; not for consumers; cross-border out of scope until ViDA | Peppol network, Peppol BIS as the reference format |
12
+ | Poland ([ksef.podatki.gov.pl](https://ksef.podatki.gov.pl/informacje-ogolne-ksef-20/zakres-obowiazkowego-ksef/)) | Receiving via KSeF mandatory for all from 1 Feb 2026; issuing from 1 Feb 2026 for taxpayers with 2024 sales over 200m PLN, from 1 Apr 2026 for others; those invoicing at most 10,000 PLN gross a month have until the end of 2026 | National KSeF platform, structured XML |
13
+ | France ([impots.gouv.fr](https://www.impots.gouv.fr/facturation-electronique-et-plateformes-agreees)) | Receiving for all businesses, and issuing plus e-reporting for large and mid-size (GE, ETI), from 1 Sep 2026; issuing for SMEs and micro-businesses from 1 Sep 2027 | Via approved platforms (plateformes agréées); check DGFiP's specifications for the accepted formats |
14
+ | EU-wide ([ViDA](https://taxation-customs.ec.europa.eu/taxation/vat/vat-digital-age-vida_en)) | VAT in the Digital Age package adopted 11 Mar 2025; mandatory e-invoicing with digital reporting for intra-EU B2B transactions from 1 Jul 2030; national systems to align by 1 Jan 2035 | EN 16931 baseline |
15
+
16
+ Outside the EU, mandates exist in many countries (for example India, Mexico, Saudi Arabia, Malaysia, Türkiye, Brazil) with their own schemas and clearance steps.
17
+
18
+ ## What it means for a software team
19
+
20
+ 1. List where your customers are and which are businesses. Mandates mostly target domestic B2B first.
21
+ 2. Most teams connect to an accredited provider or a Peppol access point rather than implementing the network or government API directly.
22
+ 3. Your invoice data must already contain everything the format needs: buyer tax ID, structured address, per-line tax category codes, unit codes, payment means. Gaps here are the usual blocker.
23
+ 4. Archive the structured invoice as sent, for the retention period the country requires.
24
+ 5. Receiving is also a mandate in some countries; check whether you must accept supplier e-invoices in your accounts payable process.
@@ -0,0 +1,38 @@
1
+ # Invoice fields
2
+
3
+ ## EU VAT invoice baseline
4
+
5
+ The EU VAT Directive ([2006/112/EC](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02006L0112-20250414), Article 226) lists what a full VAT invoice must show. Member states implement it in national law and may add rules, so check the country's guidance too. Summary of the list:
6
+
7
+ 1. Date of issue
8
+ 2. Sequential number that uniquely identifies the invoice
9
+ 3. Supplier's VAT identification number
10
+ 4. Customer's VAT identification number where the customer is liable for the tax (reverse charge) or for intra-EU supplies of goods
11
+ 5. Full name and address of supplier and customer
12
+ 6. Quantity and nature of goods, or extent and nature of services
13
+ 7. Date of supply or payment, if different from the issue date
14
+ 8. Taxable amount per rate or exemption, unit price excluding VAT, and any discounts not included in the unit price
15
+ 9. VAT rate applied
16
+ 10. VAT amount payable
17
+ 11. Where exempt or reverse charged, a reference to the provision or the wording such as "Reverse charge"
18
+ 12. Other mentions where they apply: "Self-billing", "Cash accounting", the margin scheme wording, new means of transport details, a tax representative's VAT number, name and address
19
+
20
+ The invoice may be in any currency, but the VAT payable must also be expressed in the national currency of the member state (Article 230).
21
+
22
+ Simplified invoices with fewer fields (Article 226b) are allowed for low amounts; the limit is set nationally within the Directive's rules.
23
+
24
+ ## Fields that help everywhere
25
+
26
+ - Legal entity name, registered address, company number where local law requires it
27
+ - Payment terms, due date, how to pay
28
+ - Purchase order number when the customer gives one
29
+ - Service period for subscriptions (`1 Apr 2026 – 30 Apr 2026`)
30
+ - For credit notes: "Credit note", own number, and the original invoice number and date
31
+
32
+ ## United States
33
+
34
+ There is no federal invoice format. States set what a sales tax invoice or receipt must show; the tax amount is commonly shown separately. A tax engine's documentation usually lists state requirements.
35
+
36
+ ## Elsewhere
37
+
38
+ Many countries (for example Mexico CFDI, India GST e-invoicing, Brazil NF-e, Saudi Arabia, Türkiye) require government-validated electronic invoices with specific schemas and IDs. Don't generate a PDF and assume it is valid there; use an accredited provider and check the authority's rules.
@@ -0,0 +1,26 @@
1
+ # Tax rounding
2
+
3
+ ## Pick and document
4
+
5
+ - **Level**: per line (compute tax per line, round, sum) or per invoice (sum taxable amounts per rate, compute tax once, round). Some authorities specify one. EN 16931 e-invoices compute VAT per VAT category and rate: the category taxable amount is the sum of line net amounts plus charges minus allowances ([BR-S-08](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-S-08/) for standard rate), and the category tax amount must equal taxable amount × rate, rounded to two decimals ([BR-CO-17](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-17/)). Per-line-rounded tax can fail that check; if you issue e-invoices, use per-invoice-per-rate. Ask the accountant which applies.
6
+ - **Method**: half-up is the usual commercial default; some regimes specify otherwise. Use a decimal type, never binary floats.
7
+ - **Inclusive prices**: tax = gross × rate ÷ (1 + rate). Round tax, then net = gross − tax, so net + tax always equals the advertised gross.
8
+
9
+ ## Example of the difference
10
+
11
+ Three lines of 0.99 (minor units: 99) at 20% VAT, tax-exclusive:
12
+
13
+ ```
14
+ per line: round(99 * 0.20) = round(19.8) = 20 per line → 60 total
15
+ per invoice: round(297 * 0.20) = round(59.4) = 59
16
+ ```
17
+
18
+ A one-unit difference per invoice adds up and makes tax returns disagree with ledgers. Whatever you choose, the tax engine, your invoice PDF and the accounting system must use the same rule.
19
+
20
+ ## Tests worth having
21
+
22
+ - Many small lines at a rate that produces .5 fractions
23
+ - A tax-inclusive price where `gross / (1 + rate)` has a repeating decimal
24
+ - Mixed rates on one invoice (summed per rate)
25
+ - A credit note for one line of a multi-line invoice: its tax must equal the tax originally charged on that line
26
+ - Zero-decimal (JPY) and three-decimal (KWD) currencies
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: ios-platform-features
3
+ description: Adopts recent Apple platform APIs in an existing app without dropping older OS versions, covering the Liquid Glass design (glassEffect, GlassEffectContainer, glass button styles, UIGlassEffect, UIDesignRequiresCompatibility), the on-device Foundation Models framework with SystemLanguageModel availability, LanguageModelSession, @Generable guided generation and the Tool protocol, #available checks with real fallbacks, and layered Icon Composer app icons. Use when an iOS, iPadOS or macOS app is moving to the iOS 26 or later SDK, adding an Apple Intelligence text feature that runs on device, gating a new API behind an availability check, or replacing an AppIcon asset catalog with an .icon file.
4
+ license: MIT
5
+ compatibility: Any Agent Skills host. Needs Xcode 26 or later with the matching SDKs; Foundation Models features need an Apple Intelligence capable device or Mac to test on. APIs change between SDK releases, so every name must be checked against developer.apple.com for the SDK in use.
6
+ metadata:
7
+ kete-loom/version: "0.1.0"
8
+ kete-loom/category: coding
9
+ kete-loom/risk: writes-files
10
+ kete-loom/requires: "xcodebuild"
11
+ kete-loom/owner: "Kete-org"
12
+ ---
13
+
14
+ # iOS platform features
15
+
16
+ Bring an app onto Apple's newest APIs while it keeps working on every OS version it still supports. General Swift style lives in the Swift and SwiftUI skills; this skill is about new platform surfaces and gating them.
17
+
18
+ ## 0. Before you start
19
+
20
+ 1. Read the deployment target (target, General, Minimum Deployments, or `IPHONEOS_DEPLOYMENT_TARGET`) and the Xcode and SDK version (`xcodebuild -version`, `xcodebuild -showsdks`).
21
+ 2. **Verify every API against Apple's documentation for that SDK before you write it.** Open the symbol page on developer.apple.com and read its availability line. Apple renames and deprecates these APIs between major releases (for example, the iOS 27 SDK adds `LanguageModelError`, `SystemLanguageModel.Error` and `LanguageModelSession.Error` alongside the iOS 26 `LanguageModelSession.GenerationError`). If you cannot confirm a name, say so and do not guess.
22
+ 3. Build once and run the tests before changing anything. Record warnings.
23
+
24
+ ## 1. Availability rules (apply to every feature below)
25
+
26
+ - Gate code with `if #available(iOS 26, *) { ... } else { ... }` and types or members with `@available(iOS 26, *)`. Use the matching macOS, visionOS or watchOS versions for those targets.
27
+ - Every gated path has a real fallback that a user on the older OS can use. Hiding a button is a fallback only if the feature is optional.
28
+ - Keep gated code in small wrappers (one view modifier, one service type), not scattered `#available` checks.
29
+ - Test both branches: a simulator on the newest OS and one on the oldest supported OS.
30
+ - Raising the deployment target is a product decision. **Stop and ask the user** before doing it to avoid writing a fallback.
31
+
32
+ ## 2. Liquid Glass
33
+
34
+ Building with the iOS 26 SDK gives standard components (navigation bars, tab bars, toolbars, sheets, buttons, sliders) the new material automatically.
35
+
36
+ 1. Rebuild and walk every screen on an iOS 26+ simulator. Look for custom backgrounds on bars, toolbars, split views and sheets that fight the system material, and remove them first.
37
+ 2. For custom controls, prefer the system button styles: SwiftUI `.buttonStyle(.glass)` and `.buttonStyle(.glassProminent)`; UIKit `UIButton.Configuration.glass()`, `.prominentGlass()`, `.clearGlass()`, `.prominentClearGlass()`.
38
+ 3. Only then use the effect directly: `.glassEffect()` (default `.regular` in a capsule), `.glassEffect(.regular.tint(.orange).interactive(), in: .rect(cornerRadius: 16))`. Apply it after the modifiers that set the view's appearance. UIKit uses `UIGlassEffect` in a `UIVisualEffectView`; AppKit uses `NSGlassEffectView`.
39
+ 4. Group nearby glass views in `GlassEffectContainer(spacing:)` for performance and morphing; use `glassEffectID(_:in:)` with a `@Namespace` for morph transitions and `glassEffectUnion(id:namespace:)` to merge shapes at rest.
40
+ 5. Use glass sparingly: controls and navigation, never content such as list rows or cards of text.
41
+ 6. Content scrolling under a custom bar: use `safeAreaBar(edge:...)` (SwiftUI) or `UIScrollEdgeElementContainerInteraction` (UIKit) to get the scroll edge effect.
42
+ 7. Wrap custom glass in one modifier that falls back on older OS versions:
43
+
44
+ ```swift
45
+ extension View {
46
+ @ViewBuilder func appGlass() -> some View {
47
+ if #available(iOS 26, *) { self.glassEffect() }
48
+ else { self.background(.ultraThinMaterial, in: Capsule()) }
49
+ }
50
+ }
51
+ ```
52
+
53
+ 8. Check legibility with Reduce Transparency, Increase Contrast and Reduce Motion on, in light and dark mode.
54
+ 9. The `UIDesignRequiresCompatibility` Info.plist key keeps the pre-Liquid Glass look only for builds made with the Xcode 26 SDKs. Apple has said builds made with the Xcode 27 SDKs ignore it, whatever the deployment target. Do not offer it as a fix on Xcode 27 or later; tell the user the redesign cannot be postponed past that SDK.
55
+
56
+ ## 3. Foundation Models (on-device language model)
57
+
58
+ Read `references/foundation-models.md` before writing code; it has the session, guided generation and tool patterns.
59
+
60
+ 1. Decide whether the task fits a small on-device model: summarising, extracting fields, classifying, rewriting or tagging the user's own content. It is not a source of world knowledge or facts. **Stop and ask** if the feature needs accurate facts, long documents or heavy reasoning.
61
+ 2. Check `SystemLanguageModel.default.availability` every time before offering the feature, and handle each `.unavailable` reason: `.deviceNotEligible` (hide the feature), `.appleIntelligenceNotEnabled` (explain how to turn it on), `.modelNotReady` (try later; the model may be downloading).
62
+ 3. Prefer guided generation (`@Generable` types with `@Guide` constraints) over parsing free text.
63
+ 4. Give the model app data through a `Tool` only when it must decide what to fetch; otherwise put the data in the prompt.
64
+ 5. Handle errors: context window exceeded, guardrail violation, unsupported language or locale, and concurrent requests on one session. Use the error type your SDK documents.
65
+ 6. Keep the user in control: show generated text as a draft they can edit or discard, never act on it automatically.
66
+ 7. If the project builds with the iOS 27 SDK or later, read Apple's "Foundation Models updates" page first (it lists the `LanguageModel` protocol for other models, `PrivateCloudComputeLanguageModel`, image input, `LanguageModelSession.DynamicProfile` and the new error types); do not assume iOS 26 signatures still apply. `PrivateCloudComputeLanguageModel` and server models are not on-device: **stop and ask** before using them, and describe the feature accordingly.
67
+
68
+ ## 4. App icons with Icon Composer
69
+
70
+ 1. Open Icon Composer from Xcode (Xcode, Open Developer Tool, Icon Composer). Import layers as SVG (PNG for unsupported features), up to four groups, back to front. Leave out blur, shadow, background and the mask; Icon Composer and the system add them.
71
+ 2. Check the default, dark and mono (clear and tinted) appearances in the canvas.
72
+ 3. Add the `.icon` file to the app target and make the App Icon name in the target's General tab match the file name without extension (usually `AppIcon`).
73
+ 4. When the target has an `.icon` file, Xcode uses it instead of an `AppIcon` asset set of the same name and generates the images older OS versions show; a different icon per OS version is not supported. Check the icon on the oldest supported OS, and **ask the user** before deleting the old asset set.
74
+ 5. tvOS and visionOS targets still use asset catalogs.
75
+
76
+ ## 5. Verify
77
+
78
+ 1. Build for every platform the app supports and fix new availability warnings.
79
+ 2. Run on the newest and the oldest supported OS. Exercise each new feature and its fallback.
80
+ 3. Foundation Models: test on a real eligible device, with Apple Intelligence off, and with an unsupported language.
81
+ 4. Run the test suite. Add a test for each fallback path you can reach (for example, a fake model service behind a protocol).
82
+
83
+ ## Never
84
+
85
+ - Never call an API without checking it on developer.apple.com for the SDK in use.
86
+ - Never ship a Foundation Models feature without a path for every unavailable reason.
87
+ - Never send the user's content to a server while describing the feature as on-device.
88
+ - Never cover text-heavy content with glass or stack glass on glass.
89
+ - Never raise the deployment target silently.
90
+
91
+ ## Report back
92
+
93
+ ```
94
+ SDK / deployment target: <Xcode version, SDK, min OS>
95
+ Adopted: <feature> | <files> | <availability gate> | <fallback>
96
+ Verified on: <OS versions and devices>, tests: <command and result>
97
+ APIs checked against docs: <list>; could not confirm: <list>
98
+ Open questions: <deployment target, icon fallback, design decisions>
99
+ ```
@@ -0,0 +1,16 @@
1
+ {
2
+ "should_trigger": [
3
+ "Add an on-device summary of the user's notes with Apple's Foundation Models framework, with a fallback when Apple Intelligence is off",
4
+ "We rebuilt with the iOS 26 SDK, how do we adopt Liquid Glass in our custom toolbar and keep iOS 17 working?",
5
+ "Replace our AppIcon asset catalog with an Icon Composer .icon file that has dark and tinted variants",
6
+ "Use @Generable guided generation to extract event details from an email on device",
7
+ "Wrap glassEffect and GlassEffectContainer in availability checks so the app still builds for iOS 18"
8
+ ],
9
+ "should_not_trigger": [
10
+ "Migrate our Swift package to the Swift 6 language mode and fix Sendable warnings",
11
+ "Our SwiftUI view keeps resetting its state when the parent redraws",
12
+ "Call the Claude API from our iOS app's backend to answer support questions",
13
+ "Write Swift Testing tests for our actor-based cache",
14
+ "Make our iOS app's icon buttons readable by VoiceOver and fix focus order"
15
+ ]
16
+ }
@@ -0,0 +1,90 @@
1
+ # Foundation Models patterns (iOS 26 SDK)
2
+
3
+ Signatures shown are the iOS 26 forms; newer SDKs add overloads (metadata, context options, dynamic profiles) and a separate error type. Re-check each symbol page for the SDK you build with.
4
+
5
+ ## Availability
6
+
7
+ ```swift
8
+ import FoundationModels
9
+
10
+ enum SummaryAvailability { case ready, hidden, needsAppleIntelligence, tryLater }
11
+
12
+ func summaryAvailability() -> SummaryAvailability {
13
+ switch SystemLanguageModel.default.availability {
14
+ case .available: return .ready
15
+ case .unavailable(.deviceNotEligible): return .hidden
16
+ case .unavailable(.appleIntelligenceNotEnabled): return .needsAppleIntelligence
17
+ case .unavailable(.modelNotReady): return .tryLater
18
+ case .unavailable: return .hidden // future reasons: fail closed
19
+ }
20
+ }
21
+ ```
22
+
23
+ Re-check availability when the app returns to the foreground; it can change.
24
+
25
+ ## Session
26
+
27
+ ```swift
28
+ let session = LanguageModelSession(instructions: """
29
+ You summarise the user's notes in two sentences. Use only the text given.
30
+ """)
31
+ let response = try await session.respond(to: noteText)
32
+ let summary = response.content
33
+ ```
34
+
35
+ - A session keeps a transcript; reuse it for a multi-turn conversation, create a new one for unrelated requests.
36
+ - One request at a time per session; check `session.isResponding` before sending another.
37
+ - Call `session.prewarm(promptPrefix:)` when you know a request is coming (for example, when the sheet opens).
38
+ - Stream into the UI with `for try await partial in session.streamResponse(to: prompt) { ... }`.
39
+
40
+ ## Guided generation
41
+
42
+ ```swift
43
+ @Generable
44
+ struct ExtractedEvent {
45
+ @Guide(description: "Short event title")
46
+ var title: String
47
+ @Guide(description: "Attendee first names", .count(0...10))
48
+ var attendees: [String]
49
+ }
50
+
51
+ let result = try await session.respond(to: emailText, generating: ExtractedEvent.self)
52
+ let event = result.content
53
+ ```
54
+
55
+ - The framework constrains decoding to the type, so you do not parse JSON yourself.
56
+ - Keep types small and flat; each property and guide adds to the prompt.
57
+ - Enums marked `@Generable` give you classification.
58
+
59
+ ## Tool calling
60
+
61
+ ```swift
62
+ struct FindContacts: Tool {
63
+ let name = "findContacts"
64
+ let description = "Finds contacts whose name matches a query"
65
+
66
+ @Generable
67
+ struct Arguments {
68
+ @Guide(description: "Part of the contact's name")
69
+ let query: String
70
+ }
71
+
72
+ func call(arguments: Arguments) async throws -> [String] {
73
+ try await contactStore.names(matching: arguments.query) // your code, with its own permission checks
74
+ }
75
+ }
76
+
77
+ let session = LanguageModelSession(tools: [FindContacts()], instructions: "Help the user find contacts.")
78
+ ```
79
+
80
+ - `Tool` requires `name`, `description`, an `Arguments` type (usually `@Generable`) and `call(arguments:) async throws -> Output`, where `Output` conforms to `PromptRepresentable` (a `String` or a `@Generable` type).
81
+ - Tool definitions count against the context window; register only the tools a session needs.
82
+ - A tool runs with the app's permissions. Check authorisation inside `call` and never let a tool perform a destructive action without the user confirming in the UI.
83
+
84
+ ## Errors (iOS 26 SDK)
85
+
86
+ `LanguageModelSession.GenerationError` cases include `exceededContextWindowSize`, `guardrailViolation`, `unsupportedLanguageOrLocale`, `concurrentRequests`, `decodingFailure`, `assetsUnavailable`, `rateLimited`, `refusal` and `unsupportedGuide`. On context overflow, start a new session with a shorter summary of the conversation. On a guardrail violation or refusal, show a neutral message and let the user edit the input. The iOS 27 SDK adds `LanguageModelError` (model errors), `SystemLanguageModel.Error` (on-device model errors) and `LanguageModelSession.Error` (session errors); read their symbol pages for the case names before catching them.
87
+
88
+ ## Testing
89
+
90
+ Put the model behind a small protocol (`protocol Summariser { func summarise(_: String) async throws -> String }`) so unit tests use a fake and UI tests can force each availability state. Evaluate real output on a device with a fixed set of sample inputs before shipping.