@thierrynakoa/fire-flow 12.2.2 → 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 (501) hide show
  1. package/CREDITS.md +25 -0
  2. package/DOMINION-FLOW-OVERVIEW.md +182 -38
  3. package/README.md +399 -690
  4. package/TROUBLESHOOTING.md +264 -367
  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-verify-uat.md +9 -177
  52. package/commands/fire-vuln-scan.md +492 -493
  53. package/hooks/run-hook.sh +8 -8
  54. package/hooks/run-session-end.sh +7 -7
  55. package/hooks/session-end.sh +90 -90
  56. package/hooks/session-start.sh +1 -1
  57. package/package.json +4 -25
  58. package/plugin.json +7 -7
  59. package/references/autonomy-levels.md +235 -0
  60. package/references/behavioral-directives.md +95 -3
  61. package/references/blocker-tracking.md +1 -1
  62. package/references/circuit-breaker.md +93 -2
  63. package/references/context-engineering.md +227 -9
  64. package/references/honesty-protocols.md +70 -1
  65. package/references/issue-to-pr-pipeline.md +149 -150
  66. package/references/metrics-and-trends.md +1 -2
  67. package/references/research-improvements.md +4 -108
  68. package/references/sdlc-mapping.md +73 -0
  69. package/references/state-machine.md +151 -0
  70. package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
  71. package/skills-library/SKILLS-INDEX.md +57 -558
  72. package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
  73. package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
  74. package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
  75. package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
  76. package/skills-library/_general/automation/settings-gui-generator.md +172 -0
  77. package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
  78. package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
  79. package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
  80. package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
  81. package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
  82. package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
  83. package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
  84. package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
  85. package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
  86. package/skills-library/_general/frontend/color-token-migration.md +112 -0
  87. package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
  88. package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
  89. package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
  90. package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
  91. package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
  92. package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
  93. package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
  94. package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
  95. package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
  96. package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
  97. package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
  98. package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
  99. package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
  100. package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
  101. package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
  102. package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
  103. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
  104. package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
  105. package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
  106. package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
  107. package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
  108. package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
  109. package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
  110. package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
  111. package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
  112. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
  113. package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
  114. package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
  115. package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
  116. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
  117. package/skills-library/_general/methodology/dead-code-activation.md +123 -0
  118. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  119. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
  120. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
  121. package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
  122. package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
  123. package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
  124. package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
  125. package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
  126. package/skills-library/_general/performance/liveclock-extraction.md +112 -0
  127. package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
  128. package/skills-library/_general/performance/use-visible-interval.md +131 -0
  129. package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
  130. package/skills-library/_quarantine/README.md +30 -0
  131. package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
  132. package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
  133. package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
  134. package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
  135. package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
  136. package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
  137. package/skills-library/api-patterns/graphql-content-queries.md +708 -0
  138. package/skills-library/appointment-scheduler-design.md +423 -0
  139. package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
  140. package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
  141. package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
  142. package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
  143. package/skills-library/automation/scheduled-content-publishing.md +608 -0
  144. package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
  145. package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
  146. package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
  147. package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
  148. package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
  149. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
  150. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
  151. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
  152. package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
  153. package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
  154. package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
  155. package/skills-library/cms-patterns/content-branch-preview.md +515 -0
  156. package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
  157. package/skills-library/cms-patterns/mdx-component-content.md +649 -0
  158. package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
  159. package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
  160. package/skills-library/complexity-metrics/complexity-divider.md +707 -0
  161. package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
  162. package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
  163. package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
  164. package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
  165. package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
  166. package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
  167. package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
  168. package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
  169. package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
  170. package/skills-library/creative-multimedia/og-image-generator.md +635 -0
  171. package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
  172. package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
  173. package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
  174. package/skills-library/creative-multimedia/svg-generation.md +750 -0
  175. package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
  176. package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
  177. package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
  178. package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
  179. package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
  180. package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
  181. package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
  182. package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
  183. package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
  184. package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
  185. package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
  186. package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
  187. package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
  188. package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
  189. package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
  190. package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
  191. package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
  192. package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
  193. package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
  194. package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
  195. package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
  196. package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
  197. package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
  198. package/skills-library/database-solutions/content-publishing-states.md +631 -0
  199. package/skills-library/database-solutions/database-schema-designer.md +522 -0
  200. package/skills-library/database-solutions/er-diagram-components.md +569 -0
  201. package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
  202. package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
  203. package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
  204. package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
  205. package/skills-library/database-solutions/normalization-validator.md +778 -0
  206. package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
  207. package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
  208. package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
  209. package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
  210. package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
  211. package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
  212. package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
  213. package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
  214. package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
  215. package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
  216. package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
  217. package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
  218. package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
  219. package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
  220. package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
  221. package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
  222. package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
  223. package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
  224. package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
  225. package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
  226. package/skills-library/deployment-security/SECURITY.md +41 -0
  227. package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
  228. package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
  229. package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
  230. package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
  231. package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
  232. package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
  233. package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
  234. package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
  235. package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
  236. package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
  237. package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
  238. package/skills-library/deployment-security/vps-deployment.md +135 -0
  239. package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
  240. package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
  241. package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
  242. package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
  243. package/skills-library/document-processing/md-to-word-converter.md +318 -0
  244. package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
  245. package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
  246. package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
  247. package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
  248. package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
  249. package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
  250. package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
  251. package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
  252. package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
  253. package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
  254. package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
  255. package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
  256. package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
  257. package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
  258. package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
  259. package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
  260. package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
  261. package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
  262. package/skills-library/ecommerce/inventory-stock-management.md +270 -0
  263. package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
  264. package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
  265. package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
  266. package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
  267. package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
  268. package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
  269. package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
  270. package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
  271. package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
  272. package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
  273. package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
  274. package/skills-library/excalidraw-diagrams/LICENSE +21 -0
  275. package/skills-library/excalidraw-diagrams/README.md +178 -0
  276. package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
  277. package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
  278. package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
  279. package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
  280. package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
  281. package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
  282. package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
  283. package/skills-library/infrastructure/observability-designer.md +264 -0
  284. package/skills-library/infrastructure/performance-profiler.md +621 -0
  285. package/skills-library/installer-wizard-patterns.md +249 -0
  286. package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
  287. package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
  288. package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
  289. package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
  290. package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  291. package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
  292. package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  293. package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  294. package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  295. package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  296. package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
  297. package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
  298. package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
  299. package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
  300. package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
  301. package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
  302. package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
  303. package/skills-library/integrations/headless-cms-architecture.md +484 -0
  304. package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
  305. package/skills-library/integrations/payload-cms-patterns.md +674 -0
  306. package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
  307. package/skills-library/integrations/rss-podcast-integration.md +300 -0
  308. package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  309. package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
  310. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  311. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  312. package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  313. package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  314. package/skills-library/marketing/campaign-analytics.md +97 -0
  315. package/skills-library/marketing/content-creator.md +105 -0
  316. package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
  317. package/skills-library/marketing/social-media-analyzer.md +81 -0
  318. package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
  319. package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
  320. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  321. package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
  322. package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
  323. package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
  324. package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
  325. package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
  326. package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
  327. package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
  328. package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
  329. package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
  330. package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
  331. package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
  332. package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
  333. package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
  334. package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
  335. package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
  336. package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
  337. package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
  338. package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
  339. package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
  340. package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
  341. package/skills-library/methodology/tech-debt-tracker.md +570 -0
  342. package/skills-library/parallel-debug/SKILL.md +60 -0
  343. package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
  344. package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
  345. package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
  346. package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
  347. package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
  348. package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
  349. package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
  350. package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
  351. package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
  352. package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
  353. package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
  354. package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
  355. package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
  356. package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
  357. package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
  358. package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
  359. package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
  360. package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
  361. package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
  362. package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
  363. package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
  364. package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
  365. package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
  366. package/skills-library/security/admin-deletion-safety.md +396 -0
  367. package/skills-library/security/application-vuln-patterns.md +477 -0
  368. package/skills-library/security/env-secrets-manager.md +686 -0
  369. package/skills-library/security/secure-ai-application-templates.md +347 -0
  370. package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
  371. package/skills-library/supabase-connection-pooler-fix.md +102 -0
  372. package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
  373. package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
  374. package/skills-library/system-context/SKILL.md +40 -0
  375. package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
  376. package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
  377. package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
  378. package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
  379. package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
  380. package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
  381. package/skills-library/testing/playwright-api-security-tests.md +202 -0
  382. package/skills-library/toolbox/SKILL.md +84 -0
  383. package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
  384. package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
  385. package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
  386. package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
  387. package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
  388. package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
  389. package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
  390. package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
  391. package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
  392. package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
  393. package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
  394. package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  395. package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  396. package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  397. package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  398. package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  399. package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  400. package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  401. package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  402. package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
  403. package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  404. package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  405. package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  406. package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  407. package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
  408. package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
  409. package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  410. package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  411. package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
  412. package/skills-library/wordpress-style-theme-components.md +1526 -0
  413. package/templates/ASSUMPTIONS.md +1 -1
  414. package/templates/DECISION_LOG.md +0 -1
  415. package/templates/phase-prompt.md +1 -1
  416. package/templates/phoenix-comparison.md +6 -6
  417. package/templates/skill-api-integration.md +106 -0
  418. package/templates/skill-architecture-pattern.md +92 -0
  419. package/templates/skill-debug-pattern.md +98 -0
  420. package/templates/skill-devops-recipe.md +107 -0
  421. package/templates/skill-general.md +65 -0
  422. package/templates/skill-ui-component.md +113 -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/browser-use-expert.md +0 -210
  484. package/skills-library/specialists/quality/code-documenter.md +0 -51
  485. package/skills-library/specialists/quality/code-reviewer.md +0 -67
  486. package/skills-library/specialists/quality/debugging-wizard.md +0 -51
  487. package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
  488. package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
  489. package/skills-library/specialists/quality/playwright-expert.md +0 -65
  490. package/skills-library/specialists/quality/spec-miner.md +0 -56
  491. package/skills-library/specialists/quality/test-master.md +0 -65
  492. package/skills-library/specialists/security/secure-code-guardian.md +0 -55
  493. package/skills-library/specialists/security/security-reviewer.md +0 -53
  494. package/skills-library/specialists/workflow/architecture-designer.md +0 -53
  495. package/skills-library/specialists/workflow/cli-developer.md +0 -70
  496. package/skills-library/specialists/workflow/feature-forge.md +0 -65
  497. package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
  498. package/skills-library/specialists/workflow/the-fool.md +0 -62
  499. /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
  500. /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
  501. /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
@@ -0,0 +1,413 @@
1
+ # Express.js Secure File Downloads - Industry Standard Solution
2
+
3
+ ## Problem Statement
4
+ Digital file downloads failing in Express.js application with various errors:
5
+ - 404 errors (missing endpoint)
6
+ - Payment status enum validation errors
7
+ - File not found errors despite files existing
8
+ - Path duplication issues (absolute paths treated as relative)
9
+
10
+ ## Root Cause Analysis
11
+
12
+ ### The Critical Bug
13
+ **Path Duplication Issue**: Database stored absolute file paths, but code treated them as relative paths, resulting in duplicated paths like:
14
+ ```
15
+ C:\Users\...\uploads\C:\Users\...\uploads\digital-files\file.pdf
16
+ ```
17
+
18
+ ### Contributing Factors
19
+ 1. **Inconsistent Path Storage**: Mix of absolute and relative paths in database
20
+ 2. **No Path Type Detection**: Code assumed all paths were relative
21
+ 3. **Manual Path Construction**: Using string concatenation instead of Express utilities
22
+ 4. **Missing Fallback Logic**: No recovery mechanism when primary path fails
23
+
24
+ ## Industry Standard Solution
25
+
26
+ ### Complete Working Implementation
27
+
28
+ ```javascript
29
+ /**
30
+ * Digital Downloads Controller
31
+ * Secure file download with purchase verification
32
+ */
33
+
34
+ import sql from '../config/sql.js';
35
+ import path from 'path';
36
+ import fs from 'fs';
37
+ import { fileURLToPath } from 'url';
38
+
39
+ const __filename = fileURLToPath(import.meta.url);
40
+ const __dirname = path.dirname(__filename);
41
+
42
+ export const downloadDigitalFile = async (req, res) => {
43
+ try {
44
+ const { fileId } = req.params;
45
+ const userId = req.user.id;
46
+
47
+ console.log('📥 [Download Digital File] Request:', {
48
+ fileId,
49
+ userId
50
+ });
51
+
52
+ // 1. GET FILE INFO FROM DATABASE
53
+ const files = await sql`
54
+ SELECT
55
+ ddf.*,
56
+ p.id as product_id,
57
+ p.name as product_name
58
+ FROM digital_download_files ddf
59
+ JOIN products p ON p.id = ddf.product_id
60
+ WHERE ddf.id = ${fileId}
61
+ `;
62
+
63
+ if (files.length === 0) {
64
+ return res.status(404).json({
65
+ success: false,
66
+ message: 'File not found'
67
+ });
68
+ }
69
+
70
+ const file = files[0];
71
+
72
+ // 2. VERIFY PURCHASE (Allow free products that stay in 'pending')
73
+ const purchases = await sql`
74
+ SELECT o.id as order_id, o.payment_status, o.total_amount
75
+ FROM orders o
76
+ JOIN order_items oi ON oi.order_id = o.id
77
+ WHERE o.user_id = ${userId}
78
+ AND oi.product_id = ${file.product_id}
79
+ LIMIT 1
80
+ `;
81
+
82
+ if (purchases.length === 0 && req.user.role !== 'admin') {
83
+ return res.status(403).json({
84
+ success: false,
85
+ message: 'You must purchase this product to download it'
86
+ });
87
+ }
88
+
89
+ // 3. INTELLIGENT PATH RESOLUTION WITH FALLBACK
90
+ let filePath;
91
+
92
+ // Check if file_path is absolute or relative
93
+ if (path.isAbsolute(file.file_path)) {
94
+ // It's already a full path (legacy data)
95
+ filePath = file.file_path;
96
+ console.log('📥 [Download] Using absolute path from DB:', filePath);
97
+ } else {
98
+ // It's a relative path (correct way)
99
+ const uploadsDir = path.join(__dirname, '..', 'uploads');
100
+ filePath = path.join(uploadsDir, file.file_path);
101
+ console.log('📥 [Download] Built path from relative:', filePath);
102
+ }
103
+
104
+ // 4. VERIFY FILE EXISTS WITH FALLBACK
105
+ if (!fs.existsSync(filePath)) {
106
+ console.error('❌ [Download] File not found at primary path:', filePath);
107
+
108
+ // Try fallback: extract filename and look in digital-files directory
109
+ const fileName = path.basename(file.file_path);
110
+ const fallbackPath = path.join(__dirname, '..', 'uploads', 'digital-files', fileName);
111
+
112
+ if (fs.existsSync(fallbackPath)) {
113
+ console.log('✅ [Download] Found file at fallback path:', fallbackPath);
114
+ filePath = fallbackPath;
115
+ } else {
116
+ return res.status(404).json({
117
+ success: false,
118
+ message: 'File not found on server'
119
+ });
120
+ }
121
+ }
122
+
123
+ // 5. USE EXPRESS BUILT-IN DOWNLOAD METHOD (INDUSTRY STANDARD)
124
+ // This handles headers, streaming, and security automatically
125
+ res.download(filePath, file.original_filename || file.display_name, (err) => {
126
+ if (err) {
127
+ console.error('❌ [Download] Error sending file:', err);
128
+ // Don't send response if headers already sent
129
+ if (!res.headersSent) {
130
+ res.status(500).json({
131
+ success: false,
132
+ message: 'Error downloading file'
133
+ });
134
+ }
135
+ } else {
136
+ console.log('✅ [Download] File sent successfully');
137
+ }
138
+ });
139
+
140
+ // 6. OPTIONAL: LOG DOWNLOAD FOR ANALYTICS
141
+ await sql`
142
+ INSERT INTO download_logs (
143
+ user_id, file_id, product_id, downloaded_at
144
+ ) VALUES (
145
+ ${userId}, ${fileId}, ${file.product_id}, CURRENT_TIMESTAMP
146
+ )
147
+ `.catch(err => {
148
+ // Don't fail the download if logging fails
149
+ console.error('⚠️ [Download] Failed to log download:', err);
150
+ });
151
+
152
+ } catch (error) {
153
+ console.error('❌ [Download Digital File Error]:', error);
154
+ res.status(500).json({
155
+ success: false,
156
+ message: 'Error downloading file',
157
+ error: error.message
158
+ });
159
+ }
160
+ };
161
+ ```
162
+
163
+ ### Routes Configuration
164
+
165
+ ```javascript
166
+ // server/routes/digitalDownloadsRoutes.js
167
+ import express from 'express';
168
+ import { downloadDigitalFile } from '../controllers/digitalDownloadsController.js';
169
+ import auth from '../middleware/auth.js';
170
+
171
+ const router = express.Router();
172
+
173
+ // Protected route - requires authentication
174
+ router.get('/:fileId/download', auth, downloadDigitalFile);
175
+
176
+ export default router;
177
+ ```
178
+
179
+ ### Server Integration
180
+
181
+ ```javascript
182
+ // server/server.js
183
+ import digitalDownloadsRoutes from './routes/digitalDownloadsRoutes.js';
184
+
185
+ // Register the routes
186
+ app.use('/api/digital-files', digitalDownloadsRoutes);
187
+ ```
188
+
189
+ ## Key Features of This Solution
190
+
191
+ ### 1. **Path Type Detection**
192
+ ```javascript
193
+ if (path.isAbsolute(file.file_path)) {
194
+ // Handle absolute paths
195
+ } else {
196
+ // Handle relative paths
197
+ }
198
+ ```
199
+
200
+ ### 2. **Express res.download() Method**
201
+ - **Built-in Security**: Prevents directory traversal attacks
202
+ - **Automatic Headers**: Sets correct Content-Type and Content-Disposition
203
+ - **Streaming Support**: Efficient for large files
204
+ - **Error Handling**: Callback for handling failures
205
+ - **Custom Filename**: Can specify download name different from stored name
206
+
207
+ ### 3. **Fallback Mechanism**
208
+ ```javascript
209
+ const fileName = path.basename(file.file_path);
210
+ const fallbackPath = path.join(__dirname, '..', 'uploads', 'digital-files', fileName);
211
+ ```
212
+
213
+ ### 4. **Purchase Verification**
214
+ - Checks orders table for purchase record
215
+ - Allows admin bypass for testing
216
+ - Handles free products (may stay in 'pending' status)
217
+
218
+ ### 5. **Proper Error Handling**
219
+ - Checks if headers already sent before error response
220
+ - Graceful failure for optional features (logging)
221
+ - Detailed console logging for debugging
222
+
223
+ ## Common Pitfalls to Avoid
224
+
225
+ ### ❌ Don't Do This:
226
+ ```javascript
227
+ // Manual file streaming (security risk)
228
+ const stream = fs.createReadStream(filePath);
229
+ stream.pipe(res);
230
+
231
+ // String concatenation for paths
232
+ const filePath = __dirname + '/../uploads/' + file.file_path;
233
+
234
+ // No purchase verification
235
+ // Anyone with fileId could download
236
+
237
+ // Assuming all paths are relative
238
+ const filePath = path.join(uploadsDir, file.file_path); // Fails with absolute paths
239
+ ```
240
+
241
+ ### ✅ Do This Instead:
242
+ ```javascript
243
+ // Use Express's built-in method
244
+ res.download(filePath, filename, callback);
245
+
246
+ // Use path.join with detection
247
+ if (path.isAbsolute(file.file_path)) { ... }
248
+
249
+ // Always verify ownership
250
+ const purchases = await sql`...`;
251
+ if (purchases.length === 0) { ... }
252
+ ```
253
+
254
+ ## Testing Verification
255
+
256
+ ### 1. Test File Upload and Storage
257
+ ```bash
258
+ # Check uploaded files exist
259
+ ls -la server/uploads/digital-files/
260
+
261
+ # Verify database entries
262
+ node -e "
263
+ import sql from './server/config/sql.js';
264
+ const files = await sql\`SELECT * FROM digital_download_files\`;
265
+ console.log(files);
266
+ "
267
+ ```
268
+
269
+ ### 2. Test Download Endpoint
270
+ ```bash
271
+ # Test with curl (replace with actual token and fileId)
272
+ curl -H "Authorization: Bearer YOUR_TOKEN" \
273
+ http://localhost:5000/api/digital-files/FILE_ID/download \
274
+ --output test-download.pdf
275
+ ```
276
+
277
+ ### 3. Test Path Resolution
278
+ ```javascript
279
+ // Test script: testPaths.js
280
+ import path from 'path';
281
+
282
+ const testPaths = [
283
+ 'C:\\Users\\test\\uploads\\file.pdf', // Absolute Windows
284
+ '/home/user/uploads/file.pdf', // Absolute Unix
285
+ 'digital-files/file.pdf', // Relative
286
+ 'file.pdf' // Just filename
287
+ ];
288
+
289
+ testPaths.forEach(testPath => {
290
+ console.log(`${testPath}: ${path.isAbsolute(testPath) ? 'ABSOLUTE' : 'RELATIVE'}`);
291
+ });
292
+ ```
293
+
294
+ ## Database Schema Requirements
295
+
296
+ ```sql
297
+ -- Digital download files table
298
+ CREATE TABLE digital_download_files (
299
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
300
+ product_id uuid NOT NULL REFERENCES products(id) ON DELETE CASCADE,
301
+ display_name varchar(255) NOT NULL,
302
+ original_filename varchar(255),
303
+ file_path text NOT NULL, -- Can be absolute or relative
304
+ file_size bigint,
305
+ mime_type varchar(100),
306
+ display_order integer DEFAULT 0,
307
+ created_at timestamptz DEFAULT now()
308
+ );
309
+
310
+ -- Optional: Download tracking
311
+ CREATE TABLE download_logs (
312
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
313
+ user_id uuid NOT NULL REFERENCES profiles(id),
314
+ file_id uuid NOT NULL REFERENCES digital_download_files(id),
315
+ product_id uuid NOT NULL REFERENCES products(id),
316
+ downloaded_at timestamptz DEFAULT now(),
317
+ ip_address inet
318
+ );
319
+ ```
320
+
321
+ ## Migration for Existing Systems
322
+
323
+ If you have existing data with mixed path types:
324
+
325
+ ```javascript
326
+ // Migration script to normalize paths
327
+ import sql from './server/config/sql.js';
328
+ import path from 'path';
329
+
330
+ const files = await sql`SELECT * FROM digital_download_files`;
331
+
332
+ for (const file of files) {
333
+ let normalizedPath = file.file_path;
334
+
335
+ // If absolute, convert to relative
336
+ if (path.isAbsolute(file.file_path)) {
337
+ // Extract just the relevant part
338
+ const match = file.file_path.match(/digital-files[\\\/].+$/);
339
+ if (match) {
340
+ normalizedPath = match[0].replace(/\\/g, '/');
341
+
342
+ await sql`
343
+ UPDATE digital_download_files
344
+ SET file_path = ${normalizedPath}
345
+ WHERE id = ${file.id}
346
+ `;
347
+ console.log(`Updated: ${file.file_path} -> ${normalizedPath}`);
348
+ }
349
+ }
350
+ }
351
+ ```
352
+
353
+ ## Security Considerations
354
+
355
+ 1. **Authentication Required**: Always verify user is logged in
356
+ 2. **Purchase Verification**: Check user owns the product
357
+ 3. **Path Traversal Prevention**: res.download() handles this automatically
358
+ 4. **File Existence Check**: Verify file exists before attempting download
359
+ 5. **Error Information**: Don't expose internal paths in error messages to users
360
+ 6. **Rate Limiting**: Consider adding download rate limits per user
361
+
362
+ ## Performance Optimization
363
+
364
+ For high-traffic applications:
365
+
366
+ ```javascript
367
+ // 1. Cache file existence checks
368
+ const fileCache = new Map();
369
+
370
+ // 2. Use CDN for large files
371
+ if (file.file_size > 10 * 1024 * 1024) { // > 10MB
372
+ return res.redirect(cdnUrl);
373
+ }
374
+
375
+ // 3. Add download queuing for concurrent limits
376
+ const downloadQueue = new Queue({ concurrency: 10 });
377
+ ```
378
+
379
+ ## Troubleshooting Guide
380
+
381
+ ### Problem: "File not found on server"
382
+ - Check file actually exists in uploads directory
383
+ - Verify path in database matches actual location
384
+ - Check file permissions (readable by Node.js process)
385
+ - Try fallback path mechanism
386
+
387
+ ### Problem: "Payment status enum error"
388
+ - Check valid enum values in database
389
+ - Consider removing strict payment status check
390
+ - Allow 'pending' status for free products
391
+
392
+ ### Problem: Downloads work locally but not in production
393
+ - Check file paths (Windows vs Linux)
394
+ - Verify uploads directory is included in deployment
395
+ - Check file permissions on server
396
+ - Ensure proper environment variables
397
+
398
+ ## Related Skills
399
+ - [PostgreSQL JSON Aggregation](./postgresql-json-aggregation.md)
400
+ - [Express.js Authentication Middleware](./express-auth-middleware.md)
401
+ - [File Upload Handling](./file-upload-handling.md)
402
+
403
+ ## References
404
+ - [Express.js res.download() Documentation](https://expressjs.com/en/api.html#res.download)
405
+ - [Node.js Path Module](https://nodejs.org/api/path.html)
406
+ - [OWASP File Upload Security](https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload)
407
+
408
+ ---
409
+
410
+ **Last Updated**: October 31, 2024
411
+ **Tested With**: Express 4.x, Node.js 18+, PostgreSQL 14+
412
+ **Author**: Claude (Anthropic)
413
+ **Context**: MERN Community LMS Project - Digital Downloads Feature