@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,145 @@
1
+ ---
2
+ name: error-response-standards
3
+ category: api-patterns
4
+ version: 1.0.0
5
+ contributed: 2026-02-24
6
+ contributor: dominion-flow
7
+ tags: [errors, api, rest, error-handling, http-status, responses]
8
+ difficulty: easy
9
+ ---
10
+
11
+ # Error Response Standards
12
+
13
+ ## Problem
14
+
15
+ Inconsistent error responses across routes make frontend error handling a nightmare. Some routes return `{ message }`, others `{ error }`, others `{ errors: [] }`. Status codes are used incorrectly (everything is 500 or 200).
16
+
17
+ ## Solution Pattern
18
+
19
+ One error format for the entire API. Correct HTTP status codes. Machine-readable error codes alongside human-readable messages.
20
+
21
+ ## Standard Error Envelope
22
+
23
+ ```json
24
+ {
25
+ "error": {
26
+ "code": "VALIDATION_FAILED",
27
+ "message": "Course title is required",
28
+ "details": [
29
+ { "field": "title", "message": "Required field", "code": "REQUIRED" },
30
+ { "field": "duration", "message": "Must be positive", "code": "INVALID_RANGE" }
31
+ ]
32
+ }
33
+ }
34
+ ```
35
+
36
+ **Three levels:**
37
+ 1. `code` — Machine-readable, never changes (clients switch on this)
38
+ 2. `message` — Human-readable, may change (display to users)
39
+ 3. `details` — Optional array for field-level errors (forms)
40
+
41
+ ## HTTP Status Code Guide
42
+
43
+ | Code | When | Example |
44
+ |------|------|---------|
45
+ | 400 | Client sent bad data | Missing required field, invalid format |
46
+ | 401 | Not authenticated | No token, expired token |
47
+ | 403 | Authenticated but forbidden | Student accessing admin route |
48
+ | 404 | Resource doesn't exist | Course ID not found |
49
+ | 409 | Conflict | Duplicate email, already enrolled |
50
+ | 422 | Semantically invalid | Valid JSON but business rule violation |
51
+ | 429 | Rate limited | Too many requests |
52
+ | 500 | Server bug | Unhandled exception, DB down |
53
+
54
+ **Rules:**
55
+ - **Never return 200 with an error body.** Use proper status codes.
56
+ - **Never return 500 for client errors.** 4xx means "your fault," 5xx means "our fault."
57
+ - **Always return JSON**, even for 404/500 (not HTML error pages).
58
+
59
+ ## Error Middleware (Express)
60
+
61
+ ```javascript
62
+ // middleware/errorHandler.js
63
+ function errorHandler(err, req, res, next) {
64
+ // Known operational error
65
+ if (err.isOperational) {
66
+ return res.status(err.statusCode).json({
67
+ error: {
68
+ code: err.code,
69
+ message: err.message,
70
+ details: err.details || undefined,
71
+ }
72
+ })
73
+ }
74
+
75
+ // Unknown bug — log full error, return generic message
76
+ console.error('Unhandled error:', err)
77
+ res.status(500).json({
78
+ error: {
79
+ code: 'INTERNAL_ERROR',
80
+ message: 'Something went wrong',
81
+ }
82
+ })
83
+ }
84
+
85
+ // Custom error class
86
+ class AppError extends Error {
87
+ constructor(statusCode, code, message, details) {
88
+ super(message)
89
+ this.statusCode = statusCode
90
+ this.code = code
91
+ this.details = details
92
+ this.isOperational = true
93
+ }
94
+ }
95
+
96
+ module.exports = { errorHandler, AppError }
97
+ ```
98
+
99
+ ## Usage in Routes
100
+
101
+ ```javascript
102
+ const { AppError } = require('../middleware/errorHandler')
103
+
104
+ router.post('/courses', async (req, res, next) => {
105
+ try {
106
+ if (!req.body.title) {
107
+ throw new AppError(400, 'VALIDATION_FAILED', 'Title is required', [
108
+ { field: 'title', message: 'Required field', code: 'REQUIRED' }
109
+ ])
110
+ }
111
+
112
+ const existing = await db.findByTitle(req.body.title)
113
+ if (existing) {
114
+ throw new AppError(409, 'DUPLICATE_RESOURCE', 'A course with this title already exists')
115
+ }
116
+
117
+ const course = await db.createCourse(req.body)
118
+ res.status(201).json({ data: course })
119
+ } catch (err) {
120
+ next(err)
121
+ }
122
+ })
123
+ ```
124
+
125
+ ## Standard Error Codes
126
+
127
+ | Code | Status | Meaning |
128
+ |------|--------|---------|
129
+ | `VALIDATION_FAILED` | 400 | Input didn't pass validation |
130
+ | `UNAUTHORIZED` | 401 | Authentication required |
131
+ | `FORBIDDEN` | 403 | Insufficient permissions |
132
+ | `NOT_FOUND` | 404 | Resource doesn't exist |
133
+ | `DUPLICATE_RESOURCE` | 409 | Already exists |
134
+ | `RATE_LIMITED` | 429 | Too many requests |
135
+ | `INTERNAL_ERROR` | 500 | Server-side bug |
136
+
137
+ ## When to Use
138
+
139
+ - Every API project, from day one
140
+ - Use the error middleware as the first middleware you write
141
+
142
+ ## When NOT to Use
143
+
144
+ - GraphQL APIs (use GraphQL's built-in error format instead)
145
+ - gRPC (use status codes from grpc-status)
@@ -0,0 +1,326 @@
1
+ # Express Route Ordering - Preventing Catch-All Middleware Interception
2
+
3
+ ## The Problem
4
+
5
+ Mobile users were being redirected to login immediately when accessing the website, unable to view any public pages or make donations. Desktop users could access the site normally.
6
+
7
+ ### Error Observed
8
+
9
+ ```json
10
+ GET /api/settings/maintenance-status → 401 Unauthorized
11
+ GET /api/settings → 401 Unauthorized
12
+ GET /api/themes/active → 401 Unauthorized
13
+ ```
14
+
15
+ All public API endpoints were returning 401 errors despite:
16
+ - Routes defined WITHOUT `protect` middleware
17
+ - Controller functions correctly implemented
18
+ - Route definitions appearing correct
19
+
20
+ ### Why It Was Hard
21
+
22
+ - **Silent failure** - No error messages, just wrong behavior
23
+ - **Inconsistent symptoms** - Worked on desktop (cached), failed on mobile
24
+ - **Misleading evidence** - Routes looked correct, controllers looked correct
25
+ - **Hidden culprit** - Problem was in route ORDERING, not route definition
26
+ - **Express.js behavior** - Routes are processed in order, first match wins
27
+ - **Middleware inheritance** - Catch-all routes with `router.use(protect)` apply to ALL matched paths
28
+
29
+ ### Impact
30
+
31
+ - **Critical user experience failure** - Mobile users couldn't access website
32
+ - **Revenue impact** - Donations blocked on mobile
33
+ - **Trust damage** - Site appeared suspicious requiring login to view
34
+ - **React app failure** - Maintenance status check blocked app initialization
35
+
36
+ ---
37
+
38
+ ## The Solution
39
+
40
+ ### Root Cause
41
+
42
+ Routes mounted at `/api` (catch-all prefix) were defined BEFORE specific routes like `/api/settings`.
43
+
44
+ ```javascript
45
+ // BAD: Catch-all routes BEFORE specific routes
46
+ app.use('/api', lessonNotesRoutes); // Has router.use(protect) - blocks EVERYTHING
47
+ app.use('/api', lessonResourcesRoutes); // Has router.use(protect) - blocks EVERYTHING
48
+ app.use('/api', teachingRoutes); // Has router.use(protect) - blocks EVERYTHING
49
+ // ... many lines later ...
50
+ app.use('/api/settings', siteSettingsRoutes); // Never reached for /api/settings/* requests!
51
+ ```
52
+
53
+ **What happened:**
54
+ 1. Request comes in: `GET /api/settings/maintenance-status`
55
+ 2. Express checks routes in order
56
+ 3. First match: `app.use('/api', lessonNotesRoutes)` ✅ Matches!
57
+ 4. lessonNotesRoutes has `router.use(protect)` middleware
58
+ 5. Protect middleware runs, finds no token, returns 401
59
+ 6. Request never reaches `app.use('/api/settings', ...)` defined later
60
+
61
+ ### How to Fix
62
+
63
+ **Move catch-all `/api` routes AFTER all specific routes:**
64
+
65
+ ```javascript
66
+ // GOOD: Specific routes FGTAT
67
+ app.use('/api/settings', siteSettingsRoutes); // Matches /api/settings/* FGTAT
68
+ app.use('/api/themes', themeRoutes); // Matches /api/themes/* FGTAT
69
+ app.use('/api/pages', pagesRoutes); // Matches /api/pages/* FGTAT
70
+ // ... all other specific /api/* routes ...
71
+
72
+ // Catch-all routes LAST (only match if no specific route matched)
73
+ app.use('/api', teachingRoutes); // Now only matches /api/teaching/*
74
+ app.use('/api', lessonNotesRoutes); // Now only matches /api/lessons/:id/notes
75
+ app.use('/api', lessonResourcesRoutes); // Now only matches /api/lessons/:id/resources
76
+ app.use('/api', courseReviewsRoutes); // Catch-all for remaining patterns
77
+ ```
78
+
79
+ ### Complete Code Example
80
+
81
+ **Before (BROKEN):**
82
+ ```javascript
83
+ // server/server.js
84
+ app.use('/api', lessonNotesRoutes); // Line 180 - BLOCKS EVERYTHING
85
+ app.use('/api', lessonResourcesRoutes); // Line 181 - BLOCKS EVERYTHING
86
+ app.use('/api/lessons', lessonRoutes);
87
+ app.use('/api/sections', sectionRoutes);
88
+ app.use('/api', teachingRoutes); // Line 187 - BLOCKS EVERYTHING
89
+ app.use('/api/admin', adminRoutes);
90
+ // ... 40+ other routes ...
91
+ app.use('/api/settings', siteSettingsRoutes); // Line 228 - NEVER REACHED!
92
+
93
+ // server/routes/lessonNotesRoutes.js
94
+ const router = express.Router();
95
+ router.use(protect); // ⚠️ Applies to ALL requests matched by this router
96
+ router.route('/lessons/:lessonId/notes')
97
+ .get(getLessonNotes)
98
+ .post(createLessonNote);
99
+ export default router;
100
+ ```
101
+
102
+ **After (FIXED):**
103
+ ```javascript
104
+ // server/server.js
105
+ app.use('/api/admin/permissions', permissionRoutes);
106
+ app.use('/api/lessons', lessonRoutes);
107
+ app.use('/api/sections', sectionRoutes);
108
+ app.use('/api/admin', adminRoutes);
109
+ // ... all specific routes ...
110
+ app.use('/api/settings', siteSettingsRoutes); // NOW MATCHES FGTAT!
111
+ app.use('/api/themes', themeRoutes); // NOW MATCHES FGTAT!
112
+ app.use('/api/pages', pagesRoutes); // NOW MATCHES FGTAT!
113
+ // ... continue with all specific routes ...
114
+
115
+ // Catch-all routes MUST come AFTER all specific routes
116
+ app.use('/api', teachingRoutes); // Only matches remaining /api/teaching/*
117
+ app.use('/api', lessonNotesRoutes); // Only matches remaining /api/lessons/:id/notes
118
+ app.use('/api', lessonResourcesRoutes); // Only matches remaining /api/lessons/:id/resources
119
+ app.use('/api', courseReviewsRoutes); // Catch-all for course reviews
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Testing the Fix
125
+
126
+ ### Before Fix
127
+ ```bash
128
+ $ curl https://schooloftheprophets.club/api/settings/maintenance-status
129
+ {"success":false,"message":"Not authorized to access this route. Please log in.","errors":[]}
130
+
131
+ $ curl https://schooloftheprophets.club/api/themes/active
132
+ {"success":false,"message":"Not authorized to access this route. Please log in.","errors":[]}
133
+ ```
134
+
135
+ ### After Fix
136
+ ```bash
137
+ $ curl https://schooloftheprophets.club/api/settings/maintenance-status
138
+ {"success":true,"data":{"enabled":false,"title":"Site Under Construction",...}}
139
+
140
+ $ curl https://schooloftheprophets.club/api/themes/active
141
+ {"success":true,"data":{"slug":"aurora-borealis","name":"Aurora Borealis Theme",...}}
142
+ ```
143
+
144
+ ### Verification Steps
145
+
146
+ 1. **Check route order in server.js:**
147
+ ```bash
148
+ grep -n "app.use('/api" server/server.js | head -20
149
+ ```
150
+ Verify specific routes (with full paths like `/api/settings`) come BEFORE catch-all routes (`/api`).
151
+
152
+ 2. **Test public endpoints:**
153
+ ```bash
154
+ curl -I https://your-site.com/api/settings/maintenance-status
155
+ # Should return 200, not 401
156
+ ```
157
+
158
+ 3. **Check PM2 logs for middleware calls:**
159
+ ```bash
160
+ pm2 logs --lines 50 | grep "PROTECT"
161
+ # Should NOT see protect middleware for public routes
162
+ ```
163
+
164
+ 4. **Mobile testing:**
165
+ - Open site on mobile device
166
+ - Should load homepage without redirect to login
167
+ - Verify network tab shows 200 for `/api/settings/*` endpoints
168
+
169
+ ---
170
+
171
+ ## Prevention
172
+
173
+ ### Express Route Ordering Rules
174
+
175
+ 1. **Most specific routes FGTAT:**
176
+ ```javascript
177
+ app.use('/api/users/profile', profileRoutes); // Most specific
178
+ app.use('/api/users/:id', userRoutes); // Less specific
179
+ app.use('/api/users', usersRoutes); // Even less specific
180
+ app.use('/api', apiRoutes); // Least specific (catch-all)
181
+ ```
182
+
183
+ 2. **Group by specificity level:**
184
+ ```javascript
185
+ // Level 1: Very specific paths (3+ segments)
186
+ app.use('/api/admin/permissions', permissionRoutes);
187
+
188
+ // Level 2: Moderately specific (2 segments)
189
+ app.use('/api/settings', settingsRoutes);
190
+ app.use('/api/themes', themeRoutes);
191
+
192
+ // Level 3: Catch-all (1 segment)
193
+ app.use('/api', catchAllRoutes);
194
+ ```
195
+
196
+ 3. **Comment your intentions:**
197
+ ```javascript
198
+ // IMPORTANT: Specific routes MUST come before catch-all /api routes
199
+ // Catch-all /api routes with middleware will intercept EVERYTHING
200
+ ```
201
+
202
+ 4. **Use explicit paths over catch-alls when possible:**
203
+ ```javascript
204
+ // Instead of:
205
+ app.use('/api', lessonNotesRoutes); // router has /lessons/:id/notes
206
+
207
+ // Prefer:
208
+ app.use('/api/lessons', lessonNotesRoutes); // More explicit
209
+ ```
210
+
211
+ ### Middleware Design Pattern
212
+
213
+ When creating routes that might be used as catch-alls:
214
+
215
+ ```javascript
216
+ // AVOID: Global middleware in catch-all routes
217
+ const router = express.Router();
218
+ router.use(protect); // ⚠️ Dangerous if mounted at /api
219
+ router.get('/lessons/:id/notes', getNotes);
220
+
221
+ // PREFER: Middleware on specific routes
222
+ const router = express.Router();
223
+ router.get('/lessons/:id/notes', protect, getNotes); // ✅ Explicit protection
224
+ ```
225
+
226
+ ### Code Review Checklist
227
+
228
+ - [ ] Are there any `app.use('/api', ...)` routes?
229
+ - [ ] Do they have `router.use(middleware)` inside?
230
+ - [ ] Are specific routes like `/api/settings` defined BEFORE catch-all `/api`?
231
+ - [ ] Are public endpoints actually accessible without authentication?
232
+ - [ ] Have you tested in incognito mode (no cached tokens)?
233
+
234
+ ---
235
+
236
+ ## Related Patterns
237
+
238
+ - [Express Middleware Order](../patterns-standards/MIDDLEWARE_ORDER.md)
239
+ - [Public API Design](../api-patterns/PUBLIC_API_DESIGN.md)
240
+ - [Route Protection Patterns](../security/ROUTE_PROTECTION.md)
241
+
242
+ ---
243
+
244
+ ## Common Mistakes to Avoid
245
+
246
+ - ❌ **Mounting catch-all routes early** - Always put them last
247
+ - ❌ **Using `router.use(middleware)` in catch-all routes** - Applies to EVERYTHING matched
248
+ - ❌ **Not testing public endpoints** - Always verify in incognito/logout state
249
+ - ❌ **Assuming route definition = route priority** - Order matters, not definition clarity
250
+ - ❌ **Forgetting Express processes routes sequentially** - First match wins, search stops
251
+
252
+ ---
253
+
254
+ ## Resources
255
+
256
+ - [Express Routing Guide](https://expressjs.com/en/guide/routing.html)
257
+ - [Express app.use() Documentation](https://expressjs.com/en/4x/api.html#app.use)
258
+ - [Understanding Express Middleware](https://expressjs.com/en/guide/using-middleware.html)
259
+ - [Route Order Best Practices](https://stackoverflow.com/questions/14125997/express-js-middleware-order)
260
+
261
+ ---
262
+
263
+ ## Time to Implement
264
+
265
+ **3 hours to debug** (if you don't know the pattern)
266
+ **5-10 minutes to fix** (once you identify the issue)
267
+ **Future prevention: 0 minutes** (follow the pattern from the start)
268
+
269
+ ## Difficulty Level
270
+
271
+ ⭐⭐⭐ (3/5) - Hard to debug initially, easy to fix once identified
272
+
273
+ ### Debugging Difficulty: ⭐⭐⭐⭐⭐ (5/5)
274
+ - Silent failure with no error messages
275
+ - Symptoms misleading (worked on desktop, failed on mobile due to caching)
276
+ - Requires understanding Express route matching internals
277
+ - Many places to look (controllers, routes, middleware)
278
+
279
+ ### Fix Difficulty: ⭐ (1/5)
280
+ - Move routes to correct order
281
+ - No code changes to logic
282
+ - Takes 5 minutes
283
+
284
+ ---
285
+
286
+ ## Author Notes
287
+
288
+ **Investigation Process:**
289
+ 1. ✅ Checked routing in App.jsx - public routes correct
290
+ 2. ✅ Checked MainLayout - no redirect logic
291
+ 3. ✅ Verified controller implementation - correct
292
+ 4. ✅ Verified route definitions - looked correct
293
+ 5. ✅ Added logging to protect middleware - found it was being called!
294
+ 6. ✅ Checked server.js route mounting - FOUND THE BUG!
295
+
296
+ **Key Insight:**
297
+ The routes *looked* correct because the definitions were fine. The problem was entirely about **ORDER**. Express processes routes sequentially, and catch-all routes with middleware were matching first and blocking everything.
298
+
299
+ **Debugging Breakthrough:**
300
+ Added logging to protect middleware showing it was being called for public routes. This proved the routes weren't reaching their handlers. Then checked route mounting order and found catch-all routes before specific routes.
301
+
302
+ **Prevention:**
303
+ Always put specific routes before catch-all routes. When using `app.use('/api', router)`, ensure the router doesn't have `router.use(protect)` or other global middleware that would block public endpoints.
304
+
305
+ **Time Spent:** 3 hours debugging, 5 minutes fixing once identified.
306
+
307
+ ---
308
+
309
+ ## Real-World Impact
310
+
311
+ - **Before:** Mobile users couldn't access website, donations blocked
312
+ - **After:** Full public access restored, React app loads properly
313
+ - **Commits:** 12 debugging commits, 1 fix commit, 1 cleanup commit
314
+ - **Deployments:** 6 test deployments, 1 final deployment
315
+ - **Resolution:** Complete fix with no side effects
316
+
317
+ ---
318
+
319
+ **Project:** MERN Community LMS
320
+ **Date Solved:** 2026-02-02
321
+ **Production Site:** schooloftheprophets.club
322
+ **Commits:** 070bca5 (fix), 2b34625 (cleanup)
323
+
324
+ ---
325
+
326
+ *This skill documents a critical Express.js routing pattern that cost 3 hours to debug but takes 5 minutes to fix once you know what to look for. Share this knowledge!*
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: pagination-patterns
3
+ category: api-patterns
4
+ version: 1.0.0
5
+ contributed: 2026-02-24
6
+ contributor: dominion-flow
7
+ tags: [pagination, api, cursor, offset, rest, graphql]
8
+ difficulty: medium
9
+ ---
10
+
11
+ # Pagination Patterns
12
+
13
+ ## Problem
14
+
15
+ APIs that return unbounded lists kill performance, waste bandwidth, and crash clients. Offset-based pagination breaks under concurrent writes. Choosing the wrong pattern early means painful migration later.
16
+
17
+ ## Three Patterns
18
+
19
+ ### 1. Offset/Limit (Simple, Fragile)
20
+
21
+ ```javascript
22
+ // GET /api/courses?page=2&limit=20
23
+ router.get('/courses', async (req, res) => {
24
+ const page = Math.max(1, parseInt(req.query.page) || 1)
25
+ const limit = Math.min(100, parseInt(req.query.limit) || 20)
26
+ const offset = (page - 1) * limit
27
+
28
+ const [courses, total] = await Promise.all([
29
+ db.query('SELECT * FROM courses ORDER BY id LIMIT ? OFFSET ?', [limit, offset]),
30
+ db.query('SELECT COUNT(*) as total FROM courses'),
31
+ ])
32
+
33
+ res.json({
34
+ data: courses,
35
+ pagination: {
36
+ page,
37
+ limit,
38
+ total: total[0].total,
39
+ totalPages: Math.ceil(total[0].total / limit),
40
+ hasNext: page * limit < total[0].total,
41
+ hasPrev: page > 1,
42
+ }
43
+ })
44
+ })
45
+ ```
46
+
47
+ **Pros:** Easy to implement, supports "jump to page 5."
48
+ **Cons:** Skips/duplicates rows when data changes between pages. Slow on large offsets (DB must scan and discard rows).
49
+
50
+ ### 2. Cursor-Based (Robust, Recommended)
51
+
52
+ ```javascript
53
+ // GET /api/courses?cursor=eyJpZCI6MTAwfQ&limit=20
54
+ router.get('/courses', async (req, res) => {
55
+ const limit = Math.min(100, parseInt(req.query.limit) || 20)
56
+ const cursor = req.query.cursor
57
+ ? JSON.parse(Buffer.from(req.query.cursor, 'base64').toString())
58
+ : null
59
+
60
+ const whereClause = cursor ? 'WHERE id > ?' : ''
61
+ const params = cursor ? [cursor.id, limit + 1] : [limit + 1]
62
+
63
+ const courses = await db.query(
64
+ `SELECT * FROM courses ${whereClause} ORDER BY id LIMIT ?`,
65
+ params
66
+ )
67
+
68
+ const hasNext = courses.length > limit
69
+ if (hasNext) courses.pop() // Remove the extra row
70
+
71
+ const nextCursor = hasNext
72
+ ? Buffer.from(JSON.stringify({ id: courses[courses.length - 1].id })).toString('base64')
73
+ : null
74
+
75
+ res.json({
76
+ data: courses,
77
+ pagination: {
78
+ nextCursor,
79
+ hasNext,
80
+ limit,
81
+ }
82
+ })
83
+ })
84
+ ```
85
+
86
+ **Pros:** Consistent results under concurrent writes. Fast (uses index seek, not offset scan).
87
+ **Cons:** Can't jump to arbitrary page. Cursor is opaque to client.
88
+
89
+ ### 3. Keyset (Cursor + Sort)
90
+
91
+ ```javascript
92
+ // When sorting by non-unique fields (e.g., created_at)
93
+ // Use composite cursor: (created_at, id) for uniqueness
94
+ const cursor = { created_at: '2026-02-24T10:00:00Z', id: 150 }
95
+
96
+ const courses = await db.query(`
97
+ SELECT * FROM courses
98
+ WHERE (created_at, id) > (?, ?)
99
+ ORDER BY created_at, id
100
+ LIMIT ?
101
+ `, [cursor.created_at, cursor.id, limit + 1])
102
+ ```
103
+
104
+ ## Which to Choose
105
+
106
+ | Scenario | Pattern | Why |
107
+ |----------|---------|-----|
108
+ | Admin dashboard, small dataset | Offset | Jump-to-page needed |
109
+ | Public API, large dataset | Cursor | Consistent, scalable |
110
+ | Real-time feed (chat, activity) | Cursor | Data changes constantly |
111
+ | Search results | Offset | Users expect page numbers |
112
+ | Infinite scroll UI | Cursor | Natural fit |
113
+
114
+ ## Response Envelope
115
+
116
+ ```json
117
+ {
118
+ "data": [...],
119
+ "pagination": {
120
+ "nextCursor": "abc123",
121
+ "hasNext": true,
122
+ "limit": 20
123
+ }
124
+ }
125
+ ```
126
+
127
+ Always include `hasNext` — clients shouldn't have to guess.
128
+
129
+ ## When to Use
130
+
131
+ - Any list endpoint returning more than 50 items
132
+ - APIs consumed by mobile apps (bandwidth matters)
133
+
134
+ ## When NOT to Use
135
+
136
+ - Endpoints that always return small, bounded lists (e.g., user roles)
137
+ - Aggregation endpoints (return a single summary, not a list)