@thierrynakoa/fire-flow 12.2.1 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/CREDITS.md +25 -0
  2. package/DOMINION-FLOW-OVERVIEW.md +182 -38
  3. package/README.md +399 -455
  4. package/TROUBLESHOOTING.md +264 -264
  5. package/agents/fire-debugger.md +54 -0
  6. package/agents/fire-executor.md +1610 -1033
  7. package/agents/fire-fact-checker.md +1 -1
  8. package/agents/fire-planner.md +85 -17
  9. package/agents/fire-project-researcher.md +1 -1
  10. package/agents/fire-researcher.md +4 -22
  11. package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
  12. package/agents/fire-reviewer.md +552 -499
  13. package/agents/fire-verifier.md +114 -19
  14. package/bin/cli.js +18 -101
  15. package/commands/fire-0-orient.md +2 -2
  16. package/commands/fire-1a-new.md +50 -15
  17. package/commands/fire-1c-setup.md +33 -5
  18. package/commands/fire-1d-discuss.md +87 -1
  19. package/commands/fire-2-plan.md +556 -527
  20. package/commands/fire-3-execute.md +2046 -1356
  21. package/commands/fire-4-verify.md +975 -906
  22. package/commands/fire-5-handoff.md +46 -5
  23. package/commands/fire-6-resume.md +2 -31
  24. package/commands/fire-add-new-skill.md +138 -19
  25. package/commands/fire-autonomous.md +14 -2
  26. package/commands/fire-complete-milestone.md +1 -1
  27. package/commands/fire-cost.md +179 -183
  28. package/commands/fire-debug.md +1 -6
  29. package/commands/fire-loop-resume.md +2 -2
  30. package/commands/fire-loop-stop.md +1 -1
  31. package/commands/fire-loop.md +2 -15
  32. package/commands/fire-map-codebase.md +1 -1
  33. package/commands/fire-migrate-database.md +548 -0
  34. package/commands/fire-new-milestone.md +1 -1
  35. package/commands/fire-reflect.md +1 -2
  36. package/commands/fire-research.md +142 -21
  37. package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
  38. package/commands/fire-scaffold.md +297 -0
  39. package/commands/fire-search.md +1 -2
  40. package/commands/fire-security-scan.md +483 -484
  41. package/commands/fire-setup.md +359 -0
  42. package/commands/fire-skill.md +770 -0
  43. package/commands/fire-skills-diff.md +506 -506
  44. package/commands/fire-skills-history.md +388 -388
  45. package/commands/fire-skills-rollback.md +7 -7
  46. package/commands/fire-skills-sync.md +470 -470
  47. package/commands/fire-test.md +5 -5
  48. package/commands/fire-todos.md +1 -1
  49. package/commands/fire-update.md +5 -5
  50. package/commands/fire-validate-skills.md +282 -0
  51. package/commands/fire-vuln-scan.md +492 -493
  52. package/hooks/run-hook.sh +8 -8
  53. package/hooks/run-session-end.sh +7 -7
  54. package/hooks/session-end.sh +90 -90
  55. package/hooks/session-start.sh +1 -1
  56. package/package.json +4 -24
  57. package/plugin.json +7 -7
  58. package/references/autonomy-levels.md +235 -0
  59. package/references/behavioral-directives.md +95 -3
  60. package/references/blocker-tracking.md +1 -1
  61. package/references/circuit-breaker.md +93 -2
  62. package/references/context-engineering.md +227 -9
  63. package/references/honesty-protocols.md +70 -1
  64. package/references/issue-to-pr-pipeline.md +149 -150
  65. package/references/metrics-and-trends.md +1 -2
  66. package/references/research-improvements.md +4 -108
  67. package/references/sdlc-mapping.md +73 -0
  68. package/references/state-machine.md +151 -0
  69. package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
  70. package/skills-library/SKILLS-INDEX.md +57 -558
  71. package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
  72. package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
  73. package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
  74. package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
  75. package/skills-library/_general/automation/settings-gui-generator.md +172 -0
  76. package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
  77. package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
  78. package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
  79. package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
  80. package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
  81. package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
  82. package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
  83. package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
  84. package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
  85. package/skills-library/_general/frontend/color-token-migration.md +112 -0
  86. package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
  87. package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
  88. package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
  89. package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
  90. package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
  91. package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
  92. package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
  93. package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
  94. package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
  95. package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
  96. package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
  97. package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
  98. package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
  99. package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
  100. package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
  101. package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
  102. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
  103. package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
  104. package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
  105. package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
  106. package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
  107. package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
  108. package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
  109. package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
  110. package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
  111. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
  112. package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
  113. package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
  114. package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
  115. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
  116. package/skills-library/_general/methodology/dead-code-activation.md +123 -0
  117. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  118. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
  119. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
  120. package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
  121. package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
  122. package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
  123. package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
  124. package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
  125. package/skills-library/_general/performance/liveclock-extraction.md +112 -0
  126. package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
  127. package/skills-library/_general/performance/use-visible-interval.md +131 -0
  128. package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
  129. package/skills-library/_quarantine/README.md +30 -0
  130. package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
  131. package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
  132. package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
  133. package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
  134. package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
  135. package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
  136. package/skills-library/api-patterns/graphql-content-queries.md +708 -0
  137. package/skills-library/appointment-scheduler-design.md +423 -0
  138. package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
  139. package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
  140. package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
  141. package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
  142. package/skills-library/automation/scheduled-content-publishing.md +608 -0
  143. package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
  144. package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
  145. package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
  146. package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
  147. package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
  148. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
  149. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
  150. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
  151. package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
  152. package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
  153. package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
  154. package/skills-library/cms-patterns/content-branch-preview.md +515 -0
  155. package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
  156. package/skills-library/cms-patterns/mdx-component-content.md +649 -0
  157. package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
  158. package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
  159. package/skills-library/complexity-metrics/complexity-divider.md +707 -0
  160. package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
  161. package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
  162. package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
  163. package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
  164. package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
  165. package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
  166. package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
  167. package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
  168. package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
  169. package/skills-library/creative-multimedia/og-image-generator.md +635 -0
  170. package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
  171. package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
  172. package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
  173. package/skills-library/creative-multimedia/svg-generation.md +750 -0
  174. package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
  175. package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
  176. package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
  177. package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
  178. package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
  179. package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
  180. package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
  181. package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
  182. package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
  183. package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
  184. package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
  185. package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
  186. package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
  187. package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
  188. package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
  189. package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
  190. package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
  191. package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
  192. package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
  193. package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
  194. package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
  195. package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
  196. package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
  197. package/skills-library/database-solutions/content-publishing-states.md +631 -0
  198. package/skills-library/database-solutions/database-schema-designer.md +522 -0
  199. package/skills-library/database-solutions/er-diagram-components.md +569 -0
  200. package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
  201. package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
  202. package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
  203. package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
  204. package/skills-library/database-solutions/normalization-validator.md +778 -0
  205. package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
  206. package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
  207. package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
  208. package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
  209. package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
  210. package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
  211. package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
  212. package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
  213. package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
  214. package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
  215. package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
  216. package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
  217. package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
  218. package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
  219. package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
  220. package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
  221. package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
  222. package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
  223. package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
  224. package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
  225. package/skills-library/deployment-security/SECURITY.md +41 -0
  226. package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
  227. package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
  228. package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
  229. package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
  230. package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
  231. package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
  232. package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
  233. package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
  234. package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
  235. package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
  236. package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
  237. package/skills-library/deployment-security/vps-deployment.md +135 -0
  238. package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
  239. package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
  240. package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
  241. package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
  242. package/skills-library/document-processing/md-to-word-converter.md +318 -0
  243. package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
  244. package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
  245. package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
  246. package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
  247. package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
  248. package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
  249. package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
  250. package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
  251. package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
  252. package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
  253. package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
  254. package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
  255. package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
  256. package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
  257. package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
  258. package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
  259. package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
  260. package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
  261. package/skills-library/ecommerce/inventory-stock-management.md +270 -0
  262. package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
  263. package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
  264. package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
  265. package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
  266. package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
  267. package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
  268. package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
  269. package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
  270. package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
  271. package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
  272. package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
  273. package/skills-library/excalidraw-diagrams/LICENSE +21 -0
  274. package/skills-library/excalidraw-diagrams/README.md +178 -0
  275. package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
  276. package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
  277. package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
  278. package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
  279. package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
  280. package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
  281. package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
  282. package/skills-library/infrastructure/observability-designer.md +264 -0
  283. package/skills-library/infrastructure/performance-profiler.md +621 -0
  284. package/skills-library/installer-wizard-patterns.md +249 -0
  285. package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
  286. package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
  287. package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
  288. package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
  289. package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  290. package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
  291. package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  292. package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  293. package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  294. package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  295. package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
  296. package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
  297. package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
  298. package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
  299. package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
  300. package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
  301. package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
  302. package/skills-library/integrations/headless-cms-architecture.md +484 -0
  303. package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
  304. package/skills-library/integrations/payload-cms-patterns.md +674 -0
  305. package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
  306. package/skills-library/integrations/rss-podcast-integration.md +300 -0
  307. package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  308. package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
  309. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  310. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  311. package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  312. package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  313. package/skills-library/marketing/campaign-analytics.md +97 -0
  314. package/skills-library/marketing/content-creator.md +105 -0
  315. package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
  316. package/skills-library/marketing/social-media-analyzer.md +81 -0
  317. package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
  318. package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
  319. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  320. package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
  321. package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
  322. package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
  323. package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
  324. package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
  325. package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
  326. package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
  327. package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
  328. package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
  329. package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
  330. package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
  331. package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
  332. package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
  333. package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
  334. package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
  335. package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
  336. package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
  337. package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
  338. package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
  339. package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
  340. package/skills-library/methodology/tech-debt-tracker.md +570 -0
  341. package/skills-library/parallel-debug/SKILL.md +60 -0
  342. package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
  343. package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
  344. package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
  345. package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
  346. package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
  347. package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
  348. package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
  349. package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
  350. package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
  351. package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
  352. package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
  353. package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
  354. package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
  355. package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
  356. package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
  357. package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
  358. package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
  359. package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
  360. package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
  361. package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
  362. package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
  363. package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
  364. package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
  365. package/skills-library/security/admin-deletion-safety.md +396 -0
  366. package/skills-library/security/application-vuln-patterns.md +477 -0
  367. package/skills-library/security/env-secrets-manager.md +686 -0
  368. package/skills-library/security/secure-ai-application-templates.md +347 -0
  369. package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
  370. package/skills-library/supabase-connection-pooler-fix.md +102 -0
  371. package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
  372. package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
  373. package/skills-library/system-context/SKILL.md +40 -0
  374. package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
  375. package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
  376. package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
  377. package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
  378. package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
  379. package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
  380. package/skills-library/testing/playwright-api-security-tests.md +202 -0
  381. package/skills-library/toolbox/SKILL.md +84 -0
  382. package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
  383. package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
  384. package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
  385. package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
  386. package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
  387. package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
  388. package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
  389. package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
  390. package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
  391. package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
  392. package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
  393. package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  394. package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  395. package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  396. package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  397. package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  398. package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  399. package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  400. package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  401. package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
  402. package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  403. package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  404. package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  405. package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  406. package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
  407. package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
  408. package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  409. package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  410. package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
  411. package/skills-library/wordpress-style-theme-components.md +1526 -0
  412. package/templates/ASSUMPTIONS.md +1 -1
  413. package/templates/DECISION_LOG.md +0 -1
  414. package/templates/phase-prompt.md +1 -1
  415. package/templates/phoenix-comparison.md +6 -6
  416. package/templates/skill-api-integration.md +106 -0
  417. package/templates/skill-architecture-pattern.md +92 -0
  418. package/templates/skill-debug-pattern.md +98 -0
  419. package/templates/skill-devops-recipe.md +107 -0
  420. package/templates/skill-general.md +65 -0
  421. package/templates/skill-ui-component.md +113 -0
  422. package/tools/uat-runner.py +179 -0
  423. package/version.json +7 -3
  424. package/workflows/handoff-session.md +2 -2
  425. package/workflows/new-project.md +2 -2
  426. package/workflows/plan-phase.md +1 -1
  427. package/.claude-plugin/plugin.json +0 -64
  428. package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
  429. package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
  430. package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
  431. package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
  432. package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
  433. package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
  434. package/skills-library/specialists/api-architecture/api-designer.md +0 -49
  435. package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
  436. package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
  437. package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
  438. package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
  439. package/skills-library/specialists/backend/django-expert.md +0 -52
  440. package/skills-library/specialists/backend/fastapi-expert.md +0 -52
  441. package/skills-library/specialists/backend/laravel-specialist.md +0 -52
  442. package/skills-library/specialists/backend/nestjs-expert.md +0 -51
  443. package/skills-library/specialists/backend/rails-expert.md +0 -53
  444. package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
  445. package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
  446. package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
  447. package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
  448. package/skills-library/specialists/data-ml/rag-architect.md +0 -51
  449. package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
  450. package/skills-library/specialists/frontend/angular-architect.md +0 -52
  451. package/skills-library/specialists/frontend/flutter-expert.md +0 -51
  452. package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
  453. package/skills-library/specialists/frontend/react-native-expert.md +0 -50
  454. package/skills-library/specialists/frontend/vue-expert.md +0 -51
  455. package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
  456. package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
  457. package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
  458. package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
  459. package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
  460. package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
  461. package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
  462. package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
  463. package/skills-library/specialists/languages/cpp-pro.md +0 -74
  464. package/skills-library/specialists/languages/csharp-developer.md +0 -69
  465. package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
  466. package/skills-library/specialists/languages/golang-pro.md +0 -51
  467. package/skills-library/specialists/languages/java-architect.md +0 -49
  468. package/skills-library/specialists/languages/javascript-pro.md +0 -68
  469. package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
  470. package/skills-library/specialists/languages/php-pro.md +0 -49
  471. package/skills-library/specialists/languages/python-pro.md +0 -52
  472. package/skills-library/specialists/languages/react-expert.md +0 -51
  473. package/skills-library/specialists/languages/rust-engineer.md +0 -50
  474. package/skills-library/specialists/languages/sql-pro.md +0 -56
  475. package/skills-library/specialists/languages/swift-expert.md +0 -69
  476. package/skills-library/specialists/languages/typescript-pro.md +0 -51
  477. package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
  478. package/skills-library/specialists/platform/embedded-systems.md +0 -53
  479. package/skills-library/specialists/platform/game-developer.md +0 -53
  480. package/skills-library/specialists/platform/salesforce-developer.md +0 -53
  481. package/skills-library/specialists/platform/shopify-expert.md +0 -49
  482. package/skills-library/specialists/platform/wordpress-pro.md +0 -49
  483. package/skills-library/specialists/quality/code-documenter.md +0 -51
  484. package/skills-library/specialists/quality/code-reviewer.md +0 -67
  485. package/skills-library/specialists/quality/debugging-wizard.md +0 -51
  486. package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
  487. package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
  488. package/skills-library/specialists/quality/playwright-expert.md +0 -65
  489. package/skills-library/specialists/quality/spec-miner.md +0 -56
  490. package/skills-library/specialists/quality/test-master.md +0 -65
  491. package/skills-library/specialists/security/secure-code-guardian.md +0 -55
  492. package/skills-library/specialists/security/security-reviewer.md +0 -53
  493. package/skills-library/specialists/workflow/architecture-designer.md +0 -53
  494. package/skills-library/specialists/workflow/cli-developer.md +0 -70
  495. package/skills-library/specialists/workflow/feature-forge.md +0 -65
  496. package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
  497. package/skills-library/specialists/workflow/the-fool.md +0 -62
  498. /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
  499. /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
  500. /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
@@ -0,0 +1,494 @@
1
+ # PostgreSQL Full-Text Search for Content Platforms
2
+
3
+ > Production-ready FTS using PostgreSQL's built-in tsvector/tsquery — no Elasticsearch required.
4
+
5
+ **When to use:** Building search for blogs, knowledge bases, docs, LMS, or any content-heavy app where you want relevance ranking without external infrastructure.
6
+ **Stack:** PostgreSQL 14+, Node.js/Express or Bun, TypeScript
7
+
8
+ ---
9
+
10
+ ## Why PostgreSQL FTS First
11
+
12
+ Before reaching for Elasticsearch or Typesense, ask:
13
+ - Fewer than ~1 million documents? → PG FTS handles it fine.
14
+ - Already using PostgreSQL? → Zero new infrastructure.
15
+ - Need relevance ranking, phrase search, prefix matching? → All built in.
16
+ - Need faceting, synonyms, ML-powered re-ranking? → Then add a search engine.
17
+
18
+ Rule of thumb: **PG FTS is production-ready up to ~1M rows** with proper GIN indexing. At 5M+ rows with complex relevance needs, evaluate Typesense or Elasticsearch.
19
+
20
+ ---
21
+
22
+ ## Core Concepts
23
+
24
+ | Concept | What it is |
25
+ |---------|-----------|
26
+ | `tsvector` | Preprocessed document representation (stemmed, stop-words removed) |
27
+ | `tsquery` | Search query in tsvector-compatible form |
28
+ | `GIN index` | Generalized Inverted Index — makes FTS fast at scale |
29
+ | `ts_rank` | Relevance score function (0.0–1.0) |
30
+ | `setweight` | Assigns A/B/C/D weight to parts of a document |
31
+ | `to_tsvector` | Converts text to tsvector |
32
+ | `to_tsquery` | Converts user input to tsquery (exact phrase match) |
33
+ | `plainto_tsquery` | Converts plain text (AND behavior, no operators needed) |
34
+ | `websearch_to_tsquery` | Converts Google-style queries (quotes, minus, OR) |
35
+
36
+ ---
37
+
38
+ ## Schema: Content Table with FTS
39
+
40
+ ```sql
41
+ -- Content table with FTS support
42
+ CREATE TABLE content (
43
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
44
+ title TEXT NOT NULL,
45
+ body TEXT NOT NULL,
46
+ excerpt TEXT,
47
+ tags TEXT[], -- array of tag strings
48
+ author_id UUID REFERENCES users(id),
49
+ status TEXT NOT NULL DEFAULT 'draft',
50
+ published_at TIMESTAMPTZ,
51
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
52
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
53
+
54
+ -- Weighted search vector: stored, updated by trigger
55
+ search_vector TSVECTOR GENERATED ALWAYS AS (
56
+ setweight(to_tsvector('english', coalesce(title, '')), 'A') ||
57
+ setweight(to_tsvector('english', coalesce(excerpt, '')), 'B') ||
58
+ setweight(to_tsvector('english', coalesce(body, '')), 'C') ||
59
+ setweight(to_tsvector('english', coalesce(array_to_string(tags, ' '), '')), 'B')
60
+ ) STORED
61
+ );
62
+
63
+ -- GIN index on the stored vector — this is what makes it fast
64
+ CREATE INDEX idx_content_search_vector ON content USING GIN(search_vector);
65
+
66
+ -- Index for common filter combos
67
+ CREATE INDEX idx_content_status_published ON content(status, published_at DESC);
68
+ CREATE INDEX idx_content_author ON content(author_id);
69
+ ```
70
+
71
+ ### Why GENERATED ALWAYS AS STORED?
72
+
73
+ PostgreSQL 12+ supports stored generated columns. The `search_vector` column is automatically recomputed on every INSERT/UPDATE. No trigger needed. This is the cleanest approach — one source of truth, no sync lag.
74
+
75
+ **Alternative: Trigger-based (for older PG or more control)**
76
+
77
+ ```sql
78
+ -- If you need PG 11 or want trigger-based updates:
79
+ ALTER TABLE content ADD COLUMN search_vector TSVECTOR;
80
+
81
+ CREATE OR REPLACE FUNCTION content_search_vector_update()
82
+ RETURNS TRIGGER AS $$
83
+ BEGIN
84
+ NEW.search_vector :=
85
+ setweight(to_tsvector('english', coalesce(NEW.title, '')), 'A') ||
86
+ setweight(to_tsvector('english', coalesce(NEW.excerpt, '')), 'B') ||
87
+ setweight(to_tsvector('english', coalesce(NEW.body, '')), 'C') ||
88
+ setweight(to_tsvector('english', coalesce(array_to_string(NEW.tags, ' '), '')), 'B');
89
+ RETURN NEW;
90
+ END;
91
+ $$ LANGUAGE plpgsql;
92
+
93
+ CREATE TRIGGER content_search_vector_trigger
94
+ BEFORE INSERT OR UPDATE ON content
95
+ FOR EACH ROW EXECUTE FUNCTION content_search_vector_update();
96
+
97
+ -- Backfill existing rows after adding trigger
98
+ UPDATE content SET updated_at = updated_at;
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Weight Strategy: A > B > C > D
104
+
105
+ ```
106
+ Weight A — Title (highest relevance)
107
+ Weight B — Excerpt, Tags
108
+ Weight C — Body (lowest, largest volume)
109
+ Weight D — (available for metadata, rarely used)
110
+ ```
111
+
112
+ `ts_rank` uses these weights when computing relevance scores. A document where the query matches the title ranks higher than one where it only matches the body.
113
+
114
+ ---
115
+
116
+ ## Query Patterns
117
+
118
+ ### 1. Simple Search (AND behavior)
119
+
120
+ ```sql
121
+ -- All words must appear somewhere in the document
122
+ SELECT
123
+ id,
124
+ title,
125
+ published_at,
126
+ ts_rank(search_vector, query) AS rank
127
+ FROM content,
128
+ plainto_tsquery('english', 'postgresql performance') AS query
129
+ WHERE
130
+ status = 'published'
131
+ AND search_vector @@ query
132
+ ORDER BY rank DESC, published_at DESC
133
+ LIMIT 20;
134
+ ```
135
+
136
+ `plainto_tsquery` treats the input as "postgresql AND performance" — no operators needed from the user.
137
+
138
+ ### 2. Phrase Search (exact phrase)
139
+
140
+ ```sql
141
+ -- Words must appear together in order
142
+ SELECT id, title, ts_rank(search_vector, query) AS rank
143
+ FROM content,
144
+ phraseto_tsquery('english', 'database index') AS query
145
+ WHERE status = 'published'
146
+ AND search_vector @@ query
147
+ ORDER BY rank DESC;
148
+ ```
149
+
150
+ ### 3. Prefix Search (autocomplete / partial words)
151
+
152
+ ```sql
153
+ -- Match words beginning with a prefix (great for autocomplete)
154
+ SELECT id, title, ts_rank(search_vector, query) AS rank
155
+ FROM content,
156
+ to_tsquery('english', 'postgr:*') AS query -- matches postgresql, postgres, etc.
157
+ WHERE status = 'published'
158
+ AND search_vector @@ query
159
+ ORDER BY rank DESC
160
+ LIMIT 10;
161
+ ```
162
+
163
+ ### 4. Google-Style Input (quotes, minus, OR)
164
+
165
+ ```sql
166
+ -- Accepts: "exact phrase" postgres -mysql OR nosql
167
+ SELECT id, title, ts_rank(search_vector, query) AS rank
168
+ FROM content,
169
+ websearch_to_tsquery('english', $1) AS query
170
+ WHERE status = 'published'
171
+ AND search_vector @@ query
172
+ ORDER BY rank DESC;
173
+ ```
174
+
175
+ `websearch_to_tsquery` is the right choice for user-facing search boxes. It handles:
176
+ - `"exact phrase"` → phrase search
177
+ - `-word` → exclude word
178
+ - `word1 OR word2` → either word
179
+ - Everything else → AND
180
+
181
+ ### 5. Combined FTS + Regular Filters
182
+
183
+ ```sql
184
+ -- Search within a specific author's published posts, after a date
185
+ SELECT
186
+ c.id,
187
+ c.title,
188
+ c.published_at,
189
+ c.tags,
190
+ u.name AS author_name,
191
+ ts_rank(c.search_vector, query) AS rank
192
+ FROM content c
193
+ JOIN users u ON u.id = c.author_id,
194
+ websearch_to_tsquery('english', $1) AS query
195
+ WHERE
196
+ c.status = 'published'
197
+ AND c.author_id = $2
198
+ AND c.published_at >= $3
199
+ AND c.search_vector @@ query
200
+ ORDER BY rank DESC, c.published_at DESC
201
+ LIMIT $4 OFFSET $5;
202
+ ```
203
+
204
+ ### 6. Search with Snippet Highlighting
205
+
206
+ ```sql
207
+ -- Return highlighted excerpts showing matched terms in context
208
+ SELECT
209
+ id,
210
+ title,
211
+ ts_headline(
212
+ 'english',
213
+ body,
214
+ query,
215
+ 'MaxWords=50, MinWords=15, ShortWord=3, HighlightAll=false,
216
+ MaxFragments=3, FragmentDelimiter='' ... '''
217
+ ) AS headline,
218
+ ts_rank(search_vector, query) AS rank
219
+ FROM content,
220
+ websearch_to_tsquery('english', $1) AS query
221
+ WHERE status = 'published'
222
+ AND search_vector @@ query
223
+ ORDER BY rank DESC
224
+ LIMIT 20;
225
+ ```
226
+
227
+ `ts_headline` is expensive — only use it on the final result set (after LIMIT), never in a WHERE clause or subquery.
228
+
229
+ ---
230
+
231
+ ## Node.js / Express Query Helper
232
+
233
+ ```typescript
234
+ // lib/content-search.ts
235
+ import { Pool } from 'pg';
236
+
237
+ interface SearchOptions {
238
+ query: string;
239
+ authorId?: string;
240
+ tags?: string[];
241
+ status?: string;
242
+ limit?: number;
243
+ offset?: number;
244
+ highlight?: boolean;
245
+ }
246
+
247
+ interface SearchResult {
248
+ id: string;
249
+ title: string;
250
+ excerpt: string | null;
251
+ tags: string[];
252
+ published_at: string | null;
253
+ author_name: string;
254
+ rank: number;
255
+ headline?: string;
256
+ }
257
+
258
+ export async function searchContent(
259
+ db: Pool,
260
+ options: SearchOptions
261
+ ): Promise<{ results: SearchResult[]; total: number }> {
262
+ const {
263
+ query,
264
+ authorId,
265
+ tags,
266
+ status = 'published',
267
+ limit = 20,
268
+ offset = 0,
269
+ highlight = false,
270
+ } = options;
271
+
272
+ if (!query || query.trim().length < 2) {
273
+ return { results: [], total: 0 };
274
+ }
275
+
276
+ const params: unknown[] = [query, status, limit, offset];
277
+ let paramIndex = 5;
278
+
279
+ const authorFilter = authorId
280
+ ? `AND c.author_id = $${paramIndex++}`
281
+ : '';
282
+ if (authorId) params.push(authorId);
283
+
284
+ const tagsFilter = tags && tags.length > 0
285
+ ? `AND c.tags && $${paramIndex++}::text[]`
286
+ : '';
287
+ if (tags && tags.length > 0) params.push(tags);
288
+
289
+ const headlineSelect = highlight
290
+ ? `, ts_headline('english', c.body, query,
291
+ 'MaxWords=40, MinWords=10, MaxFragments=2, FragmentDelimiter='' ... '''
292
+ ) AS headline`
293
+ : '';
294
+
295
+ const sql = `
296
+ SELECT
297
+ c.id,
298
+ c.title,
299
+ c.excerpt,
300
+ c.tags,
301
+ c.published_at,
302
+ u.name AS author_name,
303
+ ts_rank(c.search_vector, query) AS rank
304
+ ${headlineSelect},
305
+ COUNT(*) OVER() AS total_count
306
+ FROM content c
307
+ JOIN users u ON u.id = c.author_id,
308
+ websearch_to_tsquery('english', $1) AS query
309
+ WHERE
310
+ c.status = $2
311
+ AND c.search_vector @@ query
312
+ ${authorFilter}
313
+ ${tagsFilter}
314
+ ORDER BY rank DESC, c.published_at DESC NULLS LAST
315
+ LIMIT $3 OFFSET $4
316
+ `;
317
+
318
+ const { rows } = await db.query(sql, params);
319
+
320
+ const total = rows.length > 0 ? parseInt(rows[0].total_count, 10) : 0;
321
+ const results = rows.map(({ total_count, ...rest }) => rest);
322
+
323
+ return { results, total };
324
+ }
325
+ ```
326
+
327
+ **Express route using the helper:**
328
+
329
+ ```typescript
330
+ // routes/content.ts
331
+ router.get('/content/search', async (req, res) => {
332
+ const { q, author, tags, page = '1', limit = '20' } = req.query as Record<string, string>;
333
+
334
+ if (!q) return res.status(400).json({ error: 'q parameter required' });
335
+
336
+ const pageNum = Math.max(1, parseInt(page, 10));
337
+ const limitNum = Math.min(100, Math.max(1, parseInt(limit, 10)));
338
+
339
+ try {
340
+ const { results, total } = await searchContent(db, {
341
+ query: q,
342
+ authorId: author,
343
+ tags: tags ? tags.split(',') : undefined,
344
+ limit: limitNum,
345
+ offset: (pageNum - 1) * limitNum,
346
+ highlight: true,
347
+ });
348
+
349
+ res.json({
350
+ results,
351
+ pagination: {
352
+ total,
353
+ page: pageNum,
354
+ limit: limitNum,
355
+ pages: Math.ceil(total / limitNum),
356
+ },
357
+ });
358
+ } catch (err) {
359
+ console.error('Search error:', err);
360
+ res.status(500).json({ error: 'Search failed' });
361
+ }
362
+ });
363
+ ```
364
+
365
+ ---
366
+
367
+ ## Hybrid: FTS Relevance + Recency Boost
368
+
369
+ Pure `ts_rank` ignores recency. For content platforms, blend rank with freshness:
370
+
371
+ ```sql
372
+ SELECT
373
+ id,
374
+ title,
375
+ published_at,
376
+ ts_rank(search_vector, query) AS text_rank,
377
+ -- Recency score: 1.0 for today, decays exponentially
378
+ EXP(-EXTRACT(EPOCH FROM (NOW() - published_at)) / (86400 * 30)) AS recency_score,
379
+ -- Blended score: 70% text relevance, 30% recency
380
+ (0.7 * ts_rank(search_vector, query) +
381
+ 0.3 * EXP(-EXTRACT(EPOCH FROM (NOW() - published_at)) / (86400 * 30))
382
+ ) AS blended_score
383
+ FROM content,
384
+ websearch_to_tsquery('english', $1) AS query
385
+ WHERE status = 'published'
386
+ AND search_vector @@ query
387
+ ORDER BY blended_score DESC
388
+ LIMIT 20;
389
+ ```
390
+
391
+ Tune the `86400 * 30` (30-day half-life) to match your freshness requirements.
392
+
393
+ ---
394
+
395
+ ## Pagination with Search
396
+
397
+ Never use `OFFSET` for deep pagination on large datasets — it degrades linearly. Use cursor-based pagination after the first page:
398
+
399
+ ```sql
400
+ -- Page 1 (always):
401
+ SELECT id, title, ts_rank(search_vector, query) AS rank, published_at
402
+ FROM content, websearch_to_tsquery('english', $1) AS query
403
+ WHERE status = 'published' AND search_vector @@ query
404
+ ORDER BY rank DESC, id DESC -- id as tiebreaker for stable cursor
405
+ LIMIT 20;
406
+
407
+ -- Subsequent pages (cursor = { rank, id } from last item):
408
+ SELECT id, title, ts_rank(search_vector, query) AS rank, published_at
409
+ FROM content, websearch_to_tsquery('english', $1) AS query
410
+ WHERE status = 'published'
411
+ AND search_vector @@ query
412
+ AND (ts_rank(search_vector, query), id) < ($2, $3) -- cursor
413
+ ORDER BY rank DESC, id DESC
414
+ LIMIT 20;
415
+ ```
416
+
417
+ ---
418
+
419
+ ## Performance Notes
420
+
421
+ | Scenario | Performance |
422
+ |----------|-------------|
423
+ | 10K rows, no index | ~50ms |
424
+ | 100K rows, GIN index | ~5-15ms |
425
+ | 1M rows, GIN index | ~20-80ms |
426
+ | 10M rows, GIN index | ~200-500ms (consider partitioning or external search) |
427
+
428
+ **Index maintenance:** GIN indexes are slower to update than B-tree. On write-heavy tables (>1K updates/sec), consider `fastupdate = off` or a separate search indexing worker.
429
+
430
+ ```sql
431
+ -- Disable fastupdate if you see GIN pending list slowdowns
432
+ CREATE INDEX idx_content_search_vector ON content USING GIN(search_vector)
433
+ WITH (fastupdate = off);
434
+ ```
435
+
436
+ ---
437
+
438
+ ## FTS vs External Search Engine Decision Guide
439
+
440
+ | Need | PG FTS | Typesense | Elasticsearch |
441
+ |------|--------|-----------|---------------|
442
+ | < 1M docs | Yes | Overkill | Overkill |
443
+ | 1M–10M docs | Maybe | Yes | Yes |
444
+ | Typo tolerance (fuzzy) | No | Yes | Yes |
445
+ | Synonym expansion | Limited | Yes | Yes |
446
+ | Faceted filters | No | Yes | Yes |
447
+ | ML re-ranking | No | Yes | Yes |
448
+ | Zero extra infra | Yes | No | No |
449
+ | Already in PG stack | Yes | No | No |
450
+ | Real-time updates | Yes | Yes | Slower |
451
+
452
+ **Decision rule:** Start with PG FTS. Add Typesense when you hit one of: typo tolerance needed, faceted search UI, >2M documents with sub-50ms P95 requirement.
453
+
454
+ ---
455
+
456
+ ## Migrations
457
+
458
+ ```sql
459
+ -- Migration: add FTS to existing content table
460
+ BEGIN;
461
+
462
+ -- Add the search vector column if it doesn't exist
463
+ DO $$
464
+ BEGIN
465
+ IF NOT EXISTS (
466
+ SELECT 1 FROM information_schema.columns
467
+ WHERE table_name = 'content' AND column_name = 'search_vector'
468
+ ) THEN
469
+ ALTER TABLE content ADD COLUMN search_vector TSVECTOR
470
+ GENERATED ALWAYS AS (
471
+ setweight(to_tsvector('english', coalesce(title, '')), 'A') ||
472
+ setweight(to_tsvector('english', coalesce(excerpt, '')), 'B') ||
473
+ setweight(to_tsvector('english', coalesce(body, '')), 'C')
474
+ ) STORED;
475
+ END IF;
476
+ END $$;
477
+
478
+ -- Create GIN index (CONCURRENTLY to avoid locking production)
479
+ CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_content_search_vector
480
+ ON content USING GIN(search_vector);
481
+
482
+ COMMIT;
483
+ ```
484
+
485
+ ---
486
+
487
+ ## Common Gotchas
488
+
489
+ 1. **`to_tsquery` crashes on bad input** — user-typed queries with unmatched quotes or special chars will throw. Always use `websearch_to_tsquery` for user input.
490
+ 2. **Stop words are stripped** — "the", "is", "in" are ignored. Searching for "the" returns nothing. Expected behavior.
491
+ 3. **Language matters** — use `'english'` consistently. Mixing `'simple'` and `'english'` in the same column causes index mismatches.
492
+ 4. **`ts_headline` on full body is slow** — run it only on the final paginated result, never in a subquery or CTE that returns all rows.
493
+ 5. **Generated columns can't reference other generated columns** — if you need to combine multiple generated vectors, use a trigger instead.
494
+ 6. **Array tags need special handling** — `array_to_string(tags, ' ')` before `to_tsvector`. Don't pass arrays directly.