memory-journal-mcp 7.7.0 → 8.0.0

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 (531) hide show
  1. package/README.md +126 -56
  2. package/dist/chunk-6OHRCNYW.js +3231 -0
  3. package/dist/chunk-JFMITANR.js +5168 -0
  4. package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
  5. package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
  6. package/dist/cli.js +21 -3
  7. package/dist/index.d.ts +16 -13
  8. package/dist/index.js +4 -2
  9. package/dist/resources-IJVKDFGS.js +2 -0
  10. package/dist/tools-44DGXE3V.js +2 -0
  11. package/dist/worker-script.js +201 -20
  12. package/package.json +7 -4
  13. package/skills/README.md +62 -25
  14. package/skills/adversarial-performance/SKILL.md +139 -0
  15. package/skills/adversarial-performance/references/audit-categories.md +462 -0
  16. package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
  17. package/skills/adversarial-performance/references/copilot-usage.md +16 -0
  18. package/skills/adversarial-performance/references/feedback-loop.md +177 -0
  19. package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
  20. package/skills/adversarial-planner/SKILL.md +23 -54
  21. package/skills/adversarial-planner/references/copilot-integration.md +25 -40
  22. package/skills/adversarial-planner/references/copilot-usage.md +16 -0
  23. package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
  24. package/skills/adversarial-security/SKILL.md +149 -0
  25. package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
  26. package/skills/adversarial-security/references/audit-categories.md +723 -0
  27. package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
  28. package/skills/adversarial-security/references/copilot-usage.md +16 -0
  29. package/skills/adversarial-security/references/feedback-loop.md +206 -0
  30. package/skills/adversarial-security/references/journal-opt-out.md +7 -0
  31. package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
  32. package/skills/adversarial-skill-audit/SKILL.md +118 -0
  33. package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
  34. package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
  35. package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
  36. package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
  37. package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
  38. package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
  39. package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
  40. package/skills/adversarial-workflow-audit/SKILL.md +82 -0
  41. package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
  42. package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
  43. package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
  44. package/skills/agents-sdk/SKILL.md +220 -0
  45. package/skills/agents-sdk/references/callable.md +92 -0
  46. package/skills/agents-sdk/references/codemode.md +209 -0
  47. package/skills/agents-sdk/references/email.md +144 -0
  48. package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
  49. package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
  50. package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
  51. package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
  52. package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
  53. package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
  54. package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
  55. package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
  56. package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
  57. package/skills/agents-sdk/references/mcp.md +157 -0
  58. package/skills/agents-sdk/references/state-scheduling.md +164 -0
  59. package/skills/agents-sdk/references/streaming-chat.md +168 -0
  60. package/skills/agents-sdk/references/workflows.md +136 -0
  61. package/skills/auth-identity/SKILL.md +48 -0
  62. package/skills/autonomous-dev/SKILL.md +46 -23
  63. package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
  64. package/skills/aws/SKILL.md +39 -0
  65. package/skills/azure/SKILL.md +38 -0
  66. package/skills/bin/sync.js +7 -1
  67. package/skills/biome/SKILL.md +59 -0
  68. package/skills/bun/SKILL.md +8 -2
  69. package/skills/cloudflare/SKILL.md +37 -0
  70. package/skills/cloudflare/references/agents-sdk/README.md +95 -0
  71. package/skills/cloudflare/references/agents-sdk/api.md +195 -0
  72. package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
  73. package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
  74. package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
  75. package/skills/cloudflare/references/ai-gateway/README.md +176 -0
  76. package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
  77. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
  78. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  79. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
  80. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
  81. package/skills/cloudflare/references/ai-search/README.md +145 -0
  82. package/skills/cloudflare/references/ai-search/api.md +87 -0
  83. package/skills/cloudflare/references/ai-search/configuration.md +91 -0
  84. package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
  85. package/skills/cloudflare/references/ai-search/patterns.md +87 -0
  86. package/skills/cloudflare/references/analytics-engine/README.md +96 -0
  87. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  88. package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
  89. package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -0
  90. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  91. package/skills/cloudflare/references/api/README.md +66 -0
  92. package/skills/cloudflare/references/api/api.md +205 -0
  93. package/skills/cloudflare/references/api/configuration.md +158 -0
  94. package/skills/cloudflare/references/api/gotchas.md +231 -0
  95. package/skills/cloudflare/references/api/patterns.md +208 -0
  96. package/skills/cloudflare/references/api-shield/README.md +44 -0
  97. package/skills/cloudflare/references/api-shield/api.md +153 -0
  98. package/skills/cloudflare/references/api-shield/configuration.md +210 -0
  99. package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
  100. package/skills/cloudflare/references/api-shield/patterns.md +185 -0
  101. package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
  102. package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
  103. package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
  104. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
  105. package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
  106. package/skills/cloudflare/references/bindings/README.md +127 -0
  107. package/skills/cloudflare/references/bindings/api.md +214 -0
  108. package/skills/cloudflare/references/bindings/configuration.md +200 -0
  109. package/skills/cloudflare/references/bindings/gotchas.md +210 -0
  110. package/skills/cloudflare/references/bindings/patterns.md +205 -0
  111. package/skills/cloudflare/references/bot-management/README.md +95 -0
  112. package/skills/cloudflare/references/bot-management/api.md +175 -0
  113. package/skills/cloudflare/references/bot-management/configuration.md +175 -0
  114. package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
  115. package/skills/cloudflare/references/bot-management/patterns.md +181 -0
  116. package/skills/cloudflare/references/browser-rendering/README.md +84 -0
  117. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  118. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  119. package/skills/cloudflare/references/browser-rendering/gotchas.md +91 -0
  120. package/skills/cloudflare/references/browser-rendering/patterns.md +93 -0
  121. package/skills/cloudflare/references/c3/README.md +111 -0
  122. package/skills/cloudflare/references/c3/api.md +71 -0
  123. package/skills/cloudflare/references/c3/configuration.md +85 -0
  124. package/skills/cloudflare/references/c3/gotchas.md +97 -0
  125. package/skills/cloudflare/references/c3/patterns.md +84 -0
  126. package/skills/cloudflare/references/cache-reserve/README.md +150 -0
  127. package/skills/cloudflare/references/cache-reserve/api.md +184 -0
  128. package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
  129. package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
  130. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  131. package/skills/cloudflare/references/containers/README.md +87 -0
  132. package/skills/cloudflare/references/containers/api.md +197 -0
  133. package/skills/cloudflare/references/containers/configuration.md +191 -0
  134. package/skills/cloudflare/references/containers/gotchas.md +182 -0
  135. package/skills/cloudflare/references/containers/patterns.md +204 -0
  136. package/skills/cloudflare/references/cron-triggers/README.md +101 -0
  137. package/skills/cloudflare/references/cron-triggers/api.md +224 -0
  138. package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
  139. package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
  140. package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
  141. package/skills/cloudflare/references/d1/README.md +137 -0
  142. package/skills/cloudflare/references/d1/api.md +213 -0
  143. package/skills/cloudflare/references/d1/configuration.md +198 -0
  144. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  145. package/skills/cloudflare/references/d1/patterns.md +240 -0
  146. package/skills/cloudflare/references/ddos/README.md +42 -0
  147. package/skills/cloudflare/references/ddos/api.md +158 -0
  148. package/skills/cloudflare/references/ddos/configuration.md +94 -0
  149. package/skills/cloudflare/references/ddos/gotchas.md +114 -0
  150. package/skills/cloudflare/references/ddos/patterns.md +220 -0
  151. package/skills/cloudflare/references/decision-trees.md +95 -0
  152. package/skills/cloudflare/references/do-storage/README.md +79 -0
  153. package/skills/cloudflare/references/do-storage/api.md +107 -0
  154. package/skills/cloudflare/references/do-storage/configuration.md +114 -0
  155. package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
  156. package/skills/cloudflare/references/do-storage/patterns.md +210 -0
  157. package/skills/cloudflare/references/do-storage/testing.md +186 -0
  158. package/skills/cloudflare/references/durable-objects/README.md +194 -0
  159. package/skills/cloudflare/references/durable-objects/api.md +205 -0
  160. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  161. package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
  162. package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
  163. package/skills/cloudflare/references/email-routing/README.md +89 -0
  164. package/skills/cloudflare/references/email-routing/api.md +192 -0
  165. package/skills/cloudflare/references/email-routing/configuration.md +187 -0
  166. package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
  167. package/skills/cloudflare/references/email-routing/patterns.md +241 -0
  168. package/skills/cloudflare/references/email-workers/README.md +153 -0
  169. package/skills/cloudflare/references/email-workers/api.md +227 -0
  170. package/skills/cloudflare/references/email-workers/configuration.md +115 -0
  171. package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
  172. package/skills/cloudflare/references/email-workers/patterns.md +108 -0
  173. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  174. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  175. package/skills/cloudflare/references/graphql-api/configuration.md +151 -0
  176. package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
  177. package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
  178. package/skills/cloudflare/references/hyperdrive/README.md +84 -0
  179. package/skills/cloudflare/references/hyperdrive/api.md +149 -0
  180. package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
  181. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  182. package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
  183. package/skills/cloudflare/references/images/README.md +65 -0
  184. package/skills/cloudflare/references/images/api.md +101 -0
  185. package/skills/cloudflare/references/images/configuration.md +206 -0
  186. package/skills/cloudflare/references/images/gotchas.md +106 -0
  187. package/skills/cloudflare/references/images/patterns.md +126 -0
  188. package/skills/cloudflare/references/kv/README.md +90 -0
  189. package/skills/cloudflare/references/kv/api.md +163 -0
  190. package/skills/cloudflare/references/kv/configuration.md +148 -0
  191. package/skills/cloudflare/references/kv/gotchas.md +133 -0
  192. package/skills/cloudflare/references/kv/patterns.md +195 -0
  193. package/skills/cloudflare/references/miniflare/README.md +113 -0
  194. package/skills/cloudflare/references/miniflare/api.md +204 -0
  195. package/skills/cloudflare/references/miniflare/configuration.md +174 -0
  196. package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
  197. package/skills/cloudflare/references/miniflare/patterns.md +187 -0
  198. package/skills/cloudflare/references/network-interconnect/README.md +104 -0
  199. package/skills/cloudflare/references/network-interconnect/api.md +220 -0
  200. package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
  201. package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
  202. package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
  203. package/skills/cloudflare/references/observability/README.md +93 -0
  204. package/skills/cloudflare/references/observability/api.md +168 -0
  205. package/skills/cloudflare/references/observability/configuration.md +178 -0
  206. package/skills/cloudflare/references/observability/gotchas.md +125 -0
  207. package/skills/cloudflare/references/observability/patterns.md +105 -0
  208. package/skills/cloudflare/references/pages/README.md +92 -0
  209. package/skills/cloudflare/references/pages/api.md +205 -0
  210. package/skills/cloudflare/references/pages/configuration.md +216 -0
  211. package/skills/cloudflare/references/pages/gotchas.md +218 -0
  212. package/skills/cloudflare/references/pages/patterns.md +215 -0
  213. package/skills/cloudflare/references/pages-functions/README.md +104 -0
  214. package/skills/cloudflare/references/pages-functions/api.md +159 -0
  215. package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
  216. package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
  217. package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
  218. package/skills/cloudflare/references/pipelines/README.md +109 -0
  219. package/skills/cloudflare/references/pipelines/api.md +214 -0
  220. package/skills/cloudflare/references/pipelines/configuration.md +98 -0
  221. package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
  222. package/skills/cloudflare/references/pipelines/patterns.md +87 -0
  223. package/skills/cloudflare/references/product-index.md +112 -0
  224. package/skills/cloudflare/references/pulumi/README.md +113 -0
  225. package/skills/cloudflare/references/pulumi/api.md +230 -0
  226. package/skills/cloudflare/references/pulumi/configuration.md +213 -0
  227. package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
  228. package/skills/cloudflare/references/pulumi/patterns.md +260 -0
  229. package/skills/cloudflare/references/queues/README.md +99 -0
  230. package/skills/cloudflare/references/queues/api.md +211 -0
  231. package/skills/cloudflare/references/queues/configuration.md +151 -0
  232. package/skills/cloudflare/references/queues/gotchas.md +210 -0
  233. package/skills/cloudflare/references/queues/patterns.md +220 -0
  234. package/skills/cloudflare/references/r2/README.md +97 -0
  235. package/skills/cloudflare/references/r2/api.md +235 -0
  236. package/skills/cloudflare/references/r2/configuration.md +176 -0
  237. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  238. package/skills/cloudflare/references/r2/patterns.md +203 -0
  239. package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
  240. package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
  241. package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
  242. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
  243. package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
  244. package/skills/cloudflare/references/r2-sql/README.md +138 -0
  245. package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
  246. package/skills/cloudflare/references/r2-sql/api.md +159 -0
  247. package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
  248. package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
  249. package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
  250. package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
  251. package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
  252. package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
  253. package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
  254. package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
  255. package/skills/cloudflare/references/realtimekit/README.md +118 -0
  256. package/skills/cloudflare/references/realtimekit/api.md +234 -0
  257. package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
  258. package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
  259. package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
  260. package/skills/cloudflare/references/sandbox/README.md +104 -0
  261. package/skills/cloudflare/references/sandbox/api.md +200 -0
  262. package/skills/cloudflare/references/sandbox/configuration.md +154 -0
  263. package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
  264. package/skills/cloudflare/references/sandbox/patterns.md +195 -0
  265. package/skills/cloudflare/references/secrets-store/README.md +77 -0
  266. package/skills/cloudflare/references/secrets-store/api.md +199 -0
  267. package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
  268. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  269. package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
  270. package/skills/cloudflare/references/smart-placement/README.md +143 -0
  271. package/skills/cloudflare/references/smart-placement/api.md +192 -0
  272. package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
  273. package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
  274. package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
  275. package/skills/cloudflare/references/snippets/README.md +74 -0
  276. package/skills/cloudflare/references/snippets/api.md +214 -0
  277. package/skills/cloudflare/references/snippets/configuration.md +239 -0
  278. package/skills/cloudflare/references/snippets/gotchas.md +104 -0
  279. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  280. package/skills/cloudflare/references/spectrum/README.md +52 -0
  281. package/skills/cloudflare/references/spectrum/api.md +184 -0
  282. package/skills/cloudflare/references/spectrum/configuration.md +203 -0
  283. package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
  284. package/skills/cloudflare/references/spectrum/patterns.md +206 -0
  285. package/skills/cloudflare/references/static-assets/README.md +65 -0
  286. package/skills/cloudflare/references/static-assets/api.md +201 -0
  287. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  288. package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
  289. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  290. package/skills/cloudflare/references/stream/README.md +123 -0
  291. package/skills/cloudflare/references/stream/api-live.md +202 -0
  292. package/skills/cloudflare/references/stream/api.md +206 -0
  293. package/skills/cloudflare/references/stream/configuration.md +151 -0
  294. package/skills/cloudflare/references/stream/gotchas.md +139 -0
  295. package/skills/cloudflare/references/stream/patterns.md +217 -0
  296. package/skills/cloudflare/references/tail-workers/README.md +92 -0
  297. package/skills/cloudflare/references/tail-workers/api.md +203 -0
  298. package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
  299. package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
  300. package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
  301. package/skills/cloudflare/references/terraform/README.md +100 -0
  302. package/skills/cloudflare/references/terraform/api.md +178 -0
  303. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  304. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  305. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  306. package/skills/cloudflare/references/tunnel/README.md +137 -0
  307. package/skills/cloudflare/references/tunnel/api.md +205 -0
  308. package/skills/cloudflare/references/tunnel/configuration.md +163 -0
  309. package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
  310. package/skills/cloudflare/references/tunnel/networking.md +174 -0
  311. package/skills/cloudflare/references/tunnel/patterns.md +199 -0
  312. package/skills/cloudflare/references/turn/README.md +86 -0
  313. package/skills/cloudflare/references/turn/api.md +236 -0
  314. package/skills/cloudflare/references/turn/configuration.md +181 -0
  315. package/skills/cloudflare/references/turn/gotchas.md +236 -0
  316. package/skills/cloudflare/references/turn/patterns.md +228 -0
  317. package/skills/cloudflare/references/turnstile/README.md +102 -0
  318. package/skills/cloudflare/references/turnstile/api.md +253 -0
  319. package/skills/cloudflare/references/turnstile/configuration.md +242 -0
  320. package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
  321. package/skills/cloudflare/references/turnstile/patterns.md +195 -0
  322. package/skills/cloudflare/references/vectorize/README.md +133 -0
  323. package/skills/cloudflare/references/vectorize/api.md +89 -0
  324. package/skills/cloudflare/references/vectorize/configuration.md +91 -0
  325. package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
  326. package/skills/cloudflare/references/vectorize/patterns.md +92 -0
  327. package/skills/cloudflare/references/waf/README.md +125 -0
  328. package/skills/cloudflare/references/waf/api.md +203 -0
  329. package/skills/cloudflare/references/waf/configuration.md +215 -0
  330. package/skills/cloudflare/references/waf/gotchas.md +208 -0
  331. package/skills/cloudflare/references/waf/patterns.md +236 -0
  332. package/skills/cloudflare/references/web-analytics/README.md +149 -0
  333. package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
  334. package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
  335. package/skills/cloudflare/references/web-analytics/integration.md +63 -0
  336. package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
  337. package/skills/cloudflare/references/workerd/README.md +85 -0
  338. package/skills/cloudflare/references/workerd/api.md +219 -0
  339. package/skills/cloudflare/references/workerd/configuration.md +200 -0
  340. package/skills/cloudflare/references/workerd/gotchas.md +151 -0
  341. package/skills/cloudflare/references/workerd/patterns.md +205 -0
  342. package/skills/cloudflare/references/workers/README.md +110 -0
  343. package/skills/cloudflare/references/workers/api.md +197 -0
  344. package/skills/cloudflare/references/workers/configuration.md +184 -0
  345. package/skills/cloudflare/references/workers/frameworks.md +200 -0
  346. package/skills/cloudflare/references/workers/gotchas.md +145 -0
  347. package/skills/cloudflare/references/workers/patterns.md +220 -0
  348. package/skills/cloudflare/references/workers-ai/README.md +206 -0
  349. package/skills/cloudflare/references/workers-ai/api.md +115 -0
  350. package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
  351. package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
  352. package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
  353. package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
  354. package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
  355. package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
  356. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  357. package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
  358. package/skills/cloudflare/references/workers-playground/README.md +131 -0
  359. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  360. package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
  361. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  362. package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
  363. package/skills/cloudflare/references/workers-vpc/README.md +130 -0
  364. package/skills/cloudflare/references/workers-vpc/api.md +196 -0
  365. package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
  366. package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
  367. package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
  368. package/skills/cloudflare/references/workflows/README.md +72 -0
  369. package/skills/cloudflare/references/workflows/api.md +237 -0
  370. package/skills/cloudflare/references/workflows/configuration.md +158 -0
  371. package/skills/cloudflare/references/workflows/gotchas.md +97 -0
  372. package/skills/cloudflare/references/workflows/patterns.md +245 -0
  373. package/skills/cloudflare/references/wrangler/README.md +143 -0
  374. package/skills/cloudflare/references/wrangler/api.md +188 -0
  375. package/skills/cloudflare/references/wrangler/configuration.md +198 -0
  376. package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
  377. package/skills/cloudflare/references/wrangler/patterns.md +211 -0
  378. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
  379. package/skills/cloudflare/references/zaraz/README.md +114 -0
  380. package/skills/cloudflare/references/zaraz/api.md +118 -0
  381. package/skills/cloudflare/references/zaraz/configuration.md +94 -0
  382. package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
  383. package/skills/cloudflare/references/zaraz/patterns.md +77 -0
  384. package/skills/docker/SKILL.md +7 -101
  385. package/skills/docker/references/advanced-examples.md +71 -0
  386. package/skills/docker/references/templates.md +34 -0
  387. package/skills/docs-marketer/SKILL.md +178 -0
  388. package/skills/docs-marketer/references/audit-categories.md +328 -0
  389. package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
  390. package/skills/docs-marketer/references/copilot-usage.md +16 -0
  391. package/skills/docs-marketer/references/feedback-loop.md +155 -0
  392. package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
  393. package/skills/drizzle-orm/SKILL.md +82 -0
  394. package/skills/durable-objects/SKILL.md +167 -0
  395. package/skills/durable-objects/references/advanced_features.md +29 -0
  396. package/skills/durable-objects/references/rules.md +300 -0
  397. package/skills/durable-objects/references/testing.md +261 -0
  398. package/skills/durable-objects/references/workers.md +336 -0
  399. package/skills/gcp/SKILL.md +37 -0
  400. package/skills/github-actions/SKILL.md +5 -58
  401. package/skills/github-actions/references/templates.md +65 -0
  402. package/skills/github-commander/SKILL.md +13 -21
  403. package/skills/github-commander/workflows/copilot-audit.md +12 -12
  404. package/skills/github-copilot-cli/SKILL.md +21 -26
  405. package/skills/github-repo-setup/SKILL.md +136 -0
  406. package/skills/github-repo-setup/references/community-standards.md +136 -0
  407. package/skills/github-repo-setup/references/github-automation.md +490 -0
  408. package/skills/github-repo-setup/references/inline-templates.md +205 -0
  409. package/skills/github-repo-setup/references/project-config.md +320 -0
  410. package/skills/gitlab/SKILL.md +7 -2
  411. package/skills/gitlab/package-lock.json +389 -389
  412. package/skills/golang/SKILL.md +8 -1
  413. package/skills/graphql/SKILL.md +30 -0
  414. package/skills/hono/SKILL.md +82 -0
  415. package/skills/journal-optimizer/SKILL.md +206 -0
  416. package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
  417. package/skills/llm-app-engineering/SKILL.md +18 -0
  418. package/skills/monorepo/SKILL.md +56 -0
  419. package/skills/multi-agent-orchestration/SKILL.md +14 -0
  420. package/skills/mysql/SKILL.md +6 -2
  421. package/skills/next-best-practices/SKILL.md +86 -0
  422. package/skills/next-best-practices/references/cache-components-examples.md +234 -0
  423. package/skills/next-best-practices/references/cache-components.md +210 -0
  424. package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
  425. package/skills/next-best-practices/references/upgrade.md +43 -0
  426. package/skills/next-cache-components/SKILL.md +441 -0
  427. package/skills/next-upgrade/SKILL.md +43 -0
  428. package/skills/next-upgrade/references/decision-tree.md +33 -0
  429. package/skills/nodejs/SKILL.md +46 -0
  430. package/skills/opentelemetry/SKILL.md +62 -0
  431. package/skills/package.json +39 -4
  432. package/skills/playwright-standard/SKILL.md +6 -11
  433. package/skills/playwright-standard/references/locators.md +7 -0
  434. package/skills/postgres/SKILL.md +6 -1
  435. package/skills/python/SKILL.md +8 -70
  436. package/skills/python/references/advanced-patterns.md +37 -0
  437. package/skills/python/references/config-templates.md +48 -0
  438. package/skills/rag-pipelines/SKILL.md +14 -0
  439. package/skills/redis/SKILL.md +31 -0
  440. package/skills/render/SKILL.md +35 -0
  441. package/skills/rust/SKILL.md +15 -25
  442. package/skills/rust/references/borrow-checker.md +13 -0
  443. package/skills/rust/references/ecosystem.md +11 -0
  444. package/skills/sandbox-sdk/SKILL.md +186 -0
  445. package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
  446. package/skills/sandbox-sdk/references/examples.md +52 -0
  447. package/skills/shadcn-ui/SKILL.md +22 -57
  448. package/skills/skill-builder/SKILL.md +23 -424
  449. package/skills/skill-builder/references/tutorial.md +457 -0
  450. package/skills/sqlite/SKILL.md +16 -5
  451. package/skills/table.md +59 -0
  452. package/skills/tailwind-css/SKILL.md +11 -60
  453. package/skills/tailwind-css/references/component-patterns.md +52 -0
  454. package/skills/trpc/SKILL.md +56 -0
  455. package/skills/typescript/SKILL.md +30 -433
  456. package/skills/typescript/references/tutorial.md +453 -0
  457. package/skills/vercel-ai-sdk/SKILL.md +48 -0
  458. package/skills/vitest-standard/SKILL.md +5 -11
  459. package/skills/vitest-standard/references/assertions.md +11 -0
  460. package/skills/web-perf/SKILL.md +207 -0
  461. package/skills/workers-best-practices/SKILL.md +120 -0
  462. package/skills/workers-best-practices/references/anti-patterns.md +18 -0
  463. package/skills/workers-best-practices/references/review.md +174 -0
  464. package/skills/workers-best-practices/references/rules.md +485 -0
  465. package/skills/wrangler/SKILL.md +43 -0
  466. package/skills/wrangler/references/cli-commands.md +861 -0
  467. package/skills/zod/SKILL.md +48 -0
  468. package/dist/tools-P4VGG4FH.js +0 -1
  469. package/skills/react-best-practices/AGENTS.md +0 -2883
  470. package/skills/react-best-practices/SKILL.md +0 -138
  471. /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
  472. /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
  473. /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
  474. /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
  475. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
  476. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
  477. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
  478. /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
  479. /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
  480. /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
  481. /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
  482. /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
  483. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
  484. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
  485. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
  486. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
  487. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
  488. /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
  489. /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
  490. /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
  491. /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
  492. /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
  493. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
  494. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
  495. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
  496. /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
  497. /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
  498. /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
  499. /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
  500. /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
  501. /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
  502. /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
  503. /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
  504. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
  505. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
  506. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
  507. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
  508. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
  509. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
  510. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
  511. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
  512. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
  513. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
  514. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
  515. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
  516. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
  517. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
  518. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
  519. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
  520. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
  521. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
  522. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
  523. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
  524. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
  525. /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
  526. /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
  527. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
  528. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
  529. /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
  530. /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
  531. /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: next-best-practices
3
+ description: Next.js and React performance optimization best practices - file conventions, RSC boundaries, data patterns, async APIs, Core Web Vitals, and bundle size. NOT for granular component caching strategies (use next-cache-components).
4
+ user-invocable: false
5
+ ---
6
+
7
+ # Next.js Best Practices
8
+
9
+ Apply these rules when writing or reviewing Next.js code.
10
+
11
+ ## Auto-Load Mechanism
12
+
13
+ This skill is configured with `user-invocable: false` to avoid trigger collisions with other Next.js/React skills. It acts as an implicit dependency that provides detailed file convention and RSC rules when navigating Next.js architectures.
14
+
15
+ ## 1. File Conventions & Routing
16
+
17
+ - **App Router**: Always use the `app/` directory.
18
+ - **Middleware**: Use `middleware.ts` at the root for routing logic.
19
+ - **Parallel/Intercepting**: Use `@folder` for parallel routes and `(.)` for intercepting routes (e.g. modals).
20
+ - **Default**: Use `default.tsx` for fallbacks in parallel routes.
21
+
22
+ ## 2. RSC Boundaries & Directives
23
+
24
+ - **Directives**: Use `'use client'` strictly at the boundary where client interactivity/hooks are required. Use `'use server'` for Server Actions.
25
+ - **Caching**: Use `'use cache'` (Next.js 15+) for caching functions or components.
26
+ - **Async Client Components**: Async React Client Components are invalid. You cannot `await` inside a Client Component; use `use(promise)` instead.
27
+ - **Serialization**: Props passed from Server to Client components must be serializable (no classes/functions without Server Actions).
28
+
29
+ ## 3. Async APIs (Next.js 15+)
30
+
31
+ - **Dynamic APIs**: `params`, `searchParams`, `cookies()`, and `headers()` are now ASYNC and must be `await`ed before use.
32
+ - **Route Handlers**: The `request` object in Route Handlers should be used carefully; prefer Server Actions for mutations.
33
+
34
+ ## 4. Functions & Error Handling
35
+
36
+ - **Navigation**: Use `useRouter()`, `usePathname()`, `useSearchParams()`, `useParams()` from `next/navigation`.
37
+ - **Errors**: Use `error.tsx` for React error boundaries. Use `redirect()` or `notFound()` for control flow.
38
+ - **Catch Blocks**: Use `unstable_rethrow` inside generic catch blocks to avoid catching internal Next.js thrown errors (like redirect).
39
+
40
+ ## 5. Data Patterns
41
+
42
+ - **Waterfalls**: Avoid data waterfalls by using `Promise.all()` for independent fetches, or preloading data.
43
+ - **Client Fetching**: Use SWR or React Query for client-side data fetching. Do not use `useEffect` for data fetching.
44
+
45
+ ## 6. Optimizations
46
+
47
+ - **Images**: Always use `next/image` (`<Image>`) with `sizes` for responsiveness and `priority` for LCP images.
48
+ - **Fonts**: Use `next/font/google` or `next/font/local` to avoid CLS.
49
+ - **Scripts**: Use `next/script` (`<Script>`) with appropriate `strategy` (e.g. `afterInteractive`).
50
+ - **Bundling**: Avoid barrel files (`index.ts` re-exporting everything) to improve bundle size and tree-shaking.
51
+
52
+ ## 7. Security (Critical)
53
+
54
+ - **SSRF Prevention**: Never pass unsanitized user input directly to `fetch()` URLs in Server Components or Route Handlers. Always validate and sanitize input, and construct URLs using the `URL` API.
55
+ - **Cache Data Leaks**: Be extremely careful with Next.js aggressive caching. Never use `fetch()` without `{ cache: 'no-store' }` or similar cache opt-outs when fetching user-specific or sensitive data.
56
+ - **Server Actions**: Always verify authorization and re-validate inputs inside Server Actions. They are public API endpoints, even if they look like internal functions.
57
+
58
+ ## 8. React Performance Guidelines (Vercel)
59
+
60
+ Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
61
+
62
+ ### Priority 1: Eliminating Waterfalls (CRITICAL)
63
+
64
+ - **`async-defer-await`**: Move `await` into branches where the data is actually used. Do not block the rendering of an entire component tree if only a deeply nested child requires the awaited data.
65
+
66
+ ### Priority 2: Bundle Size Optimization (CRITICAL)
67
+
68
+ - **`bundle-barrel-imports`**: Avoid barrel files (`index.ts`). Import directly from submodules (e.g., `import { Button } from '@/components/ui/button'` instead of `import { Button } from '@/components'`).
69
+
70
+ ### Priority 3: Server-Side Performance (HIGH)
71
+
72
+ - **`server-auth-actions`**: Explicitly authenticate all Server Actions and API routes. Do not assume context is protected just because it's called from a protected UI component.
73
+
74
+ ### Priority 4: Client-Side Data Fetching (MEDIUM-HIGH)
75
+
76
+ - **`client-swr-dedup`**: Use `SWR` or React Query for automatic request deduplication on the client instead of raw `useEffect` fetches.
77
+
78
+ ### Priority 5: Re-render Optimization (MEDIUM)
79
+
80
+ - **`rerender-defer-reads`**: Do not subscribe to state variables if they are only used inside an event callback. Use `useRef` for mutable values that do not require re-renders.
81
+
82
+ ### Priority 6: Rendering Performance (MEDIUM)
83
+
84
+ - **`rendering-animate-svg-wrapper`**: When animating SVGs, animate the wrapping `div` instead of the internal SVG DOM nodes to leverage GPU acceleration.
85
+
86
+ _(For deeper details, consult the `references/_.md`and`rules/_.md` files when needed)._
@@ -0,0 +1,234 @@
1
+ # Cache Component Examples & Deep Dives
2
+
3
+ ## Cache Invalidation
4
+
5
+ ### `cacheTag()` - Tag Cached Content
6
+
7
+ ```tsx
8
+ import { cacheTag } from 'next/cache'
9
+
10
+ async function getProducts() {
11
+ 'use cache'
12
+ cacheTag('products')
13
+ return db.products.findMany()
14
+ }
15
+
16
+ async function getProduct(id: string) {
17
+ 'use cache'
18
+ cacheTag('products', `product-${id}`)
19
+ return db.products.findUnique({ where: { id } })
20
+ }
21
+ ```
22
+
23
+ ### `updateTag()` - Immediate Invalidation
24
+
25
+ Use when you need the cache refreshed within the same request:
26
+
27
+ ```tsx
28
+ 'use server'
29
+
30
+ import { updateTag } from 'next/cache'
31
+
32
+ export async function updateProduct(id: string, data: FormData) {
33
+ await db.products.update({ where: { id }, data })
34
+ updateTag(`product-${id}`) // Immediate - same request sees fresh data
35
+ }
36
+ ```
37
+
38
+ ### `revalidateTag()` - Background Revalidation
39
+
40
+ Use for stale-while-revalidate behavior:
41
+
42
+ ```tsx
43
+ 'use server'
44
+
45
+ import { revalidateTag } from 'next/cache'
46
+
47
+ export async function createPost(data: FormData) {
48
+ await db.posts.create({ data })
49
+ revalidateTag('posts') // Background - next request sees fresh data
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Runtime Data Constraint
56
+
57
+ **Cannot** access `cookies()`, `headers()`, or `searchParams` inside `use cache`.
58
+
59
+ ### Solution: Pass as Arguments
60
+
61
+ ```tsx
62
+ // Wrong - runtime API inside use cache
63
+ async function CachedProfile() {
64
+ 'use cache'
65
+ const session = (await cookies()).get('session')?.value // Error!
66
+ return <div>{session}</div>
67
+ }
68
+
69
+ // Correct - extract outside, pass as argument
70
+ async function ProfilePage() {
71
+ const session = (await cookies()).get('session')?.value
72
+ return <CachedProfile sessionId={session} />
73
+ }
74
+
75
+ async function CachedProfile({ sessionId }: { sessionId: string }) {
76
+ 'use cache'
77
+ // sessionId becomes part of cache key automatically
78
+ const data = await fetchUserData(sessionId)
79
+ return <div>{data.name}</div>
80
+ }
81
+ ```
82
+
83
+ ### Exception: `use cache: private`
84
+
85
+ For compliance requirements when you can't refactor:
86
+
87
+ ```tsx
88
+ async function getData() {
89
+ 'use cache: private'
90
+ const session = (await cookies()).get('session')?.value // Allowed
91
+ return fetchData(session)
92
+ }
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Caching Security & Auth Boundaries
98
+
99
+ > **CRITICAL FAILURE MODE:** Caching user-specific or authorization-bound data globally will leak PII (Personally Identifiable Information) across different users' sessions.
100
+
101
+ **Rules for Auth Boundaries:**
102
+
103
+ 1. **Never use standard `'use cache'` for PII:** Standard cache entries are shared globally. If a component fetches user profile data using an auth token, you MUST NOT use the standard global `'use cache'`.
104
+ 2. **Explicitly include user identities in cache keys:** If you must cache per-user data, extract the user ID in a dynamic context and pass it as an argument so it becomes part of the automatic cache key (e.g., `async function CachedProfile({ userId }) { 'use cache'; ... }`).
105
+ 3. **Use `'use cache: private'` cautiously:** This ensures data isn't shared across requests, but relies heavily on correct platform caching configuration.
106
+ 4. **Dynamic by default for Auth:** For dashboards, settings, and secure data, default to **Dynamic** (Suspense) rather than Cached.
107
+
108
+ ---
109
+
110
+ ## Cache Key Generation
111
+
112
+ Cache keys are automatic based on:
113
+
114
+ - **Build ID** - invalidates all caches on deploy
115
+ - **Function ID** - hash of function location
116
+ - **Serializable arguments** - props become part of key
117
+ - **Closure variables** - outer scope values included
118
+
119
+ ```tsx
120
+ async function Component({ userId }: { userId: string }) {
121
+ const getData = async (filter: string) => {
122
+ 'use cache'
123
+ // Cache key = userId (closure) + filter (argument)
124
+ return fetch(`/api/users/${userId}?filter=${filter}`)
125
+ }
126
+ return getData('active')
127
+ }
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Complete Example
133
+
134
+ ```tsx
135
+ import { Suspense } from 'react'
136
+ import { cookies } from 'next/headers'
137
+ import { cacheLife, cacheTag } from 'next/cache'
138
+
139
+ export default function DashboardPage() {
140
+ return (
141
+ <>
142
+ {/* Static shell - instant from CDN */}
143
+ <header>
144
+ <h1>Dashboard</h1>
145
+ </header>
146
+ <nav>...</nav>
147
+
148
+ {/* Cached - fast, revalidates hourly */}
149
+ <Stats />
150
+
151
+ {/* Dynamic - streams in with fresh data */}
152
+ <Suspense fallback={<NotificationsSkeleton />}>
153
+ <Notifications />
154
+ </Suspense>
155
+ </>
156
+ )
157
+ }
158
+
159
+ async function Stats() {
160
+ 'use cache'
161
+ cacheLife('hours')
162
+ cacheTag('dashboard-stats')
163
+
164
+ const stats = await db.stats.aggregate()
165
+ return <StatsDisplay stats={stats} />
166
+ }
167
+
168
+ async function Notifications() {
169
+ const userId = (await cookies()).get('userId')?.value
170
+ const notifications = await db.notifications.findMany({
171
+ where: { userId, read: false },
172
+ })
173
+ return <NotificationList items={notifications} />
174
+ }
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Migration from Previous Versions
180
+
181
+ | Old Config | Replacement |
182
+ | --------------------------- | ---------------------------------- |
183
+ | `experimental.ppr` | `cacheComponents: true` |
184
+ | `dynamic = 'force-dynamic'` | Remove (default behavior) |
185
+ | `dynamic = 'force-static'` | `'use cache'` + `cacheLife('max')` |
186
+ | `revalidate = N` | `cacheLife({ revalidate: N })` |
187
+ | `unstable_cache()` | `'use cache'` directive |
188
+
189
+ ### Migrating `unstable_cache` to `use cache`
190
+
191
+ `unstable_cache` has been replaced by the `use cache` directive in Next.js 16. When `cacheComponents` is enabled, convert `unstable_cache` calls to `use cache` functions:
192
+
193
+ **Before (`unstable_cache`):**
194
+
195
+ ```tsx
196
+ import { unstable_cache } from 'next/cache'
197
+
198
+ const getCachedUser = unstable_cache(async (id) => getUser(id), ['my-app-user'], {
199
+ tags: ['users'],
200
+ revalidate: 60,
201
+ })
202
+
203
+ export default async function Page({ params }: { params: Promise<{ id: string }> }) {
204
+ const { id } = await params
205
+ const user = await getCachedUser(id)
206
+ return <div>{user.name}</div>
207
+ }
208
+ ```
209
+
210
+ **After (`use cache`):**
211
+
212
+ ```tsx
213
+ import { cacheLife, cacheTag } from 'next/cache'
214
+
215
+ async function getCachedUser(id: string) {
216
+ 'use cache'
217
+ cacheTag('users')
218
+ cacheLife({ revalidate: 60 })
219
+ return getUser(id)
220
+ }
221
+
222
+ export default async function Page({ params }: { params: Promise<{ id: string }> }) {
223
+ const { id } = await params
224
+ const user = await getCachedUser(id)
225
+ return <div>{user.name}</div>
226
+ }
227
+ ```
228
+
229
+ Key differences:
230
+
231
+ - **No manual cache keys** - `use cache` generates keys automatically from function arguments and closures. The `keyParts` array from `unstable_cache` is no longer needed.
232
+ - **Tags** - Replace `options.tags` with `cacheTag()` calls inside the function.
233
+ - **Revalidation** - Replace `options.revalidate` with `cacheLife({ revalidate: N })` or a built-in profile like `cacheLife('minutes')`.
234
+ - **Dynamic data** - `unstable_cache` did not support `cookies()` or `headers()` inside the callback. The same restriction applies to `use cache`, but you can use `'use cache: private'` if needed.
@@ -0,0 +1,210 @@
1
+ ---
2
+ name: next-cache-components
3
+ description: |
4
+ Next.js 16 Cache Components guidance. Use when refactoring React Server Components for performance, debugging Partial Prerendering (PPR) issues, or applying the `use cache` directive, `cacheLife`, `cacheTag`, `updateTag`, and `revalidateTag`.
5
+ Also use when deciding whether data should be static, cached, or dynamic, or when addressing stale data and cache invalidation.
6
+ ---
7
+
8
+ # Cache Components (Next.js 16+)
9
+
10
+ > **Note:** Cache Components are available in Next.js canary. Verify `cacheComponents` is supported in your target version before applying this guidance.
11
+
12
+ Cache Components enable Partial Prerendering (PPR) - mix static, cached, and dynamic content in a single route.
13
+
14
+ ## Enable Cache Components
15
+
16
+ ```ts
17
+ // next.config.ts
18
+ import type { NextConfig } from 'next'
19
+
20
+ const nextConfig: NextConfig = {
21
+ cacheComponents: true,
22
+ }
23
+
24
+ export default nextConfig
25
+ ```
26
+
27
+ This replaces the old `experimental.ppr` flag.
28
+
29
+ ---
30
+
31
+ ## Three Content Types
32
+
33
+ With Cache Components enabled, content falls into three categories:
34
+
35
+ ### 1. Static (Auto-Prerendered)
36
+
37
+ Synchronous code, imports, pure computations - prerendered at build time:
38
+
39
+ ```tsx
40
+ export default function Page() {
41
+ return (
42
+ <header>
43
+ <h1>Our Blog</h1> {/* Static - instant */}
44
+ <nav>...</nav>
45
+ </header>
46
+ )
47
+ }
48
+ ```
49
+
50
+ ### 2. Cached (`use cache`)
51
+
52
+ Async data that doesn't need fresh fetches every request:
53
+
54
+ ```tsx
55
+ async function BlogPosts() {
56
+ 'use cache'
57
+ cacheLife('hours')
58
+
59
+ const posts = await db.posts.findMany()
60
+ return <PostList posts={posts} />
61
+ }
62
+ ```
63
+
64
+ ### 3. Dynamic (Suspense)
65
+
66
+ Runtime data that must be fresh - wrap in Suspense:
67
+
68
+ ```tsx
69
+ import { Suspense } from 'react'
70
+
71
+ export default function Page() {
72
+ return (
73
+ <>
74
+ <BlogPosts /> {/* Cached */}
75
+ <Suspense fallback={<p>Loading...</p>}>
76
+ <UserPreferences /> {/* Dynamic - streams in */}
77
+ </Suspense>
78
+ </>
79
+ )
80
+ }
81
+
82
+ async function UserPreferences() {
83
+ const theme = (await cookies()).get('theme')?.value
84
+ return <p>Theme: {theme}</p>
85
+ }
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Selection Matrix: Static vs Cached vs Dynamic
91
+
92
+ When designing a component, use this matrix to determine the correct caching strategy:
93
+
94
+ | Data Type | Frequency of Change | Strategy | Implementation |
95
+ | ---------------------------- | ----------------------- | ----------- | ---------------------------- |
96
+ | Marketing copy, Layouts, Nav | Build-time or rarely | **Static** | Default Server Component |
97
+ | Blog posts, Product catalog | Periodic / CMS-driven | **Cached** | `'use cache'` + `cacheLife` |
98
+ | User profile, Shopping cart | Per-user / Real-time | **Dynamic** | Suspense + `await cookies()` |
99
+ | Admin dashboard, Analytics | High-frequency / Secure | **Dynamic** | Suspense + `await headers()` |
100
+
101
+ ---
102
+
103
+ ## `use cache` Directive
104
+
105
+ ### File Level
106
+
107
+ ```tsx
108
+ 'use cache'
109
+
110
+ export default async function Page() {
111
+ // Entire page is cached
112
+ const data = await fetchData()
113
+ return <div>{data}</div>
114
+ }
115
+ ```
116
+
117
+ ### Component Level
118
+
119
+ ```tsx
120
+ export async function CachedComponent() {
121
+ 'use cache'
122
+ const data = await fetchData()
123
+ return <div>{data}</div>
124
+ }
125
+ ```
126
+
127
+ ### Function Level
128
+
129
+ ```tsx
130
+ export async function getData() {
131
+ 'use cache'
132
+ return db.query('SELECT * FROM posts')
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Cache Profiles
139
+
140
+ ### Built-in Profiles
141
+
142
+ ```tsx
143
+ 'use cache' // Default: 5m stale, 15m revalidate
144
+ ```
145
+
146
+ ```tsx
147
+ 'use cache: remote' // Platform-provided cache (Redis, KV)
148
+ ```
149
+
150
+ ```tsx
151
+ 'use cache: private' // For compliance, allows runtime APIs
152
+ ```
153
+
154
+ ### `cacheLife()` - Custom Lifetime
155
+
156
+ ```tsx
157
+ import { cacheLife } from 'next/cache'
158
+
159
+ async function getData() {
160
+ 'use cache'
161
+ cacheLife('hours') // Built-in profile
162
+ return fetch('/api/data')
163
+ }
164
+ ```
165
+
166
+ Built-in profiles: `'default'`, `'minutes'`, `'hours'`, `'days'`, `'weeks'`, `'max'`
167
+
168
+ ### Inline Configuration
169
+
170
+ ```tsx
171
+ async function getData() {
172
+ 'use cache'
173
+ cacheLife({
174
+ stale: 3600, // 1 hour - serve stale while revalidating
175
+ revalidate: 7200, // 2 hours - background revalidation interval
176
+ expire: 86400, // 1 day - hard expiration
177
+ })
178
+ return fetch('/api/data')
179
+ }
180
+ ```
181
+
182
+ ## Deep Dives & Advanced Usage
183
+
184
+ For complete examples, migration strategies from `unstable_cache`, runtime constraints, and cache invalidation APIs (`cacheTag`, `updateTag`, `revalidateTag`), read the reference file:
185
+
186
+ **[Read: cache-components-examples.md](cache-components-examples.md)**
187
+
188
+ ## Limitations
189
+
190
+ - **Edge runtime not supported** - requires Node.js
191
+ - **Static export not supported** - needs server
192
+ - **Non-deterministic values** (`Math.random()`, `Date.now()`) execute once at build time inside `use cache`
193
+
194
+ For request-time randomness outside cache:
195
+
196
+ ```tsx
197
+ import { connection } from 'next/server'
198
+
199
+ async function DynamicContent() {
200
+ await connection() // Defer to request time
201
+ const id = crypto.randomUUID() // Different per request
202
+ return <div>{id}</div>
203
+ }
204
+ ```
205
+
206
+ Sources:
207
+
208
+ - [Cache Components Guide](https://nextjs.org/docs/app/getting-started/cache-components)
209
+ - [use cache Directive](https://nextjs.org/docs/app/api-reference/directives/use-cache)
210
+ - [unstable_cache (legacy)](https://nextjs.org/docs/app/api-reference/functions/unstable_cache)
@@ -0,0 +1,33 @@
1
+ # Next.js Upgrade Decision Tree
2
+
3
+ When upgrading Next.js, follow this decision tree to determine which official migration guide to read and which codemods to run.
4
+
5
+ ## 1. Upgrade from Next.js 14 to 15
6
+
7
+ If current version is 14.x and target is 15.x:
8
+
9
+ 1. Fetch guide: `https://nextjs.org/docs/app/guides/upgrading/version-15`
10
+ 2. **Major Breaking Change**: Async Request APIs (params, searchParams, cookies, headers are now Promises).
11
+ 3. **Run Codemod**: `npx @next/codemod@latest next-async-request-api .`
12
+ 4. **Other Codemods**:
13
+ - `next-request-geo-ip` (if using geo/ip in middleware)
14
+ - `next-dynamic-access-named-export` (if using dynamic imports)
15
+ 5. **Config Changes**: `experimental.ppr` is now `cacheComponents` (Next 15+).
16
+
17
+ ## 2. Upgrade from Next.js 13 to 14
18
+
19
+ If current version is 13.x and target is 14.x:
20
+
21
+ 1. Fetch guide: `https://nextjs.org/docs/app/guides/upgrading/version-14`
22
+ 2. **Major Breaking Change**: Node.js minimum version is 18.17.
23
+ 3. **Run Codemod**: `npx @next/codemod@latest next-Image-experimental .` (if moving from legacy Image).
24
+
25
+ ## 3. General Codemod Workflow
26
+
27
+ For any version upgrade:
28
+
29
+ 1. Ensure git working directory is clean.
30
+ 2. Run the specific codemod.
31
+ 3. Review the git diff.
32
+ 4. ONLY THEN run the `npm install` / `pnpm install` step to pin the new target version.
33
+ 5. Rebuild the app and manually fix TypeScript errors.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: next-upgrade
3
+ description: |
4
+ Upgrade Next.js to a specific target version using safe dependency bumps, codemods,
5
+ and diff reviews. Use when you need to execute major version bumps, resolve breaking changes,
6
+ "upgrading Next.js", "migrate to Next.js 15 or 16", or safely "run @next/codemod" against the repository before upgrading.
7
+ ---
8
+
9
+ # Upgrade Next.js
10
+
11
+ Upgrade the current project to a targeted Next.js version following official migration guides.
12
+
13
+ ## Instructions
14
+
15
+ 1. **Detect current environment**:
16
+ - Read `package.json` to identify the current Next.js version, React version, and package manager (`npm`, `pnpm`, `yarn`).
17
+ - Read the lockfile to ensure you use the correct package manager.
18
+
19
+ 2. **Determine target version**:
20
+ - Do NOT blindly use `@latest`. Always determine the explicit target version (e.g., `15.0.0`) based on user request or current LTS.
21
+ - For major version jumps, upgrade incrementally (e.g., 13 → 14 → 15).
22
+
23
+ 3. **Consult Upgrade Decision Tree**:
24
+ - Read [references/decision-tree.md](references/decision-tree.md) to find the correct codemods and checklists for your target version.
25
+
26
+ 4. **Security Gate**:
27
+ - You MUST request explicit user confirmation before running any codemod that modifies source files.
28
+
29
+ 5. **Run codemods FIRST (before installing new versions)**:
30
+ - Next.js codemods should often be run against the _old_ codebase before upgrading to automate breaking changes.
31
+ - Example: `npx @next/codemod@<target-version> <transform> <path>`
32
+
33
+ 6. **Pin dependencies**:
34
+ - Upgrade Next.js and peer dependencies to the specific target version:
35
+ - Example: `pnpm install next@15.0.0 react@19.0.0 react-dom@19.0.0`
36
+
37
+ 7. **Review Diff**:
38
+ - After running codemods and installing new dependencies, you MUST run `git diff` or review the changes.
39
+ - Do NOT commit or ship without explicit user review of the codemod changes.
40
+
41
+ 8. **Test the upgrade**:
42
+ - Run `npm run build` (or equivalent) to check for build errors.
43
+ - If there are errors in `next.config.js` or routing, resolve them manually.