@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,225 @@
1
+ # Submenu Hover Dropdown Pattern
2
+
3
+ ## Category
4
+ patterns-standards / navigation
5
+
6
+ ## Problem
7
+
8
+ Navigation menus with hierarchical items (parent/child) need hover-to-reveal dropdowns on desktop and accordion expand/collapse on mobile. A common bug is the dropdown disappearing when the mouse crosses the gap between the parent item and the dropdown panel. This happens because the `mouseleave` event fires on the parent before `mouseenter` fires on the dropdown, causing the submenu to close instantly.
9
+
10
+ Additionally, menu items with `type: 'page'` require backend JOIN queries to resolve page slugs for correct URL generation.
11
+
12
+ ---
13
+
14
+ ## Solution - Desktop Hover with setTimeout Delay
15
+
16
+ Use a `useRef` for a timeout ID and a `setTimeout` delay pattern. The 150ms delay gives users time to move their mouse from the parent nav item to the dropdown panel without it closing.
17
+
18
+ ```javascript
19
+ const submenuTimeoutRef = useRef(null);
20
+ const [openSubmenu, setOpenSubmenu] = useState(null);
21
+
22
+ // On mouse enter parent item:
23
+ const handleMouseEnter = (itemId) => {
24
+ if (submenuTimeoutRef.current) {
25
+ clearTimeout(submenuTimeoutRef.current);
26
+ submenuTimeoutRef.current = null;
27
+ }
28
+ setOpenSubmenu(itemId);
29
+ };
30
+
31
+ // On mouse leave (both parent item AND dropdown panel share this):
32
+ const handleMouseLeave = () => {
33
+ submenuTimeoutRef.current = setTimeout(() => {
34
+ setOpenSubmenu(null);
35
+ }, 150); // 150ms delay prevents flicker
36
+ };
37
+ ```
38
+
39
+ ### Why This Works
40
+
41
+ Both the parent menu item and the dropdown panel use the **same** `onMouseEnter` and `onMouseLeave` handlers. When the mouse leaves the parent and enters the dropdown within 150ms, `handleMouseEnter` fires on the dropdown and clears the pending timeout before it can close the submenu.
42
+
43
+ ### JSX Structure (Desktop)
44
+
45
+ ```jsx
46
+ {/* Parent wrapper - position: relative for absolute dropdown */}
47
+ <div
48
+ className="relative"
49
+ onMouseEnter={() => handleMouseEnter(item.id)}
50
+ onMouseLeave={handleMouseLeave}
51
+ >
52
+ {/* Parent nav item */}
53
+ <a href={getItemUrl(item)} className="flex items-center gap-1 px-3 py-2">
54
+ {item.label}
55
+ <ChevronDown className="h-4 w-4" />
56
+ </a>
57
+
58
+ {/* Dropdown panel - position: absolute, top: 100% */}
59
+ {openSubmenu === item.id && item.children?.length > 0 && (
60
+ <div
61
+ className="absolute left-0 top-full mt-1 w-48 bg-white shadow-lg rounded-md py-1 z-50"
62
+ onMouseEnter={() => handleMouseEnter(item.id)}
63
+ onMouseLeave={handleMouseLeave}
64
+ >
65
+ {item.children.map(child => (
66
+ <a key={child.id} href={getItemUrl(child)} className="block px-4 py-2 hover:bg-gray-100">
67
+ {child.label}
68
+ </a>
69
+ ))}
70
+ </div>
71
+ )}
72
+ </div>
73
+ ```
74
+
75
+ ### Cleanup on Unmount
76
+
77
+ Always clear the timeout when the component unmounts to prevent state updates on unmounted components:
78
+
79
+ ```javascript
80
+ useEffect(() => {
81
+ return () => {
82
+ if (submenuTimeoutRef.current) {
83
+ clearTimeout(submenuTimeoutRef.current);
84
+ }
85
+ };
86
+ }, []);
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Solution - Mobile Accordion
92
+
93
+ On mobile, submenus should expand/collapse via tap using a `Set` to track which items are expanded:
94
+
95
+ ```javascript
96
+ const [expandedMobileItems, setExpandedMobileItems] = useState(new Set());
97
+
98
+ const toggleMobileSubmenu = (itemId) => {
99
+ setExpandedMobileItems(prev => {
100
+ const next = new Set(prev);
101
+ if (next.has(itemId)) next.delete(itemId);
102
+ else next.add(itemId);
103
+ return next;
104
+ });
105
+ };
106
+ ```
107
+
108
+ ### JSX Structure (Mobile)
109
+
110
+ ```jsx
111
+ <div className="space-y-1">
112
+ {item.children?.length > 0 ? (
113
+ <>
114
+ <button
115
+ onClick={() => toggleMobileSubmenu(item.id)}
116
+ className="w-full flex items-center justify-between px-4 py-2"
117
+ >
118
+ <span>{item.label}</span>
119
+ <ChevronDown className={`h-4 w-4 transition-transform ${
120
+ expandedMobileItems.has(item.id) ? 'rotate-180' : ''
121
+ }`} />
122
+ </button>
123
+ {expandedMobileItems.has(item.id) && (
124
+ <div className="pl-6 space-y-1">
125
+ {item.children.map(child => (
126
+ <a key={child.id} href={getItemUrl(child)} className="block px-4 py-2">
127
+ {child.label}
128
+ </a>
129
+ ))}
130
+ </div>
131
+ )}
132
+ </>
133
+ ) : (
134
+ <a href={getItemUrl(item)} className="block px-4 py-2">
135
+ {item.label}
136
+ </a>
137
+ )}
138
+ </div>
139
+ ```
140
+
141
+ ---
142
+
143
+ ## Solution - Backend: Page-Type Menu Items
144
+
145
+ Menu items with `type: 'page'` reference a page via `page_id`. The backend MUST JOIN with the `pages` table to include the page slug so the frontend can generate correct URLs:
146
+
147
+ ```sql
148
+ SELECT mi.*, p.slug AS page_slug
149
+ FROM menu_items mi
150
+ LEFT JOIN pages p ON mi.page_id = p.id
151
+ WHERE mi.menu_id = ${menu.id}
152
+ ORDER BY mi.position ASC
153
+ ```
154
+
155
+ ### Frontend URL Resolution
156
+
157
+ The `getItemUrl` helper must check `page_slug` first, then fall back to `page_id` and raw URL:
158
+
159
+ ```javascript
160
+ const getItemUrl = (item) => {
161
+ if (item.type === 'page' && item.page_slug) {
162
+ return '/' + item.page_slug;
163
+ }
164
+ if (item.type === 'page' && item.page_id) {
165
+ return item.url || '#'; // fallback
166
+ }
167
+ if (item.url && !item.url.startsWith('http') && !item.url.startsWith('/')) {
168
+ return '/' + item.url;
169
+ }
170
+ return item.url || '#';
171
+ };
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Key Implementation Notes
177
+
178
+ 1. **Both parent and dropdown use the same `onMouseEnter`/`onMouseLeave` handlers** -- this is what makes the gap-crossing work.
179
+ 2. **Dropdown panel uses `position: absolute`** with `top: 100%` to appear below the parent.
180
+ 3. **Desktop dropdown wrapper**: `position: relative` on the parent container so the absolute dropdown positions correctly.
181
+ 4. **Theme compatibility**: For theme files in `/themes/`, use `useRef` and `useState` from React directly (no npm imports allowed -- see `CLAUDE.md` Theme Development CRITICAL RULES).
182
+ 5. **Cleanup**: Clear timeout on component unmount via `useEffect` return callback.
183
+ 6. **Mobile sidebar must have `lg:hidden`** on toggle button, panel, and backdrop (three elements).
184
+ 7. **150ms is the sweet spot** -- shorter causes flicker, longer feels sluggish.
185
+
186
+ ---
187
+
188
+ ## Files Modified (MERN LMS)
189
+
190
+ | File | Role |
191
+ |------|------|
192
+ | `client/src/components/layout/Header.jsx` | Classic theme header |
193
+ | `themes/aurora-borealis/components/layout/Header.jsx` | Aurora Borealis theme |
194
+ | `themes/celestial/components/layout/Header.jsx` | Celestial theme |
195
+ | `themes/melchizedek-order/components/layout/Header.jsx` | Melchizedek Order theme |
196
+ | `themes/royal-priesthood/components/layout/Header.jsx` | Royal Priesthood theme |
197
+ | `themes/prosperity/components/layout/Header.jsx` | Prosperity theme |
198
+ | `themes/prophetic-academy/components/layout/Header.jsx` | Prophetic Academy theme |
199
+ | `server/controllers/menuController.js` | Backend JOIN fix for page slugs |
200
+
201
+ ---
202
+
203
+ ## When to Use
204
+
205
+ - Any navigation menu with parent/child hierarchy
206
+ - Dropdown menus that appear on hover (desktop)
207
+ - Mobile-responsive navigation with accordion submenus
208
+ - Page-type menu items that need slug resolution from the database
209
+ - Theme components that cannot import npm packages directly
210
+
211
+ ---
212
+
213
+ ## Common Mistakes to Avoid
214
+
215
+ 1. **Forgetting to share handlers between parent and dropdown** -- the dropdown must also call `handleMouseEnter`/`handleMouseLeave` or it will close when the mouse enters it.
216
+ 2. **Using `onMouseOver`/`onMouseOut` instead of `onMouseEnter`/`onMouseLeave`** -- the former bubble from children and cause erratic behavior.
217
+ 3. **Not clearing the timeout on unmount** -- leads to "setState on unmounted component" warnings.
218
+ 4. **Missing the LEFT JOIN on pages** -- page-type menu items will have no slug and render as `#` links.
219
+ 5. **Importing `react-router-dom` Link in theme files** -- theme files are outside the Vite workspace; use plain `<a>` tags or a local Link wrapper.
220
+
221
+ ---
222
+
223
+ ## Tags
224
+
225
+ navigation, submenu, hover, dropdown, accordion, mobile, menu, react, setTimeout, useRef, page-slug, backend-join, theme-compatibility
@@ -0,0 +1,322 @@
1
+ # Tailwind CSS Text Visibility - Overriding Parent Text Colors
2
+
3
+ ## The Problem
4
+
5
+ Button text was completely invisible on pricing cards because the parent button's `text-white` class was rendering white text on a light blue/green background.
6
+
7
+ ### Error Symptoms
8
+
9
+ - "Upgrade" and "Downgrade" button text not visible
10
+ - Text only appeared when highlighted (selection)
11
+ - Same button worked on some cards but not others
12
+ - Inline styles with `color: badgeColor` didn't override the issue
13
+
14
+ ### Why It Was Hard
15
+
16
+ 1. **CSS Specificity Confusion** - Inline styles should override classes, but Tailwind generates utilities with `!important`
17
+ 2. **Dynamic Styling** - Featured cards got different classes (`text-white`) vs non-featured cards (`text-gray-800`)
18
+ 3. **Inheritance Issues** - Button text inherited parent's text color, but inline style only applied to parent
19
+ 4. **Cache Masking** - Browser cache made it seem like deployments weren't working
20
+ 5. **Context-Dependent** - Problem only appeared when user had active membership (showing upgrade/downgrade)
21
+
22
+ ### Impact
23
+
24
+ - Critical UX issue - users couldn't see upgrade buttons
25
+ - Affected conversion funnel (memberships)
26
+ - Required multiple deploys to fix
27
+ - Wasted time debugging inline styles vs class specificity
28
+
29
+ ---
30
+
31
+ ## The Solution
32
+
33
+ ### Root Cause
34
+
35
+ The button had conditional classes based on whether the card was "featured":
36
+
37
+ ```jsx
38
+ className={`w-full py-3 px-6 rounded-lg font-semibold transition ${
39
+ isFeatured
40
+ ? 'bg-primary-600 text-white hover:bg-primary-700' // ← text-white here
41
+ : 'bg-gray-100 text-gray-800 hover:bg-gray-200'
42
+ }`}
43
+ style={
44
+ !isFeatured
45
+ ? { backgroundColor: level.badge_color + '20', color: level.badge_color }
46
+ : {}
47
+ }
48
+ ```
49
+
50
+ **The Problem Flow:**
51
+ 1. Partners card is marked as `isFeatured = true` in database
52
+ 2. Button gets `text-white` class
53
+ 3. Button text (upgrade/downgrade) inherits `text-white`
54
+ 4. Background is light blue → invisible white text
55
+
56
+ **Why Inline Styles Didn't Work:**
57
+ - Inline `color` was on the `<button>` element
58
+ - Text was in a `<span>` child element
59
+ - CSS inheritance applied `text-white` to the span
60
+ - Needed to override on the span itself, not parent
61
+
62
+ ### How to Fix
63
+
64
+ **Add explicit text color class directly to the text element:**
65
+
66
+ ```jsx
67
+ // ❌ BAD - text inherits parent's text-white
68
+ <button className="text-white bg-blue-500">
69
+ <span className="flex items-center gap-2">
70
+ <ArrowUp />
71
+ Upgrade
72
+ </span>
73
+ </button>
74
+
75
+ // ✅ GOOD - explicit override on text element
76
+ <button className="text-white bg-blue-500">
77
+ <span className="flex items-center gap-2 text-gray-900">
78
+ <ArrowUp />
79
+ Upgrade
80
+ </span>
81
+ </button>
82
+ ```
83
+
84
+ **Complete Fix:**
85
+
86
+ ```jsx
87
+ {currentMembership && currentMembership.status === 'active' ? (
88
+ // Show upgrade/downgrade based on access_rank
89
+ (level.access_rank || 0) > (currentMembership.access_rank || 0) ? (
90
+ <span className="flex items-center justify-center gap-2 font-bold text-gray-900">
91
+ <ArrowUp className="w-4 h-4" />
92
+ Upgrade
93
+ </span>
94
+ ) : (
95
+ <span className="flex items-center justify-center gap-2 font-bold text-gray-900">
96
+ <ArrowDown className="w-4 h-4" />
97
+ Downgrade
98
+ </span>
99
+ )
100
+ ) : (
101
+ 'Subscribe Now'
102
+ )}
103
+ ```
104
+
105
+ **Key Insight:**
106
+ > Don't try to override parent text color with inline styles on parent.
107
+ > Add explicit Tailwind class (`text-gray-900`) directly to the text element.
108
+
109
+ ---
110
+
111
+ ## Testing the Fix
112
+
113
+ ### Visual Test
114
+ 1. Navigate to `/pricing` page while logged in with active membership
115
+ 2. Look at cards where you can upgrade
116
+ 3. Button should show dark text ("Upgrade") clearly visible
117
+ 4. Works on both light and dark backgrounds
118
+
119
+ ### Browser Cache Warning
120
+ ⚠️ **Always hard refresh after deployment:**
121
+ - `Ctrl + Shift + R` (Windows/Linux)
122
+ - `Cmd + Shift + R` (Mac)
123
+ - Or open DevTools → Network tab → Check "Disable cache"
124
+
125
+ ### Test Cases
126
+
127
+ ```jsx
128
+ // Test 1: Featured card with upgrade button
129
+ <PricingCard
130
+ isFeatured={true}
131
+ showUpgrade={true}
132
+ />
133
+ // Expected: Dark text on light background (visible)
134
+
135
+ // Test 2: Non-featured card with downgrade button
136
+ <PricingCard
137
+ isFeatured={false}
138
+ showDowngrade={true}
139
+ />
140
+ // Expected: Dark text on badge-colored background (visible)
141
+
142
+ // Test 3: Current plan (no upgrade/downgrade)
143
+ <PricingCard
144
+ isCurrentPlan={true}
145
+ />
146
+ // Expected: "Current Plan" text (should match card style)
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Prevention
152
+
153
+ ### 1. Always Consider Text Contrast
154
+ ```jsx
155
+ // Check: What background will this text appear on?
156
+ // If background can vary (light/dark), use explicit text color
157
+ ```
158
+
159
+ ### 2. Avoid Relying on Inheritance for Important Text
160
+ ```jsx
161
+ // ❌ BAD - relies on inheritance
162
+ <button className="text-white">
163
+ <span>{dynamicText}</span>
164
+ </button>
165
+
166
+ // ✅ GOOD - explicit control
167
+ <button className="text-white">
168
+ <span className="text-gray-900">{dynamicText}</span>
169
+ </button>
170
+ ```
171
+
172
+ ### 3. Test with Different Card States
173
+ - Test featured vs non-featured
174
+ - Test with/without active membership
175
+ - Test different badge colors (light/dark)
176
+ - Test on both localhost AND production (cache differences)
177
+
178
+ ### 4. Use Contrast Checking Tools
179
+ - Browser DevTools → Accessibility tab
180
+ - Check color contrast ratio (WCAG AA: 4.5:1 minimum)
181
+
182
+ ### 5. Document Dynamic Styling
183
+ ```jsx
184
+ // Comment complex conditional styling
185
+ // Featured cards: bg-primary-600 text-white
186
+ // Non-featured: bg-gray-100 text-gray-800
187
+ // Upgrade text: ALWAYS text-gray-900 (overrides parent)
188
+ ```
189
+
190
+ ---
191
+
192
+ ## Related Patterns
193
+
194
+ - [Tailwind CSS Specificity Rules](https://tailwindcss.com/docs/adding-custom-styles#using-arbitrary-values)
195
+ - [CSS Inheritance and Cascade](https://developer.mozilla.org/en-US/docs/Web/CSS/Cascade)
196
+ - [WCAG Contrast Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html)
197
+
198
+ ---
199
+
200
+ ## Common Mistakes to Avoid
201
+
202
+ - ❌ **Using inline styles for text color** - They don't override Tailwind utilities on child elements
203
+ - ❌ **Assuming inheritance works like props** - CSS inheritance is parent → child only
204
+ - ❌ **Not testing with real data** - Featured status might come from database
205
+ - ❌ **Forgetting browser cache** - Hard refresh after every deployment
206
+ - ❌ **Overriding on wrong element** - Override on the text element, not parent
207
+ - ❌ **Using `!important` as band-aid** - Fix the specificity issue properly
208
+
209
+ ---
210
+
211
+ ## CSS Specificity Refresher
212
+
213
+ **Order of specificity (low to high):**
214
+ 1. Element selectors (`button`, `span`)
215
+ 2. Class selectors (`.text-white`)
216
+ 3. Inline styles (`style="color: white"`)
217
+ 4. `!important` flag
218
+
219
+ **Tailwind utilities:**
220
+ - Most Tailwind utilities are just classes
221
+ - No `!important` by default (unless you add `!` prefix)
222
+ - Child elements inherit text color unless explicitly overridden
223
+
224
+ **Inheritance vs Specificity:**
225
+ - Inheritance: Parent's `color` flows to children
226
+ - Specificity: Explicit class on child beats inherited value
227
+ - Solution: Add explicit class to child element
228
+
229
+ ---
230
+
231
+ ## Real-World Example
232
+
233
+ **Scenario:** Pricing page with 3 tiers (Free, Partners, Premium)
234
+ - Partners tier is featured (light blue background)
235
+ - User is on Free tier, can upgrade to Partners
236
+ - Button shows "Upgrade" but text is invisible
237
+
238
+ **Before Fix:**
239
+ ```jsx
240
+ <button className="bg-blue-100 text-white">
241
+ <span className="flex items-center gap-2">
242
+ <ArrowUp className="w-4 h-4" />
243
+ Upgrade {/* ← invisible white text */}
244
+ </span>
245
+ </button>
246
+ ```
247
+
248
+ **After Fix:**
249
+ ```jsx
250
+ <button className="bg-blue-100 text-white">
251
+ <span className="flex items-center gap-2 text-gray-900">
252
+ <ArrowUp className="w-4 h-4" />
253
+ Upgrade {/* ← visible dark text */}
254
+ </span>
255
+ </button>
256
+ ```
257
+
258
+ **Contrast Ratios:**
259
+ - Before: White on light blue = 1.5:1 (FAIL)
260
+ - After: Dark gray on light blue = 8.2:1 (PASS)
261
+
262
+ ---
263
+
264
+ ## Resources
265
+
266
+ - [Tailwind CSS Docs - Text Color](https://tailwindcss.com/docs/text-color)
267
+ - [MDN - CSS Inheritance](https://developer.mozilla.org/en-US/docs/Web/CSS/inheritance)
268
+ - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)
269
+ - [Chrome DevTools - Accessibility](https://developer.chrome.com/docs/devtools/accessibility/reference/)
270
+
271
+ ---
272
+
273
+ ## Time to Implement
274
+
275
+ **5-10 minutes** once you know the pattern (add explicit text color class)
276
+
277
+ **Initial debugging time:** 30-60 minutes (finding root cause, testing inline styles, etc.)
278
+
279
+ ## Difficulty Level
280
+
281
+ ⭐⭐⭐ (3/5) - Easy fix once identified, but tricky to debug
282
+
283
+ **Why difficult:**
284
+ - CSS specificity can be confusing
285
+ - Inheritance isn't obvious in JSX
286
+ - Browser cache hides deployments
287
+ - Conditional styling adds complexity
288
+
289
+ ---
290
+
291
+ ## Author Notes
292
+
293
+ This bug burned 2 hours across 3 deployments because:
294
+ 1. First fix tried inline styles (didn't work - wrong element)
295
+ 2. Second fix removed inline color but didn't add explicit override
296
+ 3. Third fix added `text-gray-900` to the right element (worked!)
297
+
298
+ **Key lesson:** When text is invisible, check BOTH:
299
+ - What background it's on (contrast)
300
+ - What parent text color it's inheriting
301
+
302
+ The fix is almost always: **add explicit text color class to the text element itself.**
303
+
304
+ Browser cache also made this harder - each deploy looked like it "didn't work" until hard refresh.
305
+
306
+ **Pro tip:** When debugging text visibility in Tailwind:
307
+ 1. Use browser inspector to see actual computed color
308
+ 2. Check parent element classes
309
+ 3. Add explicit text color to child (don't rely on inheritance)
310
+ 4. Hard refresh to verify deployment
311
+
312
+ ---
313
+
314
+ **Related Issues:**
315
+ - Commit: `eff51d6` - Final fix
316
+ - File: `client/src/pages/Pricing.jsx:534`
317
+ - Date: 2026-02-15
318
+ - Project: MERN Community LMS
319
+
320
+ ---
321
+
322
+ **Future Agents:** If you see invisible text on buttons, check this skill first. It's almost always a parent `text-white` + light background issue. Add explicit dark text class to the child element.