@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,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: realtimestt-openwakeword-cuda-windows
|
|
3
|
+
category: integrations
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
contributed: 2026-02-22
|
|
6
|
+
contributor: voice-bridge-v3
|
|
7
|
+
last_updated: 2026-02-22
|
|
8
|
+
tags: [realtimestt, openwakeword, whisper, cuda, wake-word, speech-to-text, windows, pyaudio, torch-multiprocessing, pyqt6]
|
|
9
|
+
difficulty: hard
|
|
10
|
+
usage_count: 0
|
|
11
|
+
success_rate: 100
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# RealtimeSTT + OpenWakeWord + CUDA on Windows
|
|
15
|
+
|
|
16
|
+
## Problem
|
|
17
|
+
|
|
18
|
+
Integrating OpenWakeWord wake word detection via RealtimeSTT's native `wakeword_backend` parameter on Windows with CUDA GPU hits 7 non-obvious failures that each appear as unrelated errors. The combination of RealtimeSTT's `torch.multiprocessing` child processes, OpenWakeWord's ONNX model loading, CUDA's float16 compute, MKL memory allocation, and PyQt6's global state creates a minefield of ordering and configuration gotchas.
|
|
19
|
+
|
|
20
|
+
**Symptoms you'll see (in order of appearance):**
|
|
21
|
+
1. `Wakeword engine oww unknown/unsupported or wake_words not specified`
|
|
22
|
+
2. `mkl_malloc: failed to allocate memory`
|
|
23
|
+
3. `ValueError: Requested float16 compute type, but the target device or backend do not support efficient float16 computation`
|
|
24
|
+
4. `BrokenPipeError` in torch.multiprocessing child process
|
|
25
|
+
5. `MemoryError` in openwakeword `_streaming_melspectrogram`
|
|
26
|
+
6. Wake word fires 5+ times per single utterance (no debounce)
|
|
27
|
+
7. Transcription returns garbage ("Bit.") after fragmented audio
|
|
28
|
+
|
|
29
|
+
## Solution Pattern
|
|
30
|
+
|
|
31
|
+
Each error has a specific fix. Apply ALL of them — they're independent failure modes.
|
|
32
|
+
|
|
33
|
+
### 1. Backend Name + wake_words Parameter (BOTH required)
|
|
34
|
+
|
|
35
|
+
RealtimeSTT checks: `elif wake_words and self.wakeword_backend in {'oww', 'openwakeword', 'openwakewords'}`
|
|
36
|
+
|
|
37
|
+
Both conditions must be true. If `wake_words` is empty/missing, the entire wake word system silently skips.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
# WRONG — wake_words defaults to empty, silently disables wake word
|
|
41
|
+
AudioToTextRecorder(wakeword_backend="openwakeword")
|
|
42
|
+
|
|
43
|
+
# RIGHT — both backend AND wake_words must be set
|
|
44
|
+
AudioToTextRecorder(
|
|
45
|
+
wakeword_backend="openwakeword",
|
|
46
|
+
wake_words="hey_jarvis", # REQUIRED — comma-separated built-in model names
|
|
47
|
+
wake_words_sensitivity=0.35,
|
|
48
|
+
)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Built-in models: `alexa`, `hey_jarvis`, `hey_mycroft`, `hey_rhasspy`, `timer`, `weather`.
|
|
52
|
+
|
|
53
|
+
### 2. MKL Thread Memory (High-Core CPUs)
|
|
54
|
+
|
|
55
|
+
On CPUs with 16+ threads (i9-12900H has 20), MKL allocates buffers for ALL threads simultaneously while loading OpenWakeWord + Whisper models. Must be set BEFORE any imports.
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
# MUST be at the very top of your entry point, before ANY imports
|
|
59
|
+
import os
|
|
60
|
+
os.environ.setdefault("MKL_NUM_THREADS", "4")
|
|
61
|
+
os.environ.setdefault("OMP_NUM_THREADS", "4")
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3. CUDA float16 in torch.multiprocessing Context
|
|
65
|
+
|
|
66
|
+
CTranslate2 CUDA float16 works perfectly in direct tests but fails inside RealtimeSTT's `mp.Process` child processes on Windows. The child processes re-import everything and the CUDA state gets confused.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
# WRONG — fails inside RealtimeSTT's multiprocessing context
|
|
70
|
+
AudioToTextRecorder(compute_type="float16")
|
|
71
|
+
|
|
72
|
+
# RIGHT — let CTranslate2 choose the best available type
|
|
73
|
+
AudioToTextRecorder(compute_type="auto")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 4. PyQt6 Import Order (Windows only)
|
|
77
|
+
|
|
78
|
+
PyQt6 creates global state that breaks `torch.multiprocessing` child processes when `enable_realtime_transcription=True`. Initialize STT FGTAT, then import PyQt6.
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
# WRONG — PyQt6 imported before STT causes BrokenPipeError
|
|
82
|
+
from PyQt6.QtWidgets import QApplication
|
|
83
|
+
from RealtimeSTT import AudioToTextRecorder
|
|
84
|
+
recorder = AudioToTextRecorder(enable_realtime_transcription=True) # CRASH
|
|
85
|
+
|
|
86
|
+
# RIGHT — initialize STT before any PyQt6 imports
|
|
87
|
+
from RealtimeSTT import AudioToTextRecorder
|
|
88
|
+
recorder = AudioToTextRecorder(enable_realtime_transcription=True)
|
|
89
|
+
recorder_ready = True # models loaded, child processes spawned
|
|
90
|
+
|
|
91
|
+
# NOW safe to import PyQt6
|
|
92
|
+
from PyQt6.QtWidgets import QApplication
|
|
93
|
+
app = QApplication(sys.argv)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 5. First-Launch Audio Queue Overflow
|
|
97
|
+
|
|
98
|
+
First run downloads OpenWakeWord models from HuggingFace (~30s). Audio queues up during download. When wake word processing starts, the backlog causes `MemoryError` in `_streaming_melspectrogram`.
|
|
99
|
+
|
|
100
|
+
**Fix:** Kill and restart. Models are cached after first download, startup drops to ~8s with no backlog. This is a one-time issue.
|
|
101
|
+
|
|
102
|
+
**Better fix (if building a product):** Flush the audio queue after recorder initialization:
|
|
103
|
+
```python
|
|
104
|
+
recorder = AudioToTextRecorder(**params)
|
|
105
|
+
# Flush any audio that queued during model download
|
|
106
|
+
while not recorder.audio_queue.empty():
|
|
107
|
+
try:
|
|
108
|
+
recorder.audio_queue.get_nowait()
|
|
109
|
+
except:
|
|
110
|
+
break
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 6. Wake Word Callback Debounce
|
|
114
|
+
|
|
115
|
+
RealtimeSTT fires `on_wakeword_detected` on every overlapping audio chunk that scores above threshold. A single "Hey Jarvis" produces 5+ callbacks in 127ms, fragmenting the audio buffer.
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
import time
|
|
119
|
+
|
|
120
|
+
class STTEngine:
|
|
121
|
+
def __init__(self):
|
|
122
|
+
self._wakeword_debounce_sec = 2.0
|
|
123
|
+
self._last_wakeword_time = 0.0
|
|
124
|
+
|
|
125
|
+
def _handle_wakeword_detected(self):
|
|
126
|
+
now = time.time()
|
|
127
|
+
if now - self._last_wakeword_time < self._wakeword_debounce_sec:
|
|
128
|
+
return # duplicate within debounce window
|
|
129
|
+
self._last_wakeword_time = now
|
|
130
|
+
|
|
131
|
+
# Process the actual detection
|
|
132
|
+
self.on_wakeword_detected()
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 7. Config File Deep-Merge Staleness
|
|
136
|
+
|
|
137
|
+
If your app creates a config file on first run with wrong defaults, `_deep_merge` preserves old values on subsequent runs. After fixing defaults in code, **delete the on-disk config** to regenerate.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# If wake word doesn't work after code fix, check the on-disk config
|
|
141
|
+
del %USERPROFILE%\.claude\voice-bridge-v3\config.yaml
|
|
142
|
+
# Restart app — regenerates with correct defaults
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Implementation Steps
|
|
146
|
+
|
|
147
|
+
1. Set `MKL_NUM_THREADS=4` and `OMP_NUM_THREADS=4` at the very top of entry point
|
|
148
|
+
2. Initialize `AudioToTextRecorder` with `compute_type="auto"`, `wakeword_backend="openwakeword"`, `wake_words="hey_jarvis"`
|
|
149
|
+
3. THEN import PyQt6/PySide6 (after recorder is initialized)
|
|
150
|
+
4. Add 2-second debounce to `on_wakeword_detected` callback
|
|
151
|
+
5. On first launch, expect model downloads — kill and restart if MemoryError occurs
|
|
152
|
+
6. Delete stale config files after changing defaults
|
|
153
|
+
|
|
154
|
+
## When to Use
|
|
155
|
+
|
|
156
|
+
- Building a voice-to-text application with wake word activation on Windows
|
|
157
|
+
- Using RealtimeSTT with OpenWakeWord backend and CUDA GPU
|
|
158
|
+
- Combining speech-to-text with a Qt-based GUI on Windows
|
|
159
|
+
- Any project using `torch.multiprocessing` alongside CUDA and audio processing
|
|
160
|
+
|
|
161
|
+
## When NOT to Use
|
|
162
|
+
|
|
163
|
+
- Linux/macOS — torch.multiprocessing uses fork() not spawn(), different behavior
|
|
164
|
+
- CPU-only inference — float16 issue doesn't apply
|
|
165
|
+
- Porcupine wake word backend — different engine, different issues
|
|
166
|
+
- No GUI framework — PyQt6 import order issue doesn't apply
|
|
167
|
+
|
|
168
|
+
## Common Mistakes
|
|
169
|
+
|
|
170
|
+
- Setting `wakeword_backend` without `wake_words` — silently disables wake word
|
|
171
|
+
- Using `compute_type="float16"` — works in tests, fails in production
|
|
172
|
+
- Importing PyQt6 at module top level — breaks multiprocessing child processes
|
|
173
|
+
- Not debouncing wake word callbacks — causes fragmented audio transcription
|
|
174
|
+
- Forgetting to delete stale config after fixing code defaults
|
|
175
|
+
- Setting MKL_NUM_THREADS after importing numpy/scipy — too late, already allocated
|
|
176
|
+
|
|
177
|
+
## Diagnostic Script
|
|
178
|
+
|
|
179
|
+
Use this standalone test to verify wake word detection works independently of RealtimeSTT:
|
|
180
|
+
|
|
181
|
+
```python
|
|
182
|
+
"""test_wakeword.py — Tests OpenWakeWord directly with microphone"""
|
|
183
|
+
import numpy as np
|
|
184
|
+
import pyaudio
|
|
185
|
+
from openwakeword.model import Model
|
|
186
|
+
import openwakeword
|
|
187
|
+
|
|
188
|
+
SAMPLE_RATE = 16000
|
|
189
|
+
CHUNK_SIZE = 1280 # 80ms at 16kHz
|
|
190
|
+
THRESHOLD = 0.35
|
|
191
|
+
|
|
192
|
+
openwakeword.utils.download_models()
|
|
193
|
+
model = Model(inference_framework="onnx")
|
|
194
|
+
print(f"Models: {list(model.models.keys())}")
|
|
195
|
+
|
|
196
|
+
pa = pyaudio.PyAudio()
|
|
197
|
+
stream = pa.open(format=pyaudio.paInt16, channels=1,
|
|
198
|
+
rate=SAMPLE_RATE, input=True,
|
|
199
|
+
frames_per_buffer=CHUNK_SIZE)
|
|
200
|
+
try:
|
|
201
|
+
while True:
|
|
202
|
+
audio = stream.read(CHUNK_SIZE, exception_on_overflow=False)
|
|
203
|
+
pcm = np.frombuffer(audio, dtype=np.int16)
|
|
204
|
+
model.predict(pcm)
|
|
205
|
+
for name in model.prediction_buffer:
|
|
206
|
+
score = list(model.prediction_buffer[name])[-1]
|
|
207
|
+
if score >= THRESHOLD:
|
|
208
|
+
print(f"DETECTED: {name} (score={score:.4f})")
|
|
209
|
+
elif score > 0.05:
|
|
210
|
+
print(f" heard: {name} (score={score:.4f})")
|
|
211
|
+
except KeyboardInterrupt:
|
|
212
|
+
pass
|
|
213
|
+
finally:
|
|
214
|
+
stream.close()
|
|
215
|
+
pa.terminate()
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Related Skills
|
|
219
|
+
|
|
220
|
+
- [stripe-payment-integration-complete](../integrations/stripe-payment-integration-complete.md) - Third-party API integration patterns
|
|
221
|
+
- [cloudflare-turnstile-debugging](../integrations/cloudflare-turnstile-debugging.md) - Debugging third-party library integration
|
|
222
|
+
|
|
223
|
+
## References
|
|
224
|
+
|
|
225
|
+
- RealtimeSTT: https://github.com/KoljaB/RealtimeSTT
|
|
226
|
+
- OpenWakeWord: https://github.com/dscripka/openWakeWord
|
|
227
|
+
- OpenWakeWord custom model training: https://openwakeword.com/
|
|
228
|
+
- CTranslate2 CUDA: https://github.com/OpenNMT/CTranslate2
|
|
229
|
+
- Contributed from: voice-bridge-v3 (C:\path\to\repos\voice-bridge-v3)
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
# Skill: RSS Podcast Integration (Castos/Generic)
|
|
2
|
+
|
|
3
|
+
**Category:** Integrations
|
|
4
|
+
**Complexity:** Medium
|
|
5
|
+
**Technologies:** Node.js, Express, React, rss-parser, react-h5-audio-player
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Integrate RSS podcast feeds into a web application with support for:
|
|
12
|
+
- Public and private (authenticated) feeds
|
|
13
|
+
- Membership-based access control
|
|
14
|
+
- Episode search and pagination
|
|
15
|
+
- Audio playback with speed control
|
|
16
|
+
- In-memory or Redis caching
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## When to Use This Skill
|
|
21
|
+
|
|
22
|
+
- Adding podcast functionality to an LMS or content platform
|
|
23
|
+
- Integrating Castos, Libsyn, Buzzsprout, or any RSS-based podcast service
|
|
24
|
+
- Implementing tiered access (free vs premium content)
|
|
25
|
+
- Building a podcast aggregator
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Implementation Pattern
|
|
30
|
+
|
|
31
|
+
### 1. Backend Service (Node.js/Express)
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
// server/services/podcastService.js
|
|
35
|
+
import Parser from 'rss-parser';
|
|
36
|
+
|
|
37
|
+
const parser = new Parser({
|
|
38
|
+
customFields: {
|
|
39
|
+
item: [
|
|
40
|
+
['itunes:duration', 'duration'],
|
|
41
|
+
['itunes:image', 'image'],
|
|
42
|
+
['enclosure', 'enclosure']
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Feed configuration
|
|
48
|
+
const PODCAST_FEEDS = {
|
|
49
|
+
public: {
|
|
50
|
+
'feed-id': {
|
|
51
|
+
id: 'feed-id',
|
|
52
|
+
name: 'Display Name',
|
|
53
|
+
url: 'https://feeds.castos.com/xxxxx',
|
|
54
|
+
accessLevel: 'member'
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
private: {
|
|
58
|
+
'private-feed': {
|
|
59
|
+
id: 'private-feed',
|
|
60
|
+
name: 'Premium Content',
|
|
61
|
+
url: 'https://feeds.castos.com/xxxxx?uuid=AUTH_TOKEN',
|
|
62
|
+
accessLevel: 'partner'
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// Simple cache
|
|
68
|
+
const cache = new Map();
|
|
69
|
+
const CACHE_TTL = {
|
|
70
|
+
public: 6 * 60 * 60 * 1000, // 6 hours
|
|
71
|
+
private: 2 * 60 * 60 * 1000 // 2 hours
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
class PodcastService {
|
|
75
|
+
static async fetchFeed(feedId, user, options = {}) {
|
|
76
|
+
const feed = this.getFeedConfig(feedId);
|
|
77
|
+
if (!feed) throw new Error('Feed not found');
|
|
78
|
+
|
|
79
|
+
// Check access
|
|
80
|
+
if (feed.category === 'private' && !this.hasAccess(user)) {
|
|
81
|
+
throw new Error('Access denied');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Check cache
|
|
85
|
+
const cached = cache.get(feedId);
|
|
86
|
+
if (cached && Date.now() - cached.timestamp < CACHE_TTL[feed.category]) {
|
|
87
|
+
return cached.data;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Fetch fresh
|
|
91
|
+
const data = await parser.parseURL(feed.url);
|
|
92
|
+
cache.set(feedId, { data, timestamp: Date.now() });
|
|
93
|
+
return data;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static hasAccess(user) {
|
|
97
|
+
if (!user) return false;
|
|
98
|
+
if (user.role === 'admin') return true;
|
|
99
|
+
const partnerTiers = ['partner', 'premium', 'lifetime'];
|
|
100
|
+
return partnerTiers.includes(user.membershipTier?.toLowerCase());
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2. API Routes
|
|
106
|
+
|
|
107
|
+
```javascript
|
|
108
|
+
// server/routes/podcastRoutes.js
|
|
109
|
+
import express from 'express';
|
|
110
|
+
import { protect } from '../middleware/auth.js';
|
|
111
|
+
import PodcastService from '../services/podcastService.js';
|
|
112
|
+
|
|
113
|
+
const router = express.Router();
|
|
114
|
+
|
|
115
|
+
// List available feeds
|
|
116
|
+
router.get('/', protect, async (req, res) => {
|
|
117
|
+
const feeds = PodcastService.getAvailableFeeds(req.user);
|
|
118
|
+
res.json({ success: true, data: feeds });
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Get feed with episodes
|
|
122
|
+
router.get('/:feedId', protect, async (req, res) => {
|
|
123
|
+
const { limit = 20, offset = 0 } = req.query;
|
|
124
|
+
const podcast = await PodcastService.fetchFeed(
|
|
125
|
+
req.params.feedId,
|
|
126
|
+
req.user,
|
|
127
|
+
{ limit: +limit, offset: +offset }
|
|
128
|
+
);
|
|
129
|
+
res.json({ success: true, data: podcast });
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Search episodes
|
|
133
|
+
router.get('/search/episodes', protect, async (req, res) => {
|
|
134
|
+
const results = await PodcastService.searchEpisodes(
|
|
135
|
+
req.query.q,
|
|
136
|
+
req.user
|
|
137
|
+
);
|
|
138
|
+
res.json({ success: true, data: results });
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
export default router;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 3. Frontend Audio Player
|
|
145
|
+
|
|
146
|
+
```jsx
|
|
147
|
+
// client/src/components/PodcastPlayer.jsx
|
|
148
|
+
import AudioPlayer from 'react-h5-audio-player';
|
|
149
|
+
import 'react-h5-audio-player/lib/styles.css';
|
|
150
|
+
|
|
151
|
+
const PodcastPlayer = ({ episode, onPlay, onEnded }) => {
|
|
152
|
+
const [playbackRate, setPlaybackRate] = useState(1);
|
|
153
|
+
const playerRef = useRef(null);
|
|
154
|
+
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
if (playerRef.current?.audio?.current) {
|
|
157
|
+
playerRef.current.audio.current.playbackRate = playbackRate;
|
|
158
|
+
}
|
|
159
|
+
}, [playbackRate]);
|
|
160
|
+
|
|
161
|
+
return (
|
|
162
|
+
<div className="podcast-player">
|
|
163
|
+
<div className="episode-info">
|
|
164
|
+
<img src={episode.image} alt="" />
|
|
165
|
+
<h3>{episode.title}</h3>
|
|
166
|
+
<span>{formatDuration(episode.duration)}</span>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<AudioPlayer
|
|
170
|
+
ref={playerRef}
|
|
171
|
+
src={episode.audioUrl}
|
|
172
|
+
showJumpControls={true}
|
|
173
|
+
progressJumpSteps={{ backward: 15000, forward: 30000 }}
|
|
174
|
+
customAdditionalControls={[
|
|
175
|
+
<select
|
|
176
|
+
value={playbackRate}
|
|
177
|
+
onChange={(e) => setPlaybackRate(+e.target.value)}
|
|
178
|
+
>
|
|
179
|
+
{[0.5, 0.75, 1, 1.25, 1.5, 2].map(s => (
|
|
180
|
+
<option key={s} value={s}>{s}x</option>
|
|
181
|
+
))}
|
|
182
|
+
</select>
|
|
183
|
+
]}
|
|
184
|
+
onPlay={() => onPlay?.(episode)}
|
|
185
|
+
onEnded={() => onEnded?.(episode)}
|
|
186
|
+
/>
|
|
187
|
+
</div>
|
|
188
|
+
);
|
|
189
|
+
};
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### 4. Frontend API Service
|
|
193
|
+
|
|
194
|
+
```javascript
|
|
195
|
+
// client/src/services/podcastService.js
|
|
196
|
+
import api from './api';
|
|
197
|
+
|
|
198
|
+
export const getAvailableFeeds = () => api.get('/podcasts');
|
|
199
|
+
export const getFeed = (id, { limit, offset }) =>
|
|
200
|
+
api.get(`/podcasts/${id}`, { params: { limit, offset } });
|
|
201
|
+
export const searchEpisodes = (q) =>
|
|
202
|
+
api.get('/podcasts/search/episodes', { params: { q } });
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## NPM Dependencies
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Backend
|
|
211
|
+
npm install rss-parser
|
|
212
|
+
|
|
213
|
+
# Frontend
|
|
214
|
+
npm install react-h5-audio-player
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Key Patterns
|
|
220
|
+
|
|
221
|
+
### Private Feed Authentication (Castos)
|
|
222
|
+
|
|
223
|
+
Castos private feeds use UUID tokens in the URL:
|
|
224
|
+
```
|
|
225
|
+
https://feeds.castos.com/xxxxx?uuid=YOUR_PRIVATE_UUID
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
The UUID acts as authentication - store it in your backend config, never expose to client.
|
|
229
|
+
|
|
230
|
+
### Caching Strategy
|
|
231
|
+
|
|
232
|
+
| Feed Type | Cache TTL | Reason |
|
|
233
|
+
|-----------|-----------|--------|
|
|
234
|
+
| Public | 6 hours | Content rarely changes |
|
|
235
|
+
| Private | 2 hours | May have more frequent updates |
|
|
236
|
+
|
|
237
|
+
For production, consider Redis:
|
|
238
|
+
```javascript
|
|
239
|
+
import Redis from 'ioredis';
|
|
240
|
+
const redis = new Redis(process.env.REDIS_URL);
|
|
241
|
+
|
|
242
|
+
// Cache with TTL
|
|
243
|
+
await redis.setex(`podcast:${feedId}`, CACHE_TTL, JSON.stringify(data));
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Membership-Based Access
|
|
247
|
+
|
|
248
|
+
```javascript
|
|
249
|
+
// Check user's membership level from database
|
|
250
|
+
const membership = await sql`
|
|
251
|
+
SELECT ml.slug, ml.access_rank
|
|
252
|
+
FROM user_memberships um
|
|
253
|
+
JOIN membership_levels ml ON um.membership_level_id = ml.id
|
|
254
|
+
WHERE um.user_id = ${userId}
|
|
255
|
+
AND um.status = 'active'
|
|
256
|
+
`;
|
|
257
|
+
|
|
258
|
+
// Compare access ranks
|
|
259
|
+
const userRank = membership?.access_rank || 0;
|
|
260
|
+
const requiredRank = feedConfig.accessLevel === 'partner' ? 2 : 1;
|
|
261
|
+
return userRank >= requiredRank;
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Common Issues & Solutions
|
|
267
|
+
|
|
268
|
+
| Issue | Solution |
|
|
269
|
+
|-------|----------|
|
|
270
|
+
| CORS errors fetching RSS | Fetch from backend, not client |
|
|
271
|
+
| Duration parsing | Handle both "HH:MM:SS" and seconds formats |
|
|
272
|
+
| Missing episode images | Fallback to podcast image or default |
|
|
273
|
+
| Audio not playing | Check audio URL, may need proxy for HTTPS |
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Testing Checklist
|
|
278
|
+
|
|
279
|
+
- [ ] Public feeds load for all authenticated users
|
|
280
|
+
- [ ] Private feeds blocked for non-partners
|
|
281
|
+
- [ ] Admin can access all feeds
|
|
282
|
+
- [ ] Search returns results from accessible feeds only
|
|
283
|
+
- [ ] Audio plays correctly
|
|
284
|
+
- [ ] Playback speed control works
|
|
285
|
+
- [ ] Cache invalidates after TTL
|
|
286
|
+
- [ ] Pagination works correctly
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Related Skills
|
|
291
|
+
|
|
292
|
+
- `video-media/audio-player-integration.md`
|
|
293
|
+
- `api-patterns/membership-access-control.md`
|
|
294
|
+
- `deployment-security/caching-strategies.md`
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
**Last Updated:** January 5, 2026
|
|
299
|
+
**Author:** Claude Opus 4.5
|
|
300
|
+
**Project Reference:** my-other-project
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# WordPress LMS Course Data Recovery - Extraction & Migration
|
|
2
|
+
|
|
3
|
+
## The Problem
|
|
4
|
+
|
|
5
|
+
You have WordPress LMS course data exported as JSON files, and need to extract course structure, find embedded media URLs, and recreate the course in a new LMS system.
|
|
6
|
+
|
|
7
|
+
### Why It Was Hard
|
|
8
|
+
|
|
9
|
+
- LMS exports are spread across multiple JSON files (courses, lessons, topics)
|
|
10
|
+
- Media URLs are embedded in HTML content fields
|
|
11
|
+
- Course iterations create duplicate entries with slug suffixes like `-2-2-2-3`
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## The Solution
|
|
16
|
+
|
|
17
|
+
### LMS Export Structure
|
|
18
|
+
|
|
19
|
+
| File | Post Type | Contains |
|
|
20
|
+
|------|-----------|----------|
|
|
21
|
+
| `wordpress-courses.json` | `sfwd-courses` | Course metadata |
|
|
22
|
+
| `wordpress-lessons.json` | `sfwd-lessons` | Lesson titles, ordering |
|
|
23
|
+
| `wordpress-topics.json` | `sfwd-topic` | Sub-lessons with actual content/media |
|
|
24
|
+
|
|
25
|
+
### Extract Media URLs
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Find all Castos audio URLs
|
|
29
|
+
grep -oE "https://[^\"']*castos[^\"']*\.mp3" wordpress-topics.json | sort -u
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Generate Embed HTML
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<audio controls style="width:100%">
|
|
36
|
+
<source src="https://episodes.castos.com/.../file.mp3" type="audio/mpeg">
|
|
37
|
+
</audio>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Key Insight
|
|
43
|
+
|
|
44
|
+
LMS spreads content across three post types. Lessons often just have titles - the actual content with media is in **Topics**. Always search all three JSON files.
|
|
45
|
+
|
|
46
|
+
## Difficulty Level
|
|
47
|
+
|
|
48
|
+
⭐⭐⭐ (3/5)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
**Author Notes:**
|
|
53
|
+
"Activation completed during a live session" means no audio exists - it was conducted live.
|