@thierrynakoa/fire-flow 12.2.2 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CREDITS.md +25 -0
- package/DOMINION-FLOW-OVERVIEW.md +182 -38
- package/README.md +399 -690
- package/TROUBLESHOOTING.md +264 -367
- package/agents/fire-debugger.md +54 -0
- package/agents/fire-executor.md +1610 -1033
- package/agents/fire-fact-checker.md +1 -1
- package/agents/fire-planner.md +85 -17
- package/agents/fire-project-researcher.md +1 -1
- package/agents/fire-researcher.md +4 -22
- package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
- package/agents/fire-reviewer.md +552 -499
- package/agents/fire-verifier.md +114 -19
- package/bin/cli.js +18 -101
- package/commands/fire-0-orient.md +2 -2
- package/commands/fire-1a-new.md +50 -15
- package/commands/fire-1c-setup.md +33 -5
- package/commands/fire-1d-discuss.md +87 -1
- package/commands/fire-2-plan.md +556 -527
- package/commands/fire-3-execute.md +2046 -1356
- package/commands/fire-4-verify.md +975 -906
- package/commands/fire-5-handoff.md +46 -5
- package/commands/fire-6-resume.md +2 -31
- package/commands/fire-add-new-skill.md +138 -19
- package/commands/fire-autonomous.md +14 -2
- package/commands/fire-complete-milestone.md +1 -1
- package/commands/fire-cost.md +179 -183
- package/commands/fire-debug.md +1 -6
- package/commands/fire-loop-resume.md +2 -2
- package/commands/fire-loop-stop.md +1 -1
- package/commands/fire-loop.md +2 -15
- package/commands/fire-map-codebase.md +1 -1
- package/commands/fire-migrate-database.md +548 -0
- package/commands/fire-new-milestone.md +1 -1
- package/commands/fire-reflect.md +1 -2
- package/commands/fire-research.md +142 -21
- package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
- package/commands/fire-scaffold.md +297 -0
- package/commands/fire-search.md +1 -2
- package/commands/fire-security-scan.md +483 -484
- package/commands/fire-setup.md +359 -0
- package/commands/fire-skill.md +770 -0
- package/commands/fire-skills-diff.md +506 -506
- package/commands/fire-skills-history.md +388 -388
- package/commands/fire-skills-rollback.md +7 -7
- package/commands/fire-skills-sync.md +470 -470
- package/commands/fire-test.md +5 -5
- package/commands/fire-todos.md +1 -1
- package/commands/fire-update.md +5 -5
- package/commands/fire-validate-skills.md +282 -0
- package/commands/fire-verify-uat.md +9 -177
- package/commands/fire-vuln-scan.md +492 -493
- package/hooks/run-hook.sh +8 -8
- package/hooks/run-session-end.sh +7 -7
- package/hooks/session-end.sh +90 -90
- package/hooks/session-start.sh +1 -1
- package/package.json +4 -25
- package/plugin.json +7 -7
- package/references/autonomy-levels.md +235 -0
- package/references/behavioral-directives.md +95 -3
- package/references/blocker-tracking.md +1 -1
- package/references/circuit-breaker.md +93 -2
- package/references/context-engineering.md +227 -9
- package/references/honesty-protocols.md +70 -1
- package/references/issue-to-pr-pipeline.md +149 -150
- package/references/metrics-and-trends.md +1 -2
- package/references/research-improvements.md +4 -108
- package/references/sdlc-mapping.md +73 -0
- package/references/state-machine.md +151 -0
- package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
- package/skills-library/SKILLS-INDEX.md +57 -558
- package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
- package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
- package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
- package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
- package/skills-library/_general/automation/settings-gui-generator.md +172 -0
- package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
- package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
- package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
- package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
- package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
- package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
- package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
- package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
- package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
- package/skills-library/_general/frontend/color-token-migration.md +112 -0
- package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
- package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
- package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
- package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
- package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
- package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
- package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
- package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
- package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
- package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
- package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
- package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
- package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
- package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
- package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
- package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
- package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
- package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
- package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
- package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
- package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
- package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
- package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
- package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
- package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
- package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
- package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
- package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
- package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
- package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
- package/skills-library/_general/methodology/dead-code-activation.md +123 -0
- package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
- package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
- package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
- package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
- package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
- package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
- package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
- package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
- package/skills-library/_general/performance/liveclock-extraction.md +112 -0
- package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
- package/skills-library/_general/performance/use-visible-interval.md +131 -0
- package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
- package/skills-library/_quarantine/README.md +30 -0
- package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
- package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
- package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
- package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
- package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
- package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
- package/skills-library/api-patterns/graphql-content-queries.md +708 -0
- package/skills-library/appointment-scheduler-design.md +423 -0
- package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
- package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
- package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
- package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
- package/skills-library/automation/scheduled-content-publishing.md +608 -0
- package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
- package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
- package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
- package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
- package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
- package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
- package/skills-library/cms-patterns/content-branch-preview.md +515 -0
- package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
- package/skills-library/cms-patterns/mdx-component-content.md +649 -0
- package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
- package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
- package/skills-library/complexity-metrics/complexity-divider.md +707 -0
- package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
- package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
- package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
- package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
- package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
- package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
- package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
- package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
- package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
- package/skills-library/creative-multimedia/og-image-generator.md +635 -0
- package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
- package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
- package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
- package/skills-library/creative-multimedia/svg-generation.md +750 -0
- package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
- package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
- package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
- package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
- package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
- package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
- package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
- package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
- package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
- package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
- package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
- package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
- package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
- package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
- package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
- package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
- package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
- package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
- package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
- package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
- package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
- package/skills-library/database-solutions/content-publishing-states.md +631 -0
- package/skills-library/database-solutions/database-schema-designer.md +522 -0
- package/skills-library/database-solutions/er-diagram-components.md +569 -0
- package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
- package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
- package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
- package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
- package/skills-library/database-solutions/normalization-validator.md +778 -0
- package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
- package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
- package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
- package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
- package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
- package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
- package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
- package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
- package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
- package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
- package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
- package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
- package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
- package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
- package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
- package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
- package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
- package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
- package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
- package/skills-library/deployment-security/SECURITY.md +41 -0
- package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
- package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
- package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
- package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
- package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
- package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
- package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
- package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
- package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
- package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
- package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
- package/skills-library/deployment-security/vps-deployment.md +135 -0
- package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
- package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
- package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
- package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
- package/skills-library/document-processing/md-to-word-converter.md +318 -0
- package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
- package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
- package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
- package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
- package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
- package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
- package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
- package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
- package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
- package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
- package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
- package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
- package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
- package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
- package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
- package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
- package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
- package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
- package/skills-library/ecommerce/inventory-stock-management.md +270 -0
- package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
- package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
- package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
- package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
- package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
- package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
- package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
- package/skills-library/excalidraw-diagrams/LICENSE +21 -0
- package/skills-library/excalidraw-diagrams/README.md +178 -0
- package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
- package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
- package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
- package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
- package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
- package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
- package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
- package/skills-library/infrastructure/observability-designer.md +264 -0
- package/skills-library/infrastructure/performance-profiler.md +621 -0
- package/skills-library/installer-wizard-patterns.md +249 -0
- package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
- package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
- package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
- package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
- package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
- package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
- package/skills-library/integrations/headless-cms-architecture.md +484 -0
- package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
- package/skills-library/integrations/payload-cms-patterns.md +674 -0
- package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
- package/skills-library/integrations/rss-podcast-integration.md +300 -0
- package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/marketing/campaign-analytics.md +97 -0
- package/skills-library/marketing/content-creator.md +105 -0
- package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
- package/skills-library/marketing/social-media-analyzer.md +81 -0
- package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
- package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
- package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
- package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
- package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
- package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
- package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
- package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
- package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
- package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
- package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
- package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
- package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
- package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
- package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
- package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
- package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
- package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
- package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
- package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
- package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
- package/skills-library/methodology/tech-debt-tracker.md +570 -0
- package/skills-library/parallel-debug/SKILL.md +60 -0
- package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
- package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
- package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
- package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
- package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
- package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
- package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
- package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
- package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
- package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
- package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
- package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
- package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
- package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
- package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
- package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
- package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
- package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
- package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
- package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
- package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
- package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
- package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
- package/skills-library/security/admin-deletion-safety.md +396 -0
- package/skills-library/security/application-vuln-patterns.md +477 -0
- package/skills-library/security/env-secrets-manager.md +686 -0
- package/skills-library/security/secure-ai-application-templates.md +347 -0
- package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
- package/skills-library/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
- package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
- package/skills-library/system-context/SKILL.md +40 -0
- package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
- package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
- package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
- package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
- package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
- package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
- package/skills-library/testing/playwright-api-security-tests.md +202 -0
- package/skills-library/toolbox/SKILL.md +84 -0
- package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
- package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
- package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
- package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
- package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
- package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills-library/wordpress-style-theme-components.md +1526 -0
- package/templates/ASSUMPTIONS.md +1 -1
- package/templates/DECISION_LOG.md +0 -1
- package/templates/phase-prompt.md +1 -1
- package/templates/phoenix-comparison.md +6 -6
- package/templates/skill-api-integration.md +106 -0
- package/templates/skill-architecture-pattern.md +92 -0
- package/templates/skill-debug-pattern.md +98 -0
- package/templates/skill-devops-recipe.md +107 -0
- package/templates/skill-general.md +65 -0
- package/templates/skill-ui-component.md +113 -0
- package/version.json +7 -3
- package/workflows/handoff-session.md +2 -2
- package/workflows/new-project.md +2 -2
- package/workflows/plan-phase.md +1 -1
- package/.claude-plugin/plugin.json +0 -64
- package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
- package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
- package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
- package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
- package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
- package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
- package/skills-library/specialists/api-architecture/api-designer.md +0 -49
- package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
- package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
- package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
- package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
- package/skills-library/specialists/backend/django-expert.md +0 -52
- package/skills-library/specialists/backend/fastapi-expert.md +0 -52
- package/skills-library/specialists/backend/laravel-specialist.md +0 -52
- package/skills-library/specialists/backend/nestjs-expert.md +0 -51
- package/skills-library/specialists/backend/rails-expert.md +0 -53
- package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
- package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
- package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
- package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
- package/skills-library/specialists/data-ml/rag-architect.md +0 -51
- package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
- package/skills-library/specialists/frontend/angular-architect.md +0 -52
- package/skills-library/specialists/frontend/flutter-expert.md +0 -51
- package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
- package/skills-library/specialists/frontend/react-native-expert.md +0 -50
- package/skills-library/specialists/frontend/vue-expert.md +0 -51
- package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
- package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
- package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
- package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
- package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
- package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
- package/skills-library/specialists/languages/cpp-pro.md +0 -74
- package/skills-library/specialists/languages/csharp-developer.md +0 -69
- package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
- package/skills-library/specialists/languages/golang-pro.md +0 -51
- package/skills-library/specialists/languages/java-architect.md +0 -49
- package/skills-library/specialists/languages/javascript-pro.md +0 -68
- package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
- package/skills-library/specialists/languages/php-pro.md +0 -49
- package/skills-library/specialists/languages/python-pro.md +0 -52
- package/skills-library/specialists/languages/react-expert.md +0 -51
- package/skills-library/specialists/languages/rust-engineer.md +0 -50
- package/skills-library/specialists/languages/sql-pro.md +0 -56
- package/skills-library/specialists/languages/swift-expert.md +0 -69
- package/skills-library/specialists/languages/typescript-pro.md +0 -51
- package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
- package/skills-library/specialists/platform/embedded-systems.md +0 -53
- package/skills-library/specialists/platform/game-developer.md +0 -53
- package/skills-library/specialists/platform/salesforce-developer.md +0 -53
- package/skills-library/specialists/platform/shopify-expert.md +0 -49
- package/skills-library/specialists/platform/wordpress-pro.md +0 -49
- package/skills-library/specialists/quality/browser-use-expert.md +0 -210
- package/skills-library/specialists/quality/code-documenter.md +0 -51
- package/skills-library/specialists/quality/code-reviewer.md +0 -67
- package/skills-library/specialists/quality/debugging-wizard.md +0 -51
- package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
- package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
- package/skills-library/specialists/quality/playwright-expert.md +0 -65
- package/skills-library/specialists/quality/spec-miner.md +0 -56
- package/skills-library/specialists/quality/test-master.md +0 -65
- package/skills-library/specialists/security/secure-code-guardian.md +0 -55
- package/skills-library/specialists/security/security-reviewer.md +0 -53
- package/skills-library/specialists/workflow/architecture-designer.md +0 -53
- package/skills-library/specialists/workflow/cli-developer.md +0 -70
- package/skills-library/specialists/workflow/feature-forge.md +0 -65
- package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
- package/skills-library/specialists/workflow/the-fool.md +0 -62
- /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# Production Server Restarts Due to Query Performance - Solution & Pattern
|
|
2
|
+
|
|
3
|
+
## The Problem
|
|
4
|
+
|
|
5
|
+
Production LMS server (schooloftheprophets.club) was experiencing periodic restarts every 30-40 minutes with heap memory at 91%+ usage, despite PM2 ecosystem configuration updates.
|
|
6
|
+
|
|
7
|
+
### Error Symptoms
|
|
8
|
+
```
|
|
9
|
+
PM2 Status: 29 restarts in 11 hours
|
|
10
|
+
Heap Usage: 91.89% (469MB / 512MB)
|
|
11
|
+
Memory Restart Threshold: 450M exceeded repeatedly
|
|
12
|
+
Status: Server restarting in crash loop
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Why It Was Hard
|
|
16
|
+
|
|
17
|
+
- Server restarted **without** throwing errors or stack traces
|
|
18
|
+
- PM2 logs showed normal operations before restarts
|
|
19
|
+
- Memory pressure was gradual, not sudden spikes
|
|
20
|
+
- Issue occurred under normal load (not during peak traffic)
|
|
21
|
+
- Initial assumption: memory leak or AI features causing high usage
|
|
22
|
+
- **Root cause was hidden in query patterns**, not obvious memory leaks
|
|
23
|
+
|
|
24
|
+
### Impact
|
|
25
|
+
|
|
26
|
+
- Production site unstable (29 restarts in 11 hours)
|
|
27
|
+
- Students experiencing random disconnections
|
|
28
|
+
- Video progress not saving consistently
|
|
29
|
+
- Database connection pool exhaustion
|
|
30
|
+
- Server CPU high during query bursts
|
|
31
|
+
- User experience severely degraded
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## The Solution
|
|
36
|
+
|
|
37
|
+
### Root Cause Discovery
|
|
38
|
+
|
|
39
|
+
The real issue: **Multiple separate database queries firing repeatedly** (every 3-5 seconds per active user) instead of a single aggregated query.
|
|
40
|
+
|
|
41
|
+
**Location:** `server/controllers/videoProgressController.js` → `getCourseProgressSummary()`
|
|
42
|
+
|
|
43
|
+
### Original Code (3 Separate Queries)
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
async getCourseProgressSummary(courseId, userId) {
|
|
47
|
+
// Query 1: Count total lessons
|
|
48
|
+
const totalResult = await sql`
|
|
49
|
+
SELECT COUNT(*) as total
|
|
50
|
+
FROM lessons
|
|
51
|
+
WHERE course_id = ${courseId}
|
|
52
|
+
`;
|
|
53
|
+
|
|
54
|
+
// Query 2: Count completed lessons
|
|
55
|
+
const completedResult = await sql`
|
|
56
|
+
SELECT COUNT(*) as completed
|
|
57
|
+
FROM lesson_progress
|
|
58
|
+
WHERE user_id = ${userId}
|
|
59
|
+
AND course_id = ${courseId}
|
|
60
|
+
AND is_completed = TRUE
|
|
61
|
+
`;
|
|
62
|
+
|
|
63
|
+
// Query 3: Sum time spent
|
|
64
|
+
const timeResult = await sql`
|
|
65
|
+
SELECT COALESCE(SUM(time_spent), 0) as total_time
|
|
66
|
+
FROM lesson_progress
|
|
67
|
+
WHERE user_id = ${userId}
|
|
68
|
+
AND course_id = ${courseId}
|
|
69
|
+
`;
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
total: totalResult[0].total,
|
|
73
|
+
completed: completedResult[0].completed,
|
|
74
|
+
totalTime: timeResult[0].total_time
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Performance:**
|
|
80
|
+
- 3 separate queries = ~900ms total
|
|
81
|
+
- Fired every 3-5 seconds per active user
|
|
82
|
+
- With 5 concurrent users: 15 queries every 3-5 seconds
|
|
83
|
+
- Database connection pool saturated
|
|
84
|
+
|
|
85
|
+
### Optimized Code (1 Aggregated Query)
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
async getCourseProgressSummary(courseId, userId) {
|
|
89
|
+
// Single aggregated query with subquery and conditional aggregation
|
|
90
|
+
const result = await sql`
|
|
91
|
+
SELECT
|
|
92
|
+
(SELECT COUNT(*) FROM lessons WHERE course_id = ${courseId}) as total_lessons,
|
|
93
|
+
COUNT(CASE WHEN lp.is_completed = TRUE THEN 1 END) as completed_lessons,
|
|
94
|
+
COALESCE(SUM(lp.time_spent), 0) as total_time_spent
|
|
95
|
+
FROM lesson_progress lp
|
|
96
|
+
WHERE lp.user_id = ${userId}
|
|
97
|
+
AND lp.course_id = ${courseId}
|
|
98
|
+
`;
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
total: result[0].total_lessons,
|
|
102
|
+
completed: result[0].completed_lessons,
|
|
103
|
+
totalTime: result[0].total_time_spent
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Performance:**
|
|
109
|
+
- 1 aggregated query = ~300ms total
|
|
110
|
+
- **74% faster** (900ms → 300ms)
|
|
111
|
+
- Reduced database round-trips from 3 to 1
|
|
112
|
+
- Connection pool usage reduced by 67%
|
|
113
|
+
|
|
114
|
+
### Additional Optimization: Remove Unnecessary Queries
|
|
115
|
+
|
|
116
|
+
**Original `getAllLessonProgress` pattern:**
|
|
117
|
+
```javascript
|
|
118
|
+
async getAllLessonProgress(courseId, userId) {
|
|
119
|
+
// First query - UNNECESSARY (just to count)
|
|
120
|
+
const lessons = await sql`
|
|
121
|
+
SELECT id FROM lessons WHERE course_id = ${courseId}
|
|
122
|
+
`;
|
|
123
|
+
|
|
124
|
+
// Second query - actual data needed
|
|
125
|
+
const progress = await sql`
|
|
126
|
+
SELECT * FROM lesson_progress
|
|
127
|
+
WHERE user_id = ${userId} AND course_id = ${courseId}
|
|
128
|
+
`;
|
|
129
|
+
|
|
130
|
+
return progress;
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Optimized (removed first query):**
|
|
135
|
+
```javascript
|
|
136
|
+
async getAllLessonProgress(courseId, userId) {
|
|
137
|
+
// Single query - get the data directly
|
|
138
|
+
const progress = await sql`
|
|
139
|
+
SELECT * FROM lesson_progress
|
|
140
|
+
WHERE user_id = ${userId} AND course_id = ${courseId}
|
|
141
|
+
`;
|
|
142
|
+
|
|
143
|
+
return progress;
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Performance:**
|
|
148
|
+
- 50% faster (2 queries → 1 query)
|
|
149
|
+
- Eliminated unnecessary database round-trip
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## The Pattern: Query Consolidation
|
|
154
|
+
|
|
155
|
+
### When to Apply This Pattern
|
|
156
|
+
|
|
157
|
+
✅ **Multiple queries fetching data for the same entity**
|
|
158
|
+
✅ **Queries firing in loops or frequently (every few seconds)**
|
|
159
|
+
✅ **High memory usage without clear memory leaks**
|
|
160
|
+
✅ **Database connection pool saturation**
|
|
161
|
+
✅ **Slow API endpoints with multiple DB calls**
|
|
162
|
+
|
|
163
|
+
### Core Technique: Subquery + Aggregation
|
|
164
|
+
|
|
165
|
+
```sql
|
|
166
|
+
SELECT
|
|
167
|
+
(SELECT COUNT(*) FROM table1 WHERE condition) as metric1,
|
|
168
|
+
COUNT(CASE WHEN condition THEN 1 END) as metric2,
|
|
169
|
+
COALESCE(SUM(column), 0) as metric3
|
|
170
|
+
FROM table2
|
|
171
|
+
WHERE filters
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Benefits:**
|
|
175
|
+
- Single database round-trip
|
|
176
|
+
- Reduced connection pool usage
|
|
177
|
+
- Lower network latency
|
|
178
|
+
- Better query plan optimization by database
|
|
179
|
+
- Easier to add indexes
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Testing the Fix
|
|
184
|
+
|
|
185
|
+
### Before Optimization
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
# Performance test
|
|
189
|
+
Query Count: 3 separate queries
|
|
190
|
+
Total Time: 900ms average
|
|
191
|
+
Heap Usage: 91% (469MB / 512MB)
|
|
192
|
+
PM2 Restarts: 29 restarts in 11 hours
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### After Optimization
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Performance test
|
|
199
|
+
Query Count: 1 aggregated query
|
|
200
|
+
Total Time: 300ms average (74% faster)
|
|
201
|
+
Heap Usage: 26% (233MB / 1024MB)
|
|
202
|
+
PM2 Restarts: 0 restarts (55+ minutes stable)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Deployment Result
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
Server Status: ONLINE (stable)
|
|
209
|
+
Memory: 233MB / 1500MB limit (94% headroom)
|
|
210
|
+
Restarts: 0 (from 29 in 11 hours)
|
|
211
|
+
Query Performance: 236-475ms (Session Pooler latency)
|
|
212
|
+
CPU: 0-2% (very low)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Load Test Verification
|
|
216
|
+
|
|
217
|
+
```javascript
|
|
218
|
+
// Test with 5 concurrent users accessing course progress
|
|
219
|
+
// Before: 15 queries every 3-5 seconds = connection pool saturation
|
|
220
|
+
// After: 5 queries every 3-5 seconds = stable performance
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Additional Optimizations Applied
|
|
226
|
+
|
|
227
|
+
### 1. Database Indexes (User Added)
|
|
228
|
+
|
|
229
|
+
```sql
|
|
230
|
+
-- Index on video_progress for faster lookups
|
|
231
|
+
CREATE INDEX idx_video_progress_user_course
|
|
232
|
+
ON video_progress(user_id, course_id);
|
|
233
|
+
|
|
234
|
+
-- Index on user_course for enrollment queries
|
|
235
|
+
CREATE INDEX idx_user_course_enrollment
|
|
236
|
+
ON user_course(user_id, course_id);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Impact:** Faster query execution when combined with consolidated queries
|
|
240
|
+
|
|
241
|
+
### 2. Memory Limit Increase (After Cleanup)
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
// ecosystem.config.js
|
|
245
|
+
max_memory_restart: '1500M', // Was 900M
|
|
246
|
+
node_args: '--max-old-space-size=2048', // Was 1024M
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Why:** After freeing VPS resources (melchizedek Node.js, binamupower.com), increased limits to provide headroom for AI workloads
|
|
250
|
+
|
|
251
|
+
### 3. Database Connection (Supabase)
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Production uses Session Pooler (port 5432) not Transaction Pooler (port 6543)
|
|
255
|
+
# Transaction Pooler blocked on shared hosting network
|
|
256
|
+
VITE_SUPABASE_DB_URL=postgresql://...@aws-1-us-east-1.pooler.supabase.com:5432/postgres
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Trade-off:** Session Pooler adds ~100-200ms latency but ensures stability
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Prevention Checklist
|
|
264
|
+
|
|
265
|
+
### Before Deploying Query Changes
|
|
266
|
+
|
|
267
|
+
- [ ] Profile query count for frequently-called endpoints
|
|
268
|
+
- [ ] Check if multiple queries can be consolidated
|
|
269
|
+
- [ ] Verify queries aren't in loops (React useEffect, polling, etc.)
|
|
270
|
+
- [ ] Test with realistic concurrent user count
|
|
271
|
+
- [ ] Monitor heap usage under load
|
|
272
|
+
- [ ] Ensure database indexes exist for WHERE clauses
|
|
273
|
+
|
|
274
|
+
### Code Review Red Flags
|
|
275
|
+
|
|
276
|
+
```javascript
|
|
277
|
+
// ❌ BAD: Multiple queries for related data
|
|
278
|
+
const total = await db.query('SELECT COUNT(*) FROM lessons');
|
|
279
|
+
const completed = await db.query('SELECT COUNT(*) FROM progress WHERE completed = true');
|
|
280
|
+
const time = await db.query('SELECT SUM(time) FROM progress');
|
|
281
|
+
|
|
282
|
+
// ✅ GOOD: Single aggregated query
|
|
283
|
+
const stats = await db.query(`
|
|
284
|
+
SELECT
|
|
285
|
+
(SELECT COUNT(*) FROM lessons) as total,
|
|
286
|
+
COUNT(CASE WHEN completed THEN 1 END) as completed,
|
|
287
|
+
COALESCE(SUM(time), 0) as time
|
|
288
|
+
FROM progress
|
|
289
|
+
`);
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Monitoring Alerts to Set
|
|
293
|
+
|
|
294
|
+
```javascript
|
|
295
|
+
// PM2 ecosystem.config.js
|
|
296
|
+
max_memory_restart: '1500M', // Alert before this
|
|
297
|
+
max_restarts: 10, // Alert if exceeded
|
|
298
|
+
min_uptime: '10s', // Alert if restarting too fast
|
|
299
|
+
|
|
300
|
+
// Custom alerts
|
|
301
|
+
- Query time > 500ms
|
|
302
|
+
- Restart count > 5 in 1 hour
|
|
303
|
+
- Heap usage > 80%
|
|
304
|
+
- Connection pool > 80% utilization
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Related Patterns
|
|
310
|
+
|
|
311
|
+
- [Database N+1 Query Problem](./N_PLUS_ONE_QUERY_FIX.md) *(if exists)*
|
|
312
|
+
- [PostgreSQL Query Optimization](./POSTGRES_QUERY_OPTIMIZATION.md) *(if exists)*
|
|
313
|
+
- [API Endpoint Performance Patterns](../api-patterns/ENDPOINT_PERFORMANCE.md) *(if exists)*
|
|
314
|
+
- [Production Debugging Without Errors](../deployment-security/SILENT_FAILURE_DEBUGGING.md) *(if exists)*
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Common Mistakes to Avoid
|
|
319
|
+
|
|
320
|
+
- ❌ **Assuming memory leaks** - Query performance can cause memory pressure
|
|
321
|
+
- ❌ **Not profiling queries** - Can't optimize what you don't measure
|
|
322
|
+
- ❌ **Optimizing locally only** - Production has different load patterns
|
|
323
|
+
- ❌ **Ignoring query frequency** - Fast query × 1000 calls = slow system
|
|
324
|
+
- ❌ **Premature caching** - Fix queries first, cache second
|
|
325
|
+
- ❌ **Not checking connection pool** - Pool saturation causes cascading failures
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Resources
|
|
330
|
+
|
|
331
|
+
- [PostgreSQL Aggregate Functions](https://www.postgresql.org/docs/current/functions-aggregate.html)
|
|
332
|
+
- [Query Performance Explained](https://use-the-index-luke.com/)
|
|
333
|
+
- [PM2 Ecosystem File Documentation](https://pm2.keymetrics.io/docs/usage/application-declaration/)
|
|
334
|
+
- [Node.js Memory Management](https://nodejs.org/en/docs/guides/simple-profiling/)
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Time to Implement
|
|
339
|
+
|
|
340
|
+
**30-60 minutes** per affected endpoint:
|
|
341
|
+
- 10 min: Identify multiple queries
|
|
342
|
+
- 20 min: Consolidate into single query
|
|
343
|
+
- 10 min: Test and verify performance
|
|
344
|
+
- 10 min: Deploy and monitor
|
|
345
|
+
- 10 min: Add indexes if needed
|
|
346
|
+
|
|
347
|
+
## Difficulty Level
|
|
348
|
+
|
|
349
|
+
⭐⭐⭐ (3/5)
|
|
350
|
+
- Easy to implement once identified
|
|
351
|
+
- **Hard to diagnose** (no error messages, gradual degradation)
|
|
352
|
+
- Requires SQL knowledge (subqueries, aggregation, CASE)
|
|
353
|
+
- Need access to production metrics
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Author Notes
|
|
358
|
+
|
|
359
|
+
**Total Debug Time:** ~4 hours (including VPS resource investigation)
|
|
360
|
+
|
|
361
|
+
**Key Insight:** Production restarts without errors usually mean resource exhaustion, not crashes. Check:
|
|
362
|
+
1. Query patterns (frequency × cost)
|
|
363
|
+
2. Memory growth over time
|
|
364
|
+
3. Connection pool usage
|
|
365
|
+
4. Database query logs
|
|
366
|
+
|
|
367
|
+
**Why This Was Hard:**
|
|
368
|
+
- Server showed "normal" logs before restart
|
|
369
|
+
- No stack traces or error messages
|
|
370
|
+
- Memory usage was gradual, not sudden
|
|
371
|
+
- Issue only appeared under multi-user load
|
|
372
|
+
|
|
373
|
+
**What Worked:**
|
|
374
|
+
- Parallel investigation (queries + memory + connection pool)
|
|
375
|
+
- Performance profiling (900ms → 300ms)
|
|
376
|
+
- Comprehensive monitoring after fix
|
|
377
|
+
|
|
378
|
+
**Lesson Learned:** When production restarts without errors, profile query performance first. Fast queries executed frequently can exhaust resources faster than slow queries executed rarely.
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
**Session:** February 6, 2026
|
|
383
|
+
**Production Impact:** Immediate stability (0 restarts after deployment)
|
|
384
|
+
**Performance Gain:** 74% query time reduction
|
|
385
|
+
**Memory Freed:** Additional 437MB from VPS cleanup (separate effort)
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
*This pattern saved a production site from a 29-restart crash loop. Document your wins.* 🎯
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# 🔗 Connection Failures - Root Cause & Fix
|
|
2
|
+
|
|
3
|
+
## The Problem
|
|
4
|
+
|
|
5
|
+
Your connections are failing because **Row Level Security (RLS) is not properly enabled** on your tables. The diagnostic showed:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
⚠️ No authentication required (RLS might not be properly set)
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
This means:
|
|
12
|
+
- ❌ Users CAN access **other users' data** (security risk!)
|
|
13
|
+
- ❌ RLS policies aren't enforcing authentication
|
|
14
|
+
- ❌ Connection tests fail because they can't verify user isolation
|
|
15
|
+
|
|
16
|
+
## Why Connections "Fail"
|
|
17
|
+
|
|
18
|
+
When you test a connection in Settings, it:
|
|
19
|
+
1. Sends "Hello, respond with OK" message
|
|
20
|
+
2. Expects an authenticated response
|
|
21
|
+
3. **Fails because RLS isn't blocking unauthenticated access**
|
|
22
|
+
4. Returns: "Connection test failed"
|
|
23
|
+
|
|
24
|
+
## The Fix (3 Simple Steps)
|
|
25
|
+
|
|
26
|
+
### **Step 1: Open Supabase SQL Editor**
|
|
27
|
+
1. Go to: https://supabase.com/dashboard
|
|
28
|
+
2. Select your project
|
|
29
|
+
3. Go to: **SQL Editor** (left sidebar)
|
|
30
|
+
4. Click **New Query**
|
|
31
|
+
|
|
32
|
+
### **Step 2: Copy the SQL**
|
|
33
|
+
Copy the entire contents of this file:
|
|
34
|
+
```
|
|
35
|
+
FIX_RLS_POLICIES.sql
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### **Step 3: Execute**
|
|
39
|
+
1. Paste into the SQL Editor
|
|
40
|
+
2. Click **Run** (or Cmd+Enter)
|
|
41
|
+
3. Wait for completion
|
|
42
|
+
4. Should see: `rowsecurity = true` for all tables
|
|
43
|
+
|
|
44
|
+
## Verification
|
|
45
|
+
|
|
46
|
+
After running the fix, run the diagnostic again:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
node diagnose-connections.js
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
You should now see:
|
|
53
|
+
```
|
|
54
|
+
✅ RLS Active: Requires authentication (expected without session)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## What Was Wrong
|
|
58
|
+
|
|
59
|
+
Your RLS policies were likely:
|
|
60
|
+
- ❌ Too permissive (allowed all users)
|
|
61
|
+
- ❌ Not properly created (IF NOT EXISTS that already existed)
|
|
62
|
+
- ❌ Missing or dropped during migrations
|
|
63
|
+
- ❌ Set to permissive instead of restrictive
|
|
64
|
+
|
|
65
|
+
## What The Fix Does
|
|
66
|
+
|
|
67
|
+
1. **Drops permissive policies** - Removes lenient access rules
|
|
68
|
+
2. **Re-enables RLS** - Forces authentication checks
|
|
69
|
+
3. **Creates restrictive policies** - Only users can access their own data
|
|
70
|
+
4. **Verifies the fix** - Confirms all tables have RLS enabled
|
|
71
|
+
|
|
72
|
+
## After Fixing
|
|
73
|
+
|
|
74
|
+
Your app will:
|
|
75
|
+
- ✅ Properly isolate user data
|
|
76
|
+
- ✅ Pass connection tests
|
|
77
|
+
- ✅ Enforce authentication everywhere
|
|
78
|
+
- ✅ Show green "Connection successful" in Settings
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
**⏱️ Time to fix:** 2-3 minutes
|
|
83
|
+
**📋 Files involved:** `FIX_RLS_POLICIES.sql`
|
|
84
|
+
**🔄 Deployment:** No rebuild needed - database-only change
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Troubleshooting
|
|
89
|
+
|
|
90
|
+
**Q: I still see "Connection Failed"**
|
|
91
|
+
- Clear browser cache (Ctrl+Shift+R)
|
|
92
|
+
- Hard refresh after running the SQL
|
|
93
|
+
- Wait 30 seconds for Supabase to propagate changes
|
|
94
|
+
|
|
95
|
+
**Q: I'm getting different errors**
|
|
96
|
+
- Check browser console (F12 → Console)
|
|
97
|
+
- Look for specific error messages
|
|
98
|
+
- Note the exact error and section
|
|
99
|
+
|
|
100
|
+
**Q: Can I skip this?**
|
|
101
|
+
- ❌ No. RLS is a security feature
|
|
102
|
+
- Without it, users can see each other's financial data
|
|
103
|
+
- This is a critical security issue
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
**Need help?** Check the error output from the SQL execution.
|