opencode-skills-collection 4.0.52 → 4.0.54

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 (1176) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +6 -2
  2. package/bundled-skills/00-andruia-consultant/SKILL.md +6 -0
  3. package/bundled-skills/007/SKILL.md +2 -610
  4. package/bundled-skills/007/references/detailed-guide.md +647 -0
  5. package/bundled-skills/10-andruia-skill-smith/SKILL.md +6 -0
  6. package/bundled-skills/20-andruia-niche-intelligence/SKILL.md +6 -0
  7. package/bundled-skills/2slides-ppt-generator/SKILL.md +2 -741
  8. package/bundled-skills/2slides-ppt-generator/references/detailed-guide.md +761 -0
  9. package/bundled-skills/ab-test-setup/SKILL.md +59 -27
  10. package/bundled-skills/ab-testing/SKILL.md +1 -1
  11. package/bundled-skills/acceptance-orchestrator/SKILL.md +6 -0
  12. package/bundled-skills/accint-commitments/SKILL.md +6 -0
  13. package/bundled-skills/accint-frames/SKILL.md +6 -0
  14. package/bundled-skills/accint-solve/SKILL.md +6 -0
  15. package/bundled-skills/advogado-criminal/SKILL.md +2 -912
  16. package/bundled-skills/advogado-criminal/references/detailed-guide.md +946 -0
  17. package/bundled-skills/advogado-especialista/SKILL.md +2 -1071
  18. package/bundled-skills/advogado-especialista/references/detailed-guide.md +1114 -0
  19. package/bundled-skills/agent-evaluation/SKILL.md +53 -1102
  20. package/bundled-skills/agent-evaluation/references/architecture-sketches.md +1112 -0
  21. package/bundled-skills/agent-memory/SKILL.md +6 -0
  22. package/bundled-skills/agent-memory-systems/SKILL.md +8 -1042
  23. package/bundled-skills/agent-memory-systems/references/detailed-guide.md +1088 -0
  24. package/bundled-skills/agent-squad/SKILL.md +1 -0
  25. package/bundled-skills/agent-tool-builder/SKILL.md +2 -624
  26. package/bundled-skills/agent-tool-builder/references/detailed-guide.md +650 -0
  27. package/bundled-skills/agentic-actions-auditor/SKILL.md +6 -0
  28. package/bundled-skills/agentmail/SKILL.md +1 -0
  29. package/bundled-skills/agentphone/SKILL.md +5 -1323
  30. package/bundled-skills/agentphone/references/detailed-guide.md +1333 -0
  31. package/bundled-skills/agents-v2-py/SKILL.md +23 -5
  32. package/bundled-skills/ai-agents-architect/SKILL.md +25 -25
  33. package/bundled-skills/ai-analyzer/SKILL.md +1 -0
  34. package/bundled-skills/ai-md/SKILL.md +25 -0
  35. package/bundled-skills/ai-md/references/detailed-guide.md +512 -0
  36. package/bundled-skills/ai-product/SKILL.md +2 -726
  37. package/bundled-skills/ai-product/references/detailed-guide.md +746 -0
  38. package/bundled-skills/ai-wrapper-product/SKILL.md +2 -641
  39. package/bundled-skills/ai-wrapper-product/references/detailed-guide.md +659 -0
  40. package/bundled-skills/airtable-automation/SKILL.md +6 -0
  41. package/bundled-skills/algolia-search/SKILL.md +2 -893
  42. package/bundled-skills/algolia-search/references/detailed-guide.md +901 -0
  43. package/bundled-skills/alpha-vantage/SKILL.md +1 -0
  44. package/bundled-skills/alternatives-pages/SKILL.md +7 -1
  45. package/bundled-skills/amazon-alexa/SKILL.md +2 -627
  46. package/bundled-skills/amazon-alexa/references/detailed-guide.md +644 -0
  47. package/bundled-skills/analytics/SKILL.md +1 -1
  48. package/bundled-skills/analytics-product/SKILL.md +57 -44
  49. package/bundled-skills/analytics-tracking/SKILL.md +21 -12
  50. package/bundled-skills/analyze-project/SKILL.md +1 -0
  51. package/bundled-skills/android-dev/SKILL.md +2 -490
  52. package/bundled-skills/android-dev/references/detailed-guide.md +506 -0
  53. package/bundled-skills/angular/SKILL.md +4 -783
  54. package/bundled-skills/angular/references/detailed-guide.md +801 -0
  55. package/bundled-skills/angular-best-practices/SKILL.md +4 -535
  56. package/bundled-skills/angular-best-practices/references/detailed-guide.md +549 -0
  57. package/bundled-skills/angular-state-management/SKILL.md +4 -608
  58. package/bundled-skills/angular-state-management/references/detailed-guide.md +618 -0
  59. package/bundled-skills/angular-ui-patterns/SKILL.md +2 -498
  60. package/bundled-skills/angular-ui-patterns/references/detailed-guide.md +513 -0
  61. package/bundled-skills/animejs-animation/SKILL.md +6 -0
  62. package/bundled-skills/anti-deception/SKILL.md +7 -1
  63. package/bundled-skills/antigravity-design-expert/SKILL.md +6 -0
  64. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +7 -0
  65. package/bundled-skills/antigravity-workflows/SKILL.md +20 -3
  66. package/bundled-skills/antigravity-workflows/references/workflow-cards.md +78 -0
  67. package/bundled-skills/api-analyzer/SKILL.md +1 -1
  68. package/bundled-skills/api-designer/SKILL.md +1 -1
  69. package/bundled-skills/api-integration/SKILL.md +1 -1
  70. package/bundled-skills/api-onboarding/SKILL.md +1 -1
  71. package/bundled-skills/api-patterns/SKILL.md +19 -8
  72. package/bundled-skills/api-patterns/api-style.md +2 -2
  73. package/bundled-skills/api-patterns/auth.md +3 -2
  74. package/bundled-skills/api-patterns/graphql.md +1 -1
  75. package/bundled-skills/api-patterns/scripts/api_validator.py +9 -7
  76. package/bundled-skills/api-patterns/trpc.md +2 -2
  77. package/bundled-skills/api-patterns/versioning.md +1 -1
  78. package/bundled-skills/api-sdk-generator/SKILL.md +1 -1
  79. package/bundled-skills/api-security-best-practices/SKILL.md +179 -879
  80. package/bundled-skills/apify-actor-development/SKILL.md +1 -0
  81. package/bundled-skills/apify-actorization/SKILL.md +1 -0
  82. package/bundled-skills/apify-audience-analysis/SKILL.md +1 -0
  83. package/bundled-skills/apify-brand-reputation-monitoring/SKILL.md +1 -0
  84. package/bundled-skills/apify-competitor-intelligence/SKILL.md +1 -0
  85. package/bundled-skills/apify-content-analytics/SKILL.md +1 -0
  86. package/bundled-skills/apify-ecommerce/SKILL.md +1 -0
  87. package/bundled-skills/apify-influencer-discovery/SKILL.md +1 -0
  88. package/bundled-skills/apify-lead-generation/SKILL.md +1 -0
  89. package/bundled-skills/apify-market-research/SKILL.md +1 -0
  90. package/bundled-skills/apify-trend-analysis/SKILL.md +1 -0
  91. package/bundled-skills/apify-ultimate-scraper/SKILL.md +1 -0
  92. package/bundled-skills/appium-skill/SKILL.md +1 -1
  93. package/bundled-skills/apple-notes-search/SKILL.md +6 -0
  94. package/bundled-skills/application-performance-performance-optimization/SKILL.md +6 -0
  95. package/bundled-skills/applicationinsights-web-ts/SKILL.md +1 -1
  96. package/bundled-skills/ask-matt/SKILL.md +5 -0
  97. package/bundled-skills/ask-questions-if-underspecified/SKILL.md +1 -0
  98. package/bundled-skills/astropy/SKILL.md +1 -0
  99. package/bundled-skills/atlas-contract/SKILL.md +117 -0
  100. package/bundled-skills/atlas-contract/references/detailed-guide.md +572 -0
  101. package/bundled-skills/audio-transcriber/SKILL.md +2 -425
  102. package/bundled-skills/audio-transcriber/references/detailed-guide.md +430 -0
  103. package/bundled-skills/audit-context-building/SKILL.md +1 -0
  104. package/bundled-skills/auri-core/SKILL.md +5 -562
  105. package/bundled-skills/auri-core/references/detailed-guide.md +623 -0
  106. package/bundled-skills/auth-implementation-patterns/SKILL.md +14 -4
  107. package/bundled-skills/auth-implementation-patterns/resources/implementation-playbook.md +72 -180
  108. package/bundled-skills/automated-triage/SKILL.md +6 -0
  109. package/bundled-skills/autonomous-agent-patterns/SKILL.md +4 -741
  110. package/bundled-skills/autonomous-agent-patterns/references/detailed-guide.md +751 -0
  111. package/bundled-skills/autonomous-agents/SKILL.md +8 -1010
  112. package/bundled-skills/autonomous-agents/references/detailed-guide.md +1065 -0
  113. package/bundled-skills/awareness-stage-mapper/SKILL.md +6 -0
  114. package/bundled-skills/aws-agentic-ai/SKILL.md +7 -1
  115. package/bundled-skills/aws-cdk-development/SKILL.md +1 -1
  116. package/bundled-skills/aws-cost-operations/SKILL.md +1 -1
  117. package/bundled-skills/aws-mcp-setup/SKILL.md +1 -1
  118. package/bundled-skills/aws-serverless/SKILL.md +2 -1305
  119. package/bundled-skills/aws-serverless/references/detailed-guide.md +1340 -0
  120. package/bundled-skills/aws-serverless-eda/SKILL.md +1 -1
  121. package/bundled-skills/aws-skills/SKILL.md +6 -0
  122. package/bundled-skills/aws-sst-development/SKILL.md +7 -1
  123. package/bundled-skills/awt-e2e-testing/SKILL.md +7 -0
  124. package/bundled-skills/azure-functions/SKILL.md +2 -1321
  125. package/bundled-skills/azure-functions/references/detailed-guide.md +1356 -0
  126. package/bundled-skills/azure-maps-search-dotnet/SKILL.md +2 -482
  127. package/bundled-skills/azure-maps-search-dotnet/references/detailed-guide.md +496 -0
  128. package/bundled-skills/azure-search-documents-py/SKILL.md +2 -515
  129. package/bundled-skills/azure-search-documents-py/references/detailed-guide.md +548 -0
  130. package/bundled-skills/azure-storage-file-share-ts/SKILL.md +2 -481
  131. package/bundled-skills/azure-storage-file-share-ts/references/detailed-guide.md +500 -0
  132. package/bundled-skills/azure-storage-queue-ts/SKILL.md +2 -512
  133. package/bundled-skills/azure-storage-queue-ts/references/detailed-guide.md +530 -0
  134. package/bundled-skills/backend-development-feature-development/SKILL.md +6 -0
  135. package/bundled-skills/basecamp-automation/SKILL.md +6 -0
  136. package/bundled-skills/baseline-ui/SKILL.md +6 -0
  137. package/bundled-skills/bash-pro/SKILL.md +6 -0
  138. package/bundled-skills/bdi-mental-states/SKILL.md +1 -0
  139. package/bundled-skills/beautiful-prose/SKILL.md +1 -0
  140. package/bundled-skills/bill-gates/SKILL.md +2 -778
  141. package/bundled-skills/bill-gates/references/detailed-guide.md +784 -0
  142. package/bundled-skills/biopython/SKILL.md +1 -0
  143. package/bundled-skills/bitbucket-automation/SKILL.md +6 -0
  144. package/bundled-skills/blog-writing-guide/SKILL.md +6 -0
  145. package/bundled-skills/box-automation/SKILL.md +6 -0
  146. package/bundled-skills/brain-to-docs/SKILL.md +6 -0
  147. package/bundled-skills/brainstorming/SKILL.md +6 -0
  148. package/bundled-skills/brand-guidelines/SKILL.md +1 -0
  149. package/bundled-skills/brand-guidelines-anthropic/SKILL.md +23 -8
  150. package/bundled-skills/brand-guidelines-community/SKILL.md +23 -8
  151. package/bundled-skills/brand-perception-psychologist/SKILL.md +6 -0
  152. package/bundled-skills/brooks-audit/SKILL.md +1 -1
  153. package/bundled-skills/brooks-debt/SKILL.md +1 -1
  154. package/bundled-skills/brooks-harness/SKILL.md +1 -1
  155. package/bundled-skills/brooks-review/SKILL.md +7 -1
  156. package/bundled-skills/brooks-sweep/SKILL.md +1 -1
  157. package/bundled-skills/brooks-test/SKILL.md +1 -1
  158. package/bundled-skills/browser-automation/SKILL.md +18 -1044
  159. package/bundled-skills/browser-automation/references/detailed-guide.md +852 -0
  160. package/bundled-skills/bug-hunt-swarm/SKILL.md +7 -1
  161. package/bundled-skills/build/SKILL.md +5 -627
  162. package/bundled-skills/build/references/detailed-guide.md +637 -0
  163. package/bundled-skills/bun-development/SKILL.md +4 -678
  164. package/bundled-skills/bun-development/references/detailed-guide.md +691 -0
  165. package/bundled-skills/burpsuite-project-parser/SKILL.md +1 -0
  166. package/bundled-skills/c-pro/SKILL.md +6 -0
  167. package/bundled-skills/calendly-automation/SKILL.md +6 -0
  168. package/bundled-skills/cc-skill-backend-patterns/SKILL.md +2 -572
  169. package/bundled-skills/cc-skill-backend-patterns/references/detailed-guide.md +584 -0
  170. package/bundled-skills/cc-skill-coding-standards/SKILL.md +2 -510
  171. package/bundled-skills/cc-skill-coding-standards/references/detailed-guide.md +523 -0
  172. package/bundled-skills/cc-skill-continuous-learning/SKILL.md +49 -7
  173. package/bundled-skills/cc-skill-continuous-learning/config.json +1 -16
  174. package/bundled-skills/cc-skill-continuous-learning/evaluate-session.sh +56 -59
  175. package/bundled-skills/cc-skill-frontend-patterns/SKILL.md +2 -621
  176. package/bundled-skills/cc-skill-frontend-patterns/references/detailed-guide.md +633 -0
  177. package/bundled-skills/cc-skill-security-review/SKILL.md +4 -36
  178. package/bundled-skills/cc-skill-security-review/references/detailed-guide.md +40 -0
  179. package/bundled-skills/cc-skill-strategic-compact/SKILL.md +53 -7
  180. package/bundled-skills/cc-skill-strategic-compact/suggest-compact.sh +20 -51
  181. package/bundled-skills/changelog-updates/SKILL.md +6 -528
  182. package/bundled-skills/changelog-updates/references/detailed-guide.md +540 -0
  183. package/bundled-skills/chat-widget/SKILL.md +5 -879
  184. package/bundled-skills/chat-widget/references/detailed-guide.md +890 -0
  185. package/bundled-skills/cirq/SKILL.md +1 -0
  186. package/bundled-skills/citation-management/SKILL.md +3 -960
  187. package/bundled-skills/citation-management/references/detailed-guide.md +975 -0
  188. package/bundled-skills/ckw-design/SKILL.md +6 -0
  189. package/bundled-skills/claimable-postgres/SKILL.md +1 -1
  190. package/bundled-skills/clarity-gate/SKILL.md +3 -635
  191. package/bundled-skills/clarity-gate/references/detailed-guide.md +653 -0
  192. package/bundled-skills/claude-ally-health/SKILL.md +6 -0
  193. package/bundled-skills/claude-code-expert/SKILL.md +2 -527
  194. package/bundled-skills/claude-code-expert/references/detailed-guide.md +548 -0
  195. package/bundled-skills/claude-d3js-skill/SKILL.md +2 -798
  196. package/bundled-skills/claude-d3js-skill/references/detailed-guide.md +811 -0
  197. package/bundled-skills/claude-in-chrome-troubleshooting/SKILL.md +1 -0
  198. package/bundled-skills/claude-scientific-skills/SKILL.md +6 -0
  199. package/bundled-skills/claude-settings-audit/SKILL.md +1 -0
  200. package/bundled-skills/claude-speed-reader/SKILL.md +6 -0
  201. package/bundled-skills/claude-win11-speckit-update-skill/SKILL.md +6 -0
  202. package/bundled-skills/clean-code/SKILL.md +6 -0
  203. package/bundled-skills/clerk-auth/SKILL.md +2 -812
  204. package/bundled-skills/clerk-auth/references/detailed-guide.md +820 -0
  205. package/bundled-skills/clickup-automation/SKILL.md +6 -0
  206. package/bundled-skills/closed-loop-delivery/SKILL.md +6 -0
  207. package/bundled-skills/co-marketing/SKILL.md +1 -1
  208. package/bundled-skills/code-documentation-doc-generate/SKILL.md +16 -1
  209. package/bundled-skills/code-documentation-doc-generate/resources/implementation-playbook.md +33 -55
  210. package/bundled-skills/code-refactoring-context-restore/SKILL.md +40 -177
  211. package/bundled-skills/code-refactoring-tech-debt/SKILL.md +20 -9
  212. package/bundled-skills/code-simplifier/SKILL.md +1 -0
  213. package/bundled-skills/codebase-cleanup-tech-debt/SKILL.md +20 -9
  214. package/bundled-skills/cold-email/SKILL.md +6 -0
  215. package/bundled-skills/commit/SKILL.md +1 -0
  216. package/bundled-skills/community-building/SKILL.md +1 -1
  217. package/bundled-skills/competitor-alternatives/SKILL.md +2 -740
  218. package/bundled-skills/competitor-alternatives/references/detailed-guide.md +756 -0
  219. package/bundled-skills/competitor-profiling/SKILL.md +1 -1
  220. package/bundled-skills/competitor-tracking/SKILL.md +1 -1
  221. package/bundled-skills/comprehensive-review-full-review/SKILL.md +6 -0
  222. package/bundled-skills/comprehensive-review-pr-enhance/SKILL.md +1 -0
  223. package/bundled-skills/computer-use-agents/SKILL.md +2 -2131
  224. package/bundled-skills/computer-use-agents/references/detailed-guide.md +2158 -0
  225. package/bundled-skills/computer-vision-expert/SKILL.md +6 -0
  226. package/bundled-skills/conductor-setup/SKILL.md +1 -0
  227. package/bundled-skills/confluence-automation/SKILL.md +6 -0
  228. package/bundled-skills/constant-time-analysis/SKILL.md +1 -0
  229. package/bundled-skills/container-security-hardening/SKILL.md +4 -915
  230. package/bundled-skills/container-security-hardening/references/detailed-guide.md +927 -0
  231. package/bundled-skills/content-creator/SKILL.md +53 -23
  232. package/bundled-skills/content-creator/assets/content_calendar_template.md +5 -2
  233. package/bundled-skills/content-creator/references/brand_guidelines.md +7 -3
  234. package/bundled-skills/content-creator/references/content_frameworks.md +12 -7
  235. package/bundled-skills/content-creator/references/social_media_optimization.md +61 -317
  236. package/bundled-skills/content-creator/scripts/brand_voice_analyzer.py +14 -9
  237. package/bundled-skills/content-creator/scripts/seo_optimizer.py +31 -94
  238. package/bundled-skills/context-compression/SKILL.md +1 -0
  239. package/bundled-skills/context-degradation/SKILL.md +1 -0
  240. package/bundled-skills/context-fundamentals/SKILL.md +1 -0
  241. package/bundled-skills/context-management-context-restore/SKILL.md +40 -177
  242. package/bundled-skills/context-optimization/SKILL.md +1 -0
  243. package/bundled-skills/convex/SKILL.md +4 -766
  244. package/bundled-skills/convex/references/detailed-guide.md +772 -0
  245. package/bundled-skills/copilot-sdk/SKILL.md +4 -496
  246. package/bundled-skills/copilot-sdk/references/detailed-guide.md +516 -0
  247. package/bundled-skills/copy-editing/SKILL.md +6 -0
  248. package/bundled-skills/copywriting/SKILL.md +6 -0
  249. package/bundled-skills/copywriting-psychologist/SKILL.md +6 -0
  250. package/bundled-skills/create-branch/SKILL.md +1 -0
  251. package/bundled-skills/create-pr/SKILL.md +7 -0
  252. package/bundled-skills/cred-omega/SKILL.md +2 -847
  253. package/bundled-skills/cred-omega/references/detailed-guide.md +872 -0
  254. package/bundled-skills/cro/SKILL.md +1 -1
  255. package/bundled-skills/csharp-pro/SKILL.md +6 -0
  256. package/bundled-skills/cucumber-skill/SKILL.md +1 -1
  257. package/bundled-skills/customer-psychographic-profiler/SKILL.md +6 -0
  258. package/bundled-skills/customer-research/SKILL.md +1 -1
  259. package/bundled-skills/cv-generator/SKILL.md +4 -828
  260. package/bundled-skills/cv-generator/references/detailed-guide.md +845 -0
  261. package/bundled-skills/cypress-skill/SKILL.md +1 -1
  262. package/bundled-skills/daily-gift/SKILL.md +6 -0
  263. package/bundled-skills/debug-buttercup/SKILL.md +1 -0
  264. package/bundled-skills/debugger/SKILL.md +6 -0
  265. package/bundled-skills/debugging-code/SKILL.md +1 -1
  266. package/bundled-skills/deepapi/SKILL.md +4 -619
  267. package/bundled-skills/deepapi/references/detailed-guide.md +627 -0
  268. package/bundled-skills/delegating-to-agents/SKILL.md +6 -0
  269. package/bundled-skills/deployment-validation-config-validate/SKILL.md +4 -478
  270. package/bundled-skills/deployment-validation-config-validate/references/detailed-guide.md +484 -0
  271. package/bundled-skills/design-it/SKILL.md +6 -0
  272. package/bundled-skills/design-orchestration/SKILL.md +6 -0
  273. package/bundled-skills/design-spells/SKILL.md +6 -0
  274. package/bundled-skills/design-system/SKILL.md +7 -1
  275. package/bundled-skills/design-taste-frontend/SKILL.md +6 -0
  276. package/bundled-skills/design-thinking/SKILL.md +6 -0
  277. package/bundled-skills/design-ux/SKILL.md +7 -1
  278. package/bundled-skills/deterministic-design/SKILL.md +6 -0
  279. package/bundled-skills/developer-advocacy/SKILL.md +1 -1
  280. package/bundled-skills/developer-audience-context/SKILL.md +1 -1
  281. package/bundled-skills/developer-churn/SKILL.md +5 -625
  282. package/bundled-skills/developer-churn/references/detailed-guide.md +639 -0
  283. package/bundled-skills/developer-listening/SKILL.md +7 -1
  284. package/bundled-skills/developer-onboarding/SKILL.md +6 -474
  285. package/bundled-skills/developer-onboarding/references/detailed-guide.md +486 -0
  286. package/bundled-skills/developer-sandbox/SKILL.md +6 -414
  287. package/bundled-skills/developer-sandbox/references/detailed-guide.md +425 -0
  288. package/bundled-skills/developer-seo/SKILL.md +1 -1
  289. package/bundled-skills/developer-signup-flow/SKILL.md +1 -1
  290. package/bundled-skills/devrel-content/SKILL.md +1 -1
  291. package/bundled-skills/diagnosing-bugs/SKILL.md +5 -0
  292. package/bundled-skills/diary/SKILL.md +1 -0
  293. package/bundled-skills/differential-review/SKILL.md +1 -0
  294. package/bundled-skills/discord-automation/SKILL.md +6 -0
  295. package/bundled-skills/discord-bot-architect/SKILL.md +2 -1434
  296. package/bundled-skills/discord-bot-architect/references/detailed-guide.md +1465 -0
  297. package/bundled-skills/django-access-review/SKILL.md +1 -0
  298. package/bundled-skills/django-perf-review/SKILL.md +1 -0
  299. package/bundled-skills/doc-coauthoring/SKILL.md +6 -0
  300. package/bundled-skills/docs-architect/SKILL.md +6 -0
  301. package/bundled-skills/docs-as-marketing/SKILL.md +1 -1
  302. package/bundled-skills/documentation-generation-doc-generate/SKILL.md +16 -1
  303. package/bundled-skills/documentation-generation-doc-generate/resources/implementation-playbook.md +33 -55
  304. package/bundled-skills/doubt-driven-development/SKILL.md +1 -1
  305. package/bundled-skills/dropbox-automation/SKILL.md +6 -0
  306. package/bundled-skills/dwarf-expert/SKILL.md +1 -0
  307. package/bundled-skills/dx-optimizer/SKILL.md +6 -0
  308. package/bundled-skills/e2e-testing-patterns/SKILL.md +14 -4
  309. package/bundled-skills/e2e-testing-patterns/resources/implementation-playbook.md +22 -41
  310. package/bundled-skills/eas-update-insights/SKILL.md +1 -1
  311. package/bundled-skills/ecl-harness-engineer/SKILL.md +4 -681
  312. package/bundled-skills/ecl-harness-engineer/references/detailed-guide.md +691 -0
  313. package/bundled-skills/efficient-web-research/SKILL.md +1 -0
  314. package/bundled-skills/electron-development/SKILL.md +4 -820
  315. package/bundled-skills/electron-development/references/detailed-guide.md +828 -0
  316. package/bundled-skills/elixir-pro/SKILL.md +6 -0
  317. package/bundled-skills/elon-musk/SKILL.md +5 -1278
  318. package/bundled-skills/elon-musk/references/detailed-guide.md +1293 -0
  319. package/bundled-skills/email-sequence/SKILL.md +2 -915
  320. package/bundled-skills/email-sequence/references/detailed-guide.md +932 -0
  321. package/bundled-skills/email-systems/SKILL.md +2 -654
  322. package/bundled-skills/email-systems/references/detailed-guide.md +669 -0
  323. package/bundled-skills/emergency-card/SKILL.md +1 -0
  324. package/bundled-skills/emil-design-eng/SKILL.md +4 -673
  325. package/bundled-skills/emil-design-eng/references/detailed-guide.md +690 -0
  326. package/bundled-skills/emotional-arc-designer/SKILL.md +6 -0
  327. package/bundled-skills/enhance-prompt/SKILL.md +1 -0
  328. package/bundled-skills/entropy-box/SKILL.md +400 -0
  329. package/bundled-skills/entropy-box/references/api.md +196 -0
  330. package/bundled-skills/entropy-box/references/knowledge-compiler.md +61 -0
  331. package/bundled-skills/entropy-box/references/panorama.md +72 -0
  332. package/bundled-skills/error-debugging-error-analysis/SKILL.md +15 -0
  333. package/bundled-skills/error-debugging-error-analysis/resources/implementation-playbook.md +122 -1125
  334. package/bundled-skills/error-debugging-multi-agent-review/SKILL.md +42 -214
  335. package/bundled-skills/error-detective/SKILL.md +6 -0
  336. package/bundled-skills/error-diagnostics-error-analysis/SKILL.md +15 -0
  337. package/bundled-skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +122 -1125
  338. package/bundled-skills/event-sourcing-architect/SKILL.md +6 -0
  339. package/bundled-skills/event-staffing-compliance/SKILL.md +6 -0
  340. package/bundled-skills/event-staffing-ordering/SKILL.md +6 -0
  341. package/bundled-skills/evolution/SKILL.md +1 -0
  342. package/bundled-skills/executing-plans/SKILL.md +6 -0
  343. package/bundled-skills/explain-like-socrates/SKILL.md +6 -0
  344. package/bundled-skills/expo-deployment/SKILL.md +1 -1
  345. package/bundled-skills/expo-examples/SKILL.md +1 -1
  346. package/bundled-skills/expo-module/SKILL.md +1 -1
  347. package/bundled-skills/expo-observe/SKILL.md +1 -1
  348. package/bundled-skills/expo-ui/SKILL.md +1 -1
  349. package/bundled-skills/expo-ui-jetpack-compose/SKILL.md +1 -0
  350. package/bundled-skills/expo-ui-swift-ui/SKILL.md +1 -0
  351. package/bundled-skills/fable-safe-prompt/SKILL.md +6 -0
  352. package/bundled-skills/fal-audio/SKILL.md +6 -0
  353. package/bundled-skills/fal-generate/SKILL.md +6 -0
  354. package/bundled-skills/fal-image-edit/SKILL.md +6 -0
  355. package/bundled-skills/fal-platform/SKILL.md +6 -0
  356. package/bundled-skills/fal-upscale/SKILL.md +6 -0
  357. package/bundled-skills/fal-workflow/SKILL.md +6 -0
  358. package/bundled-skills/family-health-analyzer/SKILL.md +1 -0
  359. package/bundled-skills/favicon/SKILL.md +1 -0
  360. package/bundled-skills/fda-food-safety-auditor/SKILL.md +1 -0
  361. package/bundled-skills/fda-medtech-compliance-auditor/SKILL.md +1 -0
  362. package/bundled-skills/ffuf-claude-skill/SKILL.md +6 -0
  363. package/bundled-skills/ffuf-web-fuzzing/SKILL.md +5 -492
  364. package/bundled-skills/ffuf-web-fuzzing/references/detailed-guide.md +510 -0
  365. package/bundled-skills/file-organizer/SKILL.md +6 -0
  366. package/bundled-skills/file-uploads/SKILL.md +6 -0
  367. package/bundled-skills/filesystem-context/SKILL.md +1 -0
  368. package/bundled-skills/find-bugs/SKILL.md +7 -0
  369. package/bundled-skills/firebase/SKILL.md +8 -651
  370. package/bundled-skills/firebase/references/detailed-guide.md +662 -0
  371. package/bundled-skills/fitness-analyzer/SKILL.md +1 -0
  372. package/bundled-skills/fix-review/SKILL.md +6 -0
  373. package/bundled-skills/fixing-metadata/SKILL.md +7 -1
  374. package/bundled-skills/food-database-query/SKILL.md +5 -772
  375. package/bundled-skills/food-database-query/references/detailed-guide.md +785 -0
  376. package/bundled-skills/form-cro/SKILL.md +6 -0
  377. package/bundled-skills/fp-async/SKILL.md +5 -716
  378. package/bundled-skills/fp-async/references/detailed-guide.md +726 -0
  379. package/bundled-skills/fp-backend/SKILL.md +5 -1313
  380. package/bundled-skills/fp-backend/references/detailed-guide.md +1323 -0
  381. package/bundled-skills/fp-data-transforms/SKILL.md +5 -1181
  382. package/bundled-skills/fp-data-transforms/references/detailed-guide.md +1190 -0
  383. package/bundled-skills/fp-either-ref/SKILL.md +1 -0
  384. package/bundled-skills/fp-errors/SKILL.md +5 -835
  385. package/bundled-skills/fp-errors/references/detailed-guide.md +846 -0
  386. package/bundled-skills/fp-option-ref/SKILL.md +1 -0
  387. package/bundled-skills/fp-pipe-ref/SKILL.md +1 -0
  388. package/bundled-skills/fp-pragmatic/SKILL.md +5 -500
  389. package/bundled-skills/fp-pragmatic/references/detailed-guide.md +510 -0
  390. package/bundled-skills/fp-react/SKILL.md +3 -761
  391. package/bundled-skills/fp-react/references/detailed-guide.md +775 -0
  392. package/bundled-skills/fp-refactor/SKILL.md +5 -1761
  393. package/bundled-skills/fp-refactor/references/detailed-guide.md +1775 -0
  394. package/bundled-skills/fp-taskeither-ref/SKILL.md +1 -0
  395. package/bundled-skills/fp-ts-errors/SKILL.md +4 -835
  396. package/bundled-skills/fp-ts-errors/references/detailed-guide.md +846 -0
  397. package/bundled-skills/fp-ts-pragmatic/SKILL.md +4 -500
  398. package/bundled-skills/fp-ts-pragmatic/references/detailed-guide.md +510 -0
  399. package/bundled-skills/fp-ts-react/SKILL.md +4 -763
  400. package/bundled-skills/fp-ts-react/references/detailed-guide.md +775 -0
  401. package/bundled-skills/fp-types-ref/SKILL.md +1 -0
  402. package/bundled-skills/framework-migration-legacy-modernize/SKILL.md +6 -0
  403. package/bundled-skills/free-tool-strategy/SKILL.md +2 -532
  404. package/bundled-skills/free-tool-strategy/references/detailed-guide.md +550 -0
  405. package/bundled-skills/freshdesk-automation/SKILL.md +6 -0
  406. package/bundled-skills/frontend-architecture/SKILL.md +1 -1
  407. package/bundled-skills/frontend-data-contracts/SKILL.md +1 -1
  408. package/bundled-skills/frontend-design/SKILL.md +33 -34
  409. package/bundled-skills/frontend-observability/SKILL.md +1 -1
  410. package/bundled-skills/frontend-optimistic-mutations/SKILL.md +1 -1
  411. package/bundled-skills/frontend-seo/SKILL.md +6 -675
  412. package/bundled-skills/frontend-seo/references/detailed-guide.md +688 -0
  413. package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +7 -1
  414. package/bundled-skills/frontend-ui-dark-ts/SKILL.md +2 -561
  415. package/bundled-skills/frontend-ui-dark-ts/references/detailed-guide.md +573 -0
  416. package/bundled-skills/full-stack-orchestration-full-stack-feature/SKILL.md +6 -0
  417. package/bundled-skills/game-development/2d-games/SKILL.md +6 -0
  418. package/bundled-skills/game-development/mobile-games/SKILL.md +6 -0
  419. package/bundled-skills/game-development/vr-ar/SKILL.md +6 -0
  420. package/bundled-skills/gcp-cloud-run/SKILL.md +2 -1303
  421. package/bundled-skills/gcp-cloud-run/references/detailed-guide.md +1350 -0
  422. package/bundled-skills/gemini-api-dev/SKILL.md +1 -1
  423. package/bundled-skills/gemini-live-api-dev/SKILL.md +1 -1
  424. package/bundled-skills/gemini-omni-flash-api/SKILL.md +1 -1
  425. package/bundled-skills/geo-fundamentals/SKILL.md +6 -0
  426. package/bundled-skills/geoffrey-hinton/SKILL.md +5 -1235
  427. package/bundled-skills/geoffrey-hinton/references/detailed-guide.md +1324 -0
  428. package/bundled-skills/gh-review-requests/SKILL.md +1 -0
  429. package/bundled-skills/github-actions-advanced/SKILL.md +4 -971
  430. package/bundled-skills/github-actions-advanced/references/detailed-guide.md +991 -0
  431. package/bundled-skills/github-automation/SKILL.md +6 -0
  432. package/bundled-skills/github-workflow-automation/SKILL.md +4 -826
  433. package/bundled-skills/github-workflow-automation/references/detailed-guide.md +832 -0
  434. package/bundled-skills/gitlab-automation/SKILL.md +6 -0
  435. package/bundled-skills/gmail-automation/SKILL.md +1 -0
  436. package/bundled-skills/go-rod-master/SKILL.md +2 -496
  437. package/bundled-skills/go-rod-master/references/detailed-guide.md +508 -0
  438. package/bundled-skills/goal-analyzer/SKILL.md +5 -596
  439. package/bundled-skills/goal-analyzer/references/detailed-guide.md +602 -0
  440. package/bundled-skills/google-calendar-automation/SKILL.md +1 -0
  441. package/bundled-skills/google-docs-automation/SKILL.md +1 -0
  442. package/bundled-skills/google-drive-automation/SKILL.md +1 -0
  443. package/bundled-skills/google-sheets-automation/SKILL.md +1 -0
  444. package/bundled-skills/google-slides-automation/SKILL.md +1 -0
  445. package/bundled-skills/googlesheets-automation/SKILL.md +6 -0
  446. package/bundled-skills/gpt-taste/SKILL.md +6 -0
  447. package/bundled-skills/graphql/SKILL.md +8 -1031
  448. package/bundled-skills/graphql/references/detailed-guide.md +1044 -0
  449. package/bundled-skills/grill-me/SKILL.md +5 -0
  450. package/bundled-skills/grill-with-docs/SKILL.md +5 -0
  451. package/bundled-skills/grilling/SKILL.md +5 -0
  452. package/bundled-skills/growth-engine/SKILL.md +6 -0
  453. package/bundled-skills/handoff/SKILL.md +5 -0
  454. package/bundled-skills/haskell-pro/SKILL.md +6 -0
  455. package/bundled-skills/headline-psychologist/SKILL.md +6 -0
  456. package/bundled-skills/health-trend-analyzer/SKILL.md +1 -0
  457. package/bundled-skills/hig-components-content/SKILL.md +6 -0
  458. package/bundled-skills/hig-components-controls/SKILL.md +6 -0
  459. package/bundled-skills/hig-components-dialogs/SKILL.md +6 -0
  460. package/bundled-skills/hig-components-layout/SKILL.md +6 -0
  461. package/bundled-skills/hig-components-menus/SKILL.md +6 -0
  462. package/bundled-skills/hig-components-search/SKILL.md +6 -0
  463. package/bundled-skills/hig-components-status/SKILL.md +6 -0
  464. package/bundled-skills/hig-components-system/SKILL.md +6 -0
  465. package/bundled-skills/hig-foundations/SKILL.md +6 -0
  466. package/bundled-skills/hig-inputs/SKILL.md +6 -0
  467. package/bundled-skills/hig-patterns/SKILL.md +6 -0
  468. package/bundled-skills/hig-platforms/SKILL.md +6 -0
  469. package/bundled-skills/hig-technologies/SKILL.md +6 -0
  470. package/bundled-skills/high-end-visual-design/SKILL.md +6 -0
  471. package/bundled-skills/hosted-agents/SKILL.md +7 -0
  472. package/bundled-skills/hosted-agents-v2-py/SKILL.md +23 -5
  473. package/bundled-skills/html-injection-testing/SKILL.md +2 -453
  474. package/bundled-skills/html-injection-testing/references/detailed-guide.md +462 -0
  475. package/bundled-skills/hubspot-automation/SKILL.md +6 -0
  476. package/bundled-skills/hubspot-integration/SKILL.md +8 -807
  477. package/bundled-skills/hubspot-integration/references/detailed-guide.md +815 -0
  478. package/bundled-skills/hugging-face-cli/SKILL.md +7 -1
  479. package/bundled-skills/hugging-face-community-evals/SKILL.md +1 -1
  480. package/bundled-skills/hugging-face-datasets/SKILL.md +5 -430
  481. package/bundled-skills/hugging-face-datasets/references/detailed-guide.md +442 -0
  482. package/bundled-skills/hugging-face-evaluation/SKILL.md +5 -640
  483. package/bundled-skills/hugging-face-evaluation/references/detailed-guide.md +652 -0
  484. package/bundled-skills/hugging-face-jobs/SKILL.md +3 -801
  485. package/bundled-skills/hugging-face-jobs/references/detailed-guide.md +821 -0
  486. package/bundled-skills/hugging-face-model-trainer/SKILL.md +3 -681
  487. package/bundled-skills/hugging-face-model-trainer/references/detailed-guide.md +702 -0
  488. package/bundled-skills/hugging-face-paper-publisher/SKILL.md +5 -617
  489. package/bundled-skills/hugging-face-paper-publisher/references/detailed-guide.md +624 -0
  490. package/bundled-skills/hugging-face-papers/SKILL.md +1 -1
  491. package/bundled-skills/hugging-face-tool-builder/SKILL.md +1 -0
  492. package/bundled-skills/hugging-face-trackio/SKILL.md +1 -1
  493. package/bundled-skills/hugging-face-vision-trainer/SKILL.md +5 -534
  494. package/bundled-skills/hugging-face-vision-trainer/references/detailed-guide.md +549 -0
  495. package/bundled-skills/huggingface-best/SKILL.md +1 -1
  496. package/bundled-skills/huggingface-lora-space-builder/SKILL.md +1 -1
  497. package/bundled-skills/huggingface-spaces/SKILL.md +1 -1
  498. package/bundled-skills/huggingface-tool-builder/SKILL.md +1 -1
  499. package/bundled-skills/huggingface-zerogpu/SKILL.md +1 -1
  500. package/bundled-skills/hugo-to-markdown/SKILL.md +1 -1
  501. package/bundled-skills/hyperexecute-skill/SKILL.md +7 -1
  502. package/bundled-skills/iconsax-library/SKILL.md +6 -0
  503. package/bundled-skills/idea-refine/SKILL.md +1 -1
  504. package/bundled-skills/identity-mirror/SKILL.md +6 -0
  505. package/bundled-skills/ilya-sutskever/SKILL.md +2 -1126
  506. package/bundled-skills/ilya-sutskever/references/detailed-guide.md +1167 -0
  507. package/bundled-skills/image-generator/SKILL.md +4 -320
  508. package/bundled-skills/image-generator/references/detailed-guide.md +332 -0
  509. package/bundled-skills/implement/SKILL.md +6 -0
  510. package/bundled-skills/incident-responder/SKILL.md +6 -0
  511. package/bundled-skills/incident-response-incident-response/SKILL.md +6 -0
  512. package/bundled-skills/industrial-brutalist-ui/SKILL.md +6 -0
  513. package/bundled-skills/interactive-portfolio/SKILL.md +2 -482
  514. package/bundled-skills/interactive-portfolio/references/detailed-guide.md +500 -0
  515. package/bundled-skills/internal-comms/SKILL.md +20 -1
  516. package/bundled-skills/internal-comms/examples/3p-updates.md +5 -4
  517. package/bundled-skills/internal-comms/examples/company-newsletter.md +3 -2
  518. package/bundled-skills/internal-comms/examples/faq-answers.md +1 -0
  519. package/bundled-skills/internal-comms/examples/general-comms.md +1 -0
  520. package/bundled-skills/internal-comms-anthropic/SKILL.md +21 -2
  521. package/bundled-skills/internal-comms-anthropic/examples/3p-updates.md +5 -4
  522. package/bundled-skills/internal-comms-anthropic/examples/company-newsletter.md +3 -2
  523. package/bundled-skills/internal-comms-anthropic/examples/faq-answers.md +1 -0
  524. package/bundled-skills/internal-comms-anthropic/examples/general-comms.md +1 -0
  525. package/bundled-skills/internal-comms-community/SKILL.md +21 -2
  526. package/bundled-skills/internal-comms-community/examples/3p-updates.md +48 -0
  527. package/bundled-skills/internal-comms-community/examples/company-newsletter.md +66 -0
  528. package/bundled-skills/internal-comms-community/examples/faq-answers.md +31 -0
  529. package/bundled-skills/internal-comms-community/examples/general-comms.md +17 -0
  530. package/bundled-skills/ios-debugger-agent/SKILL.md +6 -0
  531. package/bundled-skills/issues/SKILL.md +1 -0
  532. package/bundled-skills/iterate-pr/SKILL.md +1 -0
  533. package/bundled-skills/javascript-mastery/SKILL.md +4 -625
  534. package/bundled-skills/javascript-mastery/references/detailed-guide.md +636 -0
  535. package/bundled-skills/javascript-pro/SKILL.md +6 -0
  536. package/bundled-skills/jest-skill/SKILL.md +1 -1
  537. package/bundled-skills/jira-automation/SKILL.md +6 -0
  538. package/bundled-skills/jobs-to-be-done-analyst/SKILL.md +6 -0
  539. package/bundled-skills/junit-5-skill/SKILL.md +1 -1
  540. package/bundled-skills/k6-load-testing/SKILL.md +2 -544
  541. package/bundled-skills/k6-load-testing/references/detailed-guide.md +563 -0
  542. package/bundled-skills/kaizen/SKILL.md +2 -711
  543. package/bundled-skills/kaizen/references/detailed-guide.md +720 -0
  544. package/bundled-skills/langfuse/SKILL.md +41 -468
  545. package/bundled-skills/langgraph/SKILL.md +2 -445
  546. package/bundled-skills/langgraph/references/detailed-guide.md +455 -0
  547. package/bundled-skills/laravel-development-workflow/SKILL.md +106 -0
  548. package/bundled-skills/laravel-expert/SKILL.md +6 -0
  549. package/bundled-skills/launch-strategy/SKILL.md +6 -0
  550. package/bundled-skills/lead-magnets/SKILL.md +6 -0
  551. package/bundled-skills/learn/SKILL.md +5 -0
  552. package/bundled-skills/legacy-modernizer/SKILL.md +6 -0
  553. package/bundled-skills/legal-advisor/SKILL.md +6 -0
  554. package/bundled-skills/leiloeiro-avaliacao/SKILL.md +2 -469
  555. package/bundled-skills/leiloeiro-avaliacao/references/detailed-guide.md +503 -0
  556. package/bundled-skills/leiloeiro-edital/SKILL.md +2 -468
  557. package/bundled-skills/leiloeiro-edital/references/detailed-guide.md +491 -0
  558. package/bundled-skills/leiloeiro-mercado/SKILL.md +2 -458
  559. package/bundled-skills/leiloeiro-mercado/references/detailed-guide.md +488 -0
  560. package/bundled-skills/leiloeiro-risco/SKILL.md +2 -457
  561. package/bundled-skills/leiloeiro-risco/references/detailed-guide.md +482 -0
  562. package/bundled-skills/lesson-generator/SKILL.md +5 -0
  563. package/bundled-skills/lightning-architecture-review/SKILL.md +6 -0
  564. package/bundled-skills/lightning-channel-factories/SKILL.md +6 -0
  565. package/bundled-skills/lightning-factory-explainer/SKILL.md +6 -0
  566. package/bundled-skills/linear-claude-skill/SKILL.md +4 -502
  567. package/bundled-skills/linear-claude-skill/references/detailed-guide.md +517 -0
  568. package/bundled-skills/linkedin-cli/SKILL.md +4 -513
  569. package/bundled-skills/linkedin-cli/references/detailed-guide.md +520 -0
  570. package/bundled-skills/lint-and-validate/SKILL.md +6 -0
  571. package/bundled-skills/linux-privilege-escalation/SKILL.md +2 -426
  572. package/bundled-skills/linux-privilege-escalation/references/detailed-guide.md +436 -0
  573. package/bundled-skills/linux-shell-scripting/SKILL.md +2 -473
  574. package/bundled-skills/linux-shell-scripting/references/detailed-guide.md +481 -0
  575. package/bundled-skills/llm-app-patterns/SKILL.md +16 -741
  576. package/bundled-skills/llm-app-patterns/references/detailed-guide.md +760 -0
  577. package/bundled-skills/llm-council/SKILL.md +4 -550
  578. package/bundled-skills/llm-council/references/detailed-guide.md +556 -0
  579. package/bundled-skills/llm-ops/SKILL.md +6 -0
  580. package/bundled-skills/local-legal-seo-audit/SKILL.md +6 -0
  581. package/bundled-skills/logic-diff/SKILL.md +1 -1
  582. package/bundled-skills/logic-explain/SKILL.md +7 -1
  583. package/bundled-skills/logic-fix-all/SKILL.md +1 -1
  584. package/bundled-skills/logic-locate/SKILL.md +1 -1
  585. package/bundled-skills/logic-review/SKILL.md +1 -1
  586. package/bundled-skills/loki-mode/SKILL.md +4 -696
  587. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +13 -12
  588. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
  589. package/bundled-skills/loki-mode/references/detailed-guide.md +717 -0
  590. package/bundled-skills/longbridge-content/SKILL.md +1 -1
  591. package/bundled-skills/longbridge-fundamentals/SKILL.md +1 -1
  592. package/bundled-skills/longbridge-market-data/SKILL.md +1 -1
  593. package/bundled-skills/lookdev-auto/SKILL.md +6 -0
  594. package/bundled-skills/loopy/SKILL.md +1 -1
  595. package/bundled-skills/loss-aversion-designer/SKILL.md +6 -0
  596. package/bundled-skills/machine-learning-ops-ml-pipeline/SKILL.md +6 -0
  597. package/bundled-skills/magic-animator/SKILL.md +6 -0
  598. package/bundled-skills/magic-ui-generator/SKILL.md +6 -0
  599. package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +6 -0
  600. package/bundled-skills/makepad-animation/SKILL.md +1 -0
  601. package/bundled-skills/makepad-basics/SKILL.md +1 -0
  602. package/bundled-skills/makepad-deployment/SKILL.md +1 -0
  603. package/bundled-skills/makepad-dsl/SKILL.md +1 -0
  604. package/bundled-skills/makepad-event-action/SKILL.md +1 -0
  605. package/bundled-skills/makepad-font/SKILL.md +1 -0
  606. package/bundled-skills/makepad-layout/SKILL.md +1 -0
  607. package/bundled-skills/makepad-platform/SKILL.md +1 -0
  608. package/bundled-skills/makepad-reference/SKILL.md +1 -0
  609. package/bundled-skills/makepad-shaders/SKILL.md +1 -0
  610. package/bundled-skills/makepad-skills/SKILL.md +6 -0
  611. package/bundled-skills/makepad-splash/SKILL.md +1 -0
  612. package/bundled-skills/makepad-widgets/SKILL.md +1 -0
  613. package/bundled-skills/manage-skills/SKILL.md +1 -0
  614. package/bundled-skills/marketing-plan/SKILL.md +1 -1
  615. package/bundled-skills/matematico-tao/SKILL.md +2 -632
  616. package/bundled-skills/matematico-tao/references/detailed-guide.md +651 -0
  617. package/bundled-skills/matplotlib/SKILL.md +1 -0
  618. package/bundled-skills/maxia/SKILL.md +1 -0
  619. package/bundled-skills/mcp-builder/SKILL.md +46 -14
  620. package/bundled-skills/mcp-builder/reference/evaluation.md +69 -226
  621. package/bundled-skills/mcp-builder/reference/mcp_best_practices.md +8 -5
  622. package/bundled-skills/mcp-builder/reference/node_mcp_server.md +46 -144
  623. package/bundled-skills/mcp-builder/reference/python_mcp_server.md +42 -80
  624. package/bundled-skills/mcp-builder/scripts/connections.py +18 -11
  625. package/bundled-skills/mcp-builder/scripts/evaluation.py +88 -95
  626. package/bundled-skills/mcp-builder/scripts/example_evaluation.xml +1 -1
  627. package/bundled-skills/mcp-builder/scripts/requirements.txt +4 -2
  628. package/bundled-skills/mental-health-analyzer/SKILL.md +5 -974
  629. package/bundled-skills/mental-health-analyzer/references/detailed-guide.md +1014 -0
  630. package/bundled-skills/micro-saas-launcher/SKILL.md +2 -473
  631. package/bundled-skills/micro-saas-launcher/references/detailed-guide.md +491 -0
  632. package/bundled-skills/minecraft-bukkit-pro/SKILL.md +6 -0
  633. package/bundled-skills/minimalist-ui/SKILL.md +6 -0
  634. package/bundled-skills/moatmri/SKILL.md +6 -0
  635. package/bundled-skills/molykit/SKILL.md +1 -0
  636. package/bundled-skills/monday-automation/SKILL.md +6 -0
  637. package/bundled-skills/monopoly/SKILL.md +1 -0
  638. package/bundled-skills/monopoly/patterns/SKILL.md +1 -0
  639. package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +1 -0
  640. package/bundled-skills/monopoly/security-checklist/SKILL.md +6 -0
  641. package/bundled-skills/monopoly/tech-matrix/SKILL.md +1 -0
  642. package/bundled-skills/monorepo-architect/SKILL.md +6 -0
  643. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +1 -1
  644. package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +7 -1
  645. package/bundled-skills/monte-carlo-validation-notebook/SKILL.md +4 -601
  646. package/bundled-skills/monte-carlo-validation-notebook/references/detailed-guide.md +613 -0
  647. package/bundled-skills/moodle-external-api-development/SKILL.md +4 -517
  648. package/bundled-skills/moodle-external-api-development/references/detailed-guide.md +529 -0
  649. package/bundled-skills/multi-agent-architect/SKILL.md +1 -0
  650. package/bundled-skills/multi-agent-brainstorming/SKILL.md +6 -0
  651. package/bundled-skills/multi-agent-patterns/SKILL.md +1 -0
  652. package/bundled-skills/multi-platform-apps-multi-platform/SKILL.md +6 -0
  653. package/bundled-skills/n8n-code-javascript/SKILL.md +3 -667
  654. package/bundled-skills/n8n-code-javascript/references/detailed-guide.md +683 -0
  655. package/bundled-skills/n8n-code-python/SKILL.md +3 -664
  656. package/bundled-skills/n8n-code-python/references/detailed-guide.md +682 -0
  657. package/bundled-skills/n8n-expression-syntax/SKILL.md +5 -401
  658. package/bundled-skills/n8n-expression-syntax/references/detailed-guide.md +416 -0
  659. package/bundled-skills/n8n-mcp-tools-expert/SKILL.md +5 -485
  660. package/bundled-skills/n8n-mcp-tools-expert/references/detailed-guide.md +499 -0
  661. package/bundled-skills/n8n-node-configuration/SKILL.md +5 -775
  662. package/bundled-skills/n8n-node-configuration/references/detailed-guide.md +789 -0
  663. package/bundled-skills/n8n-validation-expert/SKILL.md +5 -679
  664. package/bundled-skills/n8n-validation-expert/references/detailed-guide.md +694 -0
  665. package/bundled-skills/n8n-workflow-patterns/SKILL.md +1 -0
  666. package/bundled-skills/nanobanana-ppt-skills/SKILL.md +6 -0
  667. package/bundled-skills/native-data-fetching/SKILL.md +2 -456
  668. package/bundled-skills/native-data-fetching/references/detailed-guide.md +465 -0
  669. package/bundled-skills/neon-ai-gateway/SKILL.md +1 -1
  670. package/bundled-skills/neon-functions/SKILL.md +1 -1
  671. package/bundled-skills/neon-object-storage/SKILL.md +1 -1
  672. package/bundled-skills/neon-postgres/SKILL.md +1 -1
  673. package/bundled-skills/neon-postgres-branches/SKILL.md +1 -1
  674. package/bundled-skills/neon-postgres-egress-optimizer/SKILL.md +1 -1
  675. package/bundled-skills/nerdzao-elite/SKILL.md +6 -0
  676. package/bundled-skills/nerdzao-elite-gemini-high/SKILL.md +6 -0
  677. package/bundled-skills/nestjs-expert/SKILL.md +2 -524
  678. package/bundled-skills/nestjs-expert/references/detailed-guide.md +539 -0
  679. package/bundled-skills/networkx/SKILL.md +1 -0
  680. package/bundled-skills/new-rails-project/SKILL.md +7 -0
  681. package/bundled-skills/newman-cicd-integration/SKILL.md +1 -1
  682. package/bundled-skills/nika/SKILL.md +1 -0
  683. package/bundled-skills/nosql-expert/SKILL.md +6 -0
  684. package/bundled-skills/not-a-vibe-coder/SKILL.md +7 -0
  685. package/bundled-skills/notion-template-business/SKILL.md +2 -505
  686. package/bundled-skills/notion-template-business/references/detailed-guide.md +523 -0
  687. package/bundled-skills/nutrition-analyzer/SKILL.md +5 -766
  688. package/bundled-skills/nutrition-analyzer/references/detailed-guide.md +775 -0
  689. package/bundled-skills/objection-preemptor/SKILL.md +6 -0
  690. package/bundled-skills/observability-and-instrumentation/SKILL.md +1 -1
  691. package/bundled-skills/observability-engineer/SKILL.md +16 -8
  692. package/bundled-skills/obsidian-bases/SKILL.md +4 -366
  693. package/bundled-skills/obsidian-bases/references/detailed-guide.md +380 -0
  694. package/bundled-skills/occupational-health-analyzer/SKILL.md +1 -0
  695. package/bundled-skills/odoo-accounting-setup/SKILL.md +1 -0
  696. package/bundled-skills/odoo-automated-tests/SKILL.md +1 -0
  697. package/bundled-skills/odoo-backup-strategy/SKILL.md +1 -0
  698. package/bundled-skills/odoo-docker-deployment/SKILL.md +1 -0
  699. package/bundled-skills/odoo-ecommerce-configurator/SKILL.md +1 -0
  700. package/bundled-skills/odoo-edi-connector/SKILL.md +1 -0
  701. package/bundled-skills/odoo-hr-payroll-setup/SKILL.md +1 -0
  702. package/bundled-skills/odoo-inventory-optimizer/SKILL.md +1 -0
  703. package/bundled-skills/odoo-l10n-compliance/SKILL.md +1 -0
  704. package/bundled-skills/odoo-manufacturing-advisor/SKILL.md +1 -0
  705. package/bundled-skills/odoo-migration-helper/SKILL.md +1 -0
  706. package/bundled-skills/odoo-module-developer/SKILL.md +1 -0
  707. package/bundled-skills/odoo-orm-expert/SKILL.md +1 -0
  708. package/bundled-skills/odoo-performance-tuner/SKILL.md +1 -0
  709. package/bundled-skills/odoo-project-timesheet/SKILL.md +1 -0
  710. package/bundled-skills/odoo-purchase-workflow/SKILL.md +1 -0
  711. package/bundled-skills/odoo-qweb-templates/SKILL.md +1 -0
  712. package/bundled-skills/odoo-rpc-api/SKILL.md +1 -0
  713. package/bundled-skills/odoo-sales-crm-expert/SKILL.md +1 -0
  714. package/bundled-skills/odoo-security-rules/SKILL.md +1 -0
  715. package/bundled-skills/odoo-shopify-integration/SKILL.md +1 -0
  716. package/bundled-skills/odoo-upgrade-advisor/SKILL.md +1 -0
  717. package/bundled-skills/odoo-woocommerce-bridge/SKILL.md +1 -0
  718. package/bundled-skills/odoo-xml-views-builder/SKILL.md +1 -0
  719. package/bundled-skills/odw/SKILL.md +6 -0
  720. package/bundled-skills/offers/SKILL.md +1 -1
  721. package/bundled-skills/onboarding/SKILL.md +1 -1
  722. package/bundled-skills/onboarding-psychologist/SKILL.md +6 -0
  723. package/bundled-skills/one-drive-automation/SKILL.md +6 -0
  724. package/bundled-skills/openapi-spec-generator/SKILL.md +1 -1
  725. package/bundled-skills/oral-health-analyzer/SKILL.md +8 -515
  726. package/bundled-skills/oral-health-analyzer/references/detailed-guide.md +529 -0
  727. package/bundled-skills/orca-replay/SKILL.md +284 -0
  728. package/bundled-skills/outlook-automation/SKILL.md +6 -0
  729. package/bundled-skills/pagespeed-enhancer/SKILL.md +4 -520
  730. package/bundled-skills/pagespeed-enhancer/references/detailed-guide.md +533 -0
  731. package/bundled-skills/paid-ads/SKILL.md +2 -541
  732. package/bundled-skills/paid-ads/references/detailed-guide.md +558 -0
  733. package/bundled-skills/parallel-search-mcp/SKILL.md +134 -0
  734. package/bundled-skills/payment-integration/SKILL.md +6 -0
  735. package/bundled-skills/paywall-upgrade-cro/SKILL.md +2 -560
  736. package/bundled-skills/paywall-upgrade-cro/references/detailed-guide.md +579 -0
  737. package/bundled-skills/performance-testing-review-multi-agent-review/SKILL.md +42 -214
  738. package/bundled-skills/personal-tool-builder/SKILL.md +2 -688
  739. package/bundled-skills/personal-tool-builder/references/detailed-guide.md +705 -0
  740. package/bundled-skills/phase-gated-debugging/SKILL.md +6 -0
  741. package/bundled-skills/photopea-embedded-editor/SKILL.md +3 -1218
  742. package/bundled-skills/photopea-embedded-editor/references/detailed-guide.md +1252 -0
  743. package/bundled-skills/php-pro/SKILL.md +6 -0
  744. package/bundled-skills/pi-custom-model/SKILL.md +6 -0
  745. package/bundled-skills/pipedrive-automation/SKILL.md +6 -0
  746. package/bundled-skills/pitch-psychologist/SKILL.md +6 -0
  747. package/bundled-skills/plaid-fintech/SKILL.md +8 -829
  748. package/bundled-skills/plaid-fintech/references/detailed-guide.md +837 -0
  749. package/bundled-skills/plotly/SKILL.md +1 -0
  750. package/bundled-skills/polars/SKILL.md +1 -0
  751. package/bundled-skills/popup-cro/SKILL.md +6 -0
  752. package/bundled-skills/posix-shell-pro/SKILL.md +6 -0
  753. package/bundled-skills/postgresql-cli/SKILL.md +1 -1
  754. package/bundled-skills/postman-collection-generator/SKILL.md +1 -1
  755. package/bundled-skills/postman-newman-automation/SKILL.md +1 -1
  756. package/bundled-skills/postman-openapi-converter/SKILL.md +1 -1
  757. package/bundled-skills/power-user-cultivation/SKILL.md +6 -572
  758. package/bundled-skills/power-user-cultivation/references/detailed-guide.md +585 -0
  759. package/bundled-skills/pr-writer/SKILL.md +1 -0
  760. package/bundled-skills/price-psychology-strategist/SKILL.md +6 -0
  761. package/bundled-skills/pricing/SKILL.md +1 -1
  762. package/bundled-skills/privacy-mask/SKILL.md +1 -1
  763. package/bundled-skills/product-decision-agent/SKILL.md +6 -0
  764. package/bundled-skills/product-inventor/SKILL.md +2 -627
  765. package/bundled-skills/product-inventor/references/detailed-guide.md +646 -0
  766. package/bundled-skills/product-manager/SKILL.md +6 -0
  767. package/bundled-skills/product-marketing/SKILL.md +1 -1
  768. package/bundled-skills/production-code-audit/SKILL.md +2 -264
  769. package/bundled-skills/production-code-audit/references/detailed-guide.md +277 -0
  770. package/bundled-skills/professional-proofreader/SKILL.md +6 -0
  771. package/bundled-skills/programmatic-seo/SKILL.md +6 -0
  772. package/bundled-skills/project-development/SKILL.md +1 -0
  773. package/bundled-skills/project-skill-audit/SKILL.md +6 -0
  774. package/bundled-skills/public-relations/SKILL.md +1 -1
  775. package/bundled-skills/pubmed-database/SKILL.md +1 -0
  776. package/bundled-skills/push-skill-to-github/SKILL.md +6 -0
  777. package/bundled-skills/pypict-skill/SKILL.md +6 -0
  778. package/bundled-skills/pytest-skill/SKILL.md +1 -1
  779. package/bundled-skills/qiskit/SKILL.md +1 -0
  780. package/bundled-skills/quant-analyst/SKILL.md +6 -0
  781. package/bundled-skills/radix-ui-design-system/SKILL.md +2 -693
  782. package/bundled-skills/radix-ui-design-system/references/detailed-guide.md +711 -0
  783. package/bundled-skills/rag-engineer/SKILL.md +6 -0
  784. package/bundled-skills/rclone-cli/SKILL.md +1 -1
  785. package/bundled-skills/react-flow-architect/SKILL.md +2 -507
  786. package/bundled-skills/react-flow-architect/references/detailed-guide.md +517 -0
  787. package/bundled-skills/react-patterns/SKILL.md +6 -0
  788. package/bundled-skills/read-all-adrs/SKILL.md +6 -0
  789. package/bundled-skills/readme/SKILL.md +4 -822
  790. package/bundled-skills/readme/references/detailed-guide.md +829 -0
  791. package/bundled-skills/redesign-existing-projects/SKILL.md +6 -0
  792. package/bundled-skills/redis-cli/SKILL.md +1 -1
  793. package/bundled-skills/referral-program/SKILL.md +2 -508
  794. package/bundled-skills/referral-program/references/detailed-guide.md +524 -0
  795. package/bundled-skills/rehabilitation-analyzer/SKILL.md +5 -629
  796. package/bundled-skills/rehabilitation-analyzer/references/detailed-guide.md +641 -0
  797. package/bundled-skills/remotion/SKILL.md +1 -0
  798. package/bundled-skills/research-prompt/SKILL.md +6 -0
  799. package/bundled-skills/resolving-merge-conflicts/SKILL.md +6 -0
  800. package/bundled-skills/review-and-simplify-changes/SKILL.md +7 -1
  801. package/bundled-skills/review-swarm/SKILL.md +7 -1
  802. package/bundled-skills/risk-manager/SKILL.md +6 -0
  803. package/bundled-skills/robius-app-architecture/SKILL.md +1 -0
  804. package/bundled-skills/robius-event-action/SKILL.md +1 -0
  805. package/bundled-skills/robius-matrix-integration/SKILL.md +1 -0
  806. package/bundled-skills/robius-state-management/SKILL.md +1 -0
  807. package/bundled-skills/robius-widget-patterns/SKILL.md +1 -0
  808. package/bundled-skills/robot-framework-skill/SKILL.md +1 -1
  809. package/bundled-skills/ruby-pro/SKILL.md +6 -0
  810. package/bundled-skills/saga-orchestration/SKILL.md +4 -482
  811. package/bundled-skills/saga-orchestration/references/detailed-guide.md +491 -0
  812. package/bundled-skills/sales-automator/SKILL.md +6 -0
  813. package/bundled-skills/salesforce-development/SKILL.md +2 -985
  814. package/bundled-skills/salesforce-development/references/detailed-guide.md +994 -0
  815. package/bundled-skills/sam-altman/SKILL.md +5 -1040
  816. package/bundled-skills/sam-altman/references/detailed-guide.md +1102 -0
  817. package/bundled-skills/scala-pro/SKILL.md +6 -0
  818. package/bundled-skills/scanning-tools/SKILL.md +2 -546
  819. package/bundled-skills/scanning-tools/references/detailed-guide.md +555 -0
  820. package/bundled-skills/scanpy/SKILL.md +1 -0
  821. package/bundled-skills/scarcity-urgency-psychologist/SKILL.md +6 -0
  822. package/bundled-skills/scientific-writing/SKILL.md +3 -691
  823. package/bundled-skills/scientific-writing/references/detailed-guide.md +702 -0
  824. package/bundled-skills/scikit-learn/SKILL.md +3 -462
  825. package/bundled-skills/scikit-learn/references/detailed-guide.md +475 -0
  826. package/bundled-skills/scroll-experience/SKILL.md +2 -560
  827. package/bundled-skills/scroll-experience/references/detailed-guide.md +578 -0
  828. package/bundled-skills/sdk-dx/SKILL.md +6 -517
  829. package/bundled-skills/sdk-dx/references/detailed-guide.md +530 -0
  830. package/bundled-skills/seaborn/SKILL.md +5 -661
  831. package/bundled-skills/seaborn/references/detailed-guide.md +677 -0
  832. package/bundled-skills/search-specialist/SKILL.md +6 -0
  833. package/bundled-skills/security/aws-compliance-checker/SKILL.md +4 -492
  834. package/bundled-skills/security/aws-compliance-checker/references/detailed-guide.md +502 -0
  835. package/bundled-skills/security-bluebook-builder/SKILL.md +7 -0
  836. package/bundled-skills/security-scanning-security-hardening/SKILL.md +6 -0
  837. package/bundled-skills/security-scanning-security-sast/SKILL.md +2 -463
  838. package/bundled-skills/security-scanning-security-sast/references/detailed-guide.md +476 -0
  839. package/bundled-skills/segment-cdp/SKILL.md +8 -822
  840. package/bundled-skills/segment-cdp/references/detailed-guide.md +830 -0
  841. package/bundled-skills/selenium-skill/SKILL.md +1 -1
  842. package/bundled-skills/semgrep-rule-creator/SKILL.md +1 -0
  843. package/bundled-skills/semgrep-rule-variant-creator/SKILL.md +1 -0
  844. package/bundled-skills/sendgrid-automation/SKILL.md +6 -0
  845. package/bundled-skills/seo-audit/SKILL.md +33 -44
  846. package/bundled-skills/seo-content/SKILL.md +6 -0
  847. package/bundled-skills/seo-content-auditor/SKILL.md +6 -0
  848. package/bundled-skills/seo-content-writer/SKILL.md +6 -0
  849. package/bundled-skills/seo-forensic-incident-response/SKILL.md +6 -0
  850. package/bundled-skills/seo-fundamentals/SKILL.md +6 -0
  851. package/bundled-skills/seo-programmatic/SKILL.md +6 -0
  852. package/bundled-skills/sequence-psychologist/SKILL.md +6 -0
  853. package/bundled-skills/server-management/SKILL.md +6 -0
  854. package/bundled-skills/service-mesh-expert/SKILL.md +6 -0
  855. package/bundled-skills/setup-help/SKILL.md +6 -0
  856. package/bundled-skills/sexual-health-analyzer/SKILL.md +8 -1109
  857. package/bundled-skills/sexual-health-analyzer/references/detailed-guide.md +1123 -0
  858. package/bundled-skills/sharp-coder/SKILL.md +1 -0
  859. package/bundled-skills/sharp-edges/SKILL.md +1 -0
  860. package/bundled-skills/shodan-reconnaissance/SKILL.md +2 -356
  861. package/bundled-skills/shodan-reconnaissance/references/detailed-guide.md +366 -0
  862. package/bundled-skills/shopify-apps/SKILL.md +2 -1477
  863. package/bundled-skills/shopify-apps/references/detailed-guide.md +1512 -0
  864. package/bundled-skills/short/SKILL.md +6 -0
  865. package/bundled-skills/signup-flow-cro/SKILL.md +6 -0
  866. package/bundled-skills/simplify-code/SKILL.md +6 -0
  867. package/bundled-skills/skill-creator/SKILL.md +2 -568
  868. package/bundled-skills/skill-creator/references/detailed-guide.md +581 -0
  869. package/bundled-skills/skill-creator-ms/SKILL.md +2 -601
  870. package/bundled-skills/skill-creator-ms/references/detailed-guide.md +614 -0
  871. package/bundled-skills/skill-improver/SKILL.md +1 -0
  872. package/bundled-skills/skill-router/SKILL.md +1 -0
  873. package/bundled-skills/skill-scanner/SKILL.md +1 -0
  874. package/bundled-skills/skill-security-audit/SKILL.md +87 -0
  875. package/bundled-skills/skill-seekers/SKILL.md +6 -0
  876. package/bundled-skills/skill-writer/SKILL.md +1 -0
  877. package/bundled-skills/skin-health-analyzer/SKILL.md +8 -696
  878. package/bundled-skills/skin-health-analyzer/references/detailed-guide.md +710 -0
  879. package/bundled-skills/slack-automation/SKILL.md +6 -0
  880. package/bundled-skills/slack-bot-builder/SKILL.md +2 -1372
  881. package/bundled-skills/slack-bot-builder/references/detailed-guide.md +1395 -0
  882. package/bundled-skills/sleep-analyzer/SKILL.md +5 -764
  883. package/bundled-skills/sleep-analyzer/references/detailed-guide.md +773 -0
  884. package/bundled-skills/smartui-skill/SKILL.md +1 -1
  885. package/bundled-skills/smtp-penetration-testing/SKILL.md +2 -346
  886. package/bundled-skills/smtp-penetration-testing/references/detailed-guide.md +355 -0
  887. package/bundled-skills/social-content/SKILL.md +2 -797
  888. package/bundled-skills/social-content/references/detailed-guide.md +816 -0
  889. package/bundled-skills/social-proof-architect/SKILL.md +6 -0
  890. package/bundled-skills/software-architecture/SKILL.md +6 -0
  891. package/bundled-skills/spec-to-code-compliance/SKILL.md +7 -0
  892. package/bundled-skills/speckit-updater/SKILL.md +1 -0
  893. package/bundled-skills/speed/SKILL.md +7 -0
  894. package/bundled-skills/sred-project-organizer/SKILL.md +1 -0
  895. package/bundled-skills/sred-work-summary/SKILL.md +1 -0
  896. package/bundled-skills/statsmodels/SKILL.md +3 -586
  897. package/bundled-skills/statsmodels/references/detailed-guide.md +600 -0
  898. package/bundled-skills/steve-jobs/SKILL.md +2 -564
  899. package/bundled-skills/steve-jobs/references/detailed-guide.md +574 -0
  900. package/bundled-skills/stitch-loop/SKILL.md +1 -0
  901. package/bundled-skills/stripe-automation/SKILL.md +6 -0
  902. package/bundled-skills/stripe-integration/SKILL.md +60 -79
  903. package/bundled-skills/styleseed-design-review/SKILL.md +1 -1
  904. package/bundled-skills/subagent-orchestrator/SKILL.md +1 -0
  905. package/bundled-skills/subject-line-psychologist/SKILL.md +6 -0
  906. package/bundled-skills/supabase/SKILL.md +1 -1
  907. package/bundled-skills/supabase-automation/SKILL.md +6 -0
  908. package/bundled-skills/superpowers-lab/SKILL.md +6 -0
  909. package/bundled-skills/supply-chain-risk-auditor/SKILL.md +7 -0
  910. package/bundled-skills/swiftui-expert-skill/SKILL.md +1 -1
  911. package/bundled-skills/sympy/SKILL.md +3 -426
  912. package/bundled-skills/sympy/references/detailed-guide.md +439 -0
  913. package/bundled-skills/systematic-debugging/CREATION-LOG.md +3 -0
  914. package/bundled-skills/systematic-debugging/SKILL.md +30 -34
  915. package/bundled-skills/systematic-debugging/condition-based-waiting.md +9 -6
  916. package/bundled-skills/systematic-debugging/defense-in-depth.md +13 -7
  917. package/bundled-skills/systematic-debugging/find-polluter.sh +77 -57
  918. package/bundled-skills/systematic-debugging/root-cause-tracing.md +7 -5
  919. package/bundled-skills/systematic-debugging/test-academic.md +3 -0
  920. package/bundled-skills/systematic-debugging/test-pressure-1.md +3 -0
  921. package/bundled-skills/systematic-debugging/test-pressure-2.md +3 -0
  922. package/bundled-skills/systematic-debugging/test-pressure-3.md +3 -0
  923. package/bundled-skills/tcm-constitution-analyzer/SKILL.md +5 -655
  924. package/bundled-skills/tcm-constitution-analyzer/references/detailed-guide.md +660 -0
  925. package/bundled-skills/tdd-workflows-tdd-cycle/SKILL.md +6 -0
  926. package/bundled-skills/technical-tutorials/SKILL.md +5 -483
  927. package/bundled-skills/technical-tutorials/references/detailed-guide.md +496 -0
  928. package/bundled-skills/telegram/SKILL.md +2 -541
  929. package/bundled-skills/telegram/references/detailed-guide.md +569 -0
  930. package/bundled-skills/telegram-mini-app/SKILL.md +2 -643
  931. package/bundled-skills/telegram-mini-app/references/detailed-guide.md +661 -0
  932. package/bundled-skills/temporal-python-pro/SKILL.md +6 -0
  933. package/bundled-skills/terraform-skill/SKILL.md +4 -417
  934. package/bundled-skills/terraform-skill/references/detailed-guide.md +430 -0
  935. package/bundled-skills/test-driven-development/SKILL.md +21 -124
  936. package/bundled-skills/test-driven-development/testing-anti-patterns.md +6 -6
  937. package/bundled-skills/test-framework-migration-skill/SKILL.md +7 -1
  938. package/bundled-skills/threat-modeling-expert/SKILL.md +6 -0
  939. package/bundled-skills/threejs-animation/SKILL.md +5 -551
  940. package/bundled-skills/threejs-animation/references/detailed-guide.md +566 -0
  941. package/bundled-skills/threejs-fundamentals/SKILL.md +5 -525
  942. package/bundled-skills/threejs-fundamentals/references/detailed-guide.md +535 -0
  943. package/bundled-skills/threejs-geometry/SKILL.md +5 -572
  944. package/bundled-skills/threejs-geometry/references/detailed-guide.md +587 -0
  945. package/bundled-skills/threejs-interaction/SKILL.md +5 -666
  946. package/bundled-skills/threejs-interaction/references/detailed-guide.md +679 -0
  947. package/bundled-skills/threejs-lighting/SKILL.md +1 -0
  948. package/bundled-skills/threejs-loaders/SKILL.md +5 -637
  949. package/bundled-skills/threejs-loaders/references/detailed-guide.md +651 -0
  950. package/bundled-skills/threejs-materials/SKILL.md +3 -535
  951. package/bundled-skills/threejs-materials/references/detailed-guide.md +560 -0
  952. package/bundled-skills/threejs-postprocessing/SKILL.md +5 -617
  953. package/bundled-skills/threejs-postprocessing/references/detailed-guide.md +630 -0
  954. package/bundled-skills/threejs-shaders/SKILL.md +5 -679
  955. package/bundled-skills/threejs-shaders/references/detailed-guide.md +695 -0
  956. package/bundled-skills/threejs-skills/SKILL.md +4 -683
  957. package/bundled-skills/threejs-skills/references/detailed-guide.md +693 -0
  958. package/bundled-skills/threejs-textures/SKILL.md +5 -630
  959. package/bundled-skills/threejs-textures/references/detailed-guide.md +649 -0
  960. package/bundled-skills/to-issues/SKILL.md +5 -0
  961. package/bundled-skills/to-prd/SKILL.md +5 -0
  962. package/bundled-skills/todoist-automation/SKILL.md +6 -0
  963. package/bundled-skills/tools-page-seo-optimizer/SKILL.md +2 -580
  964. package/bundled-skills/tools-page-seo-optimizer/references/detailed-guide.md +602 -0
  965. package/bundled-skills/top-web-vulnerabilities/SKILL.md +2 -513
  966. package/bundled-skills/top-web-vulnerabilities/references/detailed-guide.md +523 -0
  967. package/bundled-skills/train-sentence-transformers/SKILL.md +1 -1
  968. package/bundled-skills/transformers-js/SKILL.md +5 -669
  969. package/bundled-skills/transformers-js/references/detailed-guide.md +683 -0
  970. package/bundled-skills/travel-health-analyzer/SKILL.md +1 -0
  971. package/bundled-skills/trello-automation/SKILL.md +6 -0
  972. package/bundled-skills/trigger-dev/SKILL.md +2 -937
  973. package/bundled-skills/trigger-dev/references/detailed-guide.md +950 -0
  974. package/bundled-skills/trust-calibrator/SKILL.md +6 -0
  975. package/bundled-skills/tutorial-engineer/SKILL.md +6 -0
  976. package/bundled-skills/twilio-communications/SKILL.md +2 -1549
  977. package/bundled-skills/twilio-communications/references/detailed-guide.md +1574 -0
  978. package/bundled-skills/typescript-pro/SKILL.md +6 -0
  979. package/bundled-skills/ui-a11y/SKILL.md +6 -0
  980. package/bundled-skills/ui-component/SKILL.md +6 -0
  981. package/bundled-skills/ui-motion/SKILL.md +7 -1
  982. package/bundled-skills/ui-pattern/SKILL.md +6 -0
  983. package/bundled-skills/ui-review/SKILL.md +6 -0
  984. package/bundled-skills/ui-skills/SKILL.md +6 -0
  985. package/bundled-skills/ui-tokens/SKILL.md +6 -0
  986. package/bundled-skills/uniprot-database/SKILL.md +1 -0
  987. package/bundled-skills/unslop-commit/SKILL.md +1 -1
  988. package/bundled-skills/unslop-file/SKILL.md +1 -1
  989. package/bundled-skills/unslop-review/SKILL.md +1 -1
  990. package/bundled-skills/unsplash-integration/SKILL.md +6 -0
  991. package/bundled-skills/update-swiftui-apis/SKILL.md +1 -1
  992. package/bundled-skills/upstash-qstash/SKILL.md +2 -919
  993. package/bundled-skills/upstash-qstash/references/detailed-guide.md +932 -0
  994. package/bundled-skills/usage-based-pricing/SKILL.md +5 -395
  995. package/bundled-skills/usage-based-pricing/references/detailed-guide.md +407 -0
  996. package/bundled-skills/ux-audit/SKILL.md +6 -0
  997. package/bundled-skills/ux-flow/SKILL.md +6 -0
  998. package/bundled-skills/ux-persuasion-engineer/SKILL.md +6 -0
  999. package/bundled-skills/variant-analysis/SKILL.md +1 -0
  1000. package/bundled-skills/varlock/SKILL.md +1 -0
  1001. package/bundled-skills/varlock-claude-skill/SKILL.md +6 -0
  1002. package/bundled-skills/vector-database-engineer/SKILL.md +6 -0
  1003. package/bundled-skills/vercel-deployment/SKILL.md +2 -650
  1004. package/bundled-skills/vercel-deployment/references/detailed-guide.md +660 -0
  1005. package/bundled-skills/vexor/SKILL.md +6 -0
  1006. package/bundled-skills/vexor-cli/SKILL.md +1 -0
  1007. package/bundled-skills/visual-emotion-engineer/SKILL.md +6 -0
  1008. package/bundled-skills/vizcom/SKILL.md +6 -0
  1009. package/bundled-skills/voice-agents/SKILL.md +2 -867
  1010. package/bundled-skills/voice-agents/references/detailed-guide.md +890 -0
  1011. package/bundled-skills/voice-ai-development/SKILL.md +2 -583
  1012. package/bundled-skills/voice-ai-development/references/detailed-guide.md +594 -0
  1013. package/bundled-skills/voice-ai-engine-development/SKILL.md +2 -702
  1014. package/bundled-skills/voice-ai-engine-development/references/detailed-guide.md +720 -0
  1015. package/bundled-skills/warren-buffett/SKILL.md +2 -577
  1016. package/bundled-skills/warren-buffett/references/detailed-guide.md +583 -0
  1017. package/bundled-skills/web-performance-optimization/SKILL.md +2 -214
  1018. package/bundled-skills/web-performance-optimization/references/detailed-guide.md +226 -0
  1019. package/bundled-skills/web-scraper/SKILL.md +2 -728
  1020. package/bundled-skills/web-scraper/references/detailed-guide.md +792 -0
  1021. package/bundled-skills/webflow-automation/SKILL.md +6 -0
  1022. package/bundled-skills/weightloss-analyzer/SKILL.md +1 -0
  1023. package/bundled-skills/wellally-tech/SKILL.md +5 -367
  1024. package/bundled-skills/wellally-tech/references/detailed-guide.md +379 -0
  1025. package/bundled-skills/wiki-architect/SKILL.md +6 -0
  1026. package/bundled-skills/wiki-changelog/SKILL.md +6 -0
  1027. package/bundled-skills/wiki-onboarding/SKILL.md +6 -0
  1028. package/bundled-skills/wiki-qa/SKILL.md +6 -0
  1029. package/bundled-skills/wiki-researcher/SKILL.md +6 -0
  1030. package/bundled-skills/windows-privilege-escalation/SKILL.md +131 -0
  1031. package/bundled-skills/windows-privilege-escalation/references/detailed-guide.md +397 -0
  1032. package/bundled-skills/wireshark-analysis/SKILL.md +2 -419
  1033. package/bundled-skills/wireshark-analysis/references/detailed-guide.md +429 -0
  1034. package/bundled-skills/wjttc-builder/SKILL.md +1 -1
  1035. package/bundled-skills/wjttc-tester/SKILL.md +1 -1
  1036. package/bundled-skills/wordpress/SKILL.md +2 -572
  1037. package/bundled-skills/wordpress/references/detailed-guide.md +582 -0
  1038. package/bundled-skills/wordpress-penetration-testing/SKILL.md +68 -0
  1039. package/bundled-skills/wordpress-penetration-testing/references/detailed-guide.md +555 -0
  1040. package/bundled-skills/wordpress-plugin-development/SKILL.md +2 -474
  1041. package/bundled-skills/wordpress-plugin-development/references/detailed-guide.md +485 -0
  1042. package/bundled-skills/wordpress-theme-development/SKILL.md +2 -479
  1043. package/bundled-skills/wordpress-theme-development/references/detailed-guide.md +490 -0
  1044. package/bundled-skills/wordpress-woocommerce-development/SKILL.md +2 -605
  1045. package/bundled-skills/wordpress-woocommerce-development/references/detailed-guide.md +615 -0
  1046. package/bundled-skills/workflow-automation/SKILL.md +2 -875
  1047. package/bundled-skills/workflow-automation/references/detailed-guide.md +902 -0
  1048. package/bundled-skills/writing-great-skills/SKILL.md +5 -0
  1049. package/bundled-skills/x-article-publisher-skill/SKILL.md +6 -0
  1050. package/bundled-skills/x402-express-wrapper/SKILL.md +1 -0
  1051. package/bundled-skills/xss-html-injection/SKILL.md +2 -389
  1052. package/bundled-skills/xss-html-injection/references/detailed-guide.md +399 -0
  1053. package/bundled-skills/yann-lecun/SKILL.md +2 -1431
  1054. package/bundled-skills/yann-lecun/references/detailed-guide.md +1484 -0
  1055. package/bundled-skills/yann-lecun-filosofia/SKILL.md +6 -0
  1056. package/bundled-skills/yann-lecun-tecnico/SKILL.md +2 -485
  1057. package/bundled-skills/yann-lecun-tecnico/references/detailed-guide.md +502 -0
  1058. package/bundled-skills/youtube-seo-optimizer/SKILL.md +4 -884
  1059. package/bundled-skills/youtube-seo-optimizer/references/detailed-guide.md +907 -0
  1060. package/bundled-skills/zapier-make-patterns/SKILL.md +2 -728
  1061. package/bundled-skills/zapier-make-patterns/references/detailed-guide.md +752 -0
  1062. package/bundled-skills/zipai-optimizer/SKILL.md +7 -0
  1063. package/bundled-skills/zoom-automation/SKILL.md +6 -0
  1064. package/package.json +1 -1
  1065. package/skills_index.json +608 -383
  1066. package/bundled-skills/docs/AUDIT.md +0 -3
  1067. package/bundled-skills/docs/BUNDLES.md +0 -3
  1068. package/bundled-skills/docs/CATEGORIZATION_IMPLEMENTATION.md +0 -3
  1069. package/bundled-skills/docs/CI_DRIFT_FIX.md +0 -3
  1070. package/bundled-skills/docs/COMMUNITY_GUIDELINES.md +0 -3
  1071. package/bundled-skills/docs/DATE_TRACKING_IMPLEMENTATION.md +0 -3
  1072. package/bundled-skills/docs/EXAMPLES.md +0 -3
  1073. package/bundled-skills/docs/FAQ.md +0 -3
  1074. package/bundled-skills/docs/GETTING_STARTED.md +0 -3
  1075. package/bundled-skills/docs/KIRO_INTEGRATION.md +0 -3
  1076. package/bundled-skills/docs/QUALITY_BAR.md +0 -3
  1077. package/bundled-skills/docs/README.md +0 -51
  1078. package/bundled-skills/docs/SECURITY_GUARDRAILS.md +0 -3
  1079. package/bundled-skills/docs/SEC_SKILLS.md +0 -3
  1080. package/bundled-skills/docs/SKILLS_DATE_TRACKING.md +0 -3
  1081. package/bundled-skills/docs/SKILL_ANATOMY.md +0 -3
  1082. package/bundled-skills/docs/SKILL_TEMPLATE.md +0 -3
  1083. package/bundled-skills/docs/SMART_AUTO_CATEGORIZATION.md +0 -3
  1084. package/bundled-skills/docs/SOURCES.md +0 -3
  1085. package/bundled-skills/docs/USAGE.md +0 -3
  1086. package/bundled-skills/docs/VISUAL_GUIDE.md +0 -3
  1087. package/bundled-skills/docs/WORKFLOWS.md +0 -3
  1088. package/bundled-skills/docs/contributors/community-guidelines.md +0 -4
  1089. package/bundled-skills/docs/contributors/examples.md +0 -760
  1090. package/bundled-skills/docs/contributors/quality-bar.md +0 -104
  1091. package/bundled-skills/docs/contributors/security-guardrails.md +0 -70
  1092. package/bundled-skills/docs/contributors/skill-anatomy.md +0 -637
  1093. package/bundled-skills/docs/contributors/skill-template.md +0 -93
  1094. package/bundled-skills/docs/integrations/jetski-cortex.md +0 -282
  1095. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +0 -103
  1096. package/bundled-skills/docs/integrations/jetski-gemini-loader/loader.mjs +0 -154
  1097. package/bundled-skills/docs/integrations/jetski-gemini-loader/package.json +0 -1
  1098. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-preview-profile.md +0 -63
  1099. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-design.md +0 -304
  1100. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-goal.md +0 -171
  1101. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-worklog.md +0 -104
  1102. package/bundled-skills/docs/maintainers/audit.md +0 -89
  1103. package/bundled-skills/docs/maintainers/backups/README-2026-06-02.md +0 -687
  1104. package/bundled-skills/docs/maintainers/categorization-implementation.md +0 -160
  1105. package/bundled-skills/docs/maintainers/ci-drift-fix.md +0 -64
  1106. package/bundled-skills/docs/maintainers/date-tracking-implementation.md +0 -66
  1107. package/bundled-skills/docs/maintainers/full-repo-audit-2026-05-23.md +0 -289
  1108. package/bundled-skills/docs/maintainers/legacy-redirect-bridge.md +0 -46
  1109. package/bundled-skills/docs/maintainers/merge-batch.md +0 -81
  1110. package/bundled-skills/docs/maintainers/merging-prs.md +0 -79
  1111. package/bundled-skills/docs/maintainers/pr-autonomy.md +0 -102
  1112. package/bundled-skills/docs/maintainers/provenance-identity-exceptions.json +0 -14
  1113. package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +0 -32
  1114. package/bundled-skills/docs/maintainers/release-process.md +0 -124
  1115. package/bundled-skills/docs/maintainers/repo-growth-seo.md +0 -133
  1116. package/bundled-skills/docs/maintainers/rollback-procedure.md +0 -43
  1117. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.csv +0 -34
  1118. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.md +0 -60
  1119. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-18-addendum.md +0 -22
  1120. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-addendum.md +0 -48
  1121. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-refresh.csv +0 -34
  1122. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-refresh.md +0 -86
  1123. package/bundled-skills/docs/maintainers/skills-date-tracking.md +0 -228
  1124. package/bundled-skills/docs/maintainers/skills-import-2026-03-21.md +0 -81
  1125. package/bundled-skills/docs/maintainers/skills-update-guide.md +0 -92
  1126. package/bundled-skills/docs/maintainers/smart-auto-categorization.md +0 -218
  1127. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/README.md +0 -19
  1128. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/evaluation-cases.json +0 -74
  1129. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/evaluation-results.json +0 -86
  1130. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/submission.json +0 -41
  1131. package/bundled-skills/docs/sources/LICENSE-MICROSOFT +0 -21
  1132. package/bundled-skills/docs/sources/microsoft-skills-attribution.json +0 -709
  1133. package/bundled-skills/docs/sources/sources.md +0 -179
  1134. package/bundled-skills/docs/users/aas-core.md +0 -225
  1135. package/bundled-skills/docs/users/agent-overload-recovery.md +0 -54
  1136. package/bundled-skills/docs/users/agentic-awesome-skills-vs-awesome-claude-skills.md +0 -44
  1137. package/bundled-skills/docs/users/ai-agent-skills.md +0 -48
  1138. package/bundled-skills/docs/users/best-claude-code-skills-github.md +0 -62
  1139. package/bundled-skills/docs/users/best-cursor-skills-github.md +0 -62
  1140. package/bundled-skills/docs/users/bundles.md +0 -1067
  1141. package/bundled-skills/docs/users/claude-code-skills.md +0 -89
  1142. package/bundled-skills/docs/users/codex-cli-skills.md +0 -88
  1143. package/bundled-skills/docs/users/cursor-skills.md +0 -56
  1144. package/bundled-skills/docs/users/discovery-manifest.md +0 -65
  1145. package/bundled-skills/docs/users/faq.md +0 -521
  1146. package/bundled-skills/docs/users/gemini-cli-skills.md +0 -56
  1147. package/bundled-skills/docs/users/getting-started.md +0 -233
  1148. package/bundled-skills/docs/users/kiro-integration.md +0 -304
  1149. package/bundled-skills/docs/users/local-config.md +0 -152
  1150. package/bundled-skills/docs/users/plugins.md +0 -201
  1151. package/bundled-skills/docs/users/security-and-antivirus.md +0 -63
  1152. package/bundled-skills/docs/users/security-skills.md +0 -1722
  1153. package/bundled-skills/docs/users/skills-library-overview.md +0 -87
  1154. package/bundled-skills/docs/users/skills-vs-mcp-tools.md +0 -108
  1155. package/bundled-skills/docs/users/specialized-plugin-roadmap.md +0 -101
  1156. package/bundled-skills/docs/users/usage.md +0 -465
  1157. package/bundled-skills/docs/users/visual-guide.md +0 -515
  1158. package/bundled-skills/docs/users/walkthrough.md +0 -46
  1159. package/bundled-skills/docs/users/windows-truncation-recovery.md +0 -135
  1160. package/bundled-skills/docs/users/workflows.md +0 -215
  1161. package/bundled-skills/docs/vietnamese/AAS_CORE.vi.md +0 -28
  1162. package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +0 -124
  1163. package/bundled-skills/docs/vietnamese/CONTRIBUTING.vi.md +0 -242
  1164. package/bundled-skills/docs/vietnamese/EXAMPLES.vi.md +0 -56
  1165. package/bundled-skills/docs/vietnamese/FAQ.vi.md +0 -195
  1166. package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +0 -123
  1167. package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +0 -69
  1168. package/bundled-skills/docs/vietnamese/README.vi.md +0 -191
  1169. package/bundled-skills/docs/vietnamese/SECURITY.vi.md +0 -19
  1170. package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +0 -51
  1171. package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +0 -106
  1172. package/bundled-skills/docs/vietnamese/SKILL_ANATOMY.vi.md +0 -633
  1173. package/bundled-skills/docs/vietnamese/SOURCES.vi.md +0 -21
  1174. package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +0 -65
  1175. package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +0 -511
  1176. package/bundled-skills/docs/walkthrough.md +0 -3
@@ -0,0 +1,1574 @@
1
+ # Twilio Communications - Detailed Guide
2
+
3
+ > This file contains the detailed procedure and reference material extracted from `SKILL.md` for focused loading. The root skill defines activation, examples, safety constraints, and limitations.
4
+
5
+ ## Patterns
6
+
7
+ ### SMS Sending Pattern
8
+
9
+ Basic pattern for sending SMS messages with Twilio.
10
+ Handles the fundamentals: phone number formatting, message delivery,
11
+ and delivery status callbacks.
12
+
13
+ Key considerations:
14
+ - Phone numbers must be in E.164 format (+1234567890)
15
+ - Default rate limit: 80 messages per second (MPS)
16
+ - Messages over 160 characters are split (and cost more)
17
+ - Carrier filtering can block messages (especially to US numbers)
18
+
19
+ **When to use**: Sending notifications to users,Transactional messages (order confirmations, shipping),Alerts and reminders
20
+
21
+ from twilio.rest import Client
22
+ from twilio.base.exceptions import TwilioRestException
23
+ import os
24
+ import re
25
+
26
+ class TwilioSMS:
27
+ """
28
+ SMS sending with proper error handling and validation.
29
+ """
30
+
31
+ def __init__(self):
32
+ self.client = Client(
33
+ os.environ["TWILIO_ACCOUNT_SID"],
34
+ os.environ["TWILIO_AUTH_TOKEN"]
35
+ )
36
+ self.from_number = os.environ["TWILIO_PHONE_NUMBER"]
37
+
38
+ def validate_e164(self, phone: str) -> bool:
39
+ """Validate phone number is in E.164 format."""
40
+ pattern = r'^\+[1-9]\d{1,14}$'
41
+ return bool(re.match(pattern, phone))
42
+
43
+ def send_sms(
44
+ self,
45
+ to: str,
46
+ body: str,
47
+ status_callback: str = None
48
+ ) -> dict:
49
+ """
50
+ Send an SMS message.
51
+
52
+ Args:
53
+ to: Recipient phone number in E.164 format
54
+ body: Message text (160 chars = 1 segment)
55
+ status_callback: URL for delivery status webhooks
56
+
57
+ Returns:
58
+ Message SID and status
59
+ """
60
+ # Validate phone number format
61
+ if not self.validate_e164(to):
62
+ return {
63
+ "success": False,
64
+ "error": "Phone number must be in E.164 format (+1234567890)"
65
+ }
66
+
67
+ # Check message length (warn about segmentation)
68
+ segment_count = (len(body) + 159) // 160
69
+ if segment_count > 1:
70
+ print(f"Warning: Message will be sent as {segment_count} segments")
71
+
72
+ try:
73
+ message = self.client.messages.create(
74
+ to=to,
75
+ from_=self.from_number,
76
+ body=body,
77
+ status_callback=status_callback
78
+ )
79
+
80
+ return {
81
+ "success": True,
82
+ "message_sid": message.sid,
83
+ "status": message.status,
84
+ "segments": segment_count
85
+ }
86
+
87
+ except TwilioRestException as e:
88
+ return self._handle_error(e)
89
+
90
+ def _handle_error(self, error: TwilioRestException) -> dict:
91
+ """Handle Twilio-specific errors."""
92
+ error_handlers = {
93
+ 21610: "Recipient has opted out. They must reply START.",
94
+ 21614: "Invalid 'To' phone number format.",
95
+ 21211: "'From' phone number is not valid.",
96
+ 30003: "Phone is unreachable (off, airplane mode, no signal).",
97
+ 30005: "Unknown destination (invalid number or landline).",
98
+ 30006: "Landline or unreachable carrier.",
99
+ 30429: "Rate limit exceeded. Implement exponential backoff.",
100
+ }
101
+
102
+ return {
103
+ "success": False,
104
+ "error_code": error.code,
105
+ "error": error_handlers.get(error.code, error.msg),
106
+ "details": str(error)
107
+ }
108
+
109
+ # Usage
110
+ sms = TwilioSMS()
111
+ result = sms.send_sms(
112
+ to="+14155551234",
113
+ body="Your order #1234 has shipped!",
114
+ status_callback="https://your-app.com/webhooks/twilio/status"
115
+ )
116
+
117
+ ### Anti_patterns
118
+
119
+ - Not validating E.164 format before sending
120
+ - Hardcoding Twilio credentials in code
121
+ - Ignoring delivery status callbacks
122
+ - Not handling the opted-out (21610) error
123
+
124
+ ### Twilio Verify Pattern (2FA/OTP)
125
+
126
+ Use Twilio Verify for phone number verification and 2FA.
127
+ Handles code generation, delivery, rate limiting, and fraud prevention.
128
+
129
+ Key benefits over DIY OTP:
130
+ - Twilio manages code generation and expiration
131
+ - Built-in fraud prevention (saved customers $82M+ blocking 747M attempts)
132
+ - Handles rate limiting automatically
133
+ - Multi-channel: SMS, Voice, Email, Push, WhatsApp
134
+
135
+ Google found SMS 2FA blocks "100% of automated bots, 96% of bulk
136
+ phishing attacks, and 76% of targeted attacks."
137
+
138
+ **When to use**: User phone number verification at signup,Two-factor authentication (2FA),Password reset verification,High-value transaction confirmation
139
+
140
+ from twilio.rest import Client
141
+ from twilio.base.exceptions import TwilioRestException
142
+ import os
143
+ from enum import Enum
144
+ from typing import Optional
145
+
146
+ class VerifyChannel(Enum):
147
+ SMS = "sms"
148
+ CALL = "call"
149
+ EMAIL = "email"
150
+ WHATSAPP = "whatsapp"
151
+
152
+ class TwilioVerify:
153
+ """
154
+ Phone verification with Twilio Verify.
155
+ Never store OTP codes - Twilio handles it.
156
+ """
157
+
158
+ def __init__(self, verify_service_sid: str = None):
159
+ self.client = Client(
160
+ os.environ["TWILIO_ACCOUNT_SID"],
161
+ os.environ["TWILIO_AUTH_TOKEN"]
162
+ )
163
+ # Create a Verify Service in Twilio Console first
164
+ self.service_sid = verify_service_sid or os.environ["TWILIO_VERIFY_SID"]
165
+
166
+ def send_verification(
167
+ self,
168
+ to: str,
169
+ channel: VerifyChannel = VerifyChannel.SMS,
170
+ locale: str = "en"
171
+ ) -> dict:
172
+ """
173
+ Send verification code to phone/email.
174
+
175
+ Args:
176
+ to: Phone number (E.164) or email
177
+ channel: SMS, call, email, or whatsapp
178
+ locale: Language code for message
179
+
180
+ Returns:
181
+ Verification status
182
+ """
183
+ try:
184
+ verification = self.client.verify \
185
+ .v2 \
186
+ .services(self.service_sid) \
187
+ .verifications \
188
+ .create(
189
+ to=to,
190
+ channel=channel.value,
191
+ locale=locale
192
+ )
193
+
194
+ return {
195
+ "success": True,
196
+ "status": verification.status, # "pending"
197
+ "channel": channel.value,
198
+ "valid": verification.valid
199
+ }
200
+
201
+ except TwilioRestException as e:
202
+ return self._handle_verify_error(e)
203
+
204
+ def check_verification(self, to: str, code: str) -> dict:
205
+ """
206
+ Check if verification code is correct.
207
+
208
+ Args:
209
+ to: Phone number or email that received code
210
+ code: The code entered by user
211
+
212
+ Returns:
213
+ Verification result
214
+ """
215
+ try:
216
+ check = self.client.verify \
217
+ .v2 \
218
+ .services(self.service_sid) \
219
+ .verification_checks \
220
+ .create(
221
+ to=to,
222
+ code=code
223
+ )
224
+
225
+ return {
226
+ "success": True,
227
+ "valid": check.status == "approved",
228
+ "status": check.status # "approved" or "pending"
229
+ }
230
+
231
+ except TwilioRestException as e:
232
+ # Code was wrong or expired
233
+ return {
234
+ "success": False,
235
+ "valid": False,
236
+ "error": str(e)
237
+ }
238
+
239
+ def _handle_verify_error(self, error: TwilioRestException) -> dict:
240
+ """Handle Verify-specific errors."""
241
+ error_handlers = {
242
+ 60200: "Invalid phone number format",
243
+ 60203: "Max send attempts reached for this number",
244
+ 60205: "Service not found - check VERIFY_SID",
245
+ 60223: "Failed to create verification - carrier rejected",
246
+ }
247
+
248
+ return {
249
+ "success": False,
250
+ "error_code": error.code,
251
+ "error": error_handlers.get(error.code, error.msg)
252
+ }
253
+
254
+ # Usage Example - Signup Flow
255
+ verify = TwilioVerify()
256
+
257
+ # Step 1: User enters phone number
258
+ result = verify.send_verification("+14155551234", VerifyChannel.SMS)
259
+ if result["success"]:
260
+ print("Code sent! Check your phone.")
261
+
262
+ # Step 2: User enters the code they received
263
+ code = "123456" # From user input
264
+ check = verify.check_verification("+14155551234", code)
265
+
266
+ if check["valid"]:
267
+ print("Phone verified! Create account.")
268
+ else:
269
+ print("Invalid code. Try again.")
270
+
271
+ # Best Practice: Offer voice fallback
272
+ async def verify_with_fallback(phone: str, max_attempts: int = 3):
273
+ """Verify with voice fallback if SMS fails."""
274
+ for attempt in range(max_attempts):
275
+ channel = VerifyChannel.SMS if attempt == 0 else VerifyChannel.CALL
276
+ result = verify.send_verification(phone, channel)
277
+
278
+ if result["success"]:
279
+ return result
280
+
281
+ # If SMS failed, wait and try voice
282
+ if channel == VerifyChannel.SMS:
283
+ await asyncio.sleep(30)
284
+ continue
285
+
286
+ return {"success": False, "error": "All verification attempts failed"}
287
+
288
+ ### Anti_patterns
289
+
290
+ - Storing OTP codes in your database (Twilio handles this)
291
+ - Not implementing rate limiting on your verify endpoint
292
+ - Using same-code retries (let Verify generate new codes)
293
+ - No fallback channel when SMS fails
294
+
295
+ ### TwiML IVR Pattern
296
+
297
+ Build Interactive Voice Response (IVR) systems using TwiML.
298
+ TwiML (Twilio Markup Language) is XML that tells Twilio what to do
299
+ when receiving calls.
300
+
301
+ Core TwiML verbs:
302
+ - <Say>: Text-to-speech
303
+ - <Play>: Play audio file
304
+ - <Gather>: Collect keypad/speech input
305
+ - <Dial>: Connect to another number
306
+ - <Record>: Record caller's voice
307
+ - <Redirect>: Move to another TwiML endpoint
308
+
309
+ Key insight: Twilio makes HTTP request to your webhook, you return
310
+ TwiML, Twilio executes it. Stateless, so use URL params or sessions.
311
+
312
+ **When to use**: Phone menu systems (press 1 for sales...),Automated customer support,Appointment reminders with confirmation,Voicemail systems
313
+
314
+ from flask import Flask, request, Response
315
+ from twilio.twiml.voice_response import VoiceResponse, Gather
316
+ from twilio.request_validator import RequestValidator
317
+ import os
318
+
319
+ app = Flask(__name__)
320
+
321
+ def validate_twilio_request(f):
322
+ """Decorator to validate requests are from Twilio."""
323
+ def wrapper(*args, **kwargs):
324
+ validator = RequestValidator(os.environ["TWILIO_AUTH_TOKEN"])
325
+
326
+ # Get request details
327
+ url = request.url
328
+ params = request.form.to_dict()
329
+ signature = request.headers.get("X-Twilio-Signature", "")
330
+
331
+ if not validator.validate(url, params, signature):
332
+ return "Invalid request", 403
333
+
334
+ return f(*args, **kwargs)
335
+ wrapper.__name__ = f.__name__
336
+ return wrapper
337
+
338
+ @app.route("/voice/incoming", methods=["POST"])
339
+ @validate_twilio_request
340
+ def incoming_call():
341
+ """Handle incoming call with IVR menu."""
342
+ response = VoiceResponse()
343
+
344
+ # Gather digits with timeout
345
+ gather = Gather(
346
+ num_digits=1,
347
+ action="/voice/menu-selection",
348
+ method="POST",
349
+ timeout=5
350
+ )
351
+ gather.say(
352
+ "Welcome to Acme Corp. "
353
+ "Press 1 for sales. "
354
+ "Press 2 for support. "
355
+ "Press 3 to leave a message."
356
+ )
357
+ response.append(gather)
358
+
359
+ # If no input, repeat
360
+ response.redirect("/voice/incoming")
361
+
362
+ return Response(str(response), mimetype="text/xml")
363
+
364
+ @app.route("/voice/menu-selection", methods=["POST"])
365
+ @validate_twilio_request
366
+ def menu_selection():
367
+ """Route based on menu selection."""
368
+ response = VoiceResponse()
369
+ digit = request.form.get("Digits", "")
370
+
371
+ if digit == "1":
372
+ # Transfer to sales
373
+ response.say("Connecting you to sales.")
374
+ response.dial(os.environ["SALES_PHONE"])
375
+
376
+ elif digit == "2":
377
+ # Transfer to support
378
+ response.say("Connecting you to support.")
379
+ response.dial(os.environ["SUPPORT_PHONE"])
380
+
381
+ elif digit == "3":
382
+ # Voicemail
383
+ response.say("Please leave a message after the beep.")
384
+ response.record(
385
+ action="/voice/voicemail-saved",
386
+ max_length=120,
387
+ transcribe=True,
388
+ transcribe_callback="/voice/transcription"
389
+ )
390
+
391
+ else:
392
+ response.say("Invalid selection.")
393
+ response.redirect("/voice/incoming")
394
+
395
+ return Response(str(response), mimetype="text/xml")
396
+
397
+ @app.route("/voice/voicemail-saved", methods=["POST"])
398
+ @validate_twilio_request
399
+ def voicemail_saved():
400
+ """Handle saved voicemail."""
401
+ response = VoiceResponse()
402
+
403
+ recording_url = request.form.get("RecordingUrl")
404
+ recording_sid = request.form.get("RecordingSid")
405
+
406
+ # Save to database, notify team, etc.
407
+ print(f"Voicemail saved: {recording_url}")
408
+
409
+ response.say("Thank you. Goodbye.")
410
+ response.hangup()
411
+
412
+ return Response(str(response), mimetype="text/xml")
413
+
414
+ @app.route("/voice/transcription", methods=["POST"])
415
+ @validate_twilio_request
416
+ def transcription_callback():
417
+ """Handle voicemail transcription."""
418
+ transcription = request.form.get("TranscriptionText")
419
+ recording_sid = request.form.get("RecordingSid")
420
+
421
+ # Save transcription, send to Slack, etc.
422
+ print(f"Transcription: {transcription}")
423
+
424
+ return "", 200
425
+
426
+ # Outbound call example
427
+ from twilio.rest import Client
428
+
429
+ def make_outbound_call(to: str, message: str):
430
+ """Make outbound call with custom TwiML."""
431
+ client = Client(
432
+ os.environ["TWILIO_ACCOUNT_SID"],
433
+ os.environ["TWILIO_AUTH_TOKEN"]
434
+ )
435
+
436
+ # TwiML Bin URL or your endpoint
437
+ call = client.calls.create(
438
+ to=to,
439
+ from_=os.environ["TWILIO_PHONE_NUMBER"],
440
+ url="https://your-app.com/voice/outbound-message",
441
+ status_callback="https://your-app.com/voice/status"
442
+ )
443
+
444
+ return call.sid
445
+
446
+ if __name__ == "__main__":
447
+ app.run(debug=True)
448
+
449
+ ### Anti_patterns
450
+
451
+ - Not validating X-Twilio-Signature (security risk)
452
+ - Returning non-XML responses to Twilio
453
+ - Not handling timeout/no-input cases
454
+ - Hardcoding phone numbers in TwiML
455
+
456
+ ### WhatsApp Business API Pattern
457
+
458
+ Send and receive WhatsApp messages via Twilio API.
459
+ Uses the same Twilio Messages API as SMS with minor changes.
460
+
461
+ Key WhatsApp rules:
462
+ - 24-hour session window: Can only reply within 24 hours of user message
463
+ - Template messages: Pre-approved templates for outside session window
464
+ - Opt-in required: Users must explicitly consent to receive messages
465
+ - Rate limit: 80 MPS default (up to 400 with approval)
466
+ - Character limits: Non-template 1024 chars, templates ~550 chars
467
+
468
+ **When to use**: Customer support with rich media,Order notifications with buttons,Marketing messages (with templates),Interactive flows (booking, surveys)
469
+
470
+ from twilio.rest import Client
471
+ from twilio.base.exceptions import TwilioRestException
472
+ import os
473
+ from datetime import datetime, timedelta
474
+ from typing import Optional
475
+
476
+ class TwilioWhatsApp:
477
+ """
478
+ WhatsApp Business API via Twilio.
479
+ Handles session windows and template messages.
480
+ """
481
+
482
+ def __init__(self):
483
+ self.client = Client(
484
+ os.environ["TWILIO_ACCOUNT_SID"],
485
+ os.environ["TWILIO_AUTH_TOKEN"]
486
+ )
487
+ # WhatsApp number format: whatsapp:+14155551234
488
+ self.from_number = os.environ["TWILIO_WHATSAPP_NUMBER"]
489
+
490
+ def send_message(
491
+ self,
492
+ to: str,
493
+ body: str,
494
+ media_url: Optional[str] = None
495
+ ) -> dict:
496
+ """
497
+ Send WhatsApp message within 24-hour session.
498
+
499
+ Args:
500
+ to: Recipient number (E.164, without whatsapp: prefix)
501
+ body: Message text (max 1024 chars for non-template)
502
+ media_url: Optional image/document URL
503
+
504
+ Returns:
505
+ Message result
506
+ """
507
+ # Format for WhatsApp
508
+ to_whatsapp = f"whatsapp:{to}"
509
+ from_whatsapp = f"whatsapp:{self.from_number}"
510
+
511
+ try:
512
+ message_params = {
513
+ "to": to_whatsapp,
514
+ "from_": from_whatsapp,
515
+ "body": body
516
+ }
517
+
518
+ if media_url:
519
+ message_params["media_url"] = [media_url]
520
+
521
+ message = self.client.messages.create(**message_params)
522
+
523
+ return {
524
+ "success": True,
525
+ "message_sid": message.sid,
526
+ "status": message.status
527
+ }
528
+
529
+ except TwilioRestException as e:
530
+ return self._handle_whatsapp_error(e)
531
+
532
+ def send_template_message(
533
+ self,
534
+ to: str,
535
+ content_sid: str,
536
+ content_variables: dict
537
+ ) -> dict:
538
+ """
539
+ Send pre-approved template message.
540
+ Use this for messages outside 24-hour window.
541
+
542
+ Content templates must be approved by WhatsApp first.
543
+ Create them in Twilio Console > Content Template Builder.
544
+ """
545
+ to_whatsapp = f"whatsapp:{to}"
546
+ from_whatsapp = f"whatsapp:{self.from_number}"
547
+
548
+ try:
549
+ message = self.client.messages.create(
550
+ to=to_whatsapp,
551
+ from_=from_whatsapp,
552
+ content_sid=content_sid,
553
+ content_variables=content_variables
554
+ )
555
+
556
+ return {
557
+ "success": True,
558
+ "message_sid": message.sid,
559
+ "template": True
560
+ }
561
+
562
+ except TwilioRestException as e:
563
+ return self._handle_whatsapp_error(e)
564
+
565
+ def _handle_whatsapp_error(self, error: TwilioRestException) -> dict:
566
+ """Handle WhatsApp-specific errors."""
567
+ error_handlers = {
568
+ 63016: "Outside 24-hour window. Use template message.",
569
+ 63018: "Template not approved or doesn't exist.",
570
+ 63025: "Too many template messages sent to this user.",
571
+ 63038: "Rate limit exceeded for WhatsApp.",
572
+ }
573
+
574
+ return {
575
+ "success": False,
576
+ "error_code": error.code,
577
+ "error": error_handlers.get(error.code, error.msg)
578
+ }
579
+
580
+ # Flask webhook for incoming WhatsApp messages
581
+ from flask import Flask, request
582
+
583
+ app = Flask(__name__)
584
+
585
+ @app.route("/webhooks/whatsapp", methods=["POST"])
586
+ def whatsapp_webhook():
587
+ """Handle incoming WhatsApp messages."""
588
+ from_number = request.form.get("From", "").replace("whatsapp:", "")
589
+ body = request.form.get("Body", "")
590
+ media_url = request.form.get("MediaUrl0") # First attachment
591
+
592
+ # Track session start (24-hour window begins now)
593
+ session_start = datetime.now()
594
+ session_expires = session_start + timedelta(hours=24)
595
+
596
+ # Store in database for session tracking
597
+ # user_sessions[from_number] = session_expires
598
+
599
+ # Process message and respond
600
+ response = process_whatsapp_message(from_number, body, media_url)
601
+
602
+ # Reply within session
603
+ whatsapp = TwilioWhatsApp()
604
+ whatsapp.send_message(from_number, response)
605
+
606
+ return "", 200
607
+
608
+ def process_whatsapp_message(phone: str, text: str, media: str) -> str:
609
+ """Process incoming message and generate response."""
610
+ text_lower = text.lower()
611
+
612
+ if "order status" in text_lower:
613
+ return "Your order #1234 is out for delivery!"
614
+ elif "support" in text_lower:
615
+ return "A support agent will contact you shortly."
616
+ else:
617
+ return "Thanks for your message! Reply with 'order status' or 'support'."
618
+
619
+ # Send typing indicator (2025 feature)
620
+ def send_typing_indicator(to: str):
621
+ """Let user know you're typing."""
622
+ # Requires Senders API setup
623
+ pass
624
+
625
+ ### Anti_patterns
626
+
627
+ - Sending non-template messages outside 24-hour window
628
+ - Not tracking session windows per user
629
+ - Exceeding 1024 char limit for session messages
630
+ - Not handling template rejection errors
631
+
632
+ ### Webhook Handler Pattern
633
+
634
+ Handle Twilio webhooks for delivery status, incoming messages,
635
+ and call events. Critical: always validate X-Twilio-Signature.
636
+
637
+ Twilio sends webhooks for:
638
+ - Message status updates (queued → sent → delivered/failed)
639
+ - Incoming SMS/WhatsApp messages
640
+ - Call events (initiated, ringing, answered, completed)
641
+ - Recording/transcription ready
642
+
643
+ **When to use**: Tracking message delivery status,Receiving incoming messages,Call analytics and logging,Voicemail transcription processing
644
+
645
+ from flask import Flask, request, abort
646
+ from twilio.request_validator import RequestValidator
647
+ from functools import wraps
648
+ import os
649
+ import logging
650
+
651
+ app = Flask(__name__)
652
+ logger = logging.getLogger(__name__)
653
+
654
+ def validate_twilio_signature(f):
655
+ """
656
+ Validate that request came from Twilio.
657
+ CRITICAL: Always use this for webhook endpoints.
658
+ """
659
+ @wraps(f)
660
+ def wrapper(*args, **kwargs):
661
+ validator = RequestValidator(os.environ["TWILIO_AUTH_TOKEN"])
662
+
663
+ # Build full URL (including query params)
664
+ url = request.url
665
+
666
+ # Get POST body as dict
667
+ params = request.form.to_dict()
668
+
669
+ # Get signature from header
670
+ signature = request.headers.get("X-Twilio-Signature", "")
671
+
672
+ if not validator.validate(url, params, signature):
673
+ logger.warning(f"Invalid Twilio signature from {request.remote_addr}")
674
+ abort(403)
675
+
676
+ return f(*args, **kwargs)
677
+ return wrapper
678
+
679
+ @app.route("/webhooks/twilio/sms/status", methods=["POST"])
680
+ @validate_twilio_signature
681
+ def sms_status_callback():
682
+ """
683
+ Handle SMS delivery status updates.
684
+
685
+ Status progression: queued → sending → sent → delivered
686
+ Or: queued → sending → undelivered/failed
687
+ """
688
+ message_sid = request.form.get("MessageSid")
689
+ status = request.form.get("MessageStatus")
690
+ error_code = request.form.get("ErrorCode")
691
+ error_message = request.form.get("ErrorMessage")
692
+
693
+ logger.info(f"SMS {message_sid}: {status}")
694
+
695
+ if status == "delivered":
696
+ # Message successfully delivered
697
+ update_message_status(message_sid, "delivered")
698
+
699
+ elif status == "undelivered":
700
+ # Carrier rejected or other failure
701
+ logger.error(f"SMS failed: {error_code} - {error_message}")
702
+ handle_failed_message(message_sid, error_code, error_message)
703
+
704
+ elif status == "failed":
705
+ # Twilio couldn't send
706
+ logger.error(f"SMS send failed: {error_code}")
707
+ handle_failed_message(message_sid, error_code, error_message)
708
+
709
+ return "", 200
710
+
711
+ @app.route("/webhooks/twilio/sms/incoming", methods=["POST"])
712
+ @validate_twilio_signature
713
+ def incoming_sms():
714
+ """
715
+ Handle incoming SMS messages.
716
+ """
717
+ from_number = request.form.get("From")
718
+ to_number = request.form.get("To")
719
+ body = request.form.get("Body")
720
+ num_media = int(request.form.get("NumMedia", 0))
721
+
722
+ # Handle media attachments
723
+ media_urls = []
724
+ for i in range(num_media):
725
+ media_urls.append(request.form.get(f"MediaUrl{i}"))
726
+
727
+ # Check for opt-out keywords
728
+ if body.strip().upper() in ["STOP", "UNSUBSCRIBE", "CANCEL"]:
729
+ handle_opt_out(from_number)
730
+ return "", 200
731
+
732
+ # Check for opt-in keywords
733
+ if body.strip().upper() in ["START", "SUBSCRIBE"]:
734
+ handle_opt_in(from_number)
735
+ return "", 200
736
+
737
+ # Process message
738
+ process_incoming_sms(from_number, body, media_urls)
739
+
740
+ return "", 200
741
+
742
+ @app.route("/webhooks/twilio/voice/status", methods=["POST"])
743
+ @validate_twilio_signature
744
+ def voice_status_callback():
745
+ """Handle call status updates."""
746
+ call_sid = request.form.get("CallSid")
747
+ status = request.form.get("CallStatus")
748
+ duration = request.form.get("CallDuration")
749
+ direction = request.form.get("Direction")
750
+
751
+ # Call statuses: initiated, ringing, in-progress, completed, busy, no-answer, canceled, failed
752
+
753
+ logger.info(f"Call {call_sid}: {status} ({duration}s)")
754
+
755
+ if status == "completed":
756
+ # Call ended normally
757
+ log_call_completion(call_sid, duration)
758
+
759
+ elif status in ["busy", "no-answer", "canceled", "failed"]:
760
+ # Call didn't connect
761
+ handle_failed_call(call_sid, status)
762
+
763
+ return "", 200
764
+
765
+ # Helper functions
766
+ def update_message_status(message_sid: str, status: str):
767
+ """Update message status in database."""
768
+ pass
769
+
770
+ def handle_failed_message(message_sid: str, error_code: str, error_msg: str):
771
+ """Handle failed message delivery."""
772
+ # Notify team, retry logic, etc.
773
+ pass
774
+
775
+ def handle_opt_out(phone: str):
776
+ """Handle user opting out of messages."""
777
+ # Mark user as opted out in database
778
+ # IMPORTANT: Must respect this!
779
+ pass
780
+
781
+ def handle_opt_in(phone: str):
782
+ """Handle user opting back in."""
783
+ pass
784
+
785
+ def process_incoming_sms(from_phone: str, body: str, media: list):
786
+ """Process incoming SMS message."""
787
+ pass
788
+
789
+ def log_call_completion(call_sid: str, duration: str):
790
+ """Log completed call."""
791
+ pass
792
+
793
+ def handle_failed_call(call_sid: str, status: str):
794
+ """Handle call that didn't connect."""
795
+ pass
796
+
797
+ ### Anti_patterns
798
+
799
+ - Not validating X-Twilio-Signature
800
+ - Exposing webhook URLs without authentication
801
+ - Not handling opt-out keywords (STOP)
802
+ - Blocking webhook response (should be fast)
803
+
804
+ ### Rate Limit and Retry Pattern
805
+
806
+ Handle Twilio rate limits and implement proper retry logic.
807
+
808
+ Default limits:
809
+ - SMS: 80 messages per second (MPS)
810
+ - Voice: Varies by number type and region
811
+ - API calls: 100 requests per second
812
+
813
+ Error codes:
814
+ - 20429: Voice API rate limit
815
+ - 30429: Messaging API rate limit
816
+
817
+ **When to use**: High-volume messaging applications,Bulk SMS campaigns,Automated calling systems
818
+
819
+ import time
820
+ import random
821
+ from functools import wraps
822
+ from twilio.base.exceptions import TwilioRestException
823
+ import logging
824
+
825
+ logger = logging.getLogger(__name__)
826
+
827
+ def exponential_backoff_retry(
828
+ max_retries: int = 5,
829
+ base_delay: float = 1.0,
830
+ max_delay: float = 60.0,
831
+ rate_limit_codes: list = [20429, 30429]
832
+ ):
833
+ """
834
+ Decorator for exponential backoff retry on rate limits.
835
+
836
+ Uses jitter to prevent thundering herd.
837
+ """
838
+ def decorator(func):
839
+ @wraps(func)
840
+ def wrapper(*args, **kwargs):
841
+ last_exception = None
842
+
843
+ for attempt in range(max_retries + 1):
844
+ try:
845
+ return func(*args, **kwargs)
846
+
847
+ except TwilioRestException as e:
848
+ last_exception = e
849
+
850
+ # Only retry on rate limit errors
851
+ if e.code not in rate_limit_codes:
852
+ raise
853
+
854
+ if attempt == max_retries:
855
+ logger.error(f"Max retries exceeded: {e}")
856
+ raise
857
+
858
+ # Calculate delay with jitter
859
+ delay = min(
860
+ base_delay * (2 ** attempt) + random.uniform(0, 1),
861
+ max_delay
862
+ )
863
+
864
+ logger.warning(
865
+ f"Rate limited (attempt {attempt + 1}/{max_retries}). "
866
+ f"Retrying in {delay:.1f}s"
867
+ )
868
+ time.sleep(delay)
869
+
870
+ raise last_exception
871
+
872
+ return wrapper
873
+ return decorator
874
+
875
+ # Usage
876
+ from twilio.rest import Client
877
+
878
+ client = Client(account_sid, auth_token)
879
+
880
+ @exponential_backoff_retry(max_retries=5)
881
+ def send_sms(to: str, body: str):
882
+ return client.messages.create(
883
+ to=to,
884
+ from_=from_number,
885
+ body=body
886
+ )
887
+
888
+ # Bulk sending with rate limiting
889
+ import asyncio
890
+ from asyncio import Semaphore
891
+
892
+ class RateLimitedSender:
893
+ """
894
+ Send messages with built-in rate limiting.
895
+ Stays under Twilio's 80 MPS limit.
896
+ """
897
+
898
+ def __init__(self, client, from_number: str, mps: int = 50):
899
+ self.client = client
900
+ self.from_number = from_number
901
+ self.mps = mps
902
+ self.semaphore = Semaphore(mps)
903
+
904
+ async def send_bulk(self, messages: list[dict]) -> list[dict]:
905
+ """
906
+ Send messages with rate limiting.
907
+
908
+ Args:
909
+ messages: List of {"to": "+1...", "body": "..."}
910
+
911
+ Returns:
912
+ Results for each message
913
+ """
914
+ tasks = [
915
+ self._send_with_limit(msg["to"], msg["body"])
916
+ for msg in messages
917
+ ]
918
+
919
+ return await asyncio.gather(*tasks, return_exceptions=True)
920
+
921
+ async def _send_with_limit(self, to: str, body: str):
922
+ """Send single message with semaphore-based rate limit."""
923
+ async with self.semaphore:
924
+ try:
925
+ # Use sync client in thread pool
926
+ loop = asyncio.get_event_loop()
927
+ result = await loop.run_in_executor(
928
+ None,
929
+ lambda: self.client.messages.create(
930
+ to=to,
931
+ from_=self.from_number,
932
+ body=body
933
+ )
934
+ )
935
+ return {"success": True, "sid": result.sid, "to": to}
936
+
937
+ except TwilioRestException as e:
938
+ return {"success": False, "error": str(e), "to": to}
939
+
940
+ finally:
941
+ # Delay to maintain rate limit
942
+ await asyncio.sleep(1 / self.mps)
943
+
944
+ # Usage
945
+ async def send_campaign():
946
+ sender = RateLimitedSender(client, from_number, mps=50)
947
+
948
+ messages = [
949
+ {"to": "+14155551234", "body": "Hello!"},
950
+ {"to": "+14155555678", "body": "Hello!"},
951
+ # ... thousands of messages
952
+ ]
953
+
954
+ results = await sender.send_bulk(messages)
955
+
956
+ successful = sum(1 for r in results if r.get("success"))
957
+ print(f"Sent {successful}/{len(messages)} messages")
958
+
959
+ ### Anti_patterns
960
+
961
+ - Retrying immediately without backoff
962
+ - No jitter causing thundering herd
963
+ - Retrying non-rate-limit errors
964
+ - Exceeding Twilio's MPS limit
965
+
966
+
967
+ ## Sharp Edges
968
+
969
+ ### Sending to Users Who Opted Out (Error 21610)
970
+
971
+ Severity: HIGH
972
+
973
+ Situation: Sending SMS to a phone number
974
+
975
+ Symptoms:
976
+ Message fails with error code 21610. Twilio rejects the message.
977
+ User never receives the SMS. Same number worked before.
978
+
979
+ Why this breaks:
980
+ The recipient replied "STOP" (or UNSUBSCRIBE, CANCEL, etc.) to a previous
981
+ message from your number. Twilio automatically honors opt-outs and blocks
982
+ further messages to that number from your account.
983
+
984
+ This is legally required for US messaging (TCPA, CTIA guidelines).
985
+ You cannot override this - the user must reply "START" to opt back in.
986
+
987
+ Recommended fix:
988
+
989
+
990
+ ## Track opt-out status in your database
991
+
992
+ ```python
993
+ # In your webhook handler
994
+ @app.route("/webhooks/sms/incoming", methods=["POST"])
995
+ def incoming_sms():
996
+ from_number = request.form.get("From")
997
+ body = request.form.get("Body", "").strip().upper()
998
+
999
+ # Standard opt-out keywords
1000
+ if body in ["STOP", "UNSUBSCRIBE", "CANCEL", "END", "QUIT"]:
1001
+ mark_user_opted_out(from_number)
1002
+ return "", 200
1003
+
1004
+ # Standard opt-in keywords
1005
+ if body in ["START", "SUBSCRIBE", "YES", "UNSTOP"]:
1006
+ mark_user_opted_in(from_number)
1007
+ return "", 200
1008
+
1009
+ # Process other messages...
1010
+
1011
+ # Before sending
1012
+ def send_sms_safe(to: str, body: str):
1013
+ if is_user_opted_out(to):
1014
+ return {"success": False, "error": "User has opted out"}
1015
+
1016
+ try:
1017
+ return send_sms(to, body)
1018
+ except TwilioRestException as e:
1019
+ if e.code == 21610:
1020
+ # Update database - they opted out via carrier
1021
+ mark_user_opted_out(to)
1022
+ raise
1023
+ ```
1024
+
1025
+
1026
+ ## Include opt-out instructions
1027
+ Add "Reply STOP to unsubscribe" to marketing messages.
1028
+
1029
+ ### Phone Unreachable But Valid (Error 30003)
1030
+
1031
+ Severity: MEDIUM
1032
+
1033
+ Situation: Sending SMS to a mobile number
1034
+
1035
+ Symptoms:
1036
+ Message fails with error 30003. Number was valid and worked before.
1037
+ Intermittent - sometimes works, sometimes fails.
1038
+
1039
+ Why this breaks:
1040
+ Error 30003 means "Unreachable destination handset." The phone exists but
1041
+ can't receive messages right now. Common causes:
1042
+ - Phone powered off
1043
+ - Airplane mode
1044
+ - Out of signal range
1045
+ - Carrier network issues
1046
+ - Phone storage full
1047
+
1048
+ Unlike 30006 (permanent unreachable), 30003 is usually temporary.
1049
+
1050
+ Recommended fix:
1051
+
1052
+
1053
+ ## Implement retry logic for transient failures
1054
+
1055
+ ```python
1056
+ TRANSIENT_ERRORS = [30003, 30008, 30009] # Retriable errors
1057
+
1058
+ async def send_with_retry(to: str, body: str, max_retries: int = 3):
1059
+ for attempt in range(max_retries):
1060
+ result = send_sms(to, body)
1061
+
1062
+ if result["success"]:
1063
+ return result
1064
+
1065
+ if result.get("error_code") not in TRANSIENT_ERRORS:
1066
+ # Don't retry permanent failures
1067
+ return result
1068
+
1069
+ # Exponential backoff: 5min, 15min, 45min
1070
+ delay = 300 * (3 ** attempt)
1071
+ await asyncio.sleep(delay)
1072
+
1073
+ return {"success": False, "error": "Max retries exceeded"}
1074
+ ```
1075
+
1076
+
1077
+ ## Provide fallback channel
1078
+
1079
+ ```python
1080
+ async def notify_user(user, message):
1081
+ # Try SMS first
1082
+ result = await send_sms(user.phone, message)
1083
+
1084
+ if result.get("error_code") == 30003:
1085
+ # Phone unreachable - try email
1086
+ await send_email(user.email, message)
1087
+ return {"channel": "email", "status": "sent"}
1088
+
1089
+ return {"channel": "sms", "status": result["status"]}
1090
+ ```
1091
+
1092
+ ### Messages Blocked by Carrier Filtering
1093
+
1094
+ Severity: HIGH
1095
+
1096
+ Situation: Sending SMS to US phone numbers
1097
+
1098
+ Symptoms:
1099
+ Messages show as "sent" but never "delivered." No error from Twilio.
1100
+ Users say they never received the message. Pattern in specific carriers
1101
+ or message content.
1102
+
1103
+ Why this breaks:
1104
+ US carriers (Verizon, AT&T, T-Mobile) aggressively filter SMS for spam.
1105
+ Your message might be blocked if:
1106
+ - Contains URLs (especially short URLs or unknown domains)
1107
+ - Looks like phishing (urgent, account, verify, click now)
1108
+ - High volume from same number
1109
+ - Not using registered A2P 10DLC
1110
+ - Low sender reputation
1111
+
1112
+ Carriers don't tell Twilio why messages are filtered - they just
1113
+ silently drop them.
1114
+
1115
+ Recommended fix:
1116
+
1117
+
1118
+ ## Register for A2P 10DLC (US requirement)
1119
+
1120
+ ```
1121
+ 1. Go to Twilio Console > Messaging > Trust Hub
1122
+ 2. Register your business brand
1123
+ 3. Create a messaging campaign (describes use case)
1124
+ 4. Wait for approval (can take days)
1125
+ 5. Associate phone numbers with campaign
1126
+ ```
1127
+
1128
+
1129
+ ## Message content best practices
1130
+
1131
+ ```python
1132
+ def sanitize_message(text: str) -> str:
1133
+ """Make message less likely to be filtered."""
1134
+ # Avoid URL shorteners - use full domain
1135
+ # Avoid spam trigger words
1136
+ # Keep it conversational, not promotional
1137
+
1138
+ # Example: Instead of this
1139
+ bad = "URGENT: Verify your account now! Click: bit.ly/abc"
1140
+
1141
+ # Do this
1142
+ good = "Hi! Your order #1234 is ready. Questions? Reply here."
1143
+
1144
+ return text
1145
+
1146
+ # Use toll-free or short code for high volume
1147
+ # 10DLC is for <10K msg/day
1148
+ # Toll-free: up to 10K msg/day
1149
+ # Short code: 100K+ msg/day
1150
+ ```
1151
+
1152
+
1153
+ ## Monitor delivery rates
1154
+
1155
+ ```python
1156
+ def track_delivery_rate():
1157
+ sent = get_messages_with_status("sent")
1158
+ delivered = get_messages_with_status("delivered")
1159
+
1160
+ rate = len(delivered) / len(sent) * 100
1161
+
1162
+ if rate < 95:
1163
+ alert_team(f"Delivery rate dropped to {rate}%")
1164
+ ```
1165
+
1166
+ ### Not Validating Webhook Signatures
1167
+
1168
+ Severity: CRITICAL
1169
+
1170
+ Situation: Receiving Twilio webhook callbacks
1171
+
1172
+ Symptoms:
1173
+ Attackers send fake webhooks to your endpoint. Fraudulent transactions
1174
+ processed. Spoofed incoming messages trigger actions.
1175
+
1176
+ Why this breaks:
1177
+ Twilio signs all webhook requests with X-Twilio-Signature header.
1178
+ If you don't validate this, anyone who knows your webhook URL can
1179
+ send fake requests pretending to be Twilio.
1180
+
1181
+ This can lead to:
1182
+ - Fake message delivery confirmations
1183
+ - Spoofed incoming messages
1184
+ - Fraudulent verification approvals
1185
+
1186
+ Recommended fix:
1187
+
1188
+
1189
+ ## ALWAYS validate the signature
1190
+
1191
+ ```python
1192
+ from twilio.request_validator import RequestValidator
1193
+ from flask import Flask, request, abort
1194
+ from functools import wraps
1195
+ import os
1196
+
1197
+ def require_twilio_signature(f):
1198
+ """Decorator to validate Twilio webhook requests."""
1199
+ @wraps(f)
1200
+ def wrapper(*args, **kwargs):
1201
+ validator = RequestValidator(os.environ["TWILIO_AUTH_TOKEN"])
1202
+
1203
+ # Full URL including query string
1204
+ url = request.url
1205
+
1206
+ # POST body as dict
1207
+ params = request.form.to_dict()
1208
+
1209
+ # Signature header
1210
+ signature = request.headers.get("X-Twilio-Signature", "")
1211
+
1212
+ if not validator.validate(url, params, signature):
1213
+ abort(403)
1214
+
1215
+ return f(*args, **kwargs)
1216
+ return wrapper
1217
+
1218
+ @app.route("/webhooks/twilio", methods=["POST"])
1219
+ @require_twilio_signature # ALWAYS use this
1220
+ def twilio_webhook():
1221
+ # Safe to process
1222
+ pass
1223
+ ```
1224
+
1225
+
1226
+ ## Common validation gotchas
1227
+
1228
+ ```python
1229
+ # URL must match EXACTLY what Twilio called
1230
+ # If behind proxy, you might need:
1231
+ url = request.headers.get("X-Forwarded-Proto", "http") + "://" + \
1232
+ request.headers.get("X-Forwarded-Host", request.host) + \
1233
+ request.path
1234
+
1235
+ # If using ngrok, URL changes each restart
1236
+ # Use consistent URL in production
1237
+ ```
1238
+
1239
+ ### WhatsApp Message Outside 24-Hour Window (Error 63016)
1240
+
1241
+ Severity: HIGH
1242
+
1243
+ Situation: Sending WhatsApp message to a user
1244
+
1245
+ Symptoms:
1246
+ Message fails with error 63016. "Message is outside the allowed window."
1247
+ Template messages work, but regular messages fail.
1248
+
1249
+ Why this breaks:
1250
+ WhatsApp has strict rules about unsolicited messages:
1251
+ - Users must message you first
1252
+ - You can only reply within 24 hours of their last message
1253
+ - After 24 hours, you must use pre-approved template messages
1254
+
1255
+ This prevents spam and maintains WhatsApp's trust as a platform.
1256
+
1257
+ Recommended fix:
1258
+
1259
+
1260
+ ## Track session windows per user
1261
+
1262
+ ```python
1263
+ from datetime import datetime, timedelta
1264
+
1265
+ class WhatsAppSession:
1266
+ def __init__(self, redis_client):
1267
+ self.redis = redis_client
1268
+ self.window_hours = 24
1269
+
1270
+ def start_session(self, phone: str):
1271
+ """Start/refresh 24-hour session on incoming message."""
1272
+ key = f"wa_session:{phone}"
1273
+ expires = datetime.now() + timedelta(hours=self.window_hours)
1274
+ self.redis.set(key, expires.isoformat(), ex=self.window_hours * 3600)
1275
+
1276
+ def can_send_freeform(self, phone: str) -> bool:
1277
+ """Check if we can send non-template message."""
1278
+ key = f"wa_session:{phone}"
1279
+ expires_str = self.redis.get(key)
1280
+
1281
+ if not expires_str:
1282
+ return False
1283
+
1284
+ expires = datetime.fromisoformat(expires_str)
1285
+ return datetime.now() < expires
1286
+
1287
+ def send_message(self, phone: str, body: str, template_sid: str = None):
1288
+ """Send message, using template if outside window."""
1289
+ if self.can_send_freeform(phone):
1290
+ return send_whatsapp_message(phone, body)
1291
+ elif template_sid:
1292
+ return send_whatsapp_template(phone, template_sid)
1293
+ else:
1294
+ return {
1295
+ "success": False,
1296
+ "error": "Outside session window, template required"
1297
+ }
1298
+ ```
1299
+
1300
+
1301
+ ## Incoming message webhook
1302
+
1303
+ ```python
1304
+ @app.route("/webhooks/whatsapp", methods=["POST"])
1305
+ def whatsapp_incoming():
1306
+ from_phone = request.form.get("From").replace("whatsapp:", "")
1307
+
1308
+ # Start/refresh session
1309
+ session.start_session(from_phone)
1310
+
1311
+ # Process message...
1312
+ ```
1313
+
1314
+
1315
+ ## Create approved templates for common messages
1316
+
1317
+ ```
1318
+ 1. Twilio Console > Content Template Builder
1319
+ 2. Create template with {{1}} placeholders
1320
+ 3. Submit for WhatsApp approval (takes 24-48 hours)
1321
+ 4. Use content_sid to send
1322
+ ```
1323
+
1324
+ ### Exposed Account SID or Auth Token
1325
+
1326
+ Severity: CRITICAL
1327
+
1328
+ Situation: Deploying Twilio integration
1329
+
1330
+ Symptoms:
1331
+ Unauthorized charges on Twilio account. Messages sent you didn't send.
1332
+ Phone numbers purchased without authorization.
1333
+
1334
+ Why this breaks:
1335
+ If attackers get your Account SID + Auth Token, they have FULL access
1336
+ to your Twilio account. They can:
1337
+ - Send messages (charging your account)
1338
+ - Buy phone numbers
1339
+ - Access call recordings
1340
+ - Modify your configuration
1341
+
1342
+ Common exposure points:
1343
+ - Hardcoded in source code (pushed to GitHub)
1344
+ - In client-side JavaScript
1345
+ - In Docker images
1346
+ - In logs
1347
+
1348
+ Recommended fix:
1349
+
1350
+
1351
+ ## Never hardcode credentials
1352
+
1353
+ ```python
1354
+ # BAD - never do this
1355
+ client = Client("AC1234...", "abc123...")
1356
+
1357
+ # GOOD - environment variables
1358
+ client = Client(
1359
+ os.environ["TWILIO_ACCOUNT_SID"],
1360
+ os.environ["TWILIO_AUTH_TOKEN"]
1361
+ )
1362
+
1363
+ # GOOD - secrets manager
1364
+ from aws_secretsmanager import get_secret
1365
+ creds = get_secret("twilio-credentials")
1366
+ client = Client(creds["sid"], creds["token"])
1367
+ ```
1368
+
1369
+
1370
+ ## Use API Key instead of Auth Token
1371
+
1372
+ ```python
1373
+ # Auth Token has full account access
1374
+ # API Keys can be scoped and revoked
1375
+
1376
+ # Create API Key in Twilio Console
1377
+ client = Client(
1378
+ os.environ["TWILIO_API_KEY_SID"],
1379
+ os.environ["TWILIO_API_KEY_SECRET"],
1380
+ os.environ["TWILIO_ACCOUNT_SID"]
1381
+ )
1382
+
1383
+ # If compromised, revoke just that key
1384
+ ```
1385
+
1386
+
1387
+ ## Rotate tokens immediately if exposed
1388
+
1389
+ ```
1390
+ 1. Twilio Console > Account > API credentials
1391
+ 2. Rotate Auth Token
1392
+ 3. Update all deployments with new token
1393
+ 4. Review account activity for unauthorized use
1394
+ ```
1395
+
1396
+ ### Verify Rate Limit Exceeded (Error 60203)
1397
+
1398
+ Severity: MEDIUM
1399
+
1400
+ Situation: Sending verification codes
1401
+
1402
+ Symptoms:
1403
+ Verification request fails with error 60203.
1404
+ "Max send attempts reached for this phone number."
1405
+
1406
+ Why this breaks:
1407
+ Twilio Verify has built-in rate limits to prevent abuse:
1408
+ - 5 verification attempts per phone number per service per 10 minutes
1409
+ - Helps prevent SMS pumping fraud
1410
+ - Protects against brute-force attacks
1411
+
1412
+ If users legitimately need more attempts, you may have UX issues.
1413
+
1414
+ Recommended fix:
1415
+
1416
+
1417
+ ## Implement application-level rate limiting too
1418
+
1419
+ ```python
1420
+ from datetime import datetime, timedelta
1421
+ import redis
1422
+
1423
+ class VerifyRateLimiter:
1424
+ def __init__(self, redis_client):
1425
+ self.redis = redis_client
1426
+ # Stricter than Twilio's limit
1427
+ self.max_attempts = 3
1428
+ self.window_minutes = 10
1429
+
1430
+ def can_request(self, phone: str) -> bool:
1431
+ key = f"verify_rate:{phone}"
1432
+ attempts = self.redis.get(key)
1433
+
1434
+ if attempts and int(attempts) >= self.max_attempts:
1435
+ return False
1436
+
1437
+ return True
1438
+
1439
+ def record_attempt(self, phone: str):
1440
+ key = f"verify_rate:{phone}"
1441
+ pipe = self.redis.pipeline()
1442
+ pipe.incr(key)
1443
+ pipe.expire(key, self.window_minutes * 60)
1444
+ pipe.execute()
1445
+
1446
+ def get_wait_time(self, phone: str) -> int:
1447
+ """Return seconds until user can request again."""
1448
+ key = f"verify_rate:{phone}"
1449
+ ttl = self.redis.ttl(key)
1450
+ return max(0, ttl)
1451
+
1452
+ # Usage
1453
+ limiter = VerifyRateLimiter(redis_client)
1454
+
1455
+ @app.route("/verify/send", methods=["POST"])
1456
+ def send_verification():
1457
+ phone = request.json["phone"]
1458
+
1459
+ if not limiter.can_request(phone):
1460
+ wait = limiter.get_wait_time(phone)
1461
+ return {
1462
+ "error": f"Too many attempts. Try again in {wait} seconds."
1463
+ }, 429
1464
+
1465
+ result = twilio_verify.send_verification(phone)
1466
+
1467
+ if result["success"]:
1468
+ limiter.record_attempt(phone)
1469
+
1470
+ return result
1471
+ ```
1472
+
1473
+
1474
+ ## Provide clear user feedback
1475
+
1476
+ ```python
1477
+ # Show remaining attempts
1478
+ # Show countdown timer
1479
+ # Offer alternative (voice call, email)
1480
+ ```
1481
+
1482
+
1483
+ ## Validation Checks
1484
+
1485
+ ### Hardcoded Twilio Credentials
1486
+
1487
+ Severity: ERROR
1488
+
1489
+ Twilio credentials must never be hardcoded
1490
+
1491
+ Message: Hardcoded Twilio SID detected. Use environment variables.
1492
+
1493
+ ### Auth Token in Source Code
1494
+
1495
+ Severity: ERROR
1496
+
1497
+ Auth tokens should be in environment variables
1498
+
1499
+ Message: Hardcoded auth token. Use os.environ['TWILIO_AUTH_TOKEN'].
1500
+
1501
+ ### Webhook Without Signature Validation
1502
+
1503
+ Severity: ERROR
1504
+
1505
+ Twilio webhooks must validate X-Twilio-Signature
1506
+
1507
+ Message: Webhook without signature validation. Add RequestValidator check.
1508
+
1509
+ ### Twilio Credentials in Client-Side Code
1510
+
1511
+ Severity: ERROR
1512
+
1513
+ Never expose Twilio credentials to browsers
1514
+
1515
+ Message: Twilio credentials exposed client-side. Only use server-side.
1516
+
1517
+ ### No E.164 Phone Number Validation
1518
+
1519
+ Severity: WARNING
1520
+
1521
+ Phone numbers should be validated before sending
1522
+
1523
+ Message: Sending to phone without E.164 validation.
1524
+
1525
+ ### Hardcoded Phone Numbers
1526
+
1527
+ Severity: WARNING
1528
+
1529
+ Phone numbers should come from config or database
1530
+
1531
+ Message: Hardcoded phone number. Use config or environment variable.
1532
+
1533
+ ### No Twilio Exception Handling
1534
+
1535
+ Severity: WARNING
1536
+
1537
+ Twilio calls should handle TwilioRestException
1538
+
1539
+ Message: Twilio API call without error handling. Catch TwilioRestException.
1540
+
1541
+ ### Not Handling Specific Error Codes
1542
+
1543
+ Severity: INFO
1544
+
1545
+ Handle common Twilio error codes specifically
1546
+
1547
+ Message: Consider handling specific error codes (21610, 30003, etc.).
1548
+
1549
+ ### No Opt-Out Keyword Handling
1550
+
1551
+ Severity: WARNING
1552
+
1553
+ SMS systems must handle STOP/UNSUBSCRIBE keywords
1554
+
1555
+ Message: No opt-out handling. Check for STOP/UNSUBSCRIBE keywords.
1556
+
1557
+ ### Not Checking Opt-Out Before Sending
1558
+
1559
+ Severity: WARNING
1560
+
1561
+ Check if user has opted out before sending SMS
1562
+
1563
+ Message: Consider checking opt-out status before sending.
1564
+
1565
+
1566
+ ## Collaboration
1567
+
1568
+ ### Delegation Triggers
1569
+
1570
+ - user needs AI voice assistant -> voice-agents (Twilio provides telephony, voice-agents skill for AI conversation)
1571
+ - user needs Slack notifications -> slack-bot-builder (Integrate SMS alerts with Slack notifications)
1572
+ - user needs full auth system -> auth-specialist (Twilio Verify is one component of broader auth)
1573
+ - user needs workflow automation -> workflow-automation (Trigger SMS/calls from automated workflows)
1574
+ - user needs high-volume messaging -> devops (Scale webhooks, monitor delivery rates)