@thierrynakoa/fire-flow 12.2.1 → 13.0.1

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 (500) hide show
  1. package/CREDITS.md +25 -0
  2. package/DOMINION-FLOW-OVERVIEW.md +182 -38
  3. package/README.md +399 -455
  4. package/TROUBLESHOOTING.md +264 -264
  5. package/agents/fire-debugger.md +54 -0
  6. package/agents/fire-executor.md +1610 -1033
  7. package/agents/fire-fact-checker.md +1 -1
  8. package/agents/fire-planner.md +85 -17
  9. package/agents/fire-project-researcher.md +1 -1
  10. package/agents/fire-researcher.md +4 -22
  11. package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
  12. package/agents/fire-reviewer.md +552 -499
  13. package/agents/fire-verifier.md +114 -19
  14. package/bin/cli.js +18 -101
  15. package/commands/fire-0-orient.md +2 -2
  16. package/commands/fire-1a-new.md +50 -15
  17. package/commands/fire-1c-setup.md +33 -5
  18. package/commands/fire-1d-discuss.md +87 -1
  19. package/commands/fire-2-plan.md +556 -527
  20. package/commands/fire-3-execute.md +2046 -1356
  21. package/commands/fire-4-verify.md +975 -906
  22. package/commands/fire-5-handoff.md +46 -5
  23. package/commands/fire-6-resume.md +2 -31
  24. package/commands/fire-add-new-skill.md +138 -19
  25. package/commands/fire-autonomous.md +14 -2
  26. package/commands/fire-complete-milestone.md +1 -1
  27. package/commands/fire-cost.md +179 -183
  28. package/commands/fire-debug.md +1 -6
  29. package/commands/fire-loop-resume.md +2 -2
  30. package/commands/fire-loop-stop.md +1 -1
  31. package/commands/fire-loop.md +2 -15
  32. package/commands/fire-map-codebase.md +1 -1
  33. package/commands/fire-migrate-database.md +548 -0
  34. package/commands/fire-new-milestone.md +1 -1
  35. package/commands/fire-reflect.md +1 -2
  36. package/commands/fire-research.md +142 -21
  37. package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
  38. package/commands/fire-scaffold.md +297 -0
  39. package/commands/fire-search.md +1 -2
  40. package/commands/fire-security-scan.md +483 -484
  41. package/commands/fire-setup.md +359 -0
  42. package/commands/fire-skill.md +770 -0
  43. package/commands/fire-skills-diff.md +506 -506
  44. package/commands/fire-skills-history.md +388 -388
  45. package/commands/fire-skills-rollback.md +7 -7
  46. package/commands/fire-skills-sync.md +470 -470
  47. package/commands/fire-test.md +5 -5
  48. package/commands/fire-todos.md +1 -1
  49. package/commands/fire-update.md +5 -5
  50. package/commands/fire-validate-skills.md +282 -0
  51. package/commands/fire-vuln-scan.md +492 -493
  52. package/hooks/run-hook.sh +8 -8
  53. package/hooks/run-session-end.sh +7 -7
  54. package/hooks/session-end.sh +90 -90
  55. package/hooks/session-start.sh +1 -1
  56. package/package.json +4 -24
  57. package/plugin.json +7 -7
  58. package/references/autonomy-levels.md +235 -0
  59. package/references/behavioral-directives.md +95 -3
  60. package/references/blocker-tracking.md +1 -1
  61. package/references/circuit-breaker.md +93 -2
  62. package/references/context-engineering.md +227 -9
  63. package/references/honesty-protocols.md +70 -1
  64. package/references/issue-to-pr-pipeline.md +149 -150
  65. package/references/metrics-and-trends.md +1 -2
  66. package/references/research-improvements.md +4 -108
  67. package/references/sdlc-mapping.md +73 -0
  68. package/references/state-machine.md +151 -0
  69. package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
  70. package/skills-library/SKILLS-INDEX.md +57 -558
  71. package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
  72. package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
  73. package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
  74. package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
  75. package/skills-library/_general/automation/settings-gui-generator.md +172 -0
  76. package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
  77. package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
  78. package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
  79. package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
  80. package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
  81. package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
  82. package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
  83. package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
  84. package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
  85. package/skills-library/_general/frontend/color-token-migration.md +112 -0
  86. package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
  87. package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
  88. package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
  89. package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
  90. package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
  91. package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
  92. package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
  93. package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
  94. package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
  95. package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
  96. package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
  97. package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
  98. package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
  99. package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
  100. package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
  101. package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
  102. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
  103. package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
  104. package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
  105. package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
  106. package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
  107. package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
  108. package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
  109. package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
  110. package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
  111. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
  112. package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
  113. package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
  114. package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
  115. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
  116. package/skills-library/_general/methodology/dead-code-activation.md +123 -0
  117. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  118. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
  119. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
  120. package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
  121. package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
  122. package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
  123. package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
  124. package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
  125. package/skills-library/_general/performance/liveclock-extraction.md +112 -0
  126. package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
  127. package/skills-library/_general/performance/use-visible-interval.md +131 -0
  128. package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
  129. package/skills-library/_quarantine/README.md +30 -0
  130. package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
  131. package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
  132. package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
  133. package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
  134. package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
  135. package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
  136. package/skills-library/api-patterns/graphql-content-queries.md +708 -0
  137. package/skills-library/appointment-scheduler-design.md +423 -0
  138. package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
  139. package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
  140. package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
  141. package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
  142. package/skills-library/automation/scheduled-content-publishing.md +608 -0
  143. package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
  144. package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
  145. package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
  146. package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
  147. package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
  148. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
  149. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
  150. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
  151. package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
  152. package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
  153. package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
  154. package/skills-library/cms-patterns/content-branch-preview.md +515 -0
  155. package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
  156. package/skills-library/cms-patterns/mdx-component-content.md +649 -0
  157. package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
  158. package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
  159. package/skills-library/complexity-metrics/complexity-divider.md +707 -0
  160. package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
  161. package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
  162. package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
  163. package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
  164. package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
  165. package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
  166. package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
  167. package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
  168. package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
  169. package/skills-library/creative-multimedia/og-image-generator.md +635 -0
  170. package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
  171. package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
  172. package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
  173. package/skills-library/creative-multimedia/svg-generation.md +750 -0
  174. package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
  175. package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
  176. package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
  177. package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
  178. package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
  179. package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
  180. package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
  181. package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
  182. package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
  183. package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
  184. package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
  185. package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
  186. package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
  187. package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
  188. package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
  189. package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
  190. package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
  191. package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
  192. package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
  193. package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
  194. package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
  195. package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
  196. package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
  197. package/skills-library/database-solutions/content-publishing-states.md +631 -0
  198. package/skills-library/database-solutions/database-schema-designer.md +522 -0
  199. package/skills-library/database-solutions/er-diagram-components.md +569 -0
  200. package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
  201. package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
  202. package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
  203. package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
  204. package/skills-library/database-solutions/normalization-validator.md +778 -0
  205. package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
  206. package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
  207. package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
  208. package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
  209. package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
  210. package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
  211. package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
  212. package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
  213. package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
  214. package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
  215. package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
  216. package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
  217. package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
  218. package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
  219. package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
  220. package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
  221. package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
  222. package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
  223. package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
  224. package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
  225. package/skills-library/deployment-security/SECURITY.md +41 -0
  226. package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
  227. package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
  228. package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
  229. package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
  230. package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
  231. package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
  232. package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
  233. package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
  234. package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
  235. package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
  236. package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
  237. package/skills-library/deployment-security/vps-deployment.md +135 -0
  238. package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
  239. package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
  240. package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
  241. package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
  242. package/skills-library/document-processing/md-to-word-converter.md +318 -0
  243. package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
  244. package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
  245. package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
  246. package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
  247. package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
  248. package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
  249. package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
  250. package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
  251. package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
  252. package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
  253. package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
  254. package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
  255. package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
  256. package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
  257. package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
  258. package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
  259. package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
  260. package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
  261. package/skills-library/ecommerce/inventory-stock-management.md +270 -0
  262. package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
  263. package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
  264. package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
  265. package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
  266. package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
  267. package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
  268. package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
  269. package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
  270. package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
  271. package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
  272. package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
  273. package/skills-library/excalidraw-diagrams/LICENSE +21 -0
  274. package/skills-library/excalidraw-diagrams/README.md +178 -0
  275. package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
  276. package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
  277. package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
  278. package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
  279. package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
  280. package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
  281. package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
  282. package/skills-library/infrastructure/observability-designer.md +264 -0
  283. package/skills-library/infrastructure/performance-profiler.md +621 -0
  284. package/skills-library/installer-wizard-patterns.md +249 -0
  285. package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
  286. package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
  287. package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
  288. package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
  289. package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  290. package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
  291. package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  292. package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  293. package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  294. package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  295. package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
  296. package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
  297. package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
  298. package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
  299. package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
  300. package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
  301. package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
  302. package/skills-library/integrations/headless-cms-architecture.md +484 -0
  303. package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
  304. package/skills-library/integrations/payload-cms-patterns.md +674 -0
  305. package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
  306. package/skills-library/integrations/rss-podcast-integration.md +300 -0
  307. package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  308. package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
  309. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  310. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  311. package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  312. package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  313. package/skills-library/marketing/campaign-analytics.md +97 -0
  314. package/skills-library/marketing/content-creator.md +105 -0
  315. package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
  316. package/skills-library/marketing/social-media-analyzer.md +81 -0
  317. package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
  318. package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
  319. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  320. package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
  321. package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
  322. package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
  323. package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
  324. package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
  325. package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
  326. package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
  327. package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
  328. package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
  329. package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
  330. package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
  331. package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
  332. package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
  333. package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
  334. package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
  335. package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
  336. package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
  337. package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
  338. package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
  339. package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
  340. package/skills-library/methodology/tech-debt-tracker.md +570 -0
  341. package/skills-library/parallel-debug/SKILL.md +60 -0
  342. package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
  343. package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
  344. package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
  345. package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
  346. package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
  347. package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
  348. package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
  349. package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
  350. package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
  351. package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
  352. package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
  353. package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
  354. package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
  355. package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
  356. package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
  357. package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
  358. package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
  359. package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
  360. package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
  361. package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
  362. package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
  363. package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
  364. package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
  365. package/skills-library/security/admin-deletion-safety.md +396 -0
  366. package/skills-library/security/application-vuln-patterns.md +477 -0
  367. package/skills-library/security/env-secrets-manager.md +686 -0
  368. package/skills-library/security/secure-ai-application-templates.md +347 -0
  369. package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
  370. package/skills-library/supabase-connection-pooler-fix.md +102 -0
  371. package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
  372. package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
  373. package/skills-library/system-context/SKILL.md +40 -0
  374. package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
  375. package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
  376. package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
  377. package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
  378. package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
  379. package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
  380. package/skills-library/testing/playwright-api-security-tests.md +202 -0
  381. package/skills-library/toolbox/SKILL.md +84 -0
  382. package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
  383. package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
  384. package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
  385. package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
  386. package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
  387. package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
  388. package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
  389. package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
  390. package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
  391. package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
  392. package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
  393. package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  394. package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  395. package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  396. package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  397. package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  398. package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  399. package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  400. package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  401. package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
  402. package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  403. package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  404. package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  405. package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  406. package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
  407. package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
  408. package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  409. package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  410. package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
  411. package/skills-library/wordpress-style-theme-components.md +1526 -0
  412. package/templates/ASSUMPTIONS.md +1 -1
  413. package/templates/DECISION_LOG.md +0 -1
  414. package/templates/phase-prompt.md +1 -1
  415. package/templates/phoenix-comparison.md +6 -6
  416. package/templates/skill-api-integration.md +106 -0
  417. package/templates/skill-architecture-pattern.md +92 -0
  418. package/templates/skill-debug-pattern.md +98 -0
  419. package/templates/skill-devops-recipe.md +107 -0
  420. package/templates/skill-general.md +65 -0
  421. package/templates/skill-ui-component.md +113 -0
  422. package/tools/uat-runner.py +179 -0
  423. package/version.json +7 -3
  424. package/workflows/handoff-session.md +2 -2
  425. package/workflows/new-project.md +2 -2
  426. package/workflows/plan-phase.md +1 -1
  427. package/.claude-plugin/plugin.json +0 -64
  428. package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
  429. package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
  430. package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
  431. package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
  432. package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
  433. package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
  434. package/skills-library/specialists/api-architecture/api-designer.md +0 -49
  435. package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
  436. package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
  437. package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
  438. package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
  439. package/skills-library/specialists/backend/django-expert.md +0 -52
  440. package/skills-library/specialists/backend/fastapi-expert.md +0 -52
  441. package/skills-library/specialists/backend/laravel-specialist.md +0 -52
  442. package/skills-library/specialists/backend/nestjs-expert.md +0 -51
  443. package/skills-library/specialists/backend/rails-expert.md +0 -53
  444. package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
  445. package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
  446. package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
  447. package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
  448. package/skills-library/specialists/data-ml/rag-architect.md +0 -51
  449. package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
  450. package/skills-library/specialists/frontend/angular-architect.md +0 -52
  451. package/skills-library/specialists/frontend/flutter-expert.md +0 -51
  452. package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
  453. package/skills-library/specialists/frontend/react-native-expert.md +0 -50
  454. package/skills-library/specialists/frontend/vue-expert.md +0 -51
  455. package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
  456. package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
  457. package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
  458. package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
  459. package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
  460. package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
  461. package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
  462. package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
  463. package/skills-library/specialists/languages/cpp-pro.md +0 -74
  464. package/skills-library/specialists/languages/csharp-developer.md +0 -69
  465. package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
  466. package/skills-library/specialists/languages/golang-pro.md +0 -51
  467. package/skills-library/specialists/languages/java-architect.md +0 -49
  468. package/skills-library/specialists/languages/javascript-pro.md +0 -68
  469. package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
  470. package/skills-library/specialists/languages/php-pro.md +0 -49
  471. package/skills-library/specialists/languages/python-pro.md +0 -52
  472. package/skills-library/specialists/languages/react-expert.md +0 -51
  473. package/skills-library/specialists/languages/rust-engineer.md +0 -50
  474. package/skills-library/specialists/languages/sql-pro.md +0 -56
  475. package/skills-library/specialists/languages/swift-expert.md +0 -69
  476. package/skills-library/specialists/languages/typescript-pro.md +0 -51
  477. package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
  478. package/skills-library/specialists/platform/embedded-systems.md +0 -53
  479. package/skills-library/specialists/platform/game-developer.md +0 -53
  480. package/skills-library/specialists/platform/salesforce-developer.md +0 -53
  481. package/skills-library/specialists/platform/shopify-expert.md +0 -49
  482. package/skills-library/specialists/platform/wordpress-pro.md +0 -49
  483. package/skills-library/specialists/quality/code-documenter.md +0 -51
  484. package/skills-library/specialists/quality/code-reviewer.md +0 -67
  485. package/skills-library/specialists/quality/debugging-wizard.md +0 -51
  486. package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
  487. package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
  488. package/skills-library/specialists/quality/playwright-expert.md +0 -65
  489. package/skills-library/specialists/quality/spec-miner.md +0 -56
  490. package/skills-library/specialists/quality/test-master.md +0 -65
  491. package/skills-library/specialists/security/secure-code-guardian.md +0 -55
  492. package/skills-library/specialists/security/security-reviewer.md +0 -53
  493. package/skills-library/specialists/workflow/architecture-designer.md +0 -53
  494. package/skills-library/specialists/workflow/cli-developer.md +0 -70
  495. package/skills-library/specialists/workflow/feature-forge.md +0 -65
  496. package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
  497. package/skills-library/specialists/workflow/the-fool.md +0 -62
  498. /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
  499. /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
  500. /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
@@ -0,0 +1,336 @@
1
+ # Order Saga Pattern + State Machine
2
+
3
+ > Model order lifecycle as a finite state machine with saga-pattern compensating transactions for distributed processing.
4
+
5
+ **When to use:** Building any order processing system — especially those involving payment capture, inventory reservation, and fulfillment coordination across services.
6
+ **Stack:** Node.js/Express, PostgreSQL/MySQL, optional message queue (BullMQ, SQS)
7
+
8
+ ---
9
+
10
+ ## Order State Machine
11
+
12
+ ```
13
+ ┌──────────────────────────────────────────────┐
14
+ │ │
15
+ ┌────────┐ ┌───▼─────┐ ┌──────────┐ ┌──────────┐ ┌───┴──────┐
16
+ │ CREATED│───▶│CONFIRMED│───▶│PROCESSING│───▶│ SHIPPED │───▶│DELIVERED │
17
+ └───┬────┘ └───┬─────┘ └────┬─────┘ └────┬─────┘ └──────────┘
18
+ │ │ │ │
19
+ │ ┌───▼─────┐ ┌────▼─────┐ ┌────▼─────┐
20
+ └────────▶│CANCELLED│ │ FAILED │ │ RETURNED │
21
+ └─────────┘ └──────────┘ └──────────┘
22
+
23
+ ┌────▼─────┐
24
+ │ REFUNDED │
25
+ └──────────┘
26
+ ```
27
+
28
+ ### State Definitions
29
+
30
+ ```javascript
31
+ const ORDER_STATES = {
32
+ CREATED: 'created', // Order placed, awaiting payment
33
+ CONFIRMED: 'confirmed', // Payment captured successfully
34
+ PROCESSING: 'processing', // Being prepared for fulfillment
35
+ SHIPPED: 'shipped', // Handed to carrier
36
+ DELIVERED: 'delivered', // Confirmed delivered
37
+ CANCELLED: 'cancelled', // Cancelled before shipment
38
+ FAILED: 'failed', // Payment or processing failed
39
+ RETURNED: 'returned', // Customer returned the order
40
+ REFUNDED: 'refunded', // Refund issued
41
+ };
42
+
43
+ const VALID_TRANSITIONS = {
44
+ created: ['confirmed', 'cancelled', 'failed'],
45
+ confirmed: ['processing', 'cancelled', 'refunded'],
46
+ processing: ['shipped', 'cancelled', 'failed'],
47
+ shipped: ['delivered', 'returned'],
48
+ delivered: ['returned'],
49
+ returned: ['refunded'],
50
+ cancelled: [], // Terminal state
51
+ failed: ['created'], // Allow retry
52
+ refunded: [], // Terminal state
53
+ };
54
+ ```
55
+
56
+ ### Transition Enforcement
57
+
58
+ ```javascript
59
+ async function transitionOrder(orderId, newStatus, metadata = {}) {
60
+ const order = await db.query('SELECT * FROM orders WHERE id = $1', [orderId]);
61
+ if (!order.rows[0]) throw new Error(`Order ${orderId} not found`);
62
+
63
+ const currentStatus = order.rows[0].status;
64
+ const allowed = VALID_TRANSITIONS[currentStatus];
65
+
66
+ if (!allowed || !allowed.includes(newStatus)) {
67
+ throw new Error(
68
+ `Invalid transition: ${currentStatus} → ${newStatus}. ` +
69
+ `Allowed: ${allowed?.join(', ') || 'none (terminal state)'}`
70
+ );
71
+ }
72
+
73
+ // Record transition in history
74
+ await db.query(
75
+ `INSERT INTO order_status_history (order_id, from_status, to_status, metadata, created_at)
76
+ VALUES ($1, $2, $3, $4, NOW())`,
77
+ [orderId, currentStatus, newStatus, JSON.stringify(metadata)]
78
+ );
79
+
80
+ // Update order
81
+ await db.query(
82
+ 'UPDATE orders SET status = $1, updated_at = NOW() WHERE id = $2',
83
+ [newStatus, orderId]
84
+ );
85
+
86
+ // Emit event for side effects
87
+ await emitOrderEvent(orderId, newStatus, metadata);
88
+ }
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Checkout Saga (Orchestrated)
94
+
95
+ The checkout process is a saga — a sequence of steps where each step has a compensating action for rollback:
96
+
97
+ ```javascript
98
+ async function executeCheckoutSaga(orderId, cartId, paymentMethodId) {
99
+ const saga = new SagaOrchestrator();
100
+
101
+ // Step 1: Validate cart
102
+ saga.addStep({
103
+ name: 'validate_cart',
104
+ execute: async () => {
105
+ const validation = await validateCartForCheckout(cartId);
106
+ if (!validation.valid) throw new Error(`Cart invalid: ${validation.issues[0].message}`);
107
+ return validation;
108
+ },
109
+ compensate: async () => {
110
+ // Nothing to roll back — validation is read-only
111
+ },
112
+ });
113
+
114
+ // Step 2: Reserve inventory
115
+ saga.addStep({
116
+ name: 'reserve_inventory',
117
+ execute: async (ctx) => {
118
+ const items = await getCartItems(cartId);
119
+ for (const item of items) {
120
+ await reserveStock(item.product_id, item.variant_id, item.quantity, orderId);
121
+ }
122
+ return { items };
123
+ },
124
+ compensate: async (ctx) => {
125
+ // COMPENSATE: Release reserved inventory
126
+ const items = await getCartItems(cartId);
127
+ for (const item of items) {
128
+ await releaseStock(item.product_id, item.variant_id, item.quantity, orderId);
129
+ }
130
+ },
131
+ });
132
+
133
+ // Step 3: Capture payment
134
+ saga.addStep({
135
+ name: 'capture_payment',
136
+ execute: async (ctx) => {
137
+ const paymentIntent = await stripe.paymentIntents.create({
138
+ amount: ctx.validate_cart.subtotal * 100,
139
+ currency: 'usd',
140
+ payment_method: paymentMethodId,
141
+ confirm: true,
142
+ metadata: { order_id: orderId },
143
+ }, {
144
+ idempotencyKey: `checkout-${orderId}`,
145
+ });
146
+ return { paymentIntent };
147
+ },
148
+ compensate: async (ctx) => {
149
+ // COMPENSATE: Refund payment
150
+ if (ctx.capture_payment?.paymentIntent) {
151
+ await stripe.refunds.create({
152
+ payment_intent: ctx.capture_payment.paymentIntent.id,
153
+ });
154
+ }
155
+ },
156
+ });
157
+
158
+ // Step 4: Create order record
159
+ saga.addStep({
160
+ name: 'create_order',
161
+ execute: async (ctx) => {
162
+ await transitionOrder(orderId, 'confirmed', {
163
+ payment_intent_id: ctx.capture_payment.paymentIntent.id,
164
+ });
165
+ return { confirmed: true };
166
+ },
167
+ compensate: async (ctx) => {
168
+ // COMPENSATE: Mark order as failed
169
+ await transitionOrder(orderId, 'failed', { reason: 'saga_rollback' });
170
+ },
171
+ });
172
+
173
+ // Step 5: Clear cart
174
+ saga.addStep({
175
+ name: 'clear_cart',
176
+ execute: async () => {
177
+ await db.query("UPDATE carts SET status = 'converted' WHERE id = $1", [cartId]);
178
+ },
179
+ compensate: async () => {
180
+ await db.query("UPDATE carts SET status = 'active' WHERE id = $1", [cartId]);
181
+ },
182
+ });
183
+
184
+ // Execute saga
185
+ try {
186
+ const result = await saga.run();
187
+ return { success: true, order_id: orderId, ...result };
188
+ } catch (err) {
189
+ // Saga automatically runs compensating actions in reverse order
190
+ return { success: false, error: err.message, rollback: saga.getCompensationLog() };
191
+ }
192
+ }
193
+ ```
194
+
195
+ ### Saga Orchestrator Implementation
196
+
197
+ ```javascript
198
+ class SagaOrchestrator {
199
+ constructor() {
200
+ this.steps = [];
201
+ this.context = {};
202
+ this.completedSteps = [];
203
+ this.compensationLog = [];
204
+ }
205
+
206
+ addStep({ name, execute, compensate }) {
207
+ this.steps.push({ name, execute, compensate });
208
+ }
209
+
210
+ async run() {
211
+ for (const step of this.steps) {
212
+ try {
213
+ const result = await step.execute(this.context);
214
+ this.context[step.name] = result;
215
+ this.completedSteps.push(step);
216
+ } catch (err) {
217
+ // Run compensating actions in REVERSE order
218
+ for (const completed of [...this.completedSteps].reverse()) {
219
+ try {
220
+ await completed.compensate(this.context);
221
+ this.compensationLog.push({ step: completed.name, status: 'compensated' });
222
+ } catch (compErr) {
223
+ this.compensationLog.push({
224
+ step: completed.name, status: 'compensation_failed',
225
+ error: compErr.message
226
+ });
227
+ // Log but continue — try to compensate remaining steps
228
+ }
229
+ }
230
+ throw new Error(`Saga failed at ${step.name}: ${err.message}`);
231
+ }
232
+ }
233
+ return this.context;
234
+ }
235
+
236
+ getCompensationLog() { return this.compensationLog; }
237
+ }
238
+ ```
239
+
240
+ ---
241
+
242
+ ## Database Schema
243
+
244
+ ```sql
245
+ CREATE TABLE orders (
246
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
247
+ user_id UUID NOT NULL REFERENCES users(id),
248
+ status VARCHAR(20) NOT NULL DEFAULT 'created',
249
+ subtotal DECIMAL(10,2) NOT NULL,
250
+ tax DECIMAL(10,2) DEFAULT 0,
251
+ shipping DECIMAL(10,2) DEFAULT 0,
252
+ total DECIMAL(10,2) NOT NULL,
253
+ payment_intent_id VARCHAR(255),
254
+ shipping_address JSONB,
255
+ notes TEXT,
256
+ created_at TIMESTAMP DEFAULT NOW(),
257
+ updated_at TIMESTAMP DEFAULT NOW()
258
+ );
259
+
260
+ CREATE TABLE order_items (
261
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
262
+ order_id UUID NOT NULL REFERENCES orders(id),
263
+ product_id UUID NOT NULL REFERENCES products(id),
264
+ variant_id UUID REFERENCES product_variants(id),
265
+ quantity INTEGER NOT NULL,
266
+ unit_price DECIMAL(10,2) NOT NULL,
267
+ total_price DECIMAL(10,2) NOT NULL
268
+ );
269
+
270
+ CREATE TABLE order_status_history (
271
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
272
+ order_id UUID NOT NULL REFERENCES orders(id),
273
+ from_status VARCHAR(20),
274
+ to_status VARCHAR(20) NOT NULL,
275
+ metadata JSONB DEFAULT '{}',
276
+ created_at TIMESTAMP DEFAULT NOW()
277
+ );
278
+
279
+ -- Inventory reservations (for saga rollback)
280
+ CREATE TABLE inventory_reservations (
281
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
282
+ product_id UUID NOT NULL,
283
+ variant_id UUID,
284
+ quantity INTEGER NOT NULL,
285
+ order_id UUID NOT NULL,
286
+ status VARCHAR(20) DEFAULT 'reserved', -- reserved | committed | released
287
+ created_at TIMESTAMP DEFAULT NOW(),
288
+ expires_at TIMESTAMP DEFAULT NOW() + INTERVAL '30 minutes'
289
+ );
290
+
291
+ CREATE INDEX idx_orders_user ON orders(user_id);
292
+ CREATE INDEX idx_orders_status ON orders(status);
293
+ CREATE INDEX idx_order_history ON order_status_history(order_id);
294
+ CREATE INDEX idx_reservations_order ON inventory_reservations(order_id);
295
+ CREATE INDEX idx_reservations_expiry ON inventory_reservations(expires_at)
296
+ WHERE status = 'reserved';
297
+ ```
298
+
299
+ ---
300
+
301
+ ## Event Hooks
302
+
303
+ ```javascript
304
+ async function emitOrderEvent(orderId, newStatus, metadata) {
305
+ const handlers = {
306
+ confirmed: [sendOrderConfirmationEmail, notifyFulfillment],
307
+ processing: [updateInventoryCommit],
308
+ shipped: [sendShippingNotification, generateTrackingPage],
309
+ delivered: [sendDeliveryConfirmation, requestReview],
310
+ cancelled: [sendCancellationEmail, releaseInventory, processRefund],
311
+ failed: [sendFailureNotification, releaseInventory],
312
+ returned: [processReturn, sendReturnConfirmation],
313
+ refunded: [sendRefundConfirmation],
314
+ };
315
+
316
+ const fns = handlers[newStatus] || [];
317
+ for (const fn of fns) {
318
+ try {
319
+ await fn(orderId, metadata);
320
+ } catch (err) {
321
+ console.error(`Event handler failed for ${newStatus}:`, err);
322
+ // Log but don't fail the transition — side effects are secondary
323
+ }
324
+ }
325
+ }
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Sources
331
+
332
+ - microservices.io: Saga Pattern (2025)
333
+ - Medusa.js v2: Workflow-based commerce architecture (2025)
334
+ - SagaLLM: Transaction Guarantees for Multi-Agent (VLDB 2025, arXiv:2503.11951)
335
+ - Sylius: State machines in e-commerce modeling (2025)
336
+ - commercetools: Order state machines documentation (2025)
@@ -0,0 +1,245 @@
1
+ # Payment Provider Abstraction Layer
2
+
3
+ > Adapter pattern for swapping payment providers without re-architecting. Supports Stripe, PayPal, and future providers.
4
+
5
+ **When to use:** Building a payment system that may need to support multiple providers, or creating a provider-agnostic payment API.
6
+ **Stack:** Node.js/Express, TypeScript recommended
7
+
8
+ ---
9
+
10
+ ## The Problem
11
+
12
+ Without abstraction:
13
+ - Adding a second payment provider requires changing every payment-related file
14
+ - Provider-specific code (Stripe's `client_secret`, PayPal's `order_id`) leaks into business logic
15
+ - Testing requires live provider credentials
16
+ - Switching providers is a rewrite, not a configuration change
17
+
18
+ ---
19
+
20
+ ## Provider Interface
21
+
22
+ ```typescript
23
+ interface PaymentProvider {
24
+ name: string;
25
+
26
+ // Create a payment session (checkout)
27
+ createPaymentSession(params: {
28
+ amount: number; // In smallest currency unit (cents)
29
+ currency: string; // ISO 4217 (usd, eur, gbp)
30
+ customerId?: string; // Your internal customer ID
31
+ metadata?: Record<string, string>;
32
+ successUrl?: string;
33
+ cancelUrl?: string;
34
+ }): Promise<PaymentSession>;
35
+
36
+ // Capture a previously authorized payment
37
+ capturePayment(sessionId: string): Promise<PaymentResult>;
38
+
39
+ // Refund a completed payment
40
+ refundPayment(params: {
41
+ paymentId: string;
42
+ amount?: number; // Partial refund (omit for full refund)
43
+ reason?: string;
44
+ }): Promise<RefundResult>;
45
+
46
+ // Get payment status
47
+ getPaymentStatus(paymentId: string): Promise<PaymentStatus>;
48
+
49
+ // Verify webhook signature
50
+ verifyWebhook(params: {
51
+ body: Buffer | string;
52
+ signature: string;
53
+ secret: string;
54
+ }): Promise<WebhookEvent>;
55
+ }
56
+
57
+ interface PaymentSession {
58
+ id: string; // Provider's session/order ID
59
+ checkoutUrl: string; // URL to redirect user to
60
+ expiresAt?: Date;
61
+ providerData?: any; // Raw provider response (for debugging)
62
+ }
63
+
64
+ interface PaymentResult {
65
+ success: boolean;
66
+ paymentId: string; // Provider's payment/transaction ID
67
+ amount: number;
68
+ currency: string;
69
+ status: 'captured' | 'pending' | 'failed';
70
+ }
71
+
72
+ interface RefundResult {
73
+ success: boolean;
74
+ refundId: string;
75
+ amount: number;
76
+ status: 'completed' | 'pending' | 'failed';
77
+ }
78
+
79
+ type PaymentStatus = 'pending' | 'authorized' | 'captured' | 'failed' | 'refunded' | 'cancelled';
80
+
81
+ interface WebhookEvent {
82
+ id: string;
83
+ type: string; // Normalized event type
84
+ paymentId?: string;
85
+ data: Record<string, any>;
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Stripe Implementation
92
+
93
+ ```typescript
94
+ import Stripe from 'stripe';
95
+
96
+ class StripeProvider implements PaymentProvider {
97
+ name = 'stripe';
98
+ private stripe: Stripe;
99
+
100
+ constructor(secretKey: string) {
101
+ this.stripe = new Stripe(secretKey);
102
+ }
103
+
104
+ async createPaymentSession(params) {
105
+ const session = await this.stripe.checkout.sessions.create({
106
+ payment_method_types: ['card'],
107
+ line_items: [{
108
+ price_data: {
109
+ currency: params.currency,
110
+ product_data: { name: 'Order' },
111
+ unit_amount: params.amount,
112
+ },
113
+ quantity: 1,
114
+ }],
115
+ mode: 'payment',
116
+ success_url: params.successUrl,
117
+ cancel_url: params.cancelUrl,
118
+ metadata: params.metadata,
119
+ });
120
+
121
+ return {
122
+ id: session.id,
123
+ checkoutUrl: session.url,
124
+ expiresAt: new Date(session.expires_at * 1000),
125
+ providerData: session,
126
+ };
127
+ }
128
+
129
+ async capturePayment(sessionId) {
130
+ const session = await this.stripe.checkout.sessions.retrieve(sessionId);
131
+ return {
132
+ success: session.payment_status === 'paid',
133
+ paymentId: session.payment_intent as string,
134
+ amount: session.amount_total,
135
+ currency: session.currency,
136
+ status: session.payment_status === 'paid' ? 'captured' : 'pending',
137
+ };
138
+ }
139
+
140
+ async refundPayment(params) {
141
+ const refund = await this.stripe.refunds.create({
142
+ payment_intent: params.paymentId,
143
+ amount: params.amount,
144
+ reason: params.reason as any,
145
+ });
146
+ return {
147
+ success: refund.status === 'succeeded',
148
+ refundId: refund.id,
149
+ amount: refund.amount,
150
+ status: refund.status === 'succeeded' ? 'completed' : 'pending',
151
+ };
152
+ }
153
+
154
+ async getPaymentStatus(paymentId) {
155
+ const intent = await this.stripe.paymentIntents.retrieve(paymentId);
156
+ const statusMap = {
157
+ succeeded: 'captured',
158
+ processing: 'pending',
159
+ requires_payment_method: 'failed',
160
+ canceled: 'cancelled',
161
+ };
162
+ return statusMap[intent.status] || 'pending';
163
+ }
164
+
165
+ async verifyWebhook(params) {
166
+ const event = this.stripe.webhooks.constructEvent(
167
+ params.body, params.signature, params.secret
168
+ );
169
+ return {
170
+ id: event.id,
171
+ type: this.normalizeEventType(event.type),
172
+ paymentId: (event.data.object as any).payment_intent,
173
+ data: event.data.object as any,
174
+ };
175
+ }
176
+
177
+ private normalizeEventType(stripeType: string): string {
178
+ const map = {
179
+ 'checkout.session.completed': 'payment.completed',
180
+ 'payment_intent.succeeded': 'payment.captured',
181
+ 'payment_intent.payment_failed': 'payment.failed',
182
+ 'charge.refunded': 'payment.refunded',
183
+ };
184
+ return map[stripeType] || stripeType;
185
+ }
186
+ }
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Payment Service (Provider-Agnostic)
192
+
193
+ ```typescript
194
+ class PaymentService {
195
+ private providers: Map<string, PaymentProvider> = new Map();
196
+ private defaultProvider: string;
197
+
198
+ constructor(defaultProvider: string) {
199
+ this.defaultProvider = defaultProvider;
200
+ }
201
+
202
+ registerProvider(provider: PaymentProvider) {
203
+ this.providers.set(provider.name, provider);
204
+ }
205
+
206
+ getProvider(name?: string): PaymentProvider {
207
+ const providerName = name || this.defaultProvider;
208
+ const provider = this.providers.get(providerName);
209
+ if (!provider) throw new Error(`Payment provider '${providerName}' not registered`);
210
+ return provider;
211
+ }
212
+
213
+ // All business logic uses these methods — never calls providers directly
214
+ async createCheckout(params: { amount: number; currency: string; provider?: string }) {
215
+ return this.getProvider(params.provider).createPaymentSession(params);
216
+ }
217
+
218
+ async processRefund(params: { paymentId: string; amount?: number; provider?: string }) {
219
+ return this.getProvider(params.provider).refundPayment(params);
220
+ }
221
+ }
222
+
223
+ // Setup
224
+ const paymentService = new PaymentService('stripe');
225
+ paymentService.registerProvider(new StripeProvider(process.env.STRIPE_SECRET_KEY));
226
+ // paymentService.registerProvider(new PayPalProvider(process.env.PAYPAL_CLIENT_ID));
227
+
228
+ export { paymentService };
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Adding a New Provider
234
+
235
+ 1. Implement `PaymentProvider` interface
236
+ 2. Call `paymentService.registerProvider(new YourProvider(...))`
237
+ 3. Done — all existing business logic works without changes
238
+
239
+ ---
240
+
241
+ ## Sources
242
+
243
+ - Internal gap analysis: GAP-ECOM-6 (Payment Method Abstraction)
244
+ - Medusa.js v2: Payment Module Provider architecture (2025)
245
+ - Stripe Agent Toolkit: Provider interface patterns (2025)