@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,126 @@
1
+ ---
2
+ name: redux-localstorage-auth-desync
3
+ category: frontend
4
+ version: 1.0.0
5
+ contributed: 2026-03-06
6
+ contributor: ministry-lms
7
+ last_updated: 2026-03-06
8
+ tags: [redux, react, auth, localStorage, infinite-loop, redirect, login]
9
+ difficulty: medium
10
+ usage_count: 0
11
+ success_rate: 100
12
+ ---
13
+
14
+ # Redux + localStorage Auth State Desync (Infinite Login Loop)
15
+
16
+ ## Problem
17
+
18
+ After a token expires or `getMe()` API call fails, the app enters an infinite redirect loop between `/login` and `/dashboard`:
19
+
20
+ ```
21
+ Login → checks localStorage → has token → navigate(/dashboard)
22
+ → PrivateRoute → checks Redux isAuthenticated → false → navigate(/login)
23
+ → Login → checks localStorage → has token → navigate(/dashboard)
24
+ → ... "Maximum update depth exceeded"
25
+ ```
26
+
27
+ The browser console shows: `Warning: Maximum update depth exceeded` and the page flickers rapidly between routes.
28
+
29
+ ## Root Cause
30
+
31
+ **Two auth sources are out of sync:**
32
+
33
+ 1. **Redux store** — `isAuthenticated: false` (correctly cleared by `getMe.rejected`)
34
+ 2. **localStorage** — still has `token` and `user` (NOT cleared by Redux reducer)
35
+
36
+ The Login page checks `localStorage.getItem('token')` on mount and auto-redirects to dashboard if a token exists. But `PrivateRoute` checks Redux `isAuthenticated` and bounces back to login. Neither clears localStorage, so the loop never breaks.
37
+
38
+ ## Solution Pattern
39
+
40
+ **Clear localStorage in the same reducer that clears Redux state.** When the auth verification fails, BOTH state stores must be cleaned:
41
+
42
+ ```javascript
43
+ // authSlice.js — getMe.rejected reducer
44
+ builder.addCase(getMe.rejected, (state) => {
45
+ state.loading = false;
46
+ state.isAuthenticated = false;
47
+ state.user = null;
48
+ state.token = null;
49
+ // CRITICAL: Clear localStorage to prevent Login→PrivateRoute redirect loop
50
+ localStorage.removeItem('token');
51
+ localStorage.removeItem('user');
52
+ });
53
+ ```
54
+
55
+ ## Code Example
56
+
57
+ ```javascript
58
+ // Before (broken) — Redux clears, localStorage doesn't
59
+ builder.addCase(getMe.rejected, (state) => {
60
+ state.loading = false;
61
+ state.isAuthenticated = false;
62
+ state.user = null;
63
+ state.token = null;
64
+ // localStorage still has token → Login sees it → redirects to dashboard → loop
65
+ });
66
+
67
+ // After (fixed) — Both stores cleared atomically
68
+ builder.addCase(getMe.rejected, (state) => {
69
+ state.loading = false;
70
+ state.isAuthenticated = false;
71
+ state.user = null;
72
+ state.token = null;
73
+ localStorage.removeItem('token');
74
+ localStorage.removeItem('user');
75
+ });
76
+ ```
77
+
78
+ ## Implementation Steps
79
+
80
+ 1. Identify all places where Redux auth state is cleared (rejected thunks, logout)
81
+ 2. Add `localStorage.removeItem()` calls in each one
82
+ 3. Verify Login page checks are consistent (Redux OR localStorage, not both independently)
83
+ 4. Test by manually expiring the token and refreshing the page
84
+
85
+ ## When to Use
86
+
87
+ - Login page flickers or shows "Maximum update depth exceeded"
88
+ - Users can't log in after token expiration (stuck in redirect loop)
89
+ - App uses BOTH Redux and localStorage for auth state
90
+ - `getMe()` or token verification endpoint returns 401 but user sees login flash
91
+
92
+ ## When NOT to Use
93
+
94
+ - App uses only Redux for auth (no localStorage persistence)
95
+ - App uses only localStorage (no Redux)
96
+ - Auth is handled by httpOnly cookies (no client-side token storage)
97
+ - The infinite loop is caused by something other than auth state desync
98
+
99
+ ## Common Mistakes
100
+
101
+ - Clearing only Redux state, not localStorage
102
+ - Clearing only on logout, not on token verification failure
103
+ - Having Login check localStorage while PrivateRoute checks Redux (inconsistent sources)
104
+ - Not clearing on ALL rejection paths (login.rejected, getMe.rejected, etc.)
105
+
106
+ ## Architectural Lesson
107
+
108
+ **Single source of truth for auth.** If you persist auth in localStorage AND Redux, they MUST be updated atomically. The safest pattern:
109
+
110
+ 1. Redux is the source of truth for the running app
111
+ 2. localStorage is ONLY for persistence across page reloads
112
+ 3. On app start: read localStorage → hydrate Redux → then ONLY use Redux
113
+ 4. On any auth state change: update Redux FIRST, then sync to localStorage
114
+ 5. On any auth failure: clear BOTH simultaneously
115
+
116
+ ## Related Skills
117
+
118
+ - [auth-jwt-basics](../../common-tasks/auth-jwt-basics.md) - JWT auth patterns
119
+ - [postgresql-to-mysql-runtime-translation](../../database-solutions/postgresql-to-mysql-runtime-translation.md) - The migration that surfaced this bug
120
+
121
+ ## References
122
+
123
+ - React Router v6 redirect behavior: navigation inside useEffect creates render loops
124
+ - Redux Toolkit createAsyncThunk: rejected case must handle side effects
125
+ - Discovered during: MINISTRY-LMS PG→MySQL migration (getMe API failing due to DB errors triggered the loop)
126
+ - File: `client/src/store/slices/authSlice.js` line 304-312
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: safari-csp-theme-color-debugging
3
+ category: frontend
4
+ version: 1.0.0
5
+ contributed: 2026-02-26
6
+ contributor: my-other-project
7
+ last_updated: 2026-02-26
8
+ tags: [safari, csp, theme-color, ios, mobile, debugging, helmet]
9
+ difficulty: medium
10
+ ---
11
+
12
+ # Safari CSP & Theme-Color Debugging
13
+
14
+ ## Problem
15
+
16
+ Safari on iOS renders differently from Chrome on iOS due to:
17
+ 1. **Dual CSP headers** — Apache .htaccess and Node.js Helmet can get out of sync
18
+ 2. **theme-color meta tag** — Safari paints the status bar and browser chrome with this color, creating visible colored bars above/below the page content
19
+ 3. **CSP enforcement differences** — Safari can be stricter about CSP violations than Chrome
20
+
21
+ **Symptoms:**
22
+ - Purple/colored bars at top and bottom of the page in Safari
23
+ - Content blocked in Safari but not Chrome (CSP mismatch)
24
+ - `@headlessui/react` Transition leaving elements at `opacity-0` (Safari animation bug)
25
+ - Site showing fallback content instead of dynamic CMS content
26
+
27
+ ## Solution Pattern
28
+
29
+ ### 1. Keep CSP in Sync (Apache + Helmet)
30
+
31
+ When using both Apache .htaccess CSP AND Node.js Helmet CSP, they MUST match. Check which CSP applies to which responses:
32
+
33
+ ```
34
+ HTML pages (SPA routes): Apache .htaccess CSP
35
+ API responses (proxied): Helmet CSP (Node.js)
36
+ Static files (JS/CSS/imgs): Apache .htaccess CSP
37
+ ```
38
+
39
+ Verify with curl:
40
+ ```bash
41
+ # Check HTML page CSP
42
+ curl -s -I https://yoursite.com/ | grep -i content-security
43
+
44
+ # Check API response CSP
45
+ curl -s -I https://yoursite.com/api/health | grep -i content-security
46
+ ```
47
+
48
+ ### 2. Fix theme-color for Dark Themes
49
+
50
+ The `<meta name="theme-color">` controls Safari's status bar and browser chrome color. It must match your active theme:
51
+
52
+ ```html
53
+ <!-- Before: Purple for old theme -->
54
+ <meta name="theme-color" content="#7C3AED" />
55
+
56
+ <!-- After: Dark for Aurora Borealis theme -->
57
+ <meta name="theme-color" content="#030712" />
58
+ ```
59
+
60
+ For dynamic themes, update via React Helmet:
61
+ ```jsx
62
+ <Helmet>
63
+ <meta name="theme-color" content={theme.backgroundColor} />
64
+ </Helmet>
65
+ ```
66
+
67
+ ### 3. Safari Animation Fix
68
+
69
+ `@headlessui/react` `<Transition appear={true}>` can fail silently on Safari, leaving elements stuck at `opacity-0`. Replace with CSS keyframe animations:
70
+
71
+ ```css
72
+ /* In overrides.css */
73
+ @keyframes heroFadeUp {
74
+ from { opacity: 0; transform: translateY(2rem); }
75
+ to { opacity: 1; transform: translateY(0); }
76
+ }
77
+ ```
78
+
79
+ ```jsx
80
+ {/* Before: Transition that fails on Safari */}
81
+ <Transition appear={true} show={true} enter="..." enterFrom="opacity-0" enterTo="opacity-100">
82
+ <h1>Content</h1>
83
+ </Transition>
84
+
85
+ {/* After: CSS animation that works everywhere */}
86
+ <h1 style={{ animation: 'heroFadeUp 1s ease-out both' }}>Content</h1>
87
+ ```
88
+
89
+ ## Debugging Workflow
90
+
91
+ 1. **Verify API is alive:** `curl -s https://yoursite.com/api/health`
92
+ 2. **Compare CSP headers:** Check both Apache and Helmet CSPs match
93
+ 3. **Test CORS preflight:** `curl -v -X OPTIONS -H "Origin: https://yoursite.com" https://yoursite.com/api/endpoint`
94
+ 4. **Check theme-color:** View source or `curl -s https://yoursite.com/ | grep theme-color`
95
+ 5. **Test Safari Private Mode:** If Private Mode fails but regular doesn't, check SW. If both fail, check CSP/CORS.
96
+ 6. **Check for content blockers:** Safari supports iOS content blockers that Chrome doesn't
97
+
98
+ ## When to Use
99
+
100
+ - Site looks different in Safari vs Chrome on iOS
101
+ - Colored bars appearing in Safari browser chrome
102
+ - Content blocked or missing in Safari
103
+ - Animations not playing in Safari
104
+ - Dual Apache + Node.js server setup
105
+
106
+ ## When NOT to Use
107
+
108
+ - Issue reproduces identically in both browsers
109
+ - Desktop-only rendering issues
110
+ - Server-side errors (check logs first)
111
+
112
+ ## Common Mistakes
113
+
114
+ - Updating .htaccess CSP but forgetting Helmet CSP (or vice versa)
115
+ - Setting theme-color to old brand color after theme change
116
+ - Using `@headlessui/react` Transition for critical above-fold content
117
+ - Not testing in Safari Private Mode (different behavior than regular)
118
+ - Assuming Chrome on iOS = Safari on iOS (they share WebKit but have different extensions, storage, and privacy features)
119
+
120
+ ## References
121
+
122
+ - MDN: theme-color — https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color
123
+ - MDN: CSP — https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
124
+ - Contributed from: my-other-project Safari debugging session (Feb 26, 2026)
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: safari-sw-cache-poisoning
3
+ category: frontend
4
+ version: 1.0.0
5
+ contributed: 2026-02-26
6
+ contributor: my-other-project
7
+ last_updated: 2026-02-26
8
+ tags: [safari, service-worker, pwa, caching, ios, debugging]
9
+ difficulty: hard
10
+ ---
11
+
12
+ # Safari Service Worker Cache Poisoning
13
+
14
+ ## Problem
15
+
16
+ Safari caches service worker files according to HTTP caching headers (e.g., `ExpiresByType application/javascript "access plus 1 year"`). When a stale SW is cached for months/years, it continues intercepting ALL requests (API calls, navigation, static assets) even after the server-side SW file is updated.
17
+
18
+ **Symptoms:**
19
+ - "Network Error" on ALL API calls in Safari (axios reports no response)
20
+ - Site loads HTML/CSS but can't communicate with server
21
+ - Chrome works fine (separate SW registration)
22
+ - Login, CMS data loading, and all authenticated features broken
23
+ - Safari DevTools shows SW intercepting requests
24
+
25
+ **Root Cause Chain:**
26
+ 1. Apache `ExpiresByType application/javascript` applies to `sw.js` too
27
+ 2. Safari respects the 1-year cache and never checks for SW updates
28
+ 3. Old SW's `fetch` handler intercepts API calls and either fails or returns stale data
29
+ 4. No amount of server-side fixes help because the browser never fetches the updated SW
30
+
31
+ ## Solution Pattern
32
+
33
+ ### 1. Prevent Future Cache Poisoning (.htaccess)
34
+
35
+ Add a specific no-cache rule for `sw.js` BEFORE the general JS caching rule:
36
+
37
+ ```apache
38
+ # Prevent caching of service worker (must always fetch fresh)
39
+ <FilesMatch "sw\.js$">
40
+ Header set Cache-Control "no-cache, no-store, must-revalidate"
41
+ Header set Pragma "no-cache"
42
+ Header set Expires 0
43
+ </FilesMatch>
44
+
45
+ # General JS caching (sw.js excluded by rule above)
46
+ <IfModule mod_expires.c>
47
+ ExpiresByType application/javascript "access plus 1 year"
48
+ </IfModule>
49
+ ```
50
+
51
+ ### 2. Nuclear SW Purge (main entry point)
52
+
53
+ Add to your app's entry point (e.g., `main.jsx`). This runs on every page load, unregisters ALL stale SWs, purges ALL caches, then registers fresh:
54
+
55
+ ```javascript
56
+ // Nuclear SW cleanup — force-purge stale SWs + caches, then register fresh.
57
+ // Safari cached old sw.js for 1 year, causing stale SW to intercept API calls.
58
+ if ('serviceWorker' in navigator) {
59
+ window.addEventListener('load', async () => {
60
+ try {
61
+ // Step 1: Unregister ALL existing service workers
62
+ const regs = await navigator.serviceWorker.getRegistrations();
63
+ await Promise.all(regs.map(reg => reg.unregister()));
64
+
65
+ // Step 2: Purge all SW caches
66
+ const cacheNames = await caches.keys();
67
+ await Promise.all(cacheNames.map(name => caches.delete(name)));
68
+
69
+ // Step 3: Register fresh SW (production only)
70
+ if (import.meta.env.PROD) {
71
+ navigator.serviceWorker.register('/sw.js', {
72
+ updateViaCache: 'none' // Bypass HTTP cache for SW fetch
73
+ }).catch(() => {});
74
+ }
75
+ } catch (e) {
76
+ // SW API failures are non-fatal — site works fine without SW
77
+ }
78
+ });
79
+ }
80
+ ```
81
+
82
+ ### 3. Use `updateViaCache: 'none'`
83
+
84
+ Always register SWs with `updateViaCache: 'none'` to tell the browser to bypass HTTP cache when checking for SW updates:
85
+
86
+ ```javascript
87
+ navigator.serviceWorker.register('/sw.js', { updateViaCache: 'none' });
88
+ ```
89
+
90
+ ## Key Insight: Safari Private Mode
91
+
92
+ Safari Private Browsing **completely disables service workers**. If the site works in regular Safari but breaks in Private Mode (or vice versa), the SW is likely NOT the issue. Check:
93
+ - CSP headers
94
+ - `theme-color` meta tag
95
+ - Content blockers / ad blockers (Safari-only on iOS)
96
+ - Cookie handling differences
97
+
98
+ ## When to Use
99
+
100
+ - Site works in Chrome but breaks in Safari with "Network Error"
101
+ - API calls fail but HTML/CSS loads fine
102
+ - SW was registered before proper cache headers were set
103
+ - Deploying to shared hosting where Apache serves SW files
104
+ - Any PWA where `ExpiresByType` or `Cache-Control` applies to JS broadly
105
+
106
+ ## When NOT to Use
107
+
108
+ - If the issue reproduces in Chrome too (not SW-specific)
109
+ - If Safari Private Mode also fails (SWs are disabled there — look elsewhere)
110
+ - If the server itself is down (check `/api/health` first)
111
+ - For sites that don't use service workers
112
+
113
+ ## Debugging Checklist
114
+
115
+ 1. `curl -s https://yoursite.com/api/health` — Server alive?
116
+ 2. `curl -s -I https://yoursite.com/sw.js` — Check Cache-Control headers
117
+ 3. `curl -v -X OPTIONS -H "Origin: https://yoursite.com" https://yoursite.com/api/endpoint` — CORS preflight works?
118
+ 4. Check if Safari has website data stored (Settings > Safari > Advanced > Website Data)
119
+ 5. Test in Safari Private Mode — if it works there, SW is the culprit
120
+
121
+ ## Common Mistakes
122
+
123
+ - Assuming `sw.js` is exempt from `ExpiresByType` rules (it's not)
124
+ - Using `Header set` instead of `Header always set` in .htaccess
125
+ - Forgetting that unregistering a SW doesn't stop it controlling the CURRENT page (only takes effect on next navigation)
126
+ - Not wrapping SW API calls in try-catch (throws SecurityError in Private Mode)
127
+ - Using `caches` API without checking it exists (throws in some contexts)
128
+
129
+ ## Related Skills
130
+
131
+ - CSP header synchronization (keep .htaccess and Helmet in sync)
132
+ - Safari theme-color meta tag (affects browser chrome appearance)
133
+
134
+ ## References
135
+
136
+ - MDN: Service Worker Lifecycle — https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
137
+ - MDN: updateViaCache — https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/updateViaCache
138
+ - Contributed from: my-other-project Safari debugging session (Feb 26, 2026)
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: svg-sparkline-no-charting-library
3
+ category: frontend
4
+ version: 1.0.0
5
+ contributed: 2026-02-26
6
+ contributor: scribe-bible
7
+ last_updated: 2026-02-26
8
+ tags: [svg, sparkline, chart, visualization, react, lightweight, no-dependencies]
9
+ difficulty: easy
10
+ usage_count: 0
11
+ success_rate: 100
12
+ ---
13
+
14
+ # SVG Sparkline Without Charting Library
15
+
16
+ ## Problem
17
+
18
+ You need a compact frequency/distribution chart (sparkline) in a React app but don't want to add D3.js (~230KB), Chart.js (~180KB), or Recharts (~140KB) as dependencies. The chart is simple — thin bars showing values across categories — but charting libraries bring configuration overhead and bundle bloat for what's essentially a few SVG rectangles.
19
+
20
+ ## Solution Pattern
21
+
22
+ Build the sparkline as a **pure SVG component** using React. Use `viewBox` with percentage-based bar widths for automatic responsiveness. Each bar is a `<rect>` element with height proportional to its value. Add interactivity with React state for hover/click.
23
+
24
+ The pattern: `viewBox="0 0 100 {height}"` creates a percentage coordinate system where bar widths are `100 / count` — the SVG scales to any container width automatically via `preserveAspectRatio="none"`.
25
+
26
+ ## Code Example
27
+
28
+ ```tsx
29
+ interface SparklineProps {
30
+ data: { label: string; value: number; color: string }[];
31
+ height?: number;
32
+ onBarClick?: (label: string) => void;
33
+ }
34
+
35
+ function Sparkline({ data, height = 60, onBarClick }: SparklineProps) {
36
+ const [hovered, setHovered] = useState<number | null>(null);
37
+ const max = Math.max(...data.map(d => d.value), 1);
38
+ const barWidth = 100 / data.length;
39
+ const gap = 0.15; // percentage gap between bars
40
+
41
+ return (
42
+ <div className="relative">
43
+ <svg
44
+ viewBox={`0 0 100 ${height}`}
45
+ preserveAspectRatio="none"
46
+ className="w-full cursor-pointer"
47
+ style={{ height: `${height}px` }}
48
+ >
49
+ {data.map((d, i) => {
50
+ const barH = d.value > 0
51
+ ? Math.max((d.value / max) * (height - 4), 2) // min 2px visible
52
+ : 0;
53
+ return (
54
+ <rect
55
+ key={i}
56
+ x={i * barWidth + gap / 2}
57
+ y={height - barH}
58
+ width={barWidth - gap}
59
+ height={barH}
60
+ fill={d.color}
61
+ opacity={hovered !== null ? (hovered === i ? 1 : 0.3) : 0.75}
62
+ rx={0.3}
63
+ className="transition-opacity duration-150"
64
+ onMouseEnter={() => setHovered(i)}
65
+ onMouseLeave={() => setHovered(null)}
66
+ onClick={() => d.value > 0 && onBarClick?.(d.label)}
67
+ />
68
+ );
69
+ })}
70
+ </svg>
71
+
72
+ {/* Hover tooltip */}
73
+ {hovered !== null && (
74
+ <div
75
+ className="absolute -top-10 bg-gray-900 text-white text-xs rounded px-2 py-1 pointer-events-none"
76
+ style={{
77
+ left: `${(hovered / data.length) * 100}%`,
78
+ transform: 'translateX(-50%)',
79
+ }}
80
+ >
81
+ {data[hovered].label}: {data[hovered].value}
82
+ </div>
83
+ )}
84
+ </div>
85
+ );
86
+ }
87
+ ```
88
+
89
+ ## Implementation Steps
90
+
91
+ 1. Define `viewBox="0 0 100 {height}"` — 100-unit wide coordinate system
92
+ 2. Calculate `barWidth = 100 / data.length` for even distribution
93
+ 3. Normalize bar heights: `(value / maxValue) * (height - padding)`
94
+ 4. Set minimum visible height (e.g., `Math.max(barH, 2)`) so small values aren't invisible
95
+ 5. Use `preserveAspectRatio="none"` so SVG stretches to container width
96
+ 6. Add hover state with opacity dimming on non-hovered bars
97
+ 7. Position tooltip using percentage left offset
98
+
99
+ ## When to Use
100
+
101
+ - Compact distribution charts (frequency across categories, activity over time)
102
+ - Inline sparklines in tables, cards, or dashboards
103
+ - When bundle size matters (0KB added vs 140-230KB for a charting library)
104
+ - When you need full control over styling (Tailwind classes work directly)
105
+ - Simple bar/column charts with <200 data points
106
+
107
+ ## When NOT to Use
108
+
109
+ - Complex charts (line, area, scatter, pie) — use a library
110
+ - Charts with axes, legends, gridlines, zoom, pan — use Recharts/D3
111
+ - Real-time streaming data with >60fps updates — use Canvas/WebGL
112
+ - Charts that need accessibility features (ARIA roles, keyboard navigation)
113
+
114
+ ## Common Mistakes
115
+
116
+ - Using `preserveAspectRatio="xMidYMid meet"` (default) — bars don't stretch to fill width
117
+ - Forgetting minimum bar height — values of 1 when max is 10000 become invisible
118
+ - Not handling zero values — `height={0}` rect still renders a hairline in some browsers
119
+ - Using pixel-based widths instead of viewBox percentages — breaks responsiveness
120
+ - Placing tooltip inside the SVG — HTML tooltips are easier to style than SVG text
121
+
122
+ ## Related Skills
123
+
124
+ - [react-flow-animated-layout-switching](react-flow-animated-layout-switching.md) — Graph visualizations
125
+ - [framer-motion-layoutid-grouping](framer-motion-layoutid-grouping.md) — Animated data transitions
126
+
127
+ ## References
128
+
129
+ - SVG viewBox specification: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox
130
+ - Discovered in: scribe-bible word study frequency sparkline (Phase 5)
131
+ - 66-bar Bible book distribution chart — zero dependencies, full interactivity