@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,484 @@
1
+ # Headless CMS Architecture
2
+
3
+ > Comprehensive guide to decoupled content architecture: content API design, cache invalidation, multi-channel delivery, and integration patterns for Next.js and beyond.
4
+
5
+ **When to use:** Designing or evaluating a content platform that needs to serve content to multiple frontends (web, mobile, email, voice), or migrating from a monolithic CMS (WordPress) to a headless architecture.
6
+ **Stack:** Node.js/Express or Bun, Next.js, PostgreSQL, any CDN (Cloudflare/Vercel/Fastly)
7
+
8
+ ---
9
+
10
+ ## What "Headless" Means
11
+
12
+ **Traditional (monolithic) CMS:**
13
+ ```
14
+ [CMS Backend + Database]
15
+ |
16
+ [Template Engine] ← CMS controls how content looks
17
+ |
18
+ [HTML to Browser]
19
+ ```
20
+
21
+ **Headless CMS:**
22
+ ```
23
+ [CMS Backend + Database]
24
+ |
25
+ [Content API] ← CMS only provides structured content
26
+ / \
27
+ [Web Frontend] [Mobile App] [Email] [Voice] [Any Consumer]
28
+ ```
29
+
30
+ The CMS becomes a **content repository** with an API. Every consumer fetches the same structured data and renders it however it needs to.
31
+
32
+ ---
33
+
34
+ ## Architecture Diagram
35
+
36
+ ```
37
+ ┌─────────────────────────────────────────────────────────┐
38
+ │ Content Platform │
39
+ │ │
40
+ │ ┌──────────┐ ┌─────────────┐ ┌─────────────────┐ │
41
+ │ │ Author │ │ CMS Admin │ │ Media Storage │ │
42
+ │ │ Workflow │───►│ UI │ │ (S3 / R2 / CDN) │ │
43
+ │ └──────────┘ └──────┬──────┘ └────────┬────────┘ │
44
+ │ │ │ │
45
+ │ ┌──────▼──────┐ │ │
46
+ │ │ PostgreSQL │◄────────────┘ │
47
+ │ │ (content) │ │
48
+ │ └──────┬──────┘ │
49
+ │ │ │
50
+ │ ┌──────▼──────┐ │
51
+ │ │ Content API │ ← REST or GraphQL │
52
+ │ │ /api/v1/ │ │
53
+ │ └──────┬──────┘ │
54
+ └──────────────────────────┼──────────────────────────────┘
55
+
56
+ ┌────────────┼────────────┐
57
+ │ │ │
58
+ ┌─────────▼─┐ ┌───────▼───┐ ┌────▼──────────┐
59
+ │ CDN / │ │ Mobile │ │ Newsletter / │
60
+ │ Next.js │ │ App API │ │ Email ESP │
61
+ │ (ISR) │ │ (React N) │ │ (Resend etc) │
62
+ └─────────┬─┘ └───────────┘ └───────────────┘
63
+
64
+ ┌─────────▼──────────┐
65
+ │ End User Browser │
66
+ └─────────────────────┘
67
+ ```
68
+
69
+ ---
70
+
71
+ ## REST vs GraphQL Content API
72
+
73
+ ### Use REST when:
74
+ - Your content types are simple and relatively fixed
75
+ - Consumers are varied (mobile devs, third-party integrators) — REST is universally understood
76
+ - You want CDN-cacheable responses (GET requests with predictable URLs)
77
+ - Team is not yet familiar with GraphQL
78
+
79
+ ### Use GraphQL when:
80
+ - Different consumers need different subsets of the same content (web wants full post, mobile wants summary only)
81
+ - Content is deeply relational (post → author → bio → social links → recent posts)
82
+ - You want to avoid over-fetching or under-fetching
83
+ - You're building a developer platform where external devs write their own queries
84
+
85
+ ### REST Content API Design
86
+
87
+ ```typescript
88
+ // REST endpoints for a content API
89
+ GET /api/v1/posts // list (paginated, filterable)
90
+ GET /api/v1/posts/:slug // single post by slug
91
+ GET /api/v1/posts/:slug/related // related posts
92
+ GET /api/v1/categories // all categories
93
+ GET /api/v1/categories/:slug/posts // posts in category
94
+ GET /api/v1/authors/:id // author profile
95
+ GET /api/v1/search?q=... // full-text search
96
+ GET /api/v1/tags // all tags
97
+ GET /api/v1/feed.rss // RSS feed
98
+
99
+ // Query parameters for list endpoints:
100
+ // ?page=1&limit=20
101
+ // ?category=typescript
102
+ // ?tag=tutorial,beginner
103
+ // ?status=published (admin only)
104
+ // ?sort=published_at:desc // or views:desc, title:asc
105
+ // ?fields=id,title,slug,excerpt // field selection (reduces payload)
106
+ ```
107
+
108
+ ### Response envelope pattern:
109
+
110
+ ```json
111
+ {
112
+ "data": {
113
+ "id": "uuid",
114
+ "title": "My Post",
115
+ "slug": "my-post",
116
+ "excerpt": "...",
117
+ "published_at": "2026-03-08T10:00:00Z",
118
+ "author": { "id": "uuid", "name": "Thierry", "avatar": "..." },
119
+ "categories": [{ "id": "uuid", "name": "TypeScript", "slug": "typescript" }],
120
+ "tags": ["tutorial", "beginner"],
121
+ "reading_time_minutes": 5
122
+ },
123
+ "meta": {}
124
+ }
125
+
126
+ // List response:
127
+ {
128
+ "data": [...],
129
+ "pagination": {
130
+ "total": 142,
131
+ "page": 1,
132
+ "limit": 20,
133
+ "pages": 8,
134
+ "next_cursor": "abc123"
135
+ }
136
+ }
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Content Modeling
142
+
143
+ Design content types to be **channel-agnostic** — the same content should work on web, mobile, email, and voice without transformation.
144
+
145
+ ```
146
+ Content Type: Post
147
+ ├── id (UUID)
148
+ ├── title (string, required)
149
+ ├── slug (string, unique, URL-safe)
150
+ ├── excerpt (string, 150-300 chars — used as email preview, social meta)
151
+ ├── body_json (TipTap/ProseMirror JSON — lossless, renderable anywhere)
152
+ ├── body_html (string — cached render of body_json)
153
+ ├── featured_image (object: { url, alt, width, height })
154
+ ├── author (relationship → Author)
155
+ ├── categories (relationship → Category[])
156
+ ├── tags (string[])
157
+ ├── status (enum: draft|in_review|scheduled|published|archived)
158
+ ├── published_at (timestamp UTC)
159
+ ├── scheduled_at (timestamp UTC)
160
+ ├── seo_title (string — overrides title for <title> tag)
161
+ ├── seo_description (string — overrides excerpt for <meta description>)
162
+ ├── og_image (string — overrides featured_image for Open Graph)
163
+ ├── reading_time_minutes (computed)
164
+ ├── word_count (computed)
165
+ └── created_at, updated_at (timestamps)
166
+ ```
167
+
168
+ **Key principle:** Store content in the most flexible format (JSON), cache the rendered format (HTML). Compute derived fields (reading_time, word_count) on write, not on read.
169
+
170
+ ---
171
+
172
+ ## Cache Invalidation Strategy
173
+
174
+ The hardest problem in headless CMS. When content changes, cached pages must be invalidated.
175
+
176
+ ### Strategy 1: Time-Based (ISR — Incremental Static Regeneration)
177
+
178
+ ```typescript
179
+ // Next.js page with ISR
180
+ export async function getStaticProps({ params }) {
181
+ const post = await fetch(`${process.env.CMS_API_URL}/posts/${params.slug}`).then(r => r.json());
182
+
183
+ return {
184
+ props: { post },
185
+ revalidate: 60, // Regenerate this page at most once per 60 seconds
186
+ };
187
+ }
188
+ ```
189
+
190
+ Simple but stale up to `revalidate` seconds. Acceptable for blogs, not acceptable for breaking news.
191
+
192
+ ### Strategy 2: On-Demand Revalidation (Webhook → Next.js)
193
+
194
+ ```typescript
195
+ // CMS side: fire webhook when content is published/updated
196
+ async function notifyFrontend(contentId: string, slug: string, event: string) {
197
+ const webhookSecret = process.env.REVALIDATION_SECRET;
198
+
199
+ await fetch(`${process.env.FRONTEND_URL}/api/revalidate`, {
200
+ method: 'POST',
201
+ headers: {
202
+ 'Content-Type': 'application/json',
203
+ 'x-webhook-secret': webhookSecret,
204
+ },
205
+ body: JSON.stringify({ contentId, slug, event }),
206
+ });
207
+ }
208
+
209
+ // Next.js side: /api/revalidate route
210
+ // app/api/revalidate/route.ts
211
+ import { revalidatePath, revalidateTag } from 'next/cache';
212
+ import { NextRequest, NextResponse } from 'next/server';
213
+
214
+ export async function POST(request: NextRequest) {
215
+ const secret = request.headers.get('x-webhook-secret');
216
+
217
+ if (secret !== process.env.REVALIDATION_SECRET) {
218
+ return NextResponse.json({ error: 'Invalid secret' }, { status: 401 });
219
+ }
220
+
221
+ const { slug, event } = await request.json();
222
+
223
+ // Revalidate specific paths
224
+ revalidatePath(`/posts/${slug}`);
225
+ revalidatePath('/posts'); // index page
226
+ revalidatePath('/'); // home page (if it shows recent posts)
227
+ revalidateTag('posts'); // all pages tagged "posts"
228
+
229
+ return NextResponse.json({
230
+ revalidated: true,
231
+ now: Date.now(),
232
+ slug,
233
+ event,
234
+ });
235
+ }
236
+ ```
237
+
238
+ ### Strategy 3: CDN Purge (Cloudflare/Fastly)
239
+
240
+ ```typescript
241
+ // Purge specific URLs from Cloudflare cache on publish
242
+ async function purgeCloudflareCache(urls: string[]): Promise<void> {
243
+ const response = await fetch(
244
+ `https://api.cloudflare.com/client/v4/zones/${process.env.CF_ZONE_ID}/purge_cache`,
245
+ {
246
+ method: 'POST',
247
+ headers: {
248
+ 'Authorization': `Bearer ${process.env.CF_API_TOKEN}`,
249
+ 'Content-Type': 'application/json',
250
+ },
251
+ body: JSON.stringify({ files: urls }),
252
+ }
253
+ );
254
+
255
+ if (!response.ok) {
256
+ throw new Error(`Cloudflare purge failed: ${response.statusText}`);
257
+ }
258
+ }
259
+
260
+ // Call this in the onPublishSuccess callback:
261
+ onPublishSuccess: async (id, title) => {
262
+ const { rows } = await db.query('SELECT slug FROM content WHERE id = $1', [id]);
263
+ if (rows[0]?.slug) {
264
+ await purgeCloudflareCache([
265
+ `https://yourdomain.com/posts/${rows[0].slug}`,
266
+ `https://yourdomain.com/posts`,
267
+ `https://yourdomain.com/`,
268
+ ]);
269
+ }
270
+ }
271
+ ```
272
+
273
+ ---
274
+
275
+ ## Webhook Pattern: CMS → Frontend
276
+
277
+ ```typescript
278
+ // lib/webhooks.ts
279
+
280
+ interface WebhookEvent {
281
+ event: 'content.published' | 'content.updated' | 'content.archived' | 'content.scheduled';
282
+ contentId: string;
283
+ contentType: string;
284
+ slug?: string;
285
+ timestamp: string;
286
+ }
287
+
288
+ async function fireWebhooks(event: WebhookEvent): Promise<void> {
289
+ const webhooks = await db.query(
290
+ "SELECT url, secret FROM webhooks WHERE events @> ARRAY[$1]::text[] AND active = true",
291
+ [event.event]
292
+ );
293
+
294
+ const payload = JSON.stringify(event);
295
+ const timestamp = Date.now().toString();
296
+
297
+ await Promise.allSettled(
298
+ webhooks.rows.map(async (webhook) => {
299
+ const signature = createHmacSignature(payload, webhook.secret, timestamp);
300
+
301
+ try {
302
+ const res = await fetch(webhook.url, {
303
+ method: 'POST',
304
+ headers: {
305
+ 'Content-Type': 'application/json',
306
+ 'X-Webhook-Signature': signature,
307
+ 'X-Webhook-Timestamp': timestamp,
308
+ },
309
+ body: payload,
310
+ signal: AbortSignal.timeout(10_000), // 10s timeout
311
+ });
312
+
313
+ if (!res.ok) {
314
+ console.error(`Webhook ${webhook.url} responded ${res.status}`);
315
+ }
316
+ } catch (err) {
317
+ console.error(`Webhook delivery failed to ${webhook.url}:`, err);
318
+ }
319
+ })
320
+ );
321
+ }
322
+
323
+ import { createHmac } from 'crypto';
324
+
325
+ function createHmacSignature(payload: string, secret: string, timestamp: string): string {
326
+ return createHmac('sha256', secret)
327
+ .update(`${timestamp}.${payload}`)
328
+ .digest('hex');
329
+ }
330
+ ```
331
+
332
+ ---
333
+
334
+ ## Multi-Channel Delivery
335
+
336
+ Same content, different rendering:
337
+
338
+ ```typescript
339
+ // Each channel gets what it needs from the same API response
340
+
341
+ // WEB: Full HTML rendering via TipTap generateHTML
342
+ import { generateHTML } from '@tiptap/html';
343
+
344
+ const webContent = generateHTML(post.body_json, extensions);
345
+
346
+ // EMAIL: Strip complex blocks, inline styles, simplify for email clients
347
+ function contentToEmailHtml(bodyJson: object): string {
348
+ // Use a simplified extension set for email compatibility
349
+ return generateHTML(bodyJson, [StarterKit, Link]);
350
+ // Then run through an email CSS inliner (juice npm package)
351
+ }
352
+
353
+ // MOBILE (React Native): Pass JSON, render natively
354
+ // The mobile app receives body_json and renders each node type
355
+ // with its own native components (no HTML string needed)
356
+
357
+ // RSS: Use excerpt or truncated body as text
358
+ const rssDescription = post.excerpt || post.body_html?.slice(0, 500);
359
+
360
+ // VOICE (text-to-speech): Extract plain text
361
+ function contentToPlainText(bodyJson: object): string {
362
+ return editor.getText(); // or walk the JSON tree
363
+ }
364
+
365
+ // SOCIAL: Use og_image + excerpt + title
366
+ const socialPreview = {
367
+ title: post.seo_title ?? post.title,
368
+ description: post.seo_description ?? post.excerpt,
369
+ image: post.og_image ?? post.featured_image?.url,
370
+ };
371
+ ```
372
+
373
+ ---
374
+
375
+ ## Next.js Integration Patterns
376
+
377
+ ### Static Generation with ISR (blog posts)
378
+
379
+ ```typescript
380
+ // app/posts/[slug]/page.tsx
381
+ import { Metadata } from 'next';
382
+
383
+ // Generate static params for all published posts (SSG)
384
+ export async function generateStaticParams() {
385
+ const res = await fetch(`${process.env.CMS_API_URL}/posts?fields=slug&limit=1000`);
386
+ const { data } = await res.json();
387
+ return data.map((post: { slug: string }) => ({ slug: post.slug }));
388
+ }
389
+
390
+ // Generate metadata for SEO
391
+ export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {
392
+ const post = await getPost(params.slug);
393
+ return {
394
+ title: post.seo_title ?? post.title,
395
+ description: post.seo_description ?? post.excerpt,
396
+ openGraph: { images: [post.og_image ?? post.featured_image?.url] },
397
+ };
398
+ }
399
+
400
+ // Page component
401
+ export default async function PostPage({ params }: { params: { slug: string } }) {
402
+ const post = await getPost(params.slug);
403
+ return <PostTemplate post={post} />;
404
+ }
405
+
406
+ async function getPost(slug: string) {
407
+ const res = await fetch(`${process.env.CMS_API_URL}/posts/${slug}`, {
408
+ next: { revalidate: 60, tags: ['posts', `post-${slug}`] }, // ISR + tag-based invalidation
409
+ });
410
+ if (!res.ok) throw new Error('Post not found');
411
+ const { data } = await res.json();
412
+ return data;
413
+ }
414
+ ```
415
+
416
+ ### Content Preview Mode (Drafts)
417
+
418
+ ```typescript
419
+ // app/api/preview/route.ts
420
+ // Enables preview mode so editors can see draft content
421
+
422
+ import { draftMode } from 'next/headers';
423
+ import { redirect } from 'next/navigation';
424
+
425
+ export async function GET(request: Request) {
426
+ const { searchParams } = new URL(request.url);
427
+ const secret = searchParams.get('secret');
428
+ const slug = searchParams.get('slug');
429
+
430
+ if (secret !== process.env.PREVIEW_SECRET || !slug) {
431
+ return new Response('Invalid preview request', { status: 401 });
432
+ }
433
+
434
+ // Enable Draft Mode — all fetch() calls will bypass ISR cache
435
+ draftMode().enable();
436
+
437
+ redirect(`/posts/${slug}`);
438
+ }
439
+
440
+ // In the post page, check for draft mode and fetch unpublished content:
441
+ import { draftMode } from 'next/headers';
442
+
443
+ export default async function PostPage({ params }) {
444
+ const { isEnabled: isDraft } = draftMode();
445
+
446
+ const url = isDraft
447
+ ? `${process.env.CMS_API_URL}/posts/${params.slug}?status=any` // includes drafts
448
+ : `${process.env.CMS_API_URL}/posts/${params.slug}`; // published only
449
+
450
+ const res = await fetch(url, {
451
+ headers: isDraft ? { 'Authorization': `Bearer ${process.env.CMS_PREVIEW_TOKEN}` } : {},
452
+ cache: isDraft ? 'no-store' : 'default',
453
+ });
454
+
455
+ const { data: post } = await res.json();
456
+ return <PostTemplate post={post} isDraft={isDraft} />;
457
+ }
458
+ ```
459
+
460
+ ---
461
+
462
+ ## Self-Hosted vs SaaS Decision Guide
463
+
464
+ | Factor | Self-Hosted (Payload, Strapi, Directus) | SaaS (Contentful, Sanity, Storyblok) |
465
+ |--------|-----------------------------------------|---------------------------------------|
466
+ | Monthly cost | VPS cost only (~$10-40) | $0-300+ depending on plan |
467
+ | Data control | Full — your DB, your server | Vendor-controlled |
468
+ | Setup time | 1-4 hours | 15 minutes |
469
+ | Ops burden | You manage updates, backups | Vendor handles it |
470
+ | Scaling | You handle it | Auto-scales |
471
+ | Custom logic | Full access | API only (webhooks, plugins) |
472
+ | Best for | Products, sensitive data | Agencies, rapid launch |
473
+
474
+ **Rule:** If you're building a product (not an agency deliverable), self-host. You control the roadmap and data. If you need to launch in an afternoon for a client, use SaaS.
475
+
476
+ ---
477
+
478
+ ## Common Gotchas
479
+
480
+ 1. **The frontend is not part of the CMS** — headless means you choose your own frontend. The CMS provides data, not views. Don't let the CMS dictate your frontend stack.
481
+ 2. **Cache invalidation is the hard part** — "there are only two hard things in CS..." The webhook → revalidate pattern is the right approach. Build it from day one, not as an afterthought.
482
+ 3. **Content preview requires a special auth token** — your CMS API should have a preview token that bypasses the `status = 'published'` filter. Keep this token secret (server-side only, never expose to browser).
483
+ 4. **Media assets need their own CDN** — don't serve images from your CMS API server. Upload to S3/R2 and serve via CDN. Add a `cdn_url` field to your media records.
484
+ 5. **Reading time is not optional** — compute and store it on write. Every content platform's UI shows reading time, and computing it on every read is wasteful.
@@ -0,0 +1,183 @@
1
+ # Headless CMS Stack Selection Guide
2
+
3
+ > Decision flowchart and comparison matrix for selecting the right headless CMS — Payload, Strapi, Directus, Sanity, Contentful, Ghost, and niche picks.
4
+
5
+ **When to use:** Starting a new content platform project and needing to choose a CMS, or evaluating a migration from one CMS to another.
6
+ **Stack:** Any — this is a technology selection guide, not stack-specific
7
+
8
+ ---
9
+
10
+ ## Decision Flowchart
11
+
12
+ ```
13
+ START: What type of project is this?
14
+
15
+ ├── "I'm building a Next.js / React app in TypeScript and want the CMS
16
+ │ embedded in my codebase — one deployment, one repo"
17
+ │ └── → PAYLOAD CMS ✓
18
+
19
+ ├── "I need non-technical editors with a visual drag-drop interface
20
+ │ and block-based editing (no-code page builder style)"
21
+ │ ├── "Budget: $0-30/mo self-host is fine"
22
+ │ │ └── → STORYBLOK (free tier) or TINACMS (git-based)
23
+ │ └── "Budget: $50-200/mo SaaS is OK"
24
+ │ └── → STORYBLOK or BUILDER.IO
25
+
26
+ ├── "I'm wrapping an existing database and don't want to recreate the schema"
27
+ │ └── → DIRECTUS ✓ (introspects your existing tables)
28
+
29
+ ├── "I need a blog + newsletter + membership/paywall in one product"
30
+ │ └── → GHOST ✓ (see ghost-creator-monetization-pattern.md)
31
+
32
+ ├── "My team needs Git-based content (Markdown files in repo, no DB)"
33
+ │ ├── Small team, Next.js
34
+ │ │ └── → KEYSTATIC or TINACMS
35
+ │ └── Any framework
36
+ │ └── → DECAP CMS (formerly Netlify CMS) or FRONT MATTER
37
+
38
+ ├── "Enterprise: compliance, SSO, audit logs, SLA required"
39
+ │ └── → CONTENTSTACK or KONTENT.AI (Kentico)
40
+
41
+ ├── "I want a mature ecosystem with plugins, and I'm comfortable with
42
+ │ JavaScript but not TypeScript-obsessed"
43
+ │ └── → STRAPI ✓
44
+
45
+ └── "I need a great content editing experience with real-time collaboration
46
+ │ and I'm OK paying $12-25/mo per user"
47
+ └── → SANITY ✓
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Comparison Matrix
53
+
54
+ | | Payload | Strapi | Directus | Sanity | Contentful | Ghost |
55
+ |--|---------|--------|----------|--------|------------|-------|
56
+ | **Self-hosted** | Yes | Yes | Yes | Optional | No | Yes |
57
+ | **Free tier (self-host)** | Yes | Yes | Yes | Yes* | Limited | Yes |
58
+ | **TypeScript-first** | Full | Partial | No | Partial | No | No |
59
+ | **Embeds in Next.js** | Yes (v3) | No | No | No | No | No |
60
+ | **GraphQL built-in** | Yes (auto) | Yes (plugin) | Yes | Yes | Yes | No |
61
+ | **REST API** | Yes | Yes | Yes | Yes | Yes | Yes |
62
+ | **Visual block editor** | Basic | Basic | Basic | Excellent | Good | Good |
63
+ | **Real-time collab** | No | No | No | Yes | No | No |
64
+ | **Git-based content** | No | No | No | No | No | No |
65
+ | **Newsletter built-in** | No | No | No | No | No | Yes |
66
+ | **Membership/paywall** | No | No | No | No | No | Yes |
67
+ | **Plugin ecosystem** | Growing | Large | Medium | Large | Large | Large |
68
+ | **GitHub stars (2025)** | ~28K | ~60K | ~27K | ~12K | N/A | ~46K |
69
+ | **Self-host complexity** | Medium | Medium | Low | N/A | N/A | Medium |
70
+ | **DB options** | PG/SQLite/Mongo | PG/MySQL/SQLite | Any | Sanity's cloud | Contentful cloud | MySQL/SQLite |
71
+
72
+ *Sanity has a generous free tier (3 users, 10GB bandwidth)
73
+
74
+ ---
75
+
76
+ ## Budget Tiers
77
+
78
+ ### $0/month (Self-host on your existing infrastructure)
79
+ - **Payload** — unlimited, MIT license
80
+ - **Strapi** — Community edition, MIT license
81
+ - **Directus** — BSL license (free for non-competing products)
82
+ - **Ghost** — MIT license (self-host on a $5-10/mo VPS)
83
+ - **Keystatic** — free, git-based
84
+ - **TinaCMS** — free self-hosted
85
+
86
+ ### $15-50/month
87
+ - **Ghost Pro Starter** — $15/mo, up to 500 members
88
+ - **Sanity Growth** — $15/mo + usage
89
+ - **Storyblok Starter** — $23/mo
90
+ - **Contentful Basic** — $300/mo (actually expensive at scale — start free, then steep)
91
+
92
+ ### $100-400/month
93
+ - **Ghost Pro Creator** — $25/mo
94
+ - **Ghost Pro Team** — $50/mo
95
+ - **Sanity Team** — $15/user/mo
96
+ - **Storyblok Team** — $90/mo
97
+ - **Contentful** — $300+/mo for serious usage
98
+
99
+ ### Enterprise ($500+/month)
100
+ - **Contentstack** — custom pricing
101
+ - **Kontent.ai** — custom pricing
102
+ - **Contentful** — custom pricing
103
+ - **Sanity Enterprise** — custom pricing
104
+
105
+ ---
106
+
107
+ ## Use Case Matching
108
+
109
+ | Use Case | Best Pick | Why |
110
+ |----------|-----------|-----|
111
+ | TypeScript Next.js product | Payload | Embedded, type-safe, Local API |
112
+ | Agency delivering to non-technical clients | Storyblok or Sanity | Best visual editing UX |
113
+ | Wrapping existing database | Directus | Introspects schema, no migration |
114
+ | Blog + newsletter + memberships | Ghost | Built-in, 0% platform fee |
115
+ | Enterprise compliance (SOC2, SSO, audit) | Contentstack or Kontent.ai | Enterprise-grade features |
116
+ | Git-based, no database | Keystatic or TinaCMS | Markdown in repo |
117
+ | Real-time collaborative editing | Sanity | Only major CMS with live collab |
118
+ | Plugin-heavy, large community | Strapi | 200+ plugins, 60K GitHub stars |
119
+ | Multi-language / i18n at scale | Contentful or Storyblok | Best i18n tooling |
120
+ | E-commerce content + commerce | Sanity | Excellent Shopify/commerce integrations |
121
+
122
+ ---
123
+
124
+ ## Red Flags: When NOT to Pick Each Platform
125
+
126
+ **Payload**
127
+ - You need to support non-developer content editors who will configure fields via GUI (Payload's admin is for content entry, not schema management — schema is code)
128
+ - You're not using TypeScript or Next.js
129
+ - You need a proven plugin ecosystem on day one
130
+
131
+ **Strapi**
132
+ - You need TypeScript throughout (types are partial, not generated)
133
+ - You want to embed the CMS in your Next.js app (separate deployment required)
134
+ - You need real-time collaboration
135
+
136
+ **Directus**
137
+ - You're starting from scratch (no existing DB to wrap)
138
+ - You need deep TypeScript integration
139
+ - Your content model will change frequently (GUI-based schema changes can drift from code)
140
+
141
+ **Sanity**
142
+ - Budget is tight (per-seat pricing adds up fast for teams)
143
+ - You need self-hosted data sovereignty
144
+ - You want everything in one deployment
145
+
146
+ **Contentful**
147
+ - Budget under $300/mo for any serious usage
148
+ - You want self-hosting or data control
149
+ - Your team is TypeScript-heavy (tooling is OK but not TypeScript-first)
150
+
151
+ **Ghost**
152
+ - You need custom content types beyond blog posts/pages (Ghost's data model is opinionated)
153
+ - You need complex user roles and permissions
154
+ - You want to build a general-purpose CMS (Ghost is publishing-specific)
155
+
156
+ ---
157
+
158
+ ## Migration Cost Matrix
159
+
160
+ Switching headless CMSes is painful. Here's a relative cost estimate:
161
+
162
+ | From | To | Cost |
163
+ |------|----|------|
164
+ | WordPress | Any headless | High — export content, reformat, rebuild frontend |
165
+ | Strapi | Payload | Medium — schema translation, hooks migration |
166
+ | Contentful | Sanity | Medium — export via API, remap schema |
167
+ | Contentful | Self-hosted | High — rebuild all integrations |
168
+ | Ghost (headless) | Payload | Low — Ghost Content API to Payload migration script exists |
169
+ | Directus | Any | Medium — DB is yours, but Directus-specific API calls need updating |
170
+ | Any | Ghost | High (if using memberships/newsletters) — member data migration is complex |
171
+
172
+ **Rule:** Budget 1-2 weeks of engineering time for any CMS migration. Test content rendering thoroughly before cutting over DNS.
173
+
174
+ ---
175
+
176
+ ## Quick Decision Rules
177
+
178
+ 1. **Building a product (not an agency site), Next.js, TypeScript?** → Payload. Full stop.
179
+ 2. **Client needs to manage content without touching code?** → Strapi or Directus. Both have excellent admin UIs that non-developers can operate.
180
+ 3. **"I need this live in a weekend"** → Strapi (most generators/scaffolding) or Sanity (best DX for rapid setup).
181
+ 4. **"I'm writing a newsletter and want to monetize subscribers"** → Ghost. Nothing else comes close to the subscription + newsletter + 0% fee combination.
182
+ 5. **"We have an existing PostgreSQL database and just need a GUI + API on top"** → Directus. It introspects and works with what you have.
183
+ 6. **"Our legal team requires data never leaves our servers"** → Self-host Payload, Strapi, or Directus. Disqualifies all SaaS options.