@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,732 @@
1
+ # PostgreSQL UUID Document Upload with RAG Dual-Scope Search
2
+
3
+ ## The Problem
4
+
5
+ When implementing a document RAG (Retrieval-Augmented Generation) system with personal and shared libraries, three critical issues emerged:
6
+
7
+ ### Issue 1: Prisma UUID Validation Failures
8
+ ```
9
+ Invalid 'prisma.knowledgeSource.create()' invocation
10
+ Error creating UUID, invalid character: expected an optional prefix of
11
+ 'urn:uuid:' followed by [0-9a-fA-F-], found '' at 1
12
+ ```
13
+
14
+ **Why It Was Hard:**
15
+ - PostgreSQL `@db.Uuid` type requires actual UUID format (`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)
16
+ - JavaScript's `||` operator doesn't convert empty strings to `null`
17
+ - String IDs like `'user-personal-library-001'` appear valid in code but fail at database layer
18
+ - Error message doesn't clearly indicate the source of the problem
19
+
20
+ ### Issue 2: Dual Upload Systems Storing Data in Different Tables
21
+ ```
22
+ DocumentUpload.tsx → /api/documents/upload → workspace_Document table (no userId)
23
+ Settings.tsx → /api/knowledge/sources → knowledge_sources table (has userId)
24
+ RAG searches → knowledge_sources table only
25
+ Result: Documents uploaded via DocumentsPage invisible to RAG
26
+ ```
27
+
28
+ **Why It Was Hard:**
29
+ - Two separate upload endpoints created during different development phases
30
+ - No clear indication that tables were misaligned
31
+ - Upload success didn't mean RAG searchability
32
+ - Required end-to-end testing to discover
33
+
34
+ ### Issue 3: RAG Not Finding Personal Library Documents
35
+ ```
36
+ User: "search my library"
37
+ AI: "No documents detected"
38
+ Database: 6 documents with status='READY' and userId='0584cd60-...'
39
+ MainLayout: userId='shared-corpus' (converts to null)
40
+ Result: userId mismatch prevents RAG from finding documents
41
+ ```
42
+
43
+ **Why It Was Hard:**
44
+ - Original implementation: Bible-only corpus (userId=null)
45
+ - New implementation: Personal library support (userId=UUID)
46
+ - No admin toggle to control RAG scope
47
+ - Required architectural decision on search strategy
48
+
49
+ ### Impact
50
+
51
+ - **Personal library uploads failed completely** - Prisma validation errors
52
+ - **Uploaded documents invisible to AI** - Wrong table, no RAG integration
53
+ - **User confusion and frustration** - Upload succeeds but search fails
54
+ - **Dual systems causing maintenance burden** - Two endpoints, two tables
55
+ - **No flexibility for admins** - Bible-only vs personal library hard-coded
56
+
57
+ ---
58
+
59
+ ## The Solution
60
+
61
+ ### Root Cause Analysis
62
+
63
+ **Problem 1: UUID Format**
64
+ - Using string IDs instead of valid UUID format for PostgreSQL `@db.Uuid` columns
65
+ - Empty string userId values not sanitized to `null`
66
+
67
+ **Problem 2: Table Misalignment**
68
+ - OLD system (Phase 9.0): `/api/documents/upload` → `workspace_Document` (no userId)
69
+ - NEW system (Phase 9.1): `/api/knowledge/sources` → `knowledge_sources` (has userId)
70
+ - RAG only searches `knowledge_sources` table
71
+
72
+ **Problem 3: Architecture Evolution**
73
+ - Original: Bible corpus only (userId=null)
74
+ - Current: Bible + personal library (different userId values)
75
+ - Missing: Admin control for RAG search scope
76
+
77
+ ### Fix #1: UUID Validation and Sanitization
78
+
79
+ **Backend (server/routes/knowledge.ts):**
80
+ ```typescript
81
+ // POST /api/knowledge/sources
82
+ router.post('/sources', upload.single('file'), async (req, res) => {
83
+ const { title, userId } = req.body;
84
+
85
+ // CRITICAL: Sanitize userId - convert empty strings to null
86
+ const sanitizedUserId = userId?.trim() || null;
87
+
88
+ const source = await prisma.knowledgeSource.create({
89
+ data: {
90
+ userId: sanitizedUserId, // NULL = shared corpus, UUID = personal library
91
+ title: title || req.file.originalname,
92
+ fileType: path.extname(req.file.originalname).substring(1),
93
+ filePath: req.file.path,
94
+ fileSize: req.file.size,
95
+ status: 'PENDING',
96
+ }
97
+ });
98
+
99
+ res.json(source);
100
+ });
101
+
102
+ // POST /api/knowledge/sources/youtube
103
+ router.post('/sources/youtube', async (req, res) => {
104
+ const { url, title, userId } = req.body;
105
+
106
+ // CRITICAL: Sanitize userId here too
107
+ const sanitizedUserId = userId?.trim() || null;
108
+
109
+ const source = await prisma.knowledgeSource.create({
110
+ data: {
111
+ userId: sanitizedUserId,
112
+ title,
113
+ sourceUrl: url,
114
+ fileType: 'youtube',
115
+ status: 'PENDING',
116
+ }
117
+ });
118
+
119
+ res.json(source);
120
+ });
121
+
122
+ // POST /api/knowledge/sources/text
123
+ router.post('/sources/text', async (req, res) => {
124
+ const { text, title, userId } = req.body;
125
+
126
+ // CRITICAL: Sanitize userId here too
127
+ const sanitizedUserId = userId?.trim() || null;
128
+
129
+ const source = await prisma.knowledgeSource.create({
130
+ data: {
131
+ userId: sanitizedUserId,
132
+ title,
133
+ extractedText: text,
134
+ fileType: 'text',
135
+ status: 'PENDING',
136
+ }
137
+ });
138
+
139
+ res.json(source);
140
+ });
141
+ ```
142
+
143
+ **Frontend - Use Valid UUID:**
144
+ ```typescript
145
+ // WRONG: String ID that looks valid but isn't UUID
146
+ const PERSONAL_USER_ID = 'user-personal-library-001'; // ❌ Fails PostgreSQL @db.Uuid
147
+
148
+ // RIGHT: Actual UUID format
149
+ const PERSONAL_USER_ID = '0584cd60-2eb8-424c-a789-e68340a9161c'; // ✅ Works
150
+ ```
151
+
152
+ ### Fix #2: Migrate to Unified Upload System
153
+
154
+ **DocumentUpload.tsx Migration:**
155
+ ```typescript
156
+ interface DocumentUploadProps {
157
+ onDocumentUploaded?: () => void;
158
+ userId?: string | null; // UUID for personal, null/'shared-corpus' for shared
159
+ }
160
+
161
+ export function DocumentUpload({ onDocumentUploaded, userId }: DocumentUploadProps) {
162
+ const uploadFile = (file: File) => {
163
+ const formData = new FormData();
164
+ formData.append('file', file);
165
+ formData.append('title', file.name);
166
+
167
+ // Add userId if personal library
168
+ if (userId && userId !== 'shared-corpus') {
169
+ formData.append('userId', userId);
170
+ }
171
+
172
+ const xhr = new XMLHttpRequest();
173
+
174
+ // CHANGED: Use knowledge API instead of old documents API
175
+ xhr.open('POST', '/api/knowledge/sources'); // ✅ Unified endpoint
176
+
177
+ xhr.onload = () => {
178
+ if (xhr.status === 200) {
179
+ const data = JSON.parse(xhr.responseText);
180
+ pollStatus(data.id); // Poll for READY status
181
+ }
182
+ };
183
+
184
+ xhr.send(formData);
185
+ };
186
+
187
+ const pollStatus = async (documentId: string) => {
188
+ const interval = setInterval(async () => {
189
+ // CHANGED: Poll knowledge API for status
190
+ const response = await fetch(`/api/knowledge/sources/${documentId}`);
191
+ const data = await response.json();
192
+
193
+ // CHANGED: Check for 'READY' instead of 'vectorized'
194
+ if (data.status === 'READY') {
195
+ clearInterval(interval);
196
+ if (onDocumentUploaded) {
197
+ onDocumentUploaded();
198
+ }
199
+ }
200
+ }, 3000);
201
+ };
202
+ }
203
+ ```
204
+
205
+ **DocumentsPage.tsx - Library Selection:**
206
+ ```typescript
207
+ const PERSONAL_USER_ID = '0584cd60-2eb8-424c-a789-e68340a9161c';
208
+
209
+ export const DocumentsPage: React.FC = () => {
210
+ const [uploadToPersonal, setUploadToPersonal] = useState(true);
211
+
212
+ return (
213
+ <div>
214
+ {/* Library selection UI */}
215
+ <div className="library-toggle">
216
+ <label>
217
+ <input
218
+ type="radio"
219
+ checked={uploadToPersonal}
220
+ onChange={() => setUploadToPersonal(true)}
221
+ />
222
+ My Personal Library
223
+ </label>
224
+ <label>
225
+ <input
226
+ type="radio"
227
+ checked={!uploadToPersonal}
228
+ onChange={() => setUploadToPersonal(false)}
229
+ />
230
+ Shared Library
231
+ </label>
232
+ </div>
233
+
234
+ <DocumentUpload
235
+ userId={uploadToPersonal ? PERSONAL_USER_ID : null}
236
+ onDocumentUploaded={handleRefresh}
237
+ />
238
+ </div>
239
+ );
240
+ };
241
+ ```
242
+
243
+ **Settings.tsx - Fixed DEFAULT_USER_ID:**
244
+ ```typescript
245
+ // WRONG: null means shared corpus, not personal library
246
+ const DEFAULT_USER_ID = null; // ❌
247
+
248
+ // RIGHT: Valid UUID for personal library
249
+ const DEFAULT_USER_ID = '0584cd60-2eb8-424c-a789-e68340a9161c'; // ✅
250
+
251
+ const { documents, uploadFile } = useDocuments(DEFAULT_USER_ID);
252
+ ```
253
+
254
+ ### Fix #3: RAG Dual-Scope Search with Admin Toggle
255
+
256
+ **Frontend - RAG Toggle Component:**
257
+ ```typescript
258
+ // frontend/src/components/Settings/RAGLibraryToggle.tsx
259
+ export function RAGLibraryToggle() {
260
+ const [includePersonal, setIncludePersonal] = useState(() => {
261
+ const stored = localStorage.getItem('ragIncludePersonalLibrary');
262
+ return stored === 'true';
263
+ });
264
+
265
+ const handleToggle = (checked: boolean) => {
266
+ setIncludePersonal(checked);
267
+ localStorage.setItem('ragIncludePersonalLibrary', checked.toString());
268
+
269
+ // Notify MainLayout of change
270
+ window.dispatchEvent(new Event('storage'));
271
+ };
272
+
273
+ return (
274
+ <div>
275
+ <label>
276
+ <input
277
+ type="checkbox"
278
+ checked={includePersonal}
279
+ onChange={(e) => handleToggle(e.target.checked)}
280
+ />
281
+ Include Personal Library in RAG Search
282
+ </label>
283
+
284
+ {includePersonal && (
285
+ <p className="help-text">
286
+ ✓ Active: Searches 60% personal library + 40% Bible corpus
287
+ </p>
288
+ )}
289
+ </div>
290
+ );
291
+ }
292
+ ```
293
+
294
+ **Frontend - MainLayout.tsx:**
295
+ ```typescript
296
+ const DEFAULT_USER_ID = 'shared-corpus'; // Bible only
297
+ const PERSONAL_USER_ID = '0584cd60-2eb8-424c-a789-e68340a9161c'; // Personal library
298
+
299
+ export function MainLayout() {
300
+ const [userId, setUserId] = useState(() => {
301
+ const includePersonal = localStorage.getItem('ragIncludePersonalLibrary') === 'true';
302
+ return includePersonal ? PERSONAL_USER_ID : DEFAULT_USER_ID;
303
+ });
304
+
305
+ useEffect(() => {
306
+ const handleStorageChange = () => {
307
+ const includePersonal = localStorage.getItem('ragIncludePersonalLibrary') === 'true';
308
+ setUserId(includePersonal ? PERSONAL_USER_ID : DEFAULT_USER_ID);
309
+ };
310
+
311
+ window.addEventListener('storage', handleStorageChange);
312
+ return () => window.removeEventListener('storage', handleStorageChange);
313
+ }, []);
314
+
315
+ return (
316
+ <ChatInterface
317
+ userId={userId} // Dynamically set based on toggle
318
+ conversationId={selectedConversationId}
319
+ />
320
+ );
321
+ }
322
+ ```
323
+
324
+ **Backend - Dual-Scope RAG Search:**
325
+ ```typescript
326
+ // server/services/rag-query.service.ts
327
+ async retrieveContext(query: string, userId: string | null, limit: number = 5): Promise<RAGContext[]> {
328
+ const embedding = await this.embedQuery(query);
329
+ const embeddingString = `[${embedding.join(',')}]`;
330
+
331
+ if (!userId) {
332
+ // Search ONLY shared corpus (Bible documents)
333
+ const results = await this.prisma.$queryRaw<RAGContext[]>`
334
+ SELECT
335
+ c.id,
336
+ c.content,
337
+ c.embedding <=> ${embeddingString}::vector as distance,
338
+ 1 - (c.embedding <=> ${embeddingString}::vector) as similarity,
339
+ s.title,
340
+ s.file_type as "fileType"
341
+ FROM source_chunks c
342
+ JOIN knowledge_sources s ON c.source_id = s.id
343
+ WHERE s.status = 'READY' AND s.user_id IS NULL
344
+ ORDER BY c.embedding <=> ${embeddingString}::vector
345
+ LIMIT ${limit}
346
+ `;
347
+ return results;
348
+ } else {
349
+ // Search BOTH personal (60%) + shared (40%)
350
+ const personalLimit = Math.ceil(limit * 0.6); // 60% from personal
351
+ const sharedLimit = Math.floor(limit * 0.4); // 40% from shared
352
+
353
+ // Query personal documents
354
+ const personalResults = await this.prisma.$queryRaw<RAGContext[]>`
355
+ SELECT /* ... same fields ... */
356
+ FROM source_chunks c
357
+ JOIN knowledge_sources s ON c.source_id = s.id
358
+ WHERE s.status = 'READY' AND s.user_id = ${userId}::uuid
359
+ ORDER BY c.embedding <=> ${embeddingString}::vector
360
+ LIMIT ${personalLimit}
361
+ `;
362
+
363
+ // Query shared documents (Bible)
364
+ const sharedResults = await this.prisma.$queryRaw<RAGContext[]>`
365
+ SELECT /* ... same fields ... */
366
+ FROM source_chunks c
367
+ JOIN knowledge_sources s ON c.source_id = s.id
368
+ WHERE s.status = 'READY' AND s.user_id IS NULL
369
+ ORDER BY c.embedding <=> ${embeddingString}::vector
370
+ LIMIT ${sharedLimit}
371
+ `;
372
+
373
+ // Combine and re-rank by similarity
374
+ const combined = [...personalResults, ...sharedResults]
375
+ .sort((a, b) => b.similarity - a.similarity)
376
+ .slice(0, limit);
377
+
378
+ return combined;
379
+ }
380
+ }
381
+ ```
382
+
383
+ ---
384
+
385
+ ## Testing the Fix
386
+
387
+ ### Test #1: Personal Library Upload (DocumentsPage)
388
+
389
+ **Steps:**
390
+ 1. Navigate to Documents page
391
+ 2. Select "My Personal Library" radio button
392
+ 3. Upload a PDF document
393
+ 4. Wait for status to show "ready"
394
+ 5. Check database
395
+
396
+ **Expected Results:**
397
+ ```sql
398
+ SELECT id, user_id, title, status FROM knowledge_sources
399
+ WHERE user_id = '0584cd60-2eb8-424c-a789-e68340a9161c'
400
+ ORDER BY created_at DESC LIMIT 1;
401
+
402
+ -- Should return:
403
+ -- id: uuid
404
+ -- user_id: 0584cd60-2eb8-424c-a789-e68340a9161c
405
+ -- title: YourDocument.pdf
406
+ -- status: READY
407
+ ```
408
+
409
+ ### Test #2: Settings "My Library" Upload
410
+
411
+ **Steps:**
412
+ 1. Navigate to Settings → My Library
413
+ 2. Upload a document
414
+ 3. Wait for "READY" status
415
+ 4. Check database
416
+
417
+ **Expected Results:**
418
+ Same as Test #1 - should appear with personal userId
419
+
420
+ ### Test #3: Shared Library Upload
421
+
422
+ **Steps:**
423
+ 1. Navigate to Documents page
424
+ 2. Select "Shared Library" radio button
425
+ 3. Upload a document
426
+ 4. Check database
427
+
428
+ **Expected Results:**
429
+ ```sql
430
+ SELECT id, user_id, title, status FROM knowledge_sources
431
+ WHERE user_id IS NULL
432
+ ORDER BY created_at DESC LIMIT 1;
433
+
434
+ -- Should return:
435
+ -- id: uuid
436
+ -- user_id: NULL
437
+ -- title: SharedDocument.pdf
438
+ -- status: READY
439
+ ```
440
+
441
+ ### Test #4: RAG Search - Bible Only (Toggle OFF)
442
+
443
+ **Steps:**
444
+ 1. Settings → Turn OFF "Include Personal Library"
445
+ 2. Go to Chat page
446
+ 3. Query: "What does Genesis say about creation?"
447
+
448
+ **Expected Results:**
449
+ - RAG searches with userId=null (shared corpus only)
450
+ - Response includes Bible verses
451
+ - No personal library documents cited
452
+
453
+ ### Test #5: RAG Search - Personal + Bible (Toggle ON)
454
+
455
+ **Steps:**
456
+ 1. Settings → Turn ON "Include Personal Library"
457
+ 2. Upload a document about "prayer" to personal library
458
+ 3. Query: "search my library for prayer"
459
+
460
+ **Expected Results:**
461
+ - RAG searches with userId=UUID (dual-scope)
462
+ - Response includes 60% from personal library
463
+ - Response includes 40% from Bible corpus
464
+ - Citations reference both sources
465
+
466
+ ### Test #6: End-to-End Verification
467
+
468
+ **Database Query:**
469
+ ```sql
470
+ -- Check document distribution
471
+ SELECT
472
+ CASE
473
+ WHEN user_id IS NULL THEN 'Shared (Bible)'
474
+ ELSE 'Personal Library'
475
+ END as library_type,
476
+ COUNT(*) as count,
477
+ SUM(CASE WHEN status = 'READY' THEN 1 ELSE 0 END) as ready_count
478
+ FROM knowledge_sources
479
+ GROUP BY library_type;
480
+
481
+ -- Check chunk creation
482
+ SELECT COUNT(*) as chunks, s.title, s.user_id
483
+ FROM source_chunks c
484
+ JOIN knowledge_sources s ON c.source_id = s.id
485
+ GROUP BY s.title, s.user_id
486
+ ORDER BY s.created_at DESC
487
+ LIMIT 10;
488
+ ```
489
+
490
+ ---
491
+
492
+ ## Prevention
493
+
494
+ ### 1. Always Use Valid UUIDs for PostgreSQL `@db.Uuid` Columns
495
+
496
+ ```typescript
497
+ // ❌ DON'T: Use string IDs that look valid
498
+ const userId = 'user-personal-library-001';
499
+
500
+ // ✅ DO: Generate or use actual UUIDs
501
+ import { randomUUID } from 'crypto';
502
+ const userId = randomUUID(); // '0584cd60-2eb8-424c-a789-e68340a9161c'
503
+
504
+ // ✅ DO: Define constants with valid UUIDs
505
+ const PERSONAL_USER_ID = '0584cd60-2eb8-424c-a789-e68340a9161c';
506
+ ```
507
+
508
+ ### 2. Sanitize userId Input in All Upload Endpoints
509
+
510
+ ```typescript
511
+ // Apply this pattern to EVERY endpoint that accepts userId
512
+ const sanitizedUserId = userId?.trim() || null;
513
+
514
+ // Why: JavaScript's || doesn't convert empty strings to null
515
+ '' || 'fallback' // returns '' (still truthy for Prisma validation)
516
+ ('' || null) // returns null ✓
517
+ ```
518
+
519
+ ### 3. Unify Upload Systems - Single Source of Truth
520
+
521
+ ```typescript
522
+ // ❌ DON'T: Create multiple upload endpoints
523
+ /api/documents/upload → workspace_Document
524
+ /api/knowledge/sources → knowledge_sources
525
+
526
+ // ✅ DO: Use single endpoint for all uploads
527
+ /api/knowledge/sources → knowledge_sources (RAG-searchable)
528
+
529
+ // Then migrate data from old table if needed
530
+ ```
531
+
532
+ ### 4. Add Admin Toggles for Feature Scope
533
+
534
+ ```typescript
535
+ // ✅ DO: Provide UI controls for admins
536
+ <RAGLibraryToggle /> // Controls search scope
537
+
538
+ // ✅ DO: Persist settings in localStorage
539
+ localStorage.setItem('ragIncludePersonalLibrary', 'true');
540
+
541
+ // ✅ DO: React to setting changes dynamically
542
+ window.addEventListener('storage', handleSettingChange);
543
+ ```
544
+
545
+ ### 5. Test End-to-End: Upload → Process → Search
546
+
547
+ ```bash
548
+ # Don't just test upload success
549
+ # Test the FULL pipeline:
550
+
551
+ 1. Upload document (check database)
552
+ 2. Wait for processing (status = READY)
553
+ 3. Verify chunks created (source_chunks table)
554
+ 4. Test RAG search (query matches document)
555
+ 5. Verify citations appear in response
556
+ ```
557
+
558
+ ---
559
+
560
+ ## Related Patterns
561
+
562
+ - [POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md](./POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md) - SQL binding errors
563
+ - [ES_MODULE_SEED_SCRIPT_PATTERN.md](./ES_MODULE_SEED_SCRIPT_PATTERN.md) - Seed scripts
564
+ - [CONDITIONAL_SQL_MIGRATION_PATTERN.md](./CONDITIONAL_SQL_MIGRATION_PATTERN.md) - Migrations
565
+ - [../integrations/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md](../integrations/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md) - RAG implementation
566
+
567
+ ---
568
+
569
+ ## Common Mistakes to Avoid
570
+
571
+ ### ❌ Mistake #1: Using String IDs for UUID Columns
572
+ ```typescript
573
+ // This looks valid but FAILS at PostgreSQL
574
+ const userId = 'user-personal-library-001';
575
+ // Error: invalid character: expected [0-9a-fA-F-]
576
+ ```
577
+
578
+ ### ❌ Mistake #2: Not Sanitizing Empty Strings
579
+ ```typescript
580
+ // Empty string passes truthy check but fails UUID validation
581
+ const userId = formData.get('userId'); // Could be ''
582
+ await prisma.create({ data: { userId } }); // FAILS if userId === ''
583
+ ```
584
+
585
+ ### ❌ Mistake #3: Variable Reuse with Null Mapping
586
+ ```typescript
587
+ // DON'T reuse variable when null has different meanings
588
+ let userId = rawUserId === 'shared-corpus' ? null : rawUserId; // For RAG
589
+ // ... later ...
590
+ await prisma.create({ data: { userId } }); // FAILS - userId can't be null here
591
+
592
+ // DO separate variables for different purposes
593
+ const ragUserId = rawUserId === 'shared-corpus' ? null : rawUserId;
594
+ const conversationUserId = rawUserId || 'shared-corpus';
595
+ ```
596
+
597
+ ### ❌ Mistake #4: Testing Upload Without Testing Search
598
+ ```typescript
599
+ // Upload succeeds → assume it works ✗
600
+ // Upload succeeds AND RAG finds it → confirmed ✓
601
+ ```
602
+
603
+ ### ❌ Mistake #5: Hard-Coding Feature Scope
604
+ ```typescript
605
+ // DON'T hard-code Bible-only or personal-only
606
+ const userId = null; // Always Bible
607
+
608
+ // DO provide admin toggle
609
+ const userId = includePersonal ? PERSONAL_UUID : null;
610
+ ```
611
+
612
+ ---
613
+
614
+ ## Resources
615
+
616
+ - [PostgreSQL UUID Type](https://www.postgresql.org/docs/current/datatype-uuid.html)
617
+ - [Prisma UUID Field](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#uuid)
618
+ - [Node.js crypto.randomUUID()](https://nodejs.org/api/crypto.html#cryptorandomuuidoptions)
619
+ - [pgvector Documentation](https://github.com/pgvector/pgvector)
620
+ - [RAG System Architecture](https://www.pinecone.io/learn/retrieval-augmented-generation/)
621
+
622
+ ---
623
+
624
+ ## Time to Implement
625
+
626
+ **Initial Setup:**
627
+ - UUID generation and constants: **5 minutes**
628
+ - userId sanitization in endpoints: **15 minutes**
629
+ - DocumentUpload migration: **30 minutes**
630
+ - RAG toggle component: **20 minutes**
631
+ - Dual-scope search implementation: **45 minutes**
632
+
633
+ **Total: ~2 hours**
634
+
635
+ **Migration (if needed):**
636
+ - Old workspace_Document → knowledge_sources: **1 hour**
637
+
638
+ ---
639
+
640
+ ## Difficulty Level
641
+
642
+ ⭐⭐⭐⭐ (4/5) - Very Hard
643
+
644
+ **Why Hard:**
645
+ - Silent failures (upload succeeds, RAG search fails)
646
+ - Multiple layers (frontend, backend, database)
647
+ - Architectural evolution (Bible-only → personal library)
648
+ - UUID format requirements not obvious from error messages
649
+ - Empty string vs null handling subtlety
650
+
651
+ **Why Worth It:**
652
+ - Enables personal knowledge base integration
653
+ - Flexible RAG scope control for admins
654
+ - Proper PostgreSQL UUID compliance
655
+ - Unified upload system for maintainability
656
+ - End-to-end searchability verified
657
+
658
+ ---
659
+
660
+ ## Database Schema Reference
661
+
662
+ ```sql
663
+ -- knowledge_sources table (unified upload destination)
664
+ CREATE TABLE knowledge_sources (
665
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
666
+ user_id UUID, -- NULL = shared corpus (Bible), UUID = personal library
667
+ title TEXT NOT NULL,
668
+ file_type TEXT,
669
+ file_path TEXT,
670
+ source_url TEXT,
671
+ file_size INTEGER,
672
+ status TEXT DEFAULT 'PENDING', -- PENDING → PROCESSING → CHUNKING → EMBEDDING → READY | FAILED
673
+ processed_at TIMESTAMP,
674
+ error_message TEXT,
675
+ extracted_text TEXT,
676
+ created_at TIMESTAMP DEFAULT NOW(),
677
+ updated_at TIMESTAMP DEFAULT NOW()
678
+ );
679
+
680
+ -- source_chunks table (RAG search target)
681
+ CREATE TABLE source_chunks (
682
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
683
+ source_id UUID REFERENCES knowledge_sources(id) ON DELETE CASCADE,
684
+ content TEXT NOT NULL,
685
+ chunk_index INTEGER,
686
+ embedding vector(768), -- pgvector extension
687
+ created_at TIMESTAMP DEFAULT NOW()
688
+ );
689
+
690
+ -- Indexes for performance
691
+ CREATE INDEX idx_source_chunks_embedding ON source_chunks
692
+ USING ivfflat (embedding vector_cosine_ops);
693
+
694
+ CREATE INDEX idx_knowledge_sources_user_id ON knowledge_sources(user_id);
695
+ CREATE INDEX idx_knowledge_sources_status ON knowledge_sources(status);
696
+ ```
697
+
698
+ ---
699
+
700
+ ## Author Notes
701
+
702
+ **What Made This Difficult:**
703
+
704
+ 1. **Silent Failures** - Upload succeeded, but RAG search didn't work. No errors in console or logs. Required full end-to-end testing to discover.
705
+
706
+ 2. **UUID Format Confusion** - String IDs like `'user-personal-library-001'` look valid in code, pass frontend validation, but fail at PostgreSQL layer with cryptic error messages.
707
+
708
+ 3. **Empty String vs Null** - JavaScript's `||` operator doesn't convert empty strings to null. This caused Prisma UUID validation failures that were hard to trace.
709
+
710
+ 4. **Architectural Evolution** - System started with Bible-only corpus (userId=null), then added personal library support. Old code assumed null, new code needed UUID. Migration path not obvious.
711
+
712
+ 5. **Dual Upload Systems** - Two separate endpoints created during different phases stored data in different tables. RAG only searched one table, making documents invisible.
713
+
714
+ **Key Learnings:**
715
+
716
+ - **Always test end-to-end**: Upload → Processing → RAG Search → Citations
717
+ - **UUID validation happens at DB layer**, not in application code
718
+ - **Sanitize input at boundaries**: Convert empty strings to null before Prisma
719
+ - **Separate variables for different purposes**: Don't reuse when null has different meanings
720
+ - **Provide admin flexibility**: Toggles > hard-coded feature scope
721
+
722
+ **Time Saved for Next Developer:**
723
+
724
+ Without this skill: **3-5 hours** of debugging UUID errors, tracing table misalignment, and implementing RAG scope controls from scratch.
725
+
726
+ With this skill: **1-2 hours** following proven patterns with all gotchas documented.
727
+
728
+ ---
729
+
730
+ **Last Updated:** February 8, 2026
731
+ **Status:** ✅ Tested and verified in production
732
+ **Project:** Ministry LLM - Biblical Study RAG System