@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.
- package/CREDITS.md +25 -0
- package/DOMINION-FLOW-OVERVIEW.md +182 -38
- package/README.md +399 -455
- package/TROUBLESHOOTING.md +264 -264
- 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-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 -24
- 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/tools/uat-runner.py +179 -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/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,258 @@
|
|
|
1
|
+
# Dark Mode Modal Visibility - CSS Variables vs Explicit Colors
|
|
2
|
+
|
|
3
|
+
## The Problem
|
|
4
|
+
|
|
5
|
+
Modal dialogs become unreadable in dark mode when using CSS custom properties (CSS variables) for both background and text colors. The modal content becomes dark-on-dark or invisible.
|
|
6
|
+
|
|
7
|
+
### Error Symptoms
|
|
8
|
+
|
|
9
|
+
- Modal appears but content is invisible or barely visible
|
|
10
|
+
- Users can't read confirmation messages
|
|
11
|
+
- Buttons are hard to see or click
|
|
12
|
+
- No console errors - just visual failure
|
|
13
|
+
|
|
14
|
+
### Why It Was Hard
|
|
15
|
+
|
|
16
|
+
- The modal "works" - it opens and closes correctly
|
|
17
|
+
- No JavaScript errors to debug
|
|
18
|
+
- Easy to miss during development if you only test in light mode
|
|
19
|
+
- CSS variables silently resolve to values that don't provide contrast
|
|
20
|
+
- The fix seems counterintuitive (use explicit colors instead of theme-aware variables)
|
|
21
|
+
|
|
22
|
+
### Impact
|
|
23
|
+
|
|
24
|
+
- Users cannot complete critical actions (like confirming unenrollment)
|
|
25
|
+
- UX frustration and confusion
|
|
26
|
+
- Potential data integrity issues if users click blindly
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## The Solution
|
|
31
|
+
|
|
32
|
+
### Root Cause
|
|
33
|
+
|
|
34
|
+
When a modal uses CSS variables like `--color-surface` and `--color-text`, both resolve to dark values in dark mode:
|
|
35
|
+
|
|
36
|
+
```jsx
|
|
37
|
+
// BAD - Both resolve to dark colors in dark mode
|
|
38
|
+
<div style={{ backgroundColor: 'var(--color-surface, #ffffff)' }}>
|
|
39
|
+
<p style={{ color: 'var(--color-text-secondary, #6b7280)' }}>
|
|
40
|
+
Confirm action?
|
|
41
|
+
</p>
|
|
42
|
+
</div>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
In dark mode:
|
|
46
|
+
- `--color-surface` might be `#1f2937` (dark gray)
|
|
47
|
+
- `--color-text-secondary` might be `#9ca3af` (light gray)
|
|
48
|
+
|
|
49
|
+
But if the modal doesn't properly inherit theme context, or CSS variables cascade incorrectly, you get dark-on-dark.
|
|
50
|
+
|
|
51
|
+
### How to Fix
|
|
52
|
+
|
|
53
|
+
**Use explicit Tailwind classes** for critical modals instead of CSS variables:
|
|
54
|
+
|
|
55
|
+
```jsx
|
|
56
|
+
// GOOD - Explicit white background, explicit dark text
|
|
57
|
+
<div className="relative inline-block w-full max-w-md p-6 my-8 overflow-hidden text-left align-middle transition-all transform bg-white rounded-lg shadow-xl">
|
|
58
|
+
<h3 className="text-lg font-semibold mb-2 text-red-600">
|
|
59
|
+
Confirm Unenrollment
|
|
60
|
+
</h3>
|
|
61
|
+
<p className="mb-4 text-gray-700">
|
|
62
|
+
Are you sure you want to unenroll{' '}
|
|
63
|
+
<strong className="text-gray-900">{userName}</strong>{' '}
|
|
64
|
+
from <strong className="text-gray-900">{courseTitle}</strong>?
|
|
65
|
+
</p>
|
|
66
|
+
<p className="text-sm mb-6 text-red-600">
|
|
67
|
+
This will also delete their course progress.
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<div className="flex justify-end gap-3">
|
|
71
|
+
<button className="px-4 py-2 rounded-lg text-sm font-medium bg-gray-100 text-gray-700 hover:bg-gray-200">
|
|
72
|
+
Cancel
|
|
73
|
+
</button>
|
|
74
|
+
<button className="px-4 py-2 rounded-lg text-sm font-medium text-white bg-red-600 hover:bg-red-700 disabled:opacity-50">
|
|
75
|
+
Confirm
|
|
76
|
+
</button>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Key Changes
|
|
82
|
+
|
|
83
|
+
| Element | Bad (CSS Variables) | Good (Explicit) |
|
|
84
|
+
|---------|---------------------|-----------------|
|
|
85
|
+
| Modal background | `style={{ backgroundColor: 'var(--color-surface)' }}` | `className="bg-white"` |
|
|
86
|
+
| Primary text | `style={{ color: 'var(--color-text)' }}` | `className="text-gray-900"` |
|
|
87
|
+
| Secondary text | `style={{ color: 'var(--color-text-secondary)' }}` | `className="text-gray-700"` |
|
|
88
|
+
| Danger text | `style={{ color: '#dc2626' }}` | `className="text-red-600"` |
|
|
89
|
+
| Cancel button | `style={{ backgroundColor: 'var(--color-surface-secondary)' }}` | `className="bg-gray-100 text-gray-700"` |
|
|
90
|
+
| Danger button | `style={{ backgroundColor: '#dc2626' }}` | `className="bg-red-600 text-white"` |
|
|
91
|
+
|
|
92
|
+
### Backdrop Fix
|
|
93
|
+
|
|
94
|
+
Also use explicit classes for the modal backdrop:
|
|
95
|
+
|
|
96
|
+
```jsx
|
|
97
|
+
// BAD
|
|
98
|
+
<div
|
|
99
|
+
className="fixed inset-0 transition-opacity"
|
|
100
|
+
style={{ backgroundColor: 'rgba(0, 0, 0, 0.5)' }}
|
|
101
|
+
/>
|
|
102
|
+
|
|
103
|
+
// GOOD
|
|
104
|
+
<div className="fixed inset-0 transition-opacity bg-black bg-opacity-50" />
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## When to Use Explicit Colors
|
|
110
|
+
|
|
111
|
+
Use explicit Tailwind classes for:
|
|
112
|
+
|
|
113
|
+
1. **Confirmation modals** - Critical user decisions
|
|
114
|
+
2. **Error dialogs** - Must be readable
|
|
115
|
+
3. **Overlays and popups** - Need guaranteed contrast
|
|
116
|
+
4. **Toast notifications** - Brief, need immediate visibility
|
|
117
|
+
|
|
118
|
+
Keep CSS variables for:
|
|
119
|
+
|
|
120
|
+
1. **Main page layouts** - Should respect theme
|
|
121
|
+
2. **Navigation** - Part of the theme experience
|
|
122
|
+
3. **Card backgrounds** - Follow user preference
|
|
123
|
+
4. **Form inputs** - Theme-aware is appropriate
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Testing the Fix
|
|
128
|
+
|
|
129
|
+
### Before (Dark Mode)
|
|
130
|
+
- Modal appears with dark background
|
|
131
|
+
- Text is barely visible or invisible
|
|
132
|
+
- User cannot read confirmation message
|
|
133
|
+
|
|
134
|
+
### After (Dark Mode)
|
|
135
|
+
- Modal has white background
|
|
136
|
+
- Text is clearly visible (gray/black)
|
|
137
|
+
- Danger messages in red are prominent
|
|
138
|
+
- Buttons have clear hover states
|
|
139
|
+
|
|
140
|
+
### Test Cases
|
|
141
|
+
|
|
142
|
+
1. Open modal in light mode - verify readable
|
|
143
|
+
2. Open modal in dark mode - verify readable
|
|
144
|
+
3. Toggle theme while modal is open - should remain readable
|
|
145
|
+
4. Test on different screen brightnesses
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Prevention
|
|
150
|
+
|
|
151
|
+
### Code Review Checklist
|
|
152
|
+
|
|
153
|
+
- [ ] Modal backgrounds use explicit `bg-white` or `bg-gray-900`
|
|
154
|
+
- [ ] Text colors use explicit Tailwind classes
|
|
155
|
+
- [ ] Buttons have visible text in both modes
|
|
156
|
+
- [ ] Backdrop uses `bg-black bg-opacity-50`
|
|
157
|
+
|
|
158
|
+
### Pattern to Follow
|
|
159
|
+
|
|
160
|
+
```jsx
|
|
161
|
+
// Standard modal pattern for guaranteed visibility
|
|
162
|
+
const ConfirmationModal = ({ isOpen, onClose, onConfirm, title, message, confirmText }) => {
|
|
163
|
+
if (!isOpen) return null;
|
|
164
|
+
|
|
165
|
+
return (
|
|
166
|
+
<div className="fixed inset-0 z-50 overflow-y-auto">
|
|
167
|
+
<div className="flex items-center justify-center min-h-screen px-4 text-center">
|
|
168
|
+
{/* Backdrop */}
|
|
169
|
+
<div
|
|
170
|
+
className="fixed inset-0 bg-black bg-opacity-50 transition-opacity"
|
|
171
|
+
onClick={onClose}
|
|
172
|
+
/>
|
|
173
|
+
|
|
174
|
+
{/* Modal */}
|
|
175
|
+
<div className="relative bg-white rounded-lg shadow-xl max-w-md w-full p-6 text-left">
|
|
176
|
+
<h3 className="text-lg font-semibold text-gray-900 mb-4">
|
|
177
|
+
{title}
|
|
178
|
+
</h3>
|
|
179
|
+
<p className="text-gray-700 mb-6">
|
|
180
|
+
{message}
|
|
181
|
+
</p>
|
|
182
|
+
<div className="flex justify-end gap-3">
|
|
183
|
+
<button
|
|
184
|
+
onClick={onClose}
|
|
185
|
+
className="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200"
|
|
186
|
+
>
|
|
187
|
+
Cancel
|
|
188
|
+
</button>
|
|
189
|
+
<button
|
|
190
|
+
onClick={onConfirm}
|
|
191
|
+
className="px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700"
|
|
192
|
+
>
|
|
193
|
+
{confirmText}
|
|
194
|
+
</button>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
);
|
|
200
|
+
};
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Related Patterns
|
|
206
|
+
|
|
207
|
+
- Theme Context Implementation
|
|
208
|
+
- CSS Variables for Theming
|
|
209
|
+
- Tailwind Dark Mode Configuration
|
|
210
|
+
- Accessible Color Contrast
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Common Mistakes to Avoid
|
|
215
|
+
|
|
216
|
+
- ❌ **Using CSS variables in modals** - They can resolve unexpectedly in dark mode
|
|
217
|
+
- ❌ **Mixing inline styles and Tailwind** - Hard to debug theme issues
|
|
218
|
+
- ❌ **Testing only in light mode** - Always test both modes
|
|
219
|
+
- ❌ **Forgetting backdrop contrast** - Dark backdrop on dark page = invisible modal
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Resources
|
|
224
|
+
|
|
225
|
+
- [Tailwind CSS Colors](https://tailwindcss.com/docs/customizing-colors)
|
|
226
|
+
- [WCAG Color Contrast Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html)
|
|
227
|
+
- [Accessible Modal Patterns](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/)
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Time to Implement
|
|
232
|
+
|
|
233
|
+
**5-10 minutes** - Simple find and replace of style props with Tailwind classes
|
|
234
|
+
|
|
235
|
+
## Difficulty Level
|
|
236
|
+
|
|
237
|
+
⭐⭐ (2/5) - Easy fix once you understand the pattern, but hard to diagnose initially
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
**Author Notes:**
|
|
242
|
+
|
|
243
|
+
This issue appeared in an admin enrollment management page where the unenroll confirmation modal was unreadable in dark mode. The user could see the modal backdrop but couldn't read the confirmation message or identify the buttons.
|
|
244
|
+
|
|
245
|
+
The key insight: **modals are often displayed outside the normal theme context**, so relying on CSS variables can break. Explicit colors guarantee visibility regardless of theme state.
|
|
246
|
+
|
|
247
|
+
For dark-mode-aware modals that match the theme, use `dark:` variant classes:
|
|
248
|
+
```jsx
|
|
249
|
+
className="bg-white dark:bg-gray-800 text-gray-900 dark:text-white"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
But for critical confirmation dialogs, explicit light colors are often preferred for their "alert" feel.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
**Created:** 2026-01-26
|
|
257
|
+
**Context:** MERN Community LMS - Admin Enrollment Management
|
|
258
|
+
**Files Changed:** `client/src/pages/admin/Enrollments.jsx`
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# ERROR RESILIENCE IMPLEMENTATION - FINAL PRODUCTION ENHANCEMENT
|
|
2
|
+
|
|
3
|
+
**Date:** October 20, 2025
|
|
4
|
+
**Status:** ✅ PRODUCTION READY WITH ERROR RESILIENCE
|
|
5
|
+
**File:** `CREATE_VIDEO_PROGRESS_TABLES.sql` (Final Enterprise-Grade Version)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🛡️ ERROR RESILIENCE PATTERN IMPLEMENTED
|
|
10
|
+
|
|
11
|
+
### Problem This Solves
|
|
12
|
+
|
|
13
|
+
**Scenario:** During peak usage, `lesson_progress` table experiences intermittent write delays or locks
|
|
14
|
+
- ❌ Without error handling: Student's video_progress write FAILS, progress lost
|
|
15
|
+
- ✅ With error handling: Student's video_progress SUCCEEDS, error logged silently
|
|
16
|
+
|
|
17
|
+
**User Impact Without Error Resilience:**
|
|
18
|
+
```
|
|
19
|
+
Video playback paused... ERROR saving progress
|
|
20
|
+
[Progress Lost] 45 seconds of watch time gone
|
|
21
|
+
User loses motivation ❌
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**User Impact With Error Resilience:**
|
|
25
|
+
```
|
|
26
|
+
Video playback continues smoothly ✅
|
|
27
|
+
Progress saved (45 seconds recorded)
|
|
28
|
+
Admin finds and fixes issue later (error logged)
|
|
29
|
+
User experience seamless ✅
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 🏗️ IMPLEMENTATION DETAILS
|
|
35
|
+
|
|
36
|
+
### 1. Created trigger_error_log Table
|
|
37
|
+
|
|
38
|
+
**Purpose:** Capture trigger errors without aborting the write
|
|
39
|
+
|
|
40
|
+
**Schema:**
|
|
41
|
+
```sql
|
|
42
|
+
CREATE TABLE IF NOT EXISTS trigger_error_log (
|
|
43
|
+
id uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
44
|
+
trigger_name text NOT NULL, -- Which trigger failed
|
|
45
|
+
error_message text, -- PostgreSQL error message
|
|
46
|
+
error_context jsonb, -- Contextual data (user_id, lesson_id, etc.)
|
|
47
|
+
logged_at timestamptz DEFAULT NOW(), -- When error occurred
|
|
48
|
+
CONSTRAINT trigger_error_log_pkey PRIMARY KEY (id)
|
|
49
|
+
);
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Index for Performance:**
|
|
53
|
+
```sql
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_trigger_error_log_recent
|
|
55
|
+
ON trigger_error_log(logged_at DESC);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Key Features:**
|
|
59
|
+
- Lightweight (minimal storage footprint)
|
|
60
|
+
- JSONB context for debugging
|
|
61
|
+
- Indexed by timestamp (find recent errors quickly)
|
|
62
|
+
- No query impact (separate table)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 2. Enhanced Trigger Function with Exception Handling
|
|
67
|
+
|
|
68
|
+
**Before (No Error Handling):**
|
|
69
|
+
```plpgsql
|
|
70
|
+
IF v_is_completed AND NOT v_was_completed THEN
|
|
71
|
+
INSERT INTO lesson_progress (...)
|
|
72
|
+
VALUES (...)
|
|
73
|
+
ON CONFLICT ... DO UPDATE SET ...;
|
|
74
|
+
END IF;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**After (With Error Resilience):**
|
|
78
|
+
```plpgsql
|
|
79
|
+
IF v_is_completed AND NOT v_was_completed THEN
|
|
80
|
+
BEGIN
|
|
81
|
+
INSERT INTO lesson_progress (...)
|
|
82
|
+
VALUES (...)
|
|
83
|
+
ON CONFLICT ... DO UPDATE SET ...;
|
|
84
|
+
EXCEPTION WHEN OTHERS THEN
|
|
85
|
+
-- Capture error without aborting
|
|
86
|
+
v_error_msg := SQLERRM;
|
|
87
|
+
v_error_context := jsonb_build_object(
|
|
88
|
+
'user_id', NEW.user_id::text,
|
|
89
|
+
'lesson_id', NEW.lesson_id::text,
|
|
90
|
+
'course_id', NEW.course_id::text,
|
|
91
|
+
'completion_percentage', new_completion_percentage,
|
|
92
|
+
'sqlstate', SQLSTATE
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
-- Log non-fatally
|
|
96
|
+
INSERT INTO trigger_error_log (...)
|
|
97
|
+
VALUES (...);
|
|
98
|
+
END;
|
|
99
|
+
END IF;
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Key Improvements:**
|
|
103
|
+
- ✅ Wraps lesson_progress upsert in BEGIN...EXCEPTION
|
|
104
|
+
- ✅ Captures `SQLERRM` (error message)
|
|
105
|
+
- ✅ Captures `SQLSTATE` (error code)
|
|
106
|
+
- ✅ Stores context (user_id, lesson_id, completion %)
|
|
107
|
+
- ✅ Logs to error table (non-fatal)
|
|
108
|
+
- ✅ Video_progress write continues successfully
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 📊 BEHAVIOR COMPARISON
|
|
113
|
+
|
|
114
|
+
### Without Error Handling
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
UPDATE video_progress SET total_watch_time_ms = 45000
|
|
118
|
+
|
|
119
|
+
Trigger executes:
|
|
120
|
+
✅ Calculate completion percentage: 45%
|
|
121
|
+
✅ Set is_completed = false
|
|
122
|
+
❌ INSERT INTO lesson_progress FAILS (table locked)
|
|
123
|
+
❌ ENTIRE TRIGGER FAILS
|
|
124
|
+
❌ VIDEO_PROGRESS UPDATE ROLLED BACK
|
|
125
|
+
❌ STUDENT PROGRESS LOST
|
|
126
|
+
|
|
127
|
+
Result: Student sees error, progress gone ❌
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### With Error Handling
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
UPDATE video_progress SET total_watch_time_ms = 45000
|
|
134
|
+
|
|
135
|
+
Trigger executes:
|
|
136
|
+
✅ Calculate completion percentage: 45%
|
|
137
|
+
✅ Set is_completed = false
|
|
138
|
+
❌ INSERT INTO lesson_progress FAILS (table locked)
|
|
139
|
+
✅ EXCEPTION CAUGHT
|
|
140
|
+
✅ Error logged to trigger_error_log
|
|
141
|
+
✅ VIDEO_PROGRESS UPDATE SUCCEEDS
|
|
142
|
+
✅ STUDENT PROGRESS SAVED
|
|
143
|
+
|
|
144
|
+
Result: Progress saved, admin notified via error log ✅
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 🔍 DEBUGGING & MONITORING
|
|
150
|
+
|
|
151
|
+
### Query Recent Errors
|
|
152
|
+
|
|
153
|
+
```sql
|
|
154
|
+
-- Check if trigger had recent failures
|
|
155
|
+
SELECT
|
|
156
|
+
trigger_name,
|
|
157
|
+
COUNT(*) as error_count,
|
|
158
|
+
MAX(logged_at) as last_error,
|
|
159
|
+
error_context->>'user_id' as affected_user
|
|
160
|
+
FROM trigger_error_log
|
|
161
|
+
WHERE logged_at > NOW() - INTERVAL '1 hour'
|
|
162
|
+
GROUP BY trigger_name, error_context->>'user_id'
|
|
163
|
+
ORDER BY last_error DESC;
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### View Error Details
|
|
167
|
+
|
|
168
|
+
```sql
|
|
169
|
+
-- See exactly what failed and why
|
|
170
|
+
SELECT
|
|
171
|
+
logged_at,
|
|
172
|
+
error_message,
|
|
173
|
+
error_context->>'user_id' as user_id,
|
|
174
|
+
error_context->>'lesson_id' as lesson_id,
|
|
175
|
+
error_context->>'completion_percentage' as completion_pct,
|
|
176
|
+
error_context->>'sqlstate' as error_code
|
|
177
|
+
FROM trigger_error_log
|
|
178
|
+
WHERE logged_at > NOW() - INTERVAL '24 hours'
|
|
179
|
+
ORDER BY logged_at DESC;
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Monitor Error Frequency
|
|
183
|
+
|
|
184
|
+
```sql
|
|
185
|
+
-- Track error patterns over time
|
|
186
|
+
SELECT
|
|
187
|
+
DATE_TRUNC('minute', logged_at) as minute,
|
|
188
|
+
COUNT(*) as errors_in_minute
|
|
189
|
+
FROM trigger_error_log
|
|
190
|
+
WHERE logged_at > NOW() - INTERVAL '1 day'
|
|
191
|
+
GROUP BY DATE_TRUNC('minute', logged_at)
|
|
192
|
+
ORDER BY minute DESC;
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 🚨 WHEN TO INVESTIGATE
|
|
198
|
+
|
|
199
|
+
### Action Needed If:
|
|
200
|
+
- **Error spike:** > 10 errors in 1 hour
|
|
201
|
+
- **Specific user:** Same user seeing repeated failures
|
|
202
|
+
- **Specific lesson:** High error rate for one lesson
|
|
203
|
+
- **Specific error code:** Pattern of same SQL error
|
|
204
|
+
|
|
205
|
+
### Example Investigation
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
ERROR LOG ALERT:
|
|
209
|
+
- 50 errors in last 5 minutes
|
|
210
|
+
- All from same lesson_id
|
|
211
|
+
- All with SQLSTATE = '40P01' (serialization failure)
|
|
212
|
+
|
|
213
|
+
ACTION:
|
|
214
|
+
1. Check lesson_progress table for locks
|
|
215
|
+
2. Review transactions in that time window
|
|
216
|
+
3. Possibly increase max_connections or tune application retry logic
|
|
217
|
+
4. Monitor for recurrence
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 💾 DATA RETENTION POLICY
|
|
223
|
+
|
|
224
|
+
### Keep Error Logs For:
|
|
225
|
+
- ✅ 7 days: Real-time debugging (find active issues)
|
|
226
|
+
- ✅ 30 days: Pattern analysis (weekly reports)
|
|
227
|
+
- ✅ 90 days: Historical trends (long-term insights)
|
|
228
|
+
|
|
229
|
+
### Archive Older Logs
|
|
230
|
+
|
|
231
|
+
```sql
|
|
232
|
+
-- Monthly cleanup (run via cron or scheduler)
|
|
233
|
+
DELETE FROM trigger_error_log
|
|
234
|
+
WHERE logged_at < NOW() - INTERVAL '90 days';
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 🎯 RESILIENCE GUARANTEES
|
|
240
|
+
|
|
241
|
+
### What This Guarantees
|
|
242
|
+
|
|
243
|
+
| Guarantee | Before | After |
|
|
244
|
+
|-----------|--------|-------|
|
|
245
|
+
| **Video progress saved** | ❌ No (if lesson_progress fails) | ✅ Yes (always) |
|
|
246
|
+
| **Error visibility** | ❌ No (silent failure) | ✅ Yes (logged) |
|
|
247
|
+
| **User experience** | ❌ Error shown to user | ✅ Seamless, silent handling |
|
|
248
|
+
| **Data recovery** | ❌ Progress lost | ✅ Can investigate & fix |
|
|
249
|
+
| **Admin debugging** | ❌ No info | ✅ Full error context |
|
|
250
|
+
|
|
251
|
+
### What This Does NOT Guarantee
|
|
252
|
+
|
|
253
|
+
- ❌ Does NOT guarantee lesson_progress is always updated
|
|
254
|
+
- ❌ Does NOT hide the underlying issue (must be fixed)
|
|
255
|
+
- ❌ Does NOT prevent the error (must monitor and investigate)
|
|
256
|
+
- ⚠️ Requires active monitoring to detect issues
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 🔧 DEPLOYMENT NOTES
|
|
261
|
+
|
|
262
|
+
### Safe to Deploy
|
|
263
|
+
- ✅ Fully backward compatible
|
|
264
|
+
- ✅ No migration needed
|
|
265
|
+
- ✅ Error log table is optional (self-contained)
|
|
266
|
+
- ✅ Can be deployed any time
|
|
267
|
+
|
|
268
|
+
### Performance Impact
|
|
269
|
+
- ✅ Negligible when no errors (one extra IF condition)
|
|
270
|
+
- ✅ Minimal when errors occur (log insert is fast)
|
|
271
|
+
- ✅ No impact on normal video progress tracking
|
|
272
|
+
|
|
273
|
+
### Assumptions
|
|
274
|
+
- ✅ Assumes `lesson_progress` table exists
|
|
275
|
+
- ✅ Assumes `trigger_error_log` can be created
|
|
276
|
+
- ✅ Assumes sufficient privileges to create table
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 📈 SCALABILITY NOTES
|
|
281
|
+
|
|
282
|
+
### When lesson_progress Becomes a Bottleneck
|
|
283
|
+
|
|
284
|
+
**Current Approach (Synchronous):**
|
|
285
|
+
```
|
|
286
|
+
Video progress write → Trigger → lesson_progress update (sync) → Done
|
|
287
|
+
Performance: ~1-5ms
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Future Approach (Asynchronous):**
|
|
291
|
+
```
|
|
292
|
+
Video progress write → Trigger → events table (fast) → Done
|
|
293
|
+
Background job → lesson_progress updates (async)
|
|
294
|
+
Performance: ~1-2ms (write), +100ms (async processing)
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**When to Switch:**
|
|
298
|
+
- ✅ Current approach fine for < 100 concurrent users
|
|
299
|
+
- ⚠️ Monitor if > 500 concurrent users
|
|
300
|
+
- ❌ Switch to async if > 1000 concurrent users OR avg write time > 10ms
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## ✅ FINAL CHECKLIST: PRODUCTION READY
|
|
305
|
+
|
|
306
|
+
- ✅ Error tracking table created
|
|
307
|
+
- ✅ Error index for performance
|
|
308
|
+
- ✅ Trigger wrapped in exception handler
|
|
309
|
+
- ✅ Error context captured (user_id, lesson_id, completion %)
|
|
310
|
+
- ✅ SQLERRM and SQLSTATE captured
|
|
311
|
+
- ✅ Video progress write never aborted
|
|
312
|
+
- ✅ Deterministic timestamps (v_now)
|
|
313
|
+
- ✅ NULL-safe completion logic
|
|
314
|
+
- ✅ ON CONFLICT with indexed lookup
|
|
315
|
+
- ✅ RLS policies idempotent
|
|
316
|
+
- ✅ Comprehensive comments
|
|
317
|
+
- ✅ Debugging queries documented
|
|
318
|
+
- ✅ Data retention policy documented
|
|
319
|
+
- ✅ Scalability guidance included
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## 🚀 DEPLOYMENT CHECKLIST
|
|
324
|
+
|
|
325
|
+
Before executing in Supabase:
|
|
326
|
+
|
|
327
|
+
- [ ] Review the complete CREATE_VIDEO_PROGRESS_TABLES.sql script
|
|
328
|
+
- [ ] Verify all table names match your schema (video_progress, lesson_progress)
|
|
329
|
+
- [ ] Confirm you have privileges to create tables and indexes
|
|
330
|
+
- [ ] Backup existing data (if any)
|
|
331
|
+
- [ ] Plan monitoring for trigger_error_log
|
|
332
|
+
- [ ] Communicate to team about new error tracking
|
|
333
|
+
|
|
334
|
+
**Execution Steps:**
|
|
335
|
+
1. Copy entire `CREATE_VIDEO_PROGRESS_TABLES.sql`
|
|
336
|
+
2. Open Supabase SQL Editor
|
|
337
|
+
3. Paste and click Run
|
|
338
|
+
4. Verify: "Query executed successfully"
|
|
339
|
+
5. Run verification queries from VERIFY_VIDEO_PROGRESS_DATABASE.sql
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## 📝 MONITORING AFTER DEPLOYMENT
|
|
344
|
+
|
|
345
|
+
### Week 1: Baseline Monitoring
|
|
346
|
+
```sql
|
|
347
|
+
-- Daily check: Are errors occurring?
|
|
348
|
+
SELECT COUNT(*) as total_errors FROM trigger_error_log;
|
|
349
|
+
SELECT COUNT(*) as errors_today
|
|
350
|
+
FROM trigger_error_log
|
|
351
|
+
WHERE logged_at > NOW() - INTERVAL '1 day';
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Week 2-4: Pattern Analysis
|
|
355
|
+
```sql
|
|
356
|
+
-- Identify any recurring issues
|
|
357
|
+
SELECT error_message, COUNT(*) as occurrences
|
|
358
|
+
FROM trigger_error_log
|
|
359
|
+
WHERE logged_at > NOW() - INTERVAL '7 days'
|
|
360
|
+
GROUP BY error_message
|
|
361
|
+
ORDER BY occurrences DESC;
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Ongoing: Production Monitoring
|
|
365
|
+
- Monitor error rate (alert if > 5/min)
|
|
366
|
+
- Track affected users
|
|
367
|
+
- Monitor trigger execution time
|
|
368
|
+
- Plan scale upgrades if needed
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
**Status:** ✅ ENTERPRISE PRODUCTION READY
|
|
373
|
+
**Quality:** Maximum resilience while maintaining performance
|
|
374
|
+
**Ready to Deploy:** YES 🚀
|
|
375
|
+
|