@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,300 @@
1
+ # Cart Architecture Patterns
2
+
3
+ > Server-side cart management, state synchronization, guest-to-user cart merging, and constraint verification for AI-generated e-commerce code.
4
+
5
+ **When to use:** Building any shopping cart system — from simple single-product checkout to multi-vendor marketplace carts.
6
+ **Stack:** Node.js/Express, React/Next.js, PostgreSQL/MySQL
7
+
8
+ ---
9
+
10
+ ## Architecture Decision: Where Does the Cart Live?
11
+
12
+ ### Option 1: Server-Side Cart (Recommended for most apps)
13
+
14
+ ```
15
+ Client (React) Server (Express) Database
16
+ ┌──────────┐ ┌──────────────┐ ┌────────┐
17
+ │ Cart UI │──POST───▶│ Cart API │──INSERT──▶│ carts │
18
+ │ (display │◀─JSON────│ /api/cart │◀─SELECT───│ items │
19
+ │ only) │ │ │ │ │
20
+ └──────────┘ └──────────────┘ └────────┘
21
+ ```
22
+
23
+ **Pros:** Single source of truth, survives page refresh/device switch, supports cart abandonment tracking
24
+ **Cons:** Every cart action requires API call, slightly slower UX without optimistic updates
25
+ **Use when:** Multi-device support needed, cart abandonment emails, server-side price validation required
26
+
27
+ ### Option 2: Client-Side Cart (Simple use cases only)
28
+
29
+ ```
30
+ Client (React) Server (Express)
31
+ ┌──────────────────┐ ┌──────────────┐
32
+ │ Cart in │──POST───────▶│ Checkout only │
33
+ │ localStorage/ │ (checkout) │ /api/checkout │
34
+ │ React Context │ └──────────────┘
35
+ └──────────────────┘
36
+ ```
37
+
38
+ **Pros:** Instant UI, no API calls for cart operations, works offline
39
+ **Cons:** Lost on browser clear, no cross-device, no abandonment tracking, vulnerable to price manipulation
40
+ **Use when:** Simple single-page apps, digital downloads, no cart abandonment needed
41
+
42
+ ### Option 3: Hybrid (Best UX)
43
+
44
+ ```
45
+ Client reads from local cache (fast)
46
+ Client writes through server API (safe)
47
+ Server is source of truth
48
+ Local cache is optimistic preview
49
+ ```
50
+
51
+ **Use when:** You want instant UX AND server-side safety.
52
+
53
+ ---
54
+
55
+ ## Database Schema
56
+
57
+ ```sql
58
+ -- Carts table (one per user or session)
59
+ CREATE TABLE carts (
60
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
61
+ user_id UUID REFERENCES users(id), -- NULL for guest carts
62
+ session_token VARCHAR(255), -- For guest identification
63
+ status VARCHAR(20) DEFAULT 'active', -- active | merged | abandoned | converted
64
+ created_at TIMESTAMP DEFAULT NOW(),
65
+ updated_at TIMESTAMP DEFAULT NOW(),
66
+ expires_at TIMESTAMP DEFAULT NOW() + INTERVAL '30 days',
67
+ CONSTRAINT chk_cart_owner CHECK (user_id IS NOT NULL OR session_token IS NOT NULL)
68
+ );
69
+
70
+ -- Cart items
71
+ CREATE TABLE cart_items (
72
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
73
+ cart_id UUID NOT NULL REFERENCES carts(id) ON DELETE CASCADE,
74
+ product_id UUID NOT NULL REFERENCES products(id),
75
+ variant_id UUID REFERENCES product_variants(id), -- Size, color, etc.
76
+ quantity INTEGER NOT NULL DEFAULT 1 CHECK (quantity > 0),
77
+ price_at_add DECIMAL(10,2) NOT NULL, -- Snapshot price when added
78
+ created_at TIMESTAMP DEFAULT NOW(),
79
+ updated_at TIMESTAMP DEFAULT NOW(),
80
+ UNIQUE(cart_id, product_id, variant_id) -- One entry per product+variant
81
+ );
82
+
83
+ -- Indexes
84
+ CREATE INDEX idx_carts_user ON carts(user_id) WHERE user_id IS NOT NULL;
85
+ CREATE INDEX idx_carts_session ON carts(session_token) WHERE session_token IS NOT NULL;
86
+ CREATE INDEX idx_carts_status ON carts(status);
87
+ CREATE INDEX idx_cart_items_cart ON cart_items(cart_id);
88
+ ```
89
+
90
+ ---
91
+
92
+ ## API Endpoints
93
+
94
+ ```javascript
95
+ // GET /api/cart — Get current cart
96
+ router.get('/cart', async (req, res) => {
97
+ const cart = await getOrCreateCart(req.user?.id, req.sessionToken);
98
+ const items = await getCartItems(cart.id);
99
+
100
+ // Validate prices are still current
101
+ const validated = await validateCartPrices(items);
102
+
103
+ res.json({
104
+ cart_id: cart.id,
105
+ items: validated.items,
106
+ price_changes: validated.changes, // Alert user if prices changed
107
+ subtotal: validated.subtotal,
108
+ item_count: validated.itemCount,
109
+ });
110
+ });
111
+
112
+ // POST /api/cart/items — Add item
113
+ router.post('/cart/items', async (req, res) => {
114
+ const { product_id, variant_id, quantity } = req.body;
115
+
116
+ // ALWAYS validate price server-side
117
+ const product = await getProduct(product_id);
118
+ if (!product || !product.is_active) {
119
+ return res.status(404).json({ error: 'Product not available' });
120
+ }
121
+
122
+ // Check stock
123
+ const available = await checkStock(product_id, variant_id, quantity);
124
+ if (!available) {
125
+ return res.status(409).json({ error: 'Insufficient stock', available: available.count });
126
+ }
127
+
128
+ const cart = await getOrCreateCart(req.user?.id, req.sessionToken);
129
+ const item = await addToCart(cart.id, product_id, variant_id, quantity, product.price);
130
+
131
+ res.json({ item, cart_total: await getCartTotal(cart.id) });
132
+ });
133
+
134
+ // PATCH /api/cart/items/:id — Update quantity
135
+ router.patch('/cart/items/:id', async (req, res) => {
136
+ const { quantity } = req.body;
137
+ if (quantity < 1) {
138
+ return res.status(400).json({ error: 'Quantity must be at least 1' });
139
+ }
140
+ // Re-check stock at new quantity
141
+ const item = await getCartItem(req.params.id);
142
+ const available = await checkStock(item.product_id, item.variant_id, quantity);
143
+ if (!available) {
144
+ return res.status(409).json({ error: 'Insufficient stock' });
145
+ }
146
+ const updated = await updateCartItemQuantity(req.params.id, quantity);
147
+ res.json(updated);
148
+ });
149
+
150
+ // DELETE /api/cart/items/:id — Remove item
151
+ router.delete('/cart/items/:id', async (req, res) => {
152
+ await removeCartItem(req.params.id);
153
+ res.json({ removed: true });
154
+ });
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Cart Merge on Login
160
+
161
+ When a guest user logs in, their anonymous cart must merge with their account cart:
162
+
163
+ ```javascript
164
+ async function mergeCartsOnLogin(userId, sessionToken) {
165
+ const guestCart = await getCartBySession(sessionToken);
166
+ const userCart = await getCartByUser(userId);
167
+
168
+ if (!guestCart || guestCart.items.length === 0) return userCart;
169
+ if (!userCart) {
170
+ // Simple case: assign guest cart to user
171
+ await db.query('UPDATE carts SET user_id = $1, session_token = NULL WHERE id = $2',
172
+ [userId, guestCart.id]);
173
+ return guestCart;
174
+ }
175
+
176
+ // Merge: guest items into user cart
177
+ for (const guestItem of guestCart.items) {
178
+ const existingItem = userCart.items.find(
179
+ i => i.product_id === guestItem.product_id && i.variant_id === guestItem.variant_id
180
+ );
181
+
182
+ if (existingItem) {
183
+ // Same product: take higher quantity (guest was shopping more recently)
184
+ const newQty = Math.max(existingItem.quantity, guestItem.quantity);
185
+ await updateCartItemQuantity(existingItem.id, newQty);
186
+ } else {
187
+ // New product: add to user cart
188
+ await addToCart(userCart.id, guestItem.product_id, guestItem.variant_id,
189
+ guestItem.quantity, guestItem.price_at_add);
190
+ }
191
+ }
192
+
193
+ // Mark guest cart as merged
194
+ await db.query("UPDATE carts SET status = 'merged' WHERE id = $1", [guestCart.id]);
195
+
196
+ return await getCartByUser(userId);
197
+ }
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Price Validation at Checkout
203
+
204
+ Never trust the cart's stored prices at checkout time — always re-validate:
205
+
206
+ ```javascript
207
+ async function validateCartForCheckout(cartId) {
208
+ const items = await getCartItems(cartId);
209
+ const issues = [];
210
+
211
+ for (const item of items) {
212
+ const currentProduct = await getProduct(item.product_id);
213
+
214
+ // Product still exists and is active?
215
+ if (!currentProduct || !currentProduct.is_active) {
216
+ issues.push({ item_id: item.id, type: 'unavailable', message: `${item.name} is no longer available` });
217
+ continue;
218
+ }
219
+
220
+ // Price changed?
221
+ if (currentProduct.price !== item.price_at_add) {
222
+ issues.push({
223
+ item_id: item.id, type: 'price_change',
224
+ old_price: item.price_at_add, new_price: currentProduct.price,
225
+ message: `Price changed from $${item.price_at_add} to $${currentProduct.price}`
226
+ });
227
+ }
228
+
229
+ // Still in stock?
230
+ const stock = await checkStock(item.product_id, item.variant_id, item.quantity);
231
+ if (!stock.available) {
232
+ issues.push({
233
+ item_id: item.id, type: 'stock',
234
+ requested: item.quantity, available: stock.count,
235
+ message: `Only ${stock.count} available (you have ${item.quantity})`
236
+ });
237
+ }
238
+ }
239
+
240
+ return { valid: issues.length === 0, issues };
241
+ }
242
+ ```
243
+
244
+ ---
245
+
246
+ ## Session Token Middleware
247
+
248
+ ```javascript
249
+ function cartSessionMiddleware(req, res, next) {
250
+ // Authenticated users use their user ID
251
+ if (req.user) {
252
+ req.cartIdentifier = { user_id: req.user.id };
253
+ return next();
254
+ }
255
+
256
+ // Guest users get a session token
257
+ let sessionToken = req.cookies?.cart_session;
258
+ if (!sessionToken) {
259
+ sessionToken = crypto.randomUUID();
260
+ res.cookie('cart_session', sessionToken, {
261
+ httpOnly: true,
262
+ secure: process.env.NODE_ENV === 'production',
263
+ sameSite: 'lax',
264
+ maxAge: 30 * 24 * 60 * 60 * 1000, // 30 days
265
+ });
266
+ }
267
+ req.cartIdentifier = { session_token: sessionToken };
268
+ req.sessionToken = sessionToken;
269
+ next();
270
+ }
271
+ ```
272
+
273
+ ---
274
+
275
+ ## Constraint Verification Checklist
276
+
277
+ Before marking any cart feature complete:
278
+
279
+ ```
280
+ □ Prices validated server-side (never from client)
281
+ □ Stock checked before adding and at checkout
282
+ □ Race condition handled (two users buy last item)
283
+ □ Cart expires after configurable period (default 30 days)
284
+ □ Guest cart merges correctly on login
285
+ □ Price changes shown to user before checkout
286
+ □ Unavailable products removed/flagged at checkout
287
+ □ Quantity limits enforced (min 1, max per product policy)
288
+ □ Cart total calculated server-side (not client sum)
289
+ □ Session token is httpOnly, secure, sameSite
290
+ ```
291
+
292
+ ---
293
+
294
+ ## Sources
295
+
296
+ - ShoppingComp (arXiv:2511.22978) — LLM Shopping Cart Benchmark (Nov 2025)
297
+ - WebMall (arXiv:2508.13024) — Multi-Shop E-Commerce Agent Benchmark (Aug 2025)
298
+ - ShoppingBench (arXiv:2508.04266) — Intent-Grounded Shopping Agent Benchmark (Aug 2025)
299
+ - Adobe Commerce: `mergeCarts` GraphQL mutation reference
300
+ - WooCommerce: Cart data flow documentation (2025)
@@ -0,0 +1,264 @@
1
+ # Cart Item Count Indicator
2
+
3
+ ## Problem Statement
4
+ Users need visual feedback when they add items to their cart. Industry standard (Amazon, Shopify) shows a badge with the number of items directly on the cart icon in the main navigation.
5
+
6
+ ## Solution Overview
7
+ Implement a real-time cart count badge that:
8
+ 1. Shows the number of items in the cart on the cart icon
9
+ 2. Updates automatically when items are added/removed
10
+ 3. Fetches count from backend API
11
+ 4. Displays elegantly with a red badge for visibility
12
+
13
+ ## Implementation
14
+
15
+ ### 1. Backend - Cart Count Endpoint
16
+
17
+ #### Controller Function (`server/controllers/cartController.js`)
18
+ ```javascript
19
+ /**
20
+ * Get cart item count
21
+ * @route GET /api/cart/count
22
+ * @access Private
23
+ */
24
+ export const getCartCount = async (req, res) => {
25
+ try {
26
+ const userId = req.user.id;
27
+
28
+ const result = await sql`
29
+ SELECT COUNT(*)::int as count
30
+ FROM cart_items ci
31
+ JOIN products p ON p.id = ci.product_id
32
+ WHERE ci.user_id = ${userId}
33
+ AND p.deleted_at IS NULL
34
+ AND p.status = 'published'
35
+ `;
36
+
37
+ res.json({
38
+ success: true,
39
+ count: result[0]?.count || 0
40
+ });
41
+ } catch (error) {
42
+ console.error('❌ [Get Cart Count Error]:', error);
43
+ res.status(500).json({
44
+ success: false,
45
+ message: 'Error fetching cart count',
46
+ count: 0
47
+ });
48
+ }
49
+ };
50
+ ```
51
+
52
+ #### Route Definition (`server/routes/cartRoutes.js`)
53
+ ```javascript
54
+ import { getCartCount } from '../controllers/cartController.js';
55
+
56
+ // Add route BEFORE the generic GET '/' route to avoid conflicts
57
+ router.get('/count', auth, getCartCount);
58
+ ```
59
+
60
+ ### 2. Frontend - Header Component
61
+
62
+ #### State and Functions (`client/src/components/layout/Header.jsx`)
63
+ ```javascript
64
+ const Header = () => {
65
+ const [cartCount, setCartCount] = useState(0);
66
+ const { isAuthenticated } = useSelector((state) => state.auth);
67
+ const location = useLocation();
68
+
69
+ // Fetch cart count
70
+ useEffect(() => {
71
+ if (isAuthenticated) {
72
+ fetchCartCount();
73
+ } else {
74
+ setCartCount(0);
75
+ }
76
+ }, [isAuthenticated, location.pathname]);
77
+
78
+ const fetchCartCount = async () => {
79
+ try {
80
+ const { data } = await axios.get('/api/cart/count');
81
+ setCartCount(data.count || 0);
82
+ } catch (error) {
83
+ console.error('Failed to fetch cart count:', error);
84
+ setCartCount(0);
85
+ }
86
+ };
87
+ ```
88
+
89
+ #### Visual Badge Display
90
+ ```javascript
91
+ {/* Shopping Cart Icon */}
92
+ {isAuthenticated && (
93
+ <Link
94
+ to="/cart"
95
+ className="relative p-2 text-gray-600 hover:text-gray-900 transition-colors duration-200"
96
+ >
97
+ <svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
98
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2}
99
+ d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z" />
100
+ </svg>
101
+ {cartCount > 0 && (
102
+ <span className="absolute -top-1 -right-1 h-5 w-5 bg-red-500 text-white text-xs font-bold rounded-full flex items-center justify-center">
103
+ {cartCount > 99 ? '99+' : cartCount}
104
+ </span>
105
+ )}
106
+ </Link>
107
+ )}
108
+ ```
109
+
110
+ ### 3. Real-Time Updates
111
+
112
+ To ensure the cart count updates when items are added/removed:
113
+
114
+ #### After Adding to Cart
115
+ ```javascript
116
+ const handleAddToCart = async (productId) => {
117
+ try {
118
+ await axios.post('/api/cart', { product_id: productId });
119
+
120
+ // Trigger cart count refresh
121
+ await fetchCartCount();
122
+
123
+ toast.success('Added to cart!');
124
+ } catch (error) {
125
+ toast.error('Failed to add to cart');
126
+ }
127
+ };
128
+ ```
129
+
130
+ #### After Removing from Cart
131
+ ```javascript
132
+ const handleRemoveFromCart = async (itemId) => {
133
+ try {
134
+ await axios.delete(`/api/cart/${itemId}`);
135
+
136
+ // Update cart count in header
137
+ await fetchCartCount();
138
+
139
+ toast.success('Removed from cart');
140
+ } catch (error) {
141
+ toast.error('Failed to remove item');
142
+ }
143
+ };
144
+ ```
145
+
146
+ ## Design Decisions
147
+
148
+ ### Badge Styling
149
+ - **Red background** (`bg-red-500`): High visibility, industry standard for notifications
150
+ - **Circular shape** (`rounded-full`): Clean, modern look
151
+ - **Absolute positioning**: Overlays on top-right of cart icon
152
+ - **Small size** (`h-5 w-5`): Non-intrusive but visible
153
+ - **White text**: Maximum contrast with red background
154
+
155
+ ### Performance Optimizations
156
+ 1. **Conditional fetching**: Only fetch when authenticated
157
+ 2. **Location-based refresh**: Update count when navigating (useful after checkout)
158
+ 3. **Error handling**: Gracefully default to 0 on errors
159
+ 4. **SQL optimization**: Direct COUNT with JOIN for accuracy
160
+
161
+ ### UX Considerations
162
+ 1. **99+ display**: Prevents badge from getting too wide with large numbers
163
+ 2. **Hide when 0**: Don't show badge when cart is empty
164
+ 3. **Smooth transitions**: CSS transitions on hover states
165
+ 4. **Responsive**: Works on both desktop and mobile views
166
+
167
+ ## Testing
168
+
169
+ ### Manual Testing
170
+ 1. **Add item to cart**: Badge should appear/increment
171
+ 2. **Remove item**: Badge should decrement/disappear
172
+ 3. **Clear cart**: Badge should disappear
173
+ 4. **Login/Logout**: Badge should appear/disappear appropriately
174
+ 5. **Page refresh**: Count should persist
175
+
176
+ ### API Testing
177
+ ```bash
178
+ # Test cart count endpoint
179
+ curl -X GET http://localhost:5000/api/cart/count \
180
+ -H "Authorization: Bearer YOUR_TOKEN"
181
+
182
+ # Expected response:
183
+ {
184
+ "success": true,
185
+ "count": 3
186
+ }
187
+ ```
188
+
189
+ ## Common Issues and Solutions
190
+
191
+ ### Issue: Count not updating after adding item
192
+ **Solution**: Ensure `fetchCartCount()` is called after successful cart operations
193
+
194
+ ### Issue: Badge overlapping with other elements
195
+ **Solution**: Parent element needs `relative` positioning
196
+
197
+ ### Issue: Count showing wrong number
198
+ **Solution**: Check SQL query joins products table and filters by status
199
+
200
+ ## Alternative Implementations
201
+
202
+ ### 1. Redux State Management
203
+ Instead of local component state, use Redux:
204
+ ```javascript
205
+ // Redux slice
206
+ const cartSlice = createSlice({
207
+ name: 'cart',
208
+ initialState: { count: 0 },
209
+ reducers: {
210
+ setCartCount: (state, action) => {
211
+ state.count = action.payload;
212
+ }
213
+ }
214
+ });
215
+ ```
216
+
217
+ ### 2. WebSocket Real-Time Updates
218
+ For multi-tab synchronization:
219
+ ```javascript
220
+ socket.on('cart-updated', (data) => {
221
+ if (data.userId === currentUserId) {
222
+ setCartCount(data.count);
223
+ }
224
+ });
225
+ ```
226
+
227
+ ### 3. Context API
228
+ For sharing cart count across components:
229
+ ```javascript
230
+ const CartContext = createContext();
231
+
232
+ export const CartProvider = ({ children }) => {
233
+ const [cartCount, setCartCount] = useState(0);
234
+ return (
235
+ <CartContext.Provider value={{ cartCount, setCartCount }}>
236
+ {children}
237
+ </CartContext.Provider>
238
+ );
239
+ };
240
+ ```
241
+
242
+ ## Industry Standards Reference
243
+
244
+ ### Amazon Style
245
+ - Red badge with white number
246
+ - Shows total item count (not unique products)
247
+ - Updates instantly on add/remove
248
+
249
+ ### Shopify Style
250
+ - Often shows slide-out panel with items
251
+ - Badge shows item count
252
+ - May include mini cart preview on hover
253
+
254
+ ### Best Practices
255
+ 1. **Instant feedback**: Update immediately, even before server confirms
256
+ 2. **Optimistic updates**: Show change, rollback on error
257
+ 3. **Accessibility**: Include aria-label for screen readers
258
+ 4. **Mobile-friendly**: Ensure touch targets are adequate size
259
+
260
+ ---
261
+
262
+ **Last Updated**: October 31, 2024
263
+ **Tested With**: React 18, Node.js/Express, PostgreSQL
264
+ **Author**: Claude (Anthropic)