@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,203 @@
1
+ ---
2
+ name: env-file-management-production-local
3
+ category: deployment-security
4
+ version: 1.0.0
5
+ contributed: 2026-01-24
6
+ contributor: my-other-project
7
+ last_updated: 2026-01-24
8
+ tags: [environment, dotenv, security, deployment, vite, production, secrets, mern]
9
+ difficulty: medium
10
+ ---
11
+
12
+ # Environment File Management: Production vs Local
13
+
14
+ ## Problem
15
+
16
+ Production server uses wrong environment (e.g., TEST Stripe keys instead of LIVE keys). Common symptoms:
17
+
18
+ - Stripe checkout shows "TEST MODE" badge in production
19
+ - Checkout session URLs contain `cs_test_` instead of `cs_live_`
20
+ - Payment processors reject transactions
21
+ - API keys suddenly "stop working" after deployment
22
+
23
+ **Root Cause**: Developers assume `.env` files are deployed with git, but they are NOT tracked in version control. Production server's `.env` must be manually configured via SSH.
24
+
25
+ ## Solution Pattern
26
+
27
+ ### 1. File Structure (Server)
28
+
29
+ ```
30
+ server/
31
+ ├── .env # Current environment (NOT in git)
32
+ ├── .env.local # Local dev overrides (NOT in git)
33
+ ├── .env.productionbackup # Backup of prod config (NOT in git)
34
+ ├── .env.localbackup # Backup of local config (NOT in git)
35
+ └── .env.example # Template with placeholders (IN git)
36
+ ```
37
+
38
+ ### 2. File Structure (Client/Vite)
39
+
40
+ ```
41
+ client/
42
+ ├── .env # Local development (NOT in git)
43
+ ├── .env.production # Production build values (IN git - PUBLIC keys only!)
44
+ └── .env.example # Template for developers (IN git)
45
+ ```
46
+
47
+ ### 3. Critical Rules
48
+
49
+ **Server .env files (NEVER in git):**
50
+ - Contains SECRET keys (sk_live_, client_secret, JWT_SECRET)
51
+ - Must be manually configured on each server via SSH
52
+ - Create backups: `.env.productionbackup`, `.env.localbackup`
53
+
54
+ **Client .env.production (IN git):**
55
+ - Contains ONLY publishable/public keys (pk_live_, client_id)
56
+ - Used by Vite during `npm run build`
57
+ - Safe to commit because these are public-facing
58
+
59
+ **VITE_ Prefix Required:**
60
+ - All client-side variables MUST have `VITE_` prefix
61
+ - Without prefix, Vite will NOT expose the variable to the frontend
62
+
63
+ ### 4. .gitignore Configuration
64
+
65
+ ```gitignore
66
+ # Environment files - NEVER commit secrets
67
+ .env
68
+ .env.local
69
+ .env.development
70
+ .env.development.local
71
+ .env.test
72
+ .env.test.local
73
+ .env.production.local
74
+ *.local
75
+
76
+ # Explicit backups
77
+ server/.env.productionbackup
78
+ server/.env.localbackup
79
+ client/.env.productionbackup
80
+ ```
81
+
82
+ **Note:** `client/.env.production` is intentionally NOT in .gitignore because it contains only public keys.
83
+
84
+ ## Code Example
85
+
86
+ ### Before (Problematic - secrets exposed)
87
+
88
+ ```env
89
+ # client/.env.production (WRONG - secrets in client!)
90
+ VITE_STRIPE_SECRET_KEY=sk_live_xxx # NEVER do this!
91
+ VITE_PAYPAL_SECRET=EIhBzb... # NEVER do this!
92
+ ```
93
+
94
+ ### After (Correct - public keys only)
95
+
96
+ ```env
97
+ # client/.env.production (CORRECT - public keys only)
98
+ VITE_API_URL=https://yourdomain.com/api
99
+ VITE_STRIPE_PUBLISHABLE_KEY=pk_live_51KFrTBB...
100
+ VITE_PAYPAL_CLIENT_ID=AVPCNK2OFrV3Wx46...
101
+ VITE_SITE_NAME=My App
102
+ ```
103
+
104
+ ```env
105
+ # server/.env (CORRECT - secrets on server only)
106
+ STRIPE_SECRET_KEY=sk_live_51KFrTBB...
107
+ PAYPAL_CLIENT_SECRET=EIhBzb...
108
+ JWT_SECRET=y2300cd87b131c28...
109
+ ```
110
+
111
+ ## Manual Deployment Process (SSH)
112
+
113
+ When deploying, you must manually update the production server's `.env`:
114
+
115
+ ```bash
116
+ # 1. SSH into production server
117
+ ssh user@server.example.com
118
+
119
+ # 2. Navigate to app directory
120
+ cd ~/mern-app
121
+
122
+ # 3. Pull code changes (does NOT include .env)
123
+ git pull origin main
124
+
125
+ # 4. Edit server .env with production values
126
+ nano server/.env
127
+
128
+ # 5. Update these values:
129
+ # - STRIPE_SECRET_KEY=sk_live_...
130
+ # - JWT_SECRET=your-secure-secret
131
+ # - NODE_ENV=production
132
+ # - All other production-specific values
133
+
134
+ # 6. Rebuild client
135
+ cd client && npm run build && cd ..
136
+
137
+ # 7. Copy built files to public directory
138
+ cp -r client/dist/* ~/public_html/
139
+
140
+ # 8. Restart application
141
+ pm2 restart all
142
+
143
+ # 9. Verify
144
+ pm2 logs --lines 20
145
+ ```
146
+
147
+ ## Debugging "Wrong Environment" Issues
148
+
149
+ ### Step 1: Check Server Key Prefix
150
+
151
+ ```bash
152
+ # On production server
153
+ grep STRIPE_SECRET_KEY ~/mern-app/server/.env
154
+ # Should show: sk_live_... NOT sk_test_...
155
+ ```
156
+
157
+ ### Step 2: Check Client Build Keys
158
+
159
+ ```bash
160
+ # In client/.env.production (local repo)
161
+ grep VITE_STRIPE ~/client/.env.production
162
+ # Should show: pk_live_... NOT pk_test_...
163
+ ```
164
+
165
+ ### Step 3: Verify Checkout Session
166
+
167
+ - `cs_test_` in URL = Server using TEST key
168
+ - `cs_live_` in URL = Server using LIVE key
169
+
170
+ The checkout session prefix is determined by the SERVER's secret key, not the client's publishable key.
171
+
172
+ ## When to Use
173
+
174
+ - Setting up new MERN/Vite projects
175
+ - Debugging "wrong environment" issues (test vs live keys)
176
+ - After losing .env configuration
177
+ - Training new team members on environment management
178
+ - Creating deployment documentation
179
+
180
+ ## When NOT to Use
181
+
182
+ - Projects using cloud secrets managers (AWS Secrets Manager, HashiCorp Vault)
183
+ - Containerized deployments with environment injection (Docker secrets, K8s ConfigMaps)
184
+ - Single-environment projects with no prod/dev separation
185
+
186
+ ## Common Mistakes
187
+
188
+ 1. **Assuming .env deploys with git** - It doesn't. Manual SSH update required.
189
+ 2. **Putting secrets in client .env** - Client code is public. Never put secrets there.
190
+ 3. **Forgetting VITE_ prefix** - Variable won't be exposed to frontend.
191
+ 4. **Not creating backups** - One wrong edit loses all your config.
192
+ 5. **Hardcoding fallback keys in code** - These override environment variables.
193
+
194
+ ## Related Skills
195
+
196
+ - [stripe-payment-integration-complete](../integrations/stripe-payment-integration-complete.md)
197
+ - [react-production-deployment-desktop-guide](./react-production-deployment-desktop-guide.md)
198
+
199
+ ## References
200
+
201
+ - Vite Environment Variables: https://vitejs.dev/guide/env-and-mode
202
+ - dotenv Best Practices: https://www.npmjs.com/package/dotenv
203
+ - OWASP Secrets Management: https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html
@@ -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