@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,520 @@
1
+ # AI Response Database Caching - Persistent Caching for Expensive AI-Generated Content
2
+
3
+ ## The Problem
4
+
5
+ AI APIs (Claude, Gemini, GPT-4) are expensive and slow. Every regeneration costs money and time:
6
+ - **Chapter outlines:** ~$0.02-0.05 per generation (2-5 seconds)
7
+ - **Knowledge graphs:** ~$0.10-0.50 per graph (10-30 seconds)
8
+ - **Pattern discovery:** ~$0.05-0.15 per analysis (5-15 seconds)
9
+
10
+ Without caching, users experience:
11
+ - ❌ Slow load times waiting for AI regeneration
12
+ - ❌ Expensive API costs for repeated requests
13
+ - ❌ Lost data when refreshing or navigating away
14
+ - ❌ Poor UX (waiting for content that was already generated)
15
+
16
+ ### Example Scenario
17
+
18
+ User studies Genesis 1, generates a chapter outline. Next week they return to Genesis 1:
19
+ - **Without caching:** Regenerate the outline ($0.03, 3 seconds wait)
20
+ - **With caching:** Load instantly from database (free, <100ms)
21
+
22
+ **Multiply by hundreds of users and chapters = massive savings.**
23
+
24
+ ### Why It Was Hard
25
+
26
+ 1. **Data structure mismatch** - AI responses are complex JSON that don't fit simple text columns
27
+ 2. **Cache invalidation** - When to regenerate vs use cached data?
28
+ 3. **Provider switching** - Different AI providers (Claude vs Gemini) produce different formats
29
+ 4. **Forever persistence** - User expectation: "I generated this, it should stay forever"
30
+ 5. **PostgreSQL constraints** - Need proper indexing for fast lookups without table scans
31
+
32
+ ### Impact
33
+
34
+ **Before caching:**
35
+ - Page load: 3-5 seconds (AI generation)
36
+ - Cost per request: $0.02-0.50
37
+ - Data persistence: None (lost on refresh)
38
+
39
+ **After caching:**
40
+ - Page load: <100ms (database query)
41
+ - Cost per request: $0.00 (cache hit)
42
+ - Data persistence: Forever in PostgreSQL
43
+
44
+ ---
45
+
46
+ ## The Solution
47
+
48
+ ### Architecture: Database-First Caching Pattern
49
+
50
+ ```
51
+ 1. Check cache in PostgreSQL
52
+ └─ Cache hit? → Return instantly
53
+ └─ Cache miss? → Generate with AI → Save to DB → Return
54
+
55
+ 2. Force regeneration (user request)
56
+ └─ Skip cache → Generate with AI → Update DB → Return
57
+ ```
58
+
59
+ ### Root Cause
60
+
61
+ Traditional approaches treat AI responses as ephemeral (localStorage, memory cache). But users expect **permanent persistence** - "I generated this content, it should be saved forever."
62
+
63
+ Solution: Treat AI-generated content as **first-class data** stored in PostgreSQL with proper schema design.
64
+
65
+ ---
66
+
67
+ ## Implementation
68
+
69
+ ### Step 1: Design Database Schema
70
+
71
+ Use Prisma ORM for type-safe database access:
72
+
73
+ ```prisma
74
+ // schema.prisma
75
+
76
+ /// Cached chapter outlines - persist generated outlines forever
77
+ model CachedChapterOutline {
78
+ id String @id @default(cuid())
79
+ bookName String
80
+ chapter Int
81
+ provider String // "claude" or "gemini"
82
+ outline Json // Full ChapterOutline JSON
83
+
84
+ createdAt DateTime @default(now())
85
+ updatedAt DateTime @updatedAt
86
+
87
+ @@unique([bookName, chapter]) // One cached outline per chapter
88
+ @@index([bookName, chapter]) // Fast lookups
89
+ }
90
+
91
+ /// Cached knowledge graphs - saves Gemini API costs
92
+ model KnowledgeGraph {
93
+ id String @id @default(uuid()) @db.Uuid
94
+ userId String @unique // One graph per user
95
+
96
+ sourceCount Int
97
+ nodeCount Int
98
+ edgeCount Int
99
+
100
+ graphData Json @db.JsonB // Full graph structure
101
+ isStale Boolean @default(false) // Invalidation flag
102
+
103
+ createdAt DateTime @default(now())
104
+ updatedAt DateTime @updatedAt
105
+
106
+ @@index([userId])
107
+ @@index([isStale]) // Find graphs needing regeneration
108
+ }
109
+ ```
110
+
111
+ **Key design decisions:**
112
+ - `Json` column type for flexible AI response structures
113
+ - Unique constraints prevent duplicate caching
114
+ - Composite indexes for fast lookups (avoid table scans)
115
+ - `provider` field tracks which AI generated the content
116
+ - `isStale` flag for cache invalidation strategy
117
+
118
+ ### Step 2: Implement Cache-First Service Pattern
119
+
120
+ ```typescript
121
+ // server/services/content-generator.service.ts
122
+
123
+ import { PrismaClient } from '@prisma/client';
124
+ const prisma = new PrismaClient();
125
+
126
+ interface ChapterOutline {
127
+ book: string;
128
+ chapter: number;
129
+ title: string;
130
+ structure: any[];
131
+ themes: string[];
132
+ keyVerses: string[];
133
+ }
134
+
135
+ export async function getChapterOutline(
136
+ bookName: string,
137
+ chapter: number,
138
+ provider: 'claude' | 'gemini' = 'claude',
139
+ force: boolean = false
140
+ ): Promise<{ outline: ChapterOutline; cached: boolean }> {
141
+
142
+ // STEP 1: Check cache (unless force regeneration)
143
+ if (!force) {
144
+ const cached = await prisma.cachedChapterOutline.findUnique({
145
+ where: { bookName_chapter: { bookName, chapter } }
146
+ });
147
+
148
+ if (cached) {
149
+ console.log(`[Cache HIT] ${bookName} ${chapter}`);
150
+ return {
151
+ outline: cached.outline as ChapterOutline,
152
+ cached: true
153
+ };
154
+ }
155
+ }
156
+
157
+ // STEP 2: Cache miss - generate with AI
158
+ console.log(`[Cache MISS] Generating ${bookName} ${chapter} with ${provider}`);
159
+ const outline = await generateWithAI(bookName, chapter, provider);
160
+
161
+ // STEP 3: Save to database for future requests
162
+ await prisma.cachedChapterOutline.upsert({
163
+ where: { bookName_chapter: { bookName, chapter } },
164
+ update: {
165
+ outline,
166
+ provider,
167
+ updatedAt: new Date()
168
+ },
169
+ create: {
170
+ bookName,
171
+ chapter,
172
+ provider,
173
+ outline
174
+ }
175
+ });
176
+
177
+ console.log(`[Cache SAVED] ${bookName} ${chapter}`);
178
+ return { outline, cached: false };
179
+ }
180
+
181
+ async function generateWithAI(
182
+ bookName: string,
183
+ chapter: number,
184
+ provider: 'claude' | 'gemini'
185
+ ): Promise<ChapterOutline> {
186
+ // Call AI API (Claude/Gemini) to generate outline
187
+ // This is the expensive operation we're caching
188
+ const response = await callAIProvider(provider, bookName, chapter);
189
+ return parseOutlineResponse(response);
190
+ }
191
+ ```
192
+
193
+ ### Step 3: Add Force Regeneration Parameter
194
+
195
+ Allow users to bypass cache when needed:
196
+
197
+ ```typescript
198
+ // server/routes/content.ts
199
+
200
+ router.get('/api/chapters/:book/:chapter/outline', async (req, res) => {
201
+ const { book, chapter } = req.params;
202
+ const force = req.query.force === 'true'; // ?force=true to skip cache
203
+ const provider = req.query.provider || 'claude';
204
+
205
+ const result = await getChapterOutline(book, parseInt(chapter), provider, force);
206
+
207
+ res.json({
208
+ ...result.outline,
209
+ cached: result.cached, // Tell frontend if this was cached
210
+ generatedAt: new Date().toISOString()
211
+ });
212
+ });
213
+ ```
214
+
215
+ ### Step 4: Handle Cache Invalidation
216
+
217
+ Two strategies:
218
+
219
+ **Strategy 1: Stale flag (soft delete)**
220
+ ```typescript
221
+ // Mark cache as stale without deleting
222
+ await prisma.knowledgeGraph.update({
223
+ where: { userId },
224
+ data: { isStale: true }
225
+ });
226
+
227
+ // Regenerate stale caches in background job
228
+ const staleGraphs = await prisma.knowledgeGraph.findMany({
229
+ where: { isStale: true }
230
+ });
231
+ ```
232
+
233
+ **Strategy 2: Time-based invalidation**
234
+ ```typescript
235
+ // Check if cache is older than 30 days
236
+ const cached = await prisma.cachedChapterOutline.findUnique({
237
+ where: { bookName_chapter: { bookName, chapter } }
238
+ });
239
+
240
+ const isExpired = cached &&
241
+ Date.now() - cached.updatedAt.getTime() > 30 * 24 * 60 * 60 * 1000;
242
+
243
+ if (isExpired) {
244
+ // Regenerate
245
+ }
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Testing the Solution
251
+
252
+ ### Test 1: Cache Miss → Cache Hit
253
+
254
+ ```bash
255
+ # First request (cache miss)
256
+ time curl http://localhost:3005/api/chapters/Genesis/1/outline
257
+ # Response time: 3.2s
258
+ # Response includes: "cached": false
259
+
260
+ # Second request (cache hit)
261
+ time curl http://localhost:3005/api/chapters/Genesis/1/outline
262
+ # Response time: 0.08s ⚡
263
+ # Response includes: "cached": true
264
+ ```
265
+
266
+ **Result:** 40x faster on cache hit!
267
+
268
+ ### Test 2: Force Regeneration
269
+
270
+ ```bash
271
+ curl "http://localhost:3005/api/chapters/Genesis/1/outline?force=true"
272
+ # Bypasses cache, calls AI API, updates database
273
+ # Response: "cached": false
274
+ ```
275
+
276
+ ### Test 3: Database Query Performance
277
+
278
+ ```sql
279
+ -- Query with composite index (FAST)
280
+ EXPLAIN ANALYZE
281
+ SELECT * FROM cached_chapter_outlines
282
+ WHERE book_name = 'Genesis' AND chapter = 1;
283
+
284
+ -- Result: Index Scan, 0.05ms ✓
285
+
286
+ -- Without index (SLOW)
287
+ -- Result: Seq Scan, 15ms ❌
288
+ ```
289
+
290
+ ### Test 4: Cost Savings Over Time
291
+
292
+ ```javascript
293
+ // Track API cost savings
294
+ const stats = await prisma.cachedChapterOutline.aggregate({
295
+ _count: { id: true }
296
+ });
297
+
298
+ const cacheHits = stats._count.id;
299
+ const estimatedSavings = cacheHits * 0.03; // $0.03 per generation
300
+
301
+ console.log(`Cache hits: ${cacheHits}`);
302
+ console.log(`Estimated savings: $${estimatedSavings.toFixed(2)}`);
303
+
304
+ // After 1 week with 100 users:
305
+ // Cache hits: 2,847
306
+ // Estimated savings: $85.41 ✓
307
+ ```
308
+
309
+ ---
310
+
311
+ ## Prevention & Best Practices
312
+
313
+ ### 1. Always Use Composite Indexes
314
+
315
+ ```prisma
316
+ @@unique([bookName, chapter]) // Uniqueness constraint
317
+ @@index([bookName, chapter]) // Fast lookup index
318
+ ```
319
+
320
+ Without proper indexing, PostgreSQL will do expensive table scans.
321
+
322
+ ### 2. Use Json/JsonB Column Types
323
+
324
+ ```prisma
325
+ outline Json // Standard JSON
326
+ graphData Json @db.JsonB // Binary JSON (faster queries, supports indexing)
327
+ ```
328
+
329
+ `JsonB` is preferred for:
330
+ - Faster queries
331
+ - Supports GIN indexes
332
+ - Slightly slower writes (negligible)
333
+
334
+ ### 3. Track Cache Metadata
335
+
336
+ ```prisma
337
+ provider String // Which AI generated this
338
+ createdAt DateTime // Original generation time
339
+ updatedAt DateTime // Last regeneration
340
+ ```
341
+
342
+ Helps debug issues and understand cache patterns.
343
+
344
+ ### 4. Implement Cache Warming
345
+
346
+ Pre-generate common content:
347
+
348
+ ```typescript
349
+ // Warm cache for popular chapters
350
+ const popularChapters = [
351
+ { book: 'Genesis', chapter: 1 },
352
+ { book: 'John', chapter: 3 },
353
+ { book: 'Psalm', chapter: 23 }
354
+ ];
355
+
356
+ for (const ref of popularChapters) {
357
+ await getChapterOutline(ref.book, ref.chapter);
358
+ }
359
+ ```
360
+
361
+ ### 5. Monitor Cache Hit Rate
362
+
363
+ ```typescript
364
+ // Track cache performance
365
+ const cacheHitRate = await prisma.$queryRaw`
366
+ SELECT
367
+ COUNT(*) FILTER (WHERE cached = true) as hits,
368
+ COUNT(*) as total,
369
+ ROUND(COUNT(*) FILTER (WHERE cached = true)::numeric / COUNT(*) * 100, 2) as hit_rate
370
+ FROM request_logs;
371
+ `;
372
+
373
+ // Target: >80% cache hit rate
374
+ ```
375
+
376
+ ---
377
+
378
+ ## Common Mistakes to Avoid
379
+
380
+ ### ❌ Mistake 1: Using localStorage for AI responses
381
+
382
+ ```javascript
383
+ // BAD: Lost on browser clear, not shared across devices
384
+ localStorage.setItem('outline', JSON.stringify(outline));
385
+ ```
386
+
387
+ **Fix:** Use database for permanent, cross-device storage.
388
+
389
+ ### ❌ Mistake 2: No unique constraints
390
+
391
+ ```prisma
392
+ // BAD: Allows duplicate caching
393
+ model CachedOutline {
394
+ bookName String
395
+ chapter Int
396
+ outline Json
397
+ }
398
+ ```
399
+
400
+ **Fix:** Add unique constraint to prevent duplicates.
401
+
402
+ ### ❌ Mistake 3: Not handling cache invalidation
403
+
404
+ Users update content, but cache never refreshes.
405
+
406
+ **Fix:** Implement `force=true` parameter or stale flag.
407
+
408
+ ### ❌ Mistake 4: Missing indexes
409
+
410
+ Queries get slower as table grows.
411
+
412
+ **Fix:** Add composite indexes on lookup columns.
413
+
414
+ ### ❌ Mistake 5: Caching errors
415
+
416
+ ```typescript
417
+ // BAD: Cache API errors
418
+ catch (err) {
419
+ await prisma.cache.create({ data: { error: err.message } });
420
+ }
421
+ ```
422
+
423
+ **Fix:** Only cache successful AI responses.
424
+
425
+ ---
426
+
427
+ ## Real-World Results
428
+
429
+ ### Ministry LLM Project (Feb 2026)
430
+
431
+ **Before caching:**
432
+ - Chapter outline load: 3-5 seconds
433
+ - Knowledge graph generation: 15-30 seconds
434
+ - Monthly AI API cost: ~$150 (projected)
435
+
436
+ **After caching:**
437
+ - Chapter outline load: 80-120ms (cached)
438
+ - Knowledge graph: Instant (cached)
439
+ - Monthly AI API cost: ~$25 (83% reduction)
440
+
441
+ **User feedback:**
442
+ > "It's so fast now! And my outlines don't disappear when I refresh."
443
+
444
+ ### Key Metrics
445
+
446
+ | Metric | Before | After | Improvement |
447
+ |--------|--------|-------|-------------|
448
+ | Avg load time | 3.2s | 0.09s | **35x faster** |
449
+ | Cache hit rate | 0% | 94% | N/A |
450
+ | Monthly API cost | $150 | $25 | **83% savings** |
451
+ | Data persistence | None | Forever | **∞% better** |
452
+
453
+ ---
454
+
455
+ ## Related Patterns
456
+
457
+ - [API Response Caching Strategies](../patterns-standards/API_CACHING_STRATEGIES.md)
458
+ - [PostgreSQL Performance Optimization](../database-solutions/POSTGRES_PERFORMANCE.md)
459
+ - [Prisma ORM Best Practices](../database-solutions/PRISMA_BEST_PRACTICES.md)
460
+ - [AI Provider Abstraction](../integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md)
461
+
462
+ ---
463
+
464
+ ## Resources
465
+
466
+ - **Prisma JSON Fields:** https://www.prisma.io/docs/concepts/components/prisma-schema/data-model#json
467
+ - **PostgreSQL JSONB:** https://www.postgresql.org/docs/current/datatype-json.html
468
+ - **Cache Invalidation Strategies:** https://martinfowler.com/bliki/TwoHardThings.html
469
+ - **Anthropic Claude Pricing:** https://www.anthropic.com/pricing
470
+ - **Google Gemini Pricing:** https://ai.google.dev/pricing
471
+
472
+ ---
473
+
474
+ ## Time to Implement
475
+
476
+ **30-60 minutes** for basic caching
477
+ **2-3 hours** for production-ready implementation with monitoring
478
+
479
+ ## Difficulty Level
480
+
481
+ ⭐⭐⭐ (3/5) - Moderate
482
+
483
+ **Easy parts:**
484
+ - Prisma schema design
485
+ - Basic cache check/save logic
486
+
487
+ **Challenging parts:**
488
+ - Cache invalidation strategy
489
+ - Handling provider differences
490
+ - Query performance optimization
491
+
492
+ ---
493
+
494
+ ## Author Notes
495
+
496
+ This pattern saved us **$125/month** in the Ministry LLM project and improved user experience dramatically. The key insight: AI-generated content is **expensive data** - treat it like gold and persist it properly.
497
+
498
+ **Most important lesson:** Users expect generated content to persist "forever". Database caching matches this mental model better than ephemeral caching (localStorage, Redis TTL).
499
+
500
+ **When NOT to use this pattern:**
501
+ - Real-time data that changes frequently
502
+ - Personalized content that differs per user
503
+ - Content with strict compliance requirements (may need audit trail)
504
+
505
+ **When to definitely use this pattern:**
506
+ - AI-generated summaries, outlines, analyses
507
+ - Expensive API calls ($0.01+ per request)
508
+ - Content users expect to persist
509
+ - High read-to-write ratio (read 10x+ more than generate)
510
+
511
+ ---
512
+
513
+ **Commits implementing this pattern:**
514
+ - `9eddb68` - Persistent database caching for chapter outlines
515
+ - `1d25867` - Database caching for bird's eye view
516
+ - `7b4dbcd` - Configurable AI provider selection
517
+
518
+ **Project:** Ministry LLM - AI-Powered Bible Study Platform
519
+ **Date:** February 9, 2026
520
+ **Impact:** 83% cost reduction, 35x faster load times
@@ -0,0 +1,119 @@
1
+ # Conditional SQL Migration Pattern - Idempotent Database Migrations
2
+
3
+ ## The Problem
4
+
5
+ Running migrations multiple times causes errors or duplicates. Need migrations that can run safely whether or not the changes already exist.
6
+
7
+ ### Error Messages
8
+ ```
9
+ ERROR: relation "table_name" already exists
10
+ ERROR: column "column_name" of relation "table_name" already exists
11
+ ERROR: duplicate key value violates unique constraint
12
+ ```
13
+
14
+ ---
15
+
16
+ ## The Solution
17
+
18
+ ### Pattern 1: CREATE TABLE IF NOT EXISTS
19
+
20
+ ```sql
21
+ CREATE TABLE IF NOT EXISTS time_slots (
22
+ id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
23
+ code VARCHAR(50) UNIQUE NOT NULL,
24
+ display_name VARCHAR(100) NOT NULL,
25
+ is_active BOOLEAN DEFAULT TRUE,
26
+ created_at TIMESTAMPTZ DEFAULT NOW()
27
+ );
28
+ ```
29
+
30
+ ### Pattern 2: ADD COLUMN IF NOT EXISTS
31
+
32
+ ```sql
33
+ ALTER TABLE time_slots
34
+ ADD COLUMN IF NOT EXISTS default_duration_minutes INTEGER DEFAULT 60;
35
+ ```
36
+
37
+ ### Pattern 3: INSERT Only If Empty (Seed Data)
38
+
39
+ ```sql
40
+ INSERT INTO time_slots (code, display_name, typical_time, display_order)
41
+ SELECT code, display_name, typical_time, display_order
42
+ FROM (VALUES
43
+ ('morning', 'Morning Intimacy', '10:00 AM EST', 1),
44
+ ('noon', 'Noon Day', '1:00 PM - 4:00 PM', 2),
45
+ ('evening', 'Evening Incense', '7:30 PM EST', 3)
46
+ ) AS v(code, display_name, typical_time, display_order)
47
+ WHERE NOT EXISTS (SELECT 1 FROM time_slots LIMIT 1);
48
+ ```
49
+
50
+ ### Pattern 4: UPSERT (Insert or Update)
51
+
52
+ ```sql
53
+ INSERT INTO time_slots (code, display_name)
54
+ VALUES ('morning', 'Morning Intimacy')
55
+ ON CONFLICT (code) DO UPDATE SET display_name = EXCLUDED.display_name;
56
+ ```
57
+
58
+ ### Pattern 5: Conditional UPDATE
59
+
60
+ ```sql
61
+ -- Only update if value is still the default
62
+ UPDATE time_slots
63
+ SET default_duration_minutes = 90
64
+ WHERE code = 'morning' AND default_duration_minutes = 60;
65
+ ```
66
+
67
+ ### Pattern 6: DROP IF EXISTS
68
+
69
+ ```sql
70
+ DROP TABLE IF EXISTS old_table;
71
+ DROP INDEX IF EXISTS old_index;
72
+ ALTER TABLE my_table DROP COLUMN IF EXISTS old_column;
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Complete Migration Example
78
+
79
+ ```sql
80
+ -- Migration: 075b_seed_time_slots.sql
81
+ -- Idempotent: Safe to run multiple times
82
+
83
+ -- 1. Ensure table exists
84
+ CREATE TABLE IF NOT EXISTS time_slots (
85
+ id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
86
+ code VARCHAR(50) UNIQUE NOT NULL,
87
+ display_name VARCHAR(100) NOT NULL,
88
+ display_order INTEGER DEFAULT 0,
89
+ is_active BOOLEAN DEFAULT TRUE
90
+ );
91
+
92
+ -- 2. Seed only if empty
93
+ INSERT INTO time_slots (code, display_name, display_order)
94
+ SELECT * FROM (VALUES
95
+ ('morning', 'Morning', 1),
96
+ ('evening', 'Evening', 2)
97
+ ) AS v(code, display_name, display_order)
98
+ WHERE NOT EXISTS (SELECT 1 FROM time_slots LIMIT 1);
99
+
100
+ -- 3. Verify
101
+ SELECT COUNT(*) as count FROM time_slots;
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Key Rules
107
+
108
+ 1. Always use `IF NOT EXISTS` / `IF EXISTS` clauses
109
+ 2. Use `ON CONFLICT` for upserts instead of checking first
110
+ 3. For seed data, check if table is empty before inserting
111
+ 4. Add comments explaining the migration purpose
112
+
113
+ ## Difficulty Level
114
+ ⭐⭐ (2/5)
115
+
116
+ ---
117
+
118
+ **Author Notes:**
119
+ Idempotent migrations save hours of debugging. If a migration can run twice without error, deployment becomes much safer.