@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,674 @@
1
+ # Payload CMS Patterns
2
+
3
+ > Production patterns for Payload CMS v3: collections, access control, hooks, and deployment — the TypeScript-first embedded CMS for Next.js apps.
4
+
5
+ **When to use:** Building a content platform with Next.js where you want a CMS that's part of your codebase (not a separate service), with full TypeScript control over schema, access, and business logic.
6
+ **Stack:** Payload CMS v3, Next.js 14+ (App Router), PostgreSQL (with Payload's Postgres adapter), TypeScript
7
+
8
+ ---
9
+
10
+ ## What Makes Payload Different
11
+
12
+ | Feature | Payload | Strapi | Directus |
13
+ |---------|---------|--------|----------|
14
+ | Config style | TypeScript code | JSON/TypeScript | JSON/GUI |
15
+ | Embeds in Next.js | Yes (v3) | No | No |
16
+ | Type safety | Full (generated types) | Partial | No |
17
+ | Database | PostgreSQL, SQLite, MongoDB | PostgreSQL, MySQL, SQLite | Any DB |
18
+ | Admin UI | Built-in, customizable | Built-in | Built-in |
19
+ | Local API | Yes (no HTTP round-trip) | No | No |
20
+ | Lexical editor | Yes (v3) | No (custom) | No |
21
+
22
+ **Payload's killer feature:** The **Local API** — you can call `payload.find()`, `payload.create()`, etc. directly in your Next.js server components. No HTTP request. Blazing fast, fully typed.
23
+
24
+ ---
25
+
26
+ ## Project Structure
27
+
28
+ ```
29
+ my-app/
30
+ ├── app/
31
+ │ ├── (app)/ # Your actual app routes
32
+ │ ├── (payload)/ # Payload admin UI routes (auto-generated)
33
+ │ │ ├── admin/
34
+ │ │ └── api/
35
+ │ ├── layout.tsx
36
+ │ └── page.tsx
37
+ ├── payload.config.ts # Main Payload configuration
38
+ ├── collections/
39
+ │ ├── Posts.ts
40
+ │ ├── Authors.ts
41
+ │ ├── Categories.ts
42
+ │ └── Media.ts
43
+ ├── globals/
44
+ │ ├── Settings.ts
45
+ │ └── Navigation.ts
46
+ └── payload-types.ts # Auto-generated (run: npm run generate:types)
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Payload Config
52
+
53
+ ```typescript
54
+ // payload.config.ts
55
+ import { buildConfig } from 'payload';
56
+ import { postgresAdapter } from '@payloadcms/db-postgres';
57
+ import { lexicalEditor } from '@payloadcms/richtext-lexical';
58
+ import { nodemailerAdapter } from '@payloadcms/email-nodemailer';
59
+ import sharp from 'sharp';
60
+
61
+ import { Posts } from './collections/Posts';
62
+ import { Authors } from './collections/Authors';
63
+ import { Categories } from './collections/Categories';
64
+ import { Media } from './collections/Media';
65
+ import { Settings } from './globals/Settings';
66
+
67
+ export default buildConfig({
68
+ // Admin UI settings
69
+ admin: {
70
+ user: 'users',
71
+ meta: {
72
+ titleSuffix: '— My CMS',
73
+ },
74
+ },
75
+
76
+ // Collections = content types (like database tables)
77
+ collections: [Posts, Authors, Categories, Media],
78
+
79
+ // Globals = single-instance settings
80
+ globals: [Settings],
81
+
82
+ // Database adapter
83
+ db: postgresAdapter({
84
+ pool: {
85
+ connectionString: process.env.DATABASE_URL,
86
+ },
87
+ }),
88
+
89
+ // Rich text editor
90
+ editor: lexicalEditor({}),
91
+
92
+ // Media handling
93
+ sharp,
94
+
95
+ // Secret for JWTs
96
+ secret: process.env.PAYLOAD_SECRET!,
97
+
98
+ // TypeScript type generation
99
+ typescript: {
100
+ outputFile: 'payload-types.ts',
101
+ },
102
+
103
+ // Email (optional)
104
+ email: nodemailerAdapter({
105
+ defaultFromAddress: 'noreply@yourdomain.com',
106
+ defaultFromName: 'My CMS',
107
+ transportOptions: {
108
+ host: process.env.SMTP_HOST,
109
+ port: 587,
110
+ auth: {
111
+ user: process.env.SMTP_USER,
112
+ pass: process.env.SMTP_PASS,
113
+ },
114
+ },
115
+ }),
116
+ });
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Collection Definition: Posts
122
+
123
+ ```typescript
124
+ // collections/Posts.ts
125
+ import type { CollectionConfig } from 'payload';
126
+ import { isEditor, isAdmin, isAuthorOrEditor } from '../access/roles';
127
+
128
+ export const Posts: CollectionConfig = {
129
+ slug: 'posts',
130
+ labels: {
131
+ singular: 'Post',
132
+ plural: 'Posts',
133
+ },
134
+
135
+ // Admin UI configuration
136
+ admin: {
137
+ useAsTitle: 'title',
138
+ defaultColumns: ['title', 'status', 'author', 'publishedAt'],
139
+ group: 'Content',
140
+ },
141
+
142
+ // Access control — collection level
143
+ access: {
144
+ read: ({ req }) => req.user?.role === 'admin' || { status: { equals: 'published' } },
145
+ create: isAuthorOrEditor,
146
+ update: isAuthorOrEditor,
147
+ delete: isAdmin,
148
+ },
149
+
150
+ // Hooks — lifecycle callbacks
151
+ hooks: {
152
+ beforeChange: [setAuthorOnCreate, generateSlug, computeReadingTime],
153
+ afterChange: [invalidateCacheOnPublish],
154
+ beforeRead: [],
155
+ afterRead: [],
156
+ beforeDelete: [preventDeletingPublished],
157
+ },
158
+
159
+ // Timestamps (auto-managed)
160
+ timestamps: true,
161
+
162
+ // Fields = columns
163
+ fields: [
164
+ {
165
+ name: 'title',
166
+ type: 'text',
167
+ required: true,
168
+ admin: { description: 'The post title — used for SEO and display' },
169
+ },
170
+ {
171
+ name: 'slug',
172
+ type: 'text',
173
+ unique: true,
174
+ admin: {
175
+ position: 'sidebar',
176
+ description: 'URL-friendly identifier (auto-generated from title)',
177
+ },
178
+ hooks: {
179
+ beforeValidate: [({ value, data }) => value ?? slugify(data?.title ?? '')],
180
+ },
181
+ },
182
+ {
183
+ name: 'status',
184
+ type: 'select',
185
+ required: true,
186
+ defaultValue: 'draft',
187
+ options: [
188
+ { label: 'Draft', value: 'draft' },
189
+ { label: 'In Review', value: 'in_review' },
190
+ { label: 'Scheduled', value: 'scheduled' },
191
+ { label: 'Published', value: 'published' },
192
+ { label: 'Archived', value: 'archived' },
193
+ ],
194
+ admin: { position: 'sidebar' },
195
+ access: {
196
+ // Only editors and admins can change status
197
+ update: isEditor,
198
+ },
199
+ },
200
+ {
201
+ name: 'publishedAt',
202
+ type: 'date',
203
+ admin: {
204
+ position: 'sidebar',
205
+ date: { displayFormat: 'MMM d, yyyy h:mm a' },
206
+ condition: (data) => data.status === 'published' || data.status === 'scheduled',
207
+ },
208
+ },
209
+ {
210
+ name: 'author',
211
+ type: 'relationship',
212
+ relationTo: 'users',
213
+ required: true,
214
+ admin: { position: 'sidebar' },
215
+ access: {
216
+ // Authors can't change their own author field
217
+ update: isEditor,
218
+ },
219
+ },
220
+ {
221
+ name: 'categories',
222
+ type: 'relationship',
223
+ relationTo: 'categories',
224
+ hasMany: true,
225
+ admin: { position: 'sidebar' },
226
+ },
227
+ {
228
+ name: 'tags',
229
+ type: 'array',
230
+ fields: [
231
+ {
232
+ name: 'tag',
233
+ type: 'text',
234
+ },
235
+ ],
236
+ },
237
+ {
238
+ name: 'excerpt',
239
+ type: 'textarea',
240
+ admin: { description: 'Short summary (150-300 chars). Used for SEO meta and previews.' },
241
+ },
242
+ {
243
+ name: 'featuredImage',
244
+ type: 'upload',
245
+ relationTo: 'media',
246
+ },
247
+ {
248
+ name: 'content',
249
+ type: 'richText',
250
+ required: true,
251
+ // Uses Payload's Lexical editor by default
252
+ },
253
+
254
+ // SEO group
255
+ {
256
+ name: 'seo',
257
+ type: 'group',
258
+ admin: {
259
+ description: 'Search engine optimization fields. Defaults to title and excerpt.',
260
+ },
261
+ fields: [
262
+ { name: 'title', type: 'text', admin: { description: 'Overrides post title for <title> tag' } },
263
+ { name: 'description', type: 'textarea', admin: { description: 'Overrides excerpt for <meta description>' } },
264
+ { name: 'ogImage', type: 'upload', relationTo: 'media' },
265
+ ],
266
+ },
267
+
268
+ // Computed/readonly fields
269
+ {
270
+ name: 'readingTimeMinutes',
271
+ type: 'number',
272
+ admin: { position: 'sidebar', readOnly: true },
273
+ },
274
+ {
275
+ name: 'wordCount',
276
+ type: 'number',
277
+ admin: { readOnly: true },
278
+ },
279
+ ],
280
+ };
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Field Types Reference
286
+
287
+ ```typescript
288
+ // All Payload field types and when to use them:
289
+
290
+ // Basic
291
+ { type: 'text' } // short string, one line
292
+ { type: 'textarea' } // multi-line text
293
+ { type: 'number' } // integer or float
294
+ { type: 'checkbox' } // boolean
295
+ { type: 'date' } // date/time picker
296
+ { type: 'email' } // validated email
297
+ { type: 'code' } // code with syntax highlighting
298
+ { type: 'json' } // raw JSON
299
+
300
+ // Choice
301
+ { type: 'select', options: [...] } // single select
302
+ { type: 'select', hasMany: true, options: [...] } // multi-select
303
+ { type: 'radio', options: [...] } // radio buttons
304
+
305
+ // Rich content
306
+ { type: 'richText' } // Lexical (v3) or Slate (v2) editor
307
+ { type: 'upload', relationTo: 'media' } // file/image upload
308
+
309
+ // Relational
310
+ { type: 'relationship', relationTo: 'posts' } // single relation
311
+ { type: 'relationship', relationTo: 'posts', hasMany: true } // many relation
312
+ { type: 'relationship', relationTo: ['posts', 'pages'] } // polymorphic
313
+
314
+ // Structural
315
+ { type: 'group', fields: [...] } // inline group of fields
316
+ { type: 'array', fields: [...] } // repeating group (like a table)
317
+ { type: 'blocks', blocks: [...] } // flexible content blocks (Gutenberg-style)
318
+ { type: 'tabs', tabs: [{ label, fields }] } // tabbed layout in admin
319
+
320
+ // Special
321
+ { type: 'point' } // lat/lng coordinates
322
+ { type: 'collapsible', fields: [...] } // collapsible section in admin
323
+ { type: 'row', fields: [...] } // side-by-side fields in admin
324
+ { type: 'ui' } // custom React component in admin (display only)
325
+ ```
326
+
327
+ ---
328
+
329
+ ## Access Control
330
+
331
+ ```typescript
332
+ // access/roles.ts
333
+ import type { AccessArgs, FieldAccess } from 'payload';
334
+
335
+ type User = { id: string; role: 'admin' | 'editor' | 'author' | 'member' };
336
+
337
+ // Collection-level access functions
338
+ export const isAdmin = ({ req }: AccessArgs) =>
339
+ req.user?.role === 'admin';
340
+
341
+ export const isEditor = ({ req }: AccessArgs) =>
342
+ ['admin', 'editor'].includes(req.user?.role);
343
+
344
+ export const isAuthorOrEditor = ({ req }: AccessArgs) =>
345
+ ['admin', 'editor', 'author'].includes(req.user?.role);
346
+
347
+ // Return a Payload access filter to read only your own content
348
+ export const isOwnContent = ({ req }: AccessArgs) => {
349
+ if (!req.user) return false;
350
+ if (['admin', 'editor'].includes(req.user.role)) return true;
351
+ return { author: { equals: req.user.id } };
352
+ };
353
+
354
+ // Field-level access — hide sensitive fields from non-admins
355
+ export const adminOnly: FieldAccess = ({ req }) =>
356
+ req.user?.role === 'admin';
357
+
358
+ // Example: hide the rejection_reason field from authors
359
+ {
360
+ name: 'rejectionReason',
361
+ type: 'textarea',
362
+ access: {
363
+ read: adminOnly,
364
+ update: adminOnly,
365
+ },
366
+ }
367
+ ```
368
+
369
+ ---
370
+
371
+ ## Hooks: beforeChange, afterChange, beforeRead
372
+
373
+ ```typescript
374
+ // collections/hooks/post-hooks.ts
375
+ import type { CollectionBeforeChangeHook, CollectionAfterChangeHook } from 'payload';
376
+
377
+ // Set author on create (don't let API override it)
378
+ export const setAuthorOnCreate: CollectionBeforeChangeHook = ({ data, req, operation }) => {
379
+ if (operation === 'create' && req.user) {
380
+ return { ...data, author: req.user.id };
381
+ }
382
+ return data;
383
+ };
384
+
385
+ // Auto-generate slug from title
386
+ export const generateSlug: CollectionBeforeChangeHook = ({ data }) => {
387
+ if (data.title && !data.slug) {
388
+ return {
389
+ ...data,
390
+ slug: data.title
391
+ .toLowerCase()
392
+ .replace(/[^a-z0-9]+/g, '-')
393
+ .replace(/^-|-$/g, ''),
394
+ };
395
+ }
396
+ return data;
397
+ };
398
+
399
+ // Compute reading time and word count before save
400
+ export const computeReadingTime: CollectionBeforeChangeHook = ({ data }) => {
401
+ if (data.content) {
402
+ // Extract plain text from Lexical JSON
403
+ const text = extractTextFromLexical(data.content);
404
+ const wordCount = text.split(/\s+/).filter(Boolean).length;
405
+ const readingTimeMinutes = Math.max(1, Math.ceil(wordCount / 200));
406
+ return { ...data, wordCount, readingTimeMinutes };
407
+ }
408
+ return data;
409
+ };
410
+
411
+ // After publish: invalidate cache
412
+ export const invalidateCacheOnPublish: CollectionAfterChangeHook = async ({
413
+ doc,
414
+ previousDoc,
415
+ req,
416
+ }) => {
417
+ const justPublished =
418
+ doc.status === 'published' && previousDoc?.status !== 'published';
419
+
420
+ if (justPublished && doc.slug) {
421
+ // Fire webhook to Next.js revalidation endpoint
422
+ try {
423
+ await fetch(`${process.env.FRONTEND_URL}/api/revalidate`, {
424
+ method: 'POST',
425
+ headers: {
426
+ 'Content-Type': 'application/json',
427
+ 'x-webhook-secret': process.env.REVALIDATION_SECRET!,
428
+ },
429
+ body: JSON.stringify({ slug: doc.slug, event: 'content.published' }),
430
+ });
431
+ } catch (err) {
432
+ req.payload.logger.error(`Cache invalidation failed for ${doc.slug}: ${err}`);
433
+ }
434
+ }
435
+
436
+ return doc;
437
+ };
438
+
439
+ // Prevent deletion of published posts
440
+ export const preventDeletingPublished: CollectionBeforeChangeHook = async ({
441
+ req,
442
+ id,
443
+ collection,
444
+ }) => {
445
+ const doc = await req.payload.findByID({ collection: 'posts', id });
446
+ if (doc?.status === 'published' && req.user?.role !== 'admin') {
447
+ throw new Error('Cannot delete a published post. Archive it first.');
448
+ }
449
+ };
450
+
451
+ // Helper: extract text from Lexical JSON
452
+ function extractTextFromLexical(lexicalJson: object): string {
453
+ const texts: string[] = [];
454
+ function walk(node: { text?: string; children?: object[] }) {
455
+ if (node.text) texts.push(node.text);
456
+ if (node.children) node.children.forEach(child => walk(child as typeof node));
457
+ }
458
+ walk(lexicalJson as { children?: object[] });
459
+ return texts.join(' ');
460
+ }
461
+ ```
462
+
463
+ ---
464
+
465
+ ## Local API vs REST API vs GraphQL
466
+
467
+ ```typescript
468
+ // Local API — use in Next.js server components, server actions, route handlers
469
+ // FASTEST: no HTTP round-trip, runs in same process
470
+ import { getPayload } from 'payload';
471
+ import config from '../payload.config';
472
+
473
+ const payload = await getPayload({ config });
474
+
475
+ // Find published posts
476
+ const { docs, totalDocs } = await payload.find({
477
+ collection: 'posts',
478
+ where: { status: { equals: 'published' } },
479
+ sort: '-publishedAt',
480
+ limit: 20,
481
+ depth: 2, // resolve relationships 2 levels deep
482
+ });
483
+
484
+ // Find by slug
485
+ const post = await payload.find({
486
+ collection: 'posts',
487
+ where: { slug: { equals: 'my-post-slug' } },
488
+ limit: 1,
489
+ });
490
+
491
+ // Create a post
492
+ const newPost = await payload.create({
493
+ collection: 'posts',
494
+ data: {
495
+ title: 'My Post',
496
+ status: 'draft',
497
+ author: userId,
498
+ },
499
+ });
500
+
501
+ // Update a post
502
+ const updated = await payload.update({
503
+ collection: 'posts',
504
+ id: postId,
505
+ data: { status: 'published', publishedAt: new Date() },
506
+ });
507
+
508
+ // Delete
509
+ await payload.delete({ collection: 'posts', id: postId });
510
+ ```
511
+
512
+ ```typescript
513
+ // REST API — use from external clients, mobile apps, or when you can't use Local API
514
+ // Base URL: /api (configured in payload.config.ts)
515
+
516
+ GET /api/posts?where[status][equals]=published&sort=-publishedAt&limit=20
517
+ GET /api/posts?where[slug][equals]=my-post-slug&depth=2
518
+ POST /api/posts // create
519
+ PATCH /api/posts/:id // update
520
+ DELETE /api/posts/:id // delete
521
+ POST /api/users/login // auth
522
+ POST /api/users/logout
523
+ GET /api/users/me
524
+
525
+ // GraphQL — use when clients need flexible queries
526
+ // Available at: /api/graphql
527
+ ```
528
+
529
+ **Rule:** Use Local API for all server-side code in Next.js. Use REST API for external consumers, webhooks, and testing with curl. Use GraphQL only if you have a specific need for it (Payload's GraphQL is auto-generated from your collection config).
530
+
531
+ ---
532
+
533
+ ## Deploying to Vercel with PostgreSQL
534
+
535
+ ```typescript
536
+ // Deployment checklist:
537
+
538
+ // 1. Environment variables needed:
539
+ // DATABASE_URL=postgresql://...
540
+ // PAYLOAD_SECRET=<random-64-char-string>
541
+ // NEXT_PUBLIC_SERVER_URL=https://yourdomain.com
542
+ // REVALIDATION_SECRET=<random-string>
543
+ // SMTP_* (if using email)
544
+
545
+ // 2. vercel.json — optional, for region pinning:
546
+ {
547
+ "regions": ["iad1"], // match your Supabase/Neon region
548
+ "functions": {
549
+ "app/api/**": { "maxDuration": 30 }
550
+ }
551
+ }
552
+
553
+ // 3. next.config.ts — required for Payload v3:
554
+ import { withPayload } from '@payloadcms/next/withPayload';
555
+
556
+ const nextConfig = {
557
+ // your config
558
+ };
559
+
560
+ export default withPayload(nextConfig);
561
+
562
+ // 4. Database migrations:
563
+ // payload migrate:create -- create a new migration
564
+ // payload migrate -- run pending migrations
565
+ // payload migrate:status -- check migration status
566
+
567
+ // In production (Vercel), add to build command:
568
+ // "build": "payload migrate && next build"
569
+ ```
570
+
571
+ ---
572
+
573
+ ## Payload vs Strapi vs Directus: Decision Guide
574
+
575
+ ```
576
+ Need TypeScript-first config (everything is code)?
577
+ → Payload
578
+
579
+ Need mature plugin ecosystem (25,000+ GitHub stars, 200+ plugins)?
580
+ → Strapi
581
+
582
+ Wrapping an existing database (want DB to stay the authority)?
583
+ → Directus (it introspects your DB and builds the API around it)
584
+
585
+ Need to embed CMS directly inside Next.js app (same deployment)?
586
+ → Payload (v3 is the ONLY major headless CMS that does this)
587
+
588
+ Team prefers GUI-based config over code?
589
+ → Directus (fully GUI) or Strapi (GUI + code)
590
+
591
+ Need commercial support / enterprise SLA?
592
+ → Strapi Enterprise or Directus Enterprise
593
+
594
+ Want to get started in 5 minutes with minimal config?
595
+ → Strapi (more scaffolding, more generators)
596
+ ```
597
+
598
+ ---
599
+
600
+ ## Migrating from Strapi to Payload: Schema Translation
601
+
602
+ ```
603
+ Strapi concept → Payload equivalent
604
+
605
+ Content Type → Collection
606
+ Single Type → Global
607
+ Component → Array or Group field
608
+ Dynamic Zone → Blocks field
609
+ Relation → Relationship field
610
+ Media → Upload field (with Media collection)
611
+ Plugin → Custom collection + hooks + endpoints
612
+ Lifecycle hooks (beforeCreate, afterUpdate) → beforeChange, afterChange hooks
613
+ Policies → Access control functions
614
+ Routes → Payload custom endpoints or Next.js API routes
615
+ ```
616
+
617
+ ```typescript
618
+ // Strapi lifecycle hook:
619
+ module.exports = {
620
+ async beforeCreate(event) {
621
+ event.params.data.slug = slugify(event.params.data.title);
622
+ },
623
+ };
624
+
625
+ // Payload equivalent:
626
+ export const Posts: CollectionConfig = {
627
+ hooks: {
628
+ beforeChange: [
629
+ ({ data }) => ({ ...data, slug: data.slug ?? slugify(data.title ?? '') }),
630
+ ],
631
+ },
632
+ };
633
+ ```
634
+
635
+ ---
636
+
637
+ ## Lexical Rich Text Output Rendering in React
638
+
639
+ ```tsx
640
+ // Payload v3 uses Lexical editor. To render in your frontend:
641
+
642
+ // Option 1: Use Payload's built-in React renderer
643
+ import { RichText } from '@payloadcms/richtext-lexical/react';
644
+
645
+ function PostContent({ content }: { content: object }) {
646
+ return (
647
+ <div className="prose prose-slate max-w-none">
648
+ <RichText content={content} />
649
+ </div>
650
+ );
651
+ }
652
+
653
+ // Option 2: Generate HTML server-side (for email, RSS, etc.)
654
+ import { convertLexicalToHTML } from '@payloadcms/richtext-lexical/html';
655
+
656
+ const html = await convertLexicalToHTML({
657
+ converters: defaultHTMLConverters,
658
+ data: post.content,
659
+ });
660
+
661
+ // Option 3: For Next.js App Router (RSC-safe)
662
+ // Payload's RichText component works in server components in v3
663
+ ```
664
+
665
+ ---
666
+
667
+ ## Common Gotchas
668
+
669
+ 1. **`payload.config.ts` is NOT a regular module** — it's read at build time by Next.js. Don't import from it in client components. Always use the Local API in server components.
670
+ 2. **`depth` parameter is expensive** — `depth: 2` resolves relationships 2 levels deep. For each level, Payload runs additional queries. Use only the depth you need.
671
+ 3. **Migrations are required for PostgreSQL** — unlike MongoDB, schema changes require running `payload migrate`. Always run migrations before deploying schema changes.
672
+ 4. **Admin UI at `/admin` conflicts with your own routes** — if you have an `/admin` route in your Next.js app, configure Payload's admin to use a different path: `admin: { buildPath: '/cms' }`.
673
+ 5. **Generated types drift if you forget to regenerate** — run `npm run generate:types` after every collection schema change. Add it to your `prebuild` script to automate.
674
+ 6. **Local API bypasses access control by default** — when using `payload.find()` server-side, pass `overrideAccess: false` if you need access control enforced. Default is `overrideAccess: true` (admin-level access).