contextos-agents 1.7.0 → 2.0.0-beta.3

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 (313) hide show
  1. package/.agents/AGENTS.md +16 -50
  2. package/.agents/adapters/aider/export.js +117 -99
  3. package/.agents/adapters/claude/export.js +68 -26
  4. package/.agents/adapters/copilot/export.js +90 -53
  5. package/.agents/adapters/cursor/export.js +100 -104
  6. package/.agents/adapters/drift-detector.js +196 -0
  7. package/.agents/adapters/gemini/export.js +76 -45
  8. package/.agents/adapters/pure-compiler.js +443 -0
  9. package/.agents/adapters/zed/export.js +104 -96
  10. package/.agents/compiled/registry.v2.json +504 -0
  11. package/.agents/compiled/registry.v2.sha256 +1 -0
  12. package/.agents/compiler/manifest-compiler.js +963 -0
  13. package/.agents/compiler/vendor/yaml.LICENSE.txt +13 -0
  14. package/.agents/compiler/vendor/yaml.SBOM.json +6 -0
  15. package/.agents/compiler/vendor/yaml.js +139 -0
  16. package/.agents/core/profiles/init.yaml +25 -0
  17. package/.agents/core/skills/context-manager/skill.yaml +3 -5
  18. package/.agents/core/skills/context-os/SKILL.md +3 -6
  19. package/.agents/core/skills/context-os/skill.yaml +3 -8
  20. package/.agents/core/skills/engineering-workflow/skill.yaml +1 -7
  21. package/.agents/core/skills/gemini-precision/skill.yaml +1 -6
  22. package/.agents/core/skills/gstack-roles/skill.yaml +3 -6
  23. package/.agents/core/skills/ponytail-mindset/skill.yaml +1 -7
  24. package/.agents/core/skills/security/skill.yaml +15 -3
  25. package/.agents/ctx.js +537 -112
  26. package/.agents/customization-dx.js +282 -0
  27. package/.agents/doctor.js +855 -66
  28. package/.agents/filesystem/index.js +71 -0
  29. package/.agents/filesystem/journaled-transaction.js +451 -0
  30. package/.agents/filesystem/lockfile-v2.js +275 -0
  31. package/.agents/filesystem/platform-hardening.js +222 -0
  32. package/.agents/filesystem/project-lock.js +218 -0
  33. package/.agents/filesystem/safe-path.js +256 -0
  34. package/.agents/generated/claude/skills/context-os/SKILL.md +1 -1
  35. package/.agents/generated/gemini/skills/context-os/SKILL.md +2 -2
  36. package/.agents/plugins/contextos/plugin.json +1 -1
  37. package/.agents/plugins.js +278 -64
  38. package/.agents/profiles.js +486 -51
  39. package/.agents/resolver/canonical-resolver.js +1348 -0
  40. package/.agents/resolver.js +50 -534
  41. package/.agents/rules/rule-catalog.js +525 -0
  42. package/.agents/schemas/attestation.review.v1.json +111 -0
  43. package/.agents/schemas/attestation.verification.v1.json +85 -0
  44. package/.agents/schemas/lockfile.v2.schema.json +134 -0
  45. package/.agents/schemas/profile.v2.schema.json +114 -0
  46. package/.agents/schemas/runtime.thread.v1.json +192 -0
  47. package/.agents/schemas/skill.manifest.v2.json +177 -0
  48. package/.agents/schemas/verification.spec.v1.json +39 -0
  49. package/.agents/schemas/workspace.graph.schema.json +106 -0
  50. package/.agents/skills-index.json +6 -166
  51. package/.agents/stats.js +9 -9
  52. package/.agents/transaction-core/event-store.js +288 -0
  53. package/.agents/transaction-core/idempotency.js +129 -0
  54. package/.agents/transaction-core/ipc-lock.js +311 -0
  55. package/.agents/transaction-core/plugin-supply-chain-bundle.js +436 -0
  56. package/.agents/validate.js +44 -1
  57. package/.agents/watch.js +354 -102
  58. package/.agents/workspace/workspace-graph.js +778 -0
  59. package/README.md +59 -387
  60. package/benchmarks/v2/analysis/statistics.js +140 -0
  61. package/benchmarks/v2/analysis/stats.js +69 -0
  62. package/benchmarks/v2/arms/arm-definitions.js +79 -0
  63. package/benchmarks/v2/dataset.schema.json +34 -0
  64. package/benchmarks/v2/evaluators/index.js +25 -0
  65. package/benchmarks/v2/evaluators/verified-success.js +116 -0
  66. package/benchmarks/v2/harness/runner.js +88 -0
  67. package/benchmarks/v2/pilot-tasks.json +392 -0
  68. package/bin/commands/recover.js +88 -0
  69. package/bin/commands/update.js +80 -17
  70. package/bin/commands.js +62 -25
  71. package/bin/index.js +138 -81
  72. package/bin/lib/lockfile.js +5 -3
  73. package/bin/lib/safe-writer.js +34 -3
  74. package/package.json +87 -72
  75. package/registry.json +2 -2
  76. package/registry.v2.schema.json +86 -0
  77. package/.agents/core/profiles/backend.yaml +0 -47
  78. package/.agents/core/profiles/enterprise.yaml +0 -46
  79. package/.agents/core/profiles/frontend.yaml +0 -46
  80. package/.agents/core/profiles/hackathon.yaml +0 -45
  81. package/.agents/core/profiles/mvp.yaml +0 -44
  82. package/.agents/core/profiles/startup.yaml +0 -48
  83. package/.agents/core/skills/adapters/EXAMPLES.md +0 -19
  84. package/.agents/core/skills/adapters/SKILL.md +0 -105
  85. package/.agents/core/skills/adapters/TROUBLESHOOTING.md +0 -7
  86. package/.agents/core/skills/adapters/VALIDATION.json +0 -12
  87. package/.agents/core/skills/adapters/skill.yaml +0 -16
  88. package/.agents/core/skills/architecture-diagrams/SKILL.md +0 -108
  89. package/.agents/core/skills/architecture-diagrams/VALIDATION.json +0 -12
  90. package/.agents/core/skills/architecture-diagrams/skill.yaml +0 -12
  91. package/.agents/core/skills/brutalist-design/SKILL.md +0 -150
  92. package/.agents/core/skills/brutalist-design/VALIDATION.json +0 -12
  93. package/.agents/core/skills/brutalist-design/skill.yaml +0 -12
  94. package/.agents/core/skills/database/EXAMPLES.md +0 -74
  95. package/.agents/core/skills/database/SKILL.md +0 -101
  96. package/.agents/core/skills/database/TROUBLESHOOTING.md +0 -18
  97. package/.agents/core/skills/database/VALIDATION.json +0 -11
  98. package/.agents/core/skills/database/skill.yaml +0 -31
  99. package/.agents/core/skills/ddd/EXAMPLES.md +0 -42
  100. package/.agents/core/skills/ddd/SKILL.md +0 -247
  101. package/.agents/core/skills/ddd/TROUBLESHOOTING.md +0 -19
  102. package/.agents/core/skills/ddd/VALIDATION.json +0 -12
  103. package/.agents/core/skills/ddd/ddd.md +0 -178
  104. package/.agents/core/skills/ddd/skill.yaml +0 -17
  105. package/.agents/core/skills/decisions/EXAMPLES.md +0 -35
  106. package/.agents/core/skills/decisions/SKILL.md +0 -90
  107. package/.agents/core/skills/decisions/TROUBLESHOOTING.md +0 -13
  108. package/.agents/core/skills/decisions/VALIDATION.json +0 -12
  109. package/.agents/core/skills/decisions/skill.yaml +0 -16
  110. package/.agents/core/skills/docker/EXAMPLES.md +0 -56
  111. package/.agents/core/skills/docker/SKILL.md +0 -63
  112. package/.agents/core/skills/docker/TROUBLESHOOTING.md +0 -18
  113. package/.agents/core/skills/docker/VALIDATION.json +0 -11
  114. package/.agents/core/skills/docker/skill.yaml +0 -29
  115. package/.agents/core/skills/fastapi/EXAMPLES.md +0 -36
  116. package/.agents/core/skills/fastapi/SKILL.md +0 -148
  117. package/.agents/core/skills/fastapi/TROUBLESHOOTING.md +0 -19
  118. package/.agents/core/skills/fastapi/VALIDATION.json +0 -12
  119. package/.agents/core/skills/fastapi/fastapi.md +0 -112
  120. package/.agents/core/skills/fastapi/skill.yaml +0 -17
  121. package/.agents/core/skills/generators/EXAMPLES.md +0 -19
  122. package/.agents/core/skills/generators/SKILL.md +0 -112
  123. package/.agents/core/skills/generators/TROUBLESHOOTING.md +0 -7
  124. package/.agents/core/skills/generators/VALIDATION.json +0 -12
  125. package/.agents/core/skills/generators/skill.yaml +0 -25
  126. package/.agents/core/skills/generators/templates/API.md +0 -77
  127. package/.agents/core/skills/generators/templates/ARCHITECTURE.md +0 -70
  128. package/.agents/core/skills/generators/templates/DATABASE.md +0 -42
  129. package/.agents/core/skills/generators/templates/DECISION.md +0 -46
  130. package/.agents/core/skills/generators/templates/PRD.md +0 -67
  131. package/.agents/core/skills/generators/templates/PROJECT_GRAPH.md +0 -56
  132. package/.agents/core/skills/generators/templates/ROADMAP.md +0 -51
  133. package/.agents/core/skills/generators/templates/TASKS.md +0 -43
  134. package/.agents/core/skills/generators/templates/UI.md +0 -73
  135. package/.agents/core/skills/graphify/EXAMPLES.md +0 -73
  136. package/.agents/core/skills/graphify/SKILL.md +0 -130
  137. package/.agents/core/skills/graphify/VALIDATION.json +0 -12
  138. package/.agents/core/skills/graphify/skill.yaml +0 -18
  139. package/.agents/core/skills/impeccable-design/EXAMPLES.md +0 -26
  140. package/.agents/core/skills/impeccable-design/SKILL.md +0 -201
  141. package/.agents/core/skills/impeccable-design/TROUBLESHOOTING.md +0 -19
  142. package/.agents/core/skills/impeccable-design/VALIDATION.json +0 -12
  143. package/.agents/core/skills/impeccable-design/skill.yaml +0 -20
  144. package/.agents/core/skills/interview-me/SKILL.md +0 -97
  145. package/.agents/core/skills/interview-me/VALIDATION.json +0 -12
  146. package/.agents/core/skills/interview-me/skill.yaml +0 -12
  147. package/.agents/core/skills/microservices/EXAMPLES.md +0 -38
  148. package/.agents/core/skills/microservices/SKILL.md +0 -164
  149. package/.agents/core/skills/microservices/TROUBLESHOOTING.md +0 -19
  150. package/.agents/core/skills/microservices/VALIDATION.json +0 -12
  151. package/.agents/core/skills/microservices/microservices.md +0 -119
  152. package/.agents/core/skills/microservices/skill.yaml +0 -17
  153. package/.agents/core/skills/minimalist-design/SKILL.md +0 -113
  154. package/.agents/core/skills/minimalist-design/VALIDATION.json +0 -12
  155. package/.agents/core/skills/minimalist-design/skill.yaml +0 -12
  156. package/.agents/core/skills/nestjs/EXAMPLES.md +0 -40
  157. package/.agents/core/skills/nestjs/SKILL.md +0 -139
  158. package/.agents/core/skills/nestjs/TROUBLESHOOTING.md +0 -19
  159. package/.agents/core/skills/nestjs/VALIDATION.json +0 -12
  160. package/.agents/core/skills/nestjs/nestjs.md +0 -103
  161. package/.agents/core/skills/nestjs/skill.yaml +0 -17
  162. package/.agents/core/skills/nextjs/EXAMPLES.md +0 -40
  163. package/.agents/core/skills/nextjs/SKILL.md +0 -163
  164. package/.agents/core/skills/nextjs/TROUBLESHOOTING.md +0 -19
  165. package/.agents/core/skills/nextjs/VALIDATION.json +0 -12
  166. package/.agents/core/skills/nextjs/nextjs.md +0 -67
  167. package/.agents/core/skills/nextjs/skill.yaml +0 -17
  168. package/.agents/core/skills/node/EXAMPLES.md +0 -80
  169. package/.agents/core/skills/node/SKILL.md +0 -128
  170. package/.agents/core/skills/node/TROUBLESHOOTING.md +0 -19
  171. package/.agents/core/skills/node/VALIDATION.json +0 -12
  172. package/.agents/core/skills/node/node.md +0 -87
  173. package/.agents/core/skills/node/skill.yaml +0 -17
  174. package/.agents/core/skills/performance/EXAMPLES.md +0 -30
  175. package/.agents/core/skills/performance/SKILL.md +0 -75
  176. package/.agents/core/skills/performance/TROUBLESHOOTING.md +0 -19
  177. package/.agents/core/skills/performance/VALIDATION.json +0 -12
  178. package/.agents/core/skills/performance/performance.md +0 -52
  179. package/.agents/core/skills/performance/skill.yaml +0 -17
  180. package/.agents/core/skills/react/EXAMPLES.md +0 -79
  181. package/.agents/core/skills/react/SKILL.md +0 -132
  182. package/.agents/core/skills/react/TROUBLESHOOTING.md +0 -19
  183. package/.agents/core/skills/react/VALIDATION.json +0 -12
  184. package/.agents/core/skills/react/react.md +0 -93
  185. package/.agents/core/skills/react/skill.yaml +0 -17
  186. package/.agents/core/skills/react-best-practices/SKILL.md +0 -155
  187. package/.agents/core/skills/react-best-practices/VALIDATION.json +0 -12
  188. package/.agents/core/skills/react-best-practices/skill.yaml +0 -14
  189. package/.agents/core/skills/redesign-audit/SKILL.md +0 -117
  190. package/.agents/core/skills/redesign-audit/VALIDATION.json +0 -12
  191. package/.agents/core/skills/redesign-audit/skill.yaml +0 -12
  192. package/.agents/core/skills/soft-design/SKILL.md +0 -108
  193. package/.agents/core/skills/soft-design/VALIDATION.json +0 -12
  194. package/.agents/core/skills/soft-design/skill.yaml +0 -12
  195. package/.agents/core/skills/state-management/EXAMPLES.md +0 -56
  196. package/.agents/core/skills/state-management/SKILL.md +0 -48
  197. package/.agents/core/skills/state-management/TROUBLESHOOTING.md +0 -18
  198. package/.agents/core/skills/state-management/VALIDATION.json +0 -11
  199. package/.agents/core/skills/state-management/skill.yaml +0 -28
  200. package/.agents/core/skills/subagent-orchestrator/SKILL.md +0 -117
  201. package/.agents/core/skills/subagent-orchestrator/VALIDATION.json +0 -12
  202. package/.agents/core/skills/subagent-orchestrator/skill.yaml +0 -12
  203. package/.agents/core/skills/system-design/EXAMPLES.md +0 -75
  204. package/.agents/core/skills/system-design/SKILL.md +0 -419
  205. package/.agents/core/skills/system-design/TROUBLESHOOTING.md +0 -19
  206. package/.agents/core/skills/system-design/VALIDATION.json +0 -12
  207. package/.agents/core/skills/system-design/skill.yaml +0 -20
  208. package/.agents/core/skills/system-design/system-design.md +0 -112
  209. package/.agents/core/skills/testing/EXAMPLES.md +0 -71
  210. package/.agents/core/skills/testing/SKILL.md +0 -70
  211. package/.agents/core/skills/testing/TROUBLESHOOTING.md +0 -18
  212. package/.agents/core/skills/testing/VALIDATION.json +0 -11
  213. package/.agents/core/skills/testing/skill.yaml +0 -32
  214. package/.agents/core/skills/typescript/EXAMPLES.md +0 -64
  215. package/.agents/core/skills/typescript/SKILL.md +0 -112
  216. package/.agents/core/skills/typescript/TROUBLESHOOTING.md +0 -19
  217. package/.agents/core/skills/typescript/VALIDATION.json +0 -12
  218. package/.agents/core/skills/typescript/skill.yaml +0 -17
  219. package/.agents/core/skills/typescript/typescript.md +0 -71
  220. package/.agents/core/skills/ui-design/EXAMPLES.md +0 -21
  221. package/.agents/core/skills/ui-design/SKILL.md +0 -124
  222. package/.agents/core/skills/ui-design/TROUBLESHOOTING.md +0 -19
  223. package/.agents/core/skills/ui-design/VALIDATION.json +0 -12
  224. package/.agents/core/skills/ui-design/skill.yaml +0 -17
  225. package/.agents/core/skills/ui-design/ui.md +0 -88
  226. package/.agents/core/skills/ui-ux-pro/EXAMPLES.md +0 -62
  227. package/.agents/core/skills/ui-ux-pro/SKILL.md +0 -375
  228. package/.agents/core/skills/ui-ux-pro/TROUBLESHOOTING.md +0 -19
  229. package/.agents/core/skills/ui-ux-pro/VALIDATION.json +0 -12
  230. package/.agents/core/skills/ui-ux-pro/skill.yaml +0 -19
  231. package/.agents/core/skills/ux-design/EXAMPLES.md +0 -36
  232. package/.agents/core/skills/ux-design/SKILL.md +0 -116
  233. package/.agents/core/skills/ux-design/TROUBLESHOOTING.md +0 -19
  234. package/.agents/core/skills/ux-design/VALIDATION.json +0 -12
  235. package/.agents/core/skills/ux-design/skill.yaml +0 -17
  236. package/.agents/core/skills/ux-design/ux.md +0 -80
  237. package/.agents/core/skills/vercel-optimize/SKILL.md +0 -83
  238. package/.agents/core/skills/vercel-optimize/VALIDATION.json +0 -12
  239. package/.agents/core/skills/vercel-optimize/scripts/collect-signals.mjs +0 -131
  240. package/.agents/core/skills/vercel-optimize/scripts/gate-investigations.mjs +0 -142
  241. package/.agents/core/skills/vercel-optimize/scripts/merge-signals.mjs +0 -143
  242. package/.agents/core/skills/vercel-optimize/scripts/scan-codebase.mjs +0 -174
  243. package/.agents/core/skills/vercel-optimize/skill.yaml +0 -18
  244. package/.agents/core/skills/web-accessibility/EXAMPLES.md +0 -39
  245. package/.agents/core/skills/web-accessibility/SKILL.md +0 -170
  246. package/.agents/core/skills/web-accessibility/TROUBLESHOOTING.md +0 -19
  247. package/.agents/core/skills/web-accessibility/VALIDATION.json +0 -12
  248. package/.agents/core/skills/web-accessibility/accessibility.md +0 -63
  249. package/.agents/core/skills/web-accessibility/skill.yaml +0 -17
  250. package/.agents/generated/claude/skills/adapters/SKILL.md +0 -126
  251. package/.agents/generated/claude/skills/architecture-diagrams/SKILL.md +0 -101
  252. package/.agents/generated/claude/skills/brutalist-design/SKILL.md +0 -145
  253. package/.agents/generated/claude/skills/database/SKILL.md +0 -191
  254. package/.agents/generated/claude/skills/ddd/SKILL.md +0 -305
  255. package/.agents/generated/claude/skills/decisions/SKILL.md +0 -134
  256. package/.agents/generated/claude/skills/docker/SKILL.md +0 -135
  257. package/.agents/generated/claude/skills/fastapi/SKILL.md +0 -200
  258. package/.agents/generated/claude/skills/generators/SKILL.md +0 -133
  259. package/.agents/generated/claude/skills/graphify/SKILL.md +0 -198
  260. package/.agents/generated/claude/skills/impeccable-design/SKILL.md +0 -241
  261. package/.agents/generated/claude/skills/interview-me/SKILL.md +0 -90
  262. package/.agents/generated/claude/skills/microservices/SKILL.md +0 -218
  263. package/.agents/generated/claude/skills/minimalist-design/SKILL.md +0 -108
  264. package/.agents/generated/claude/skills/nestjs/SKILL.md +0 -195
  265. package/.agents/generated/claude/skills/nextjs/SKILL.md +0 -219
  266. package/.agents/generated/claude/skills/node/SKILL.md +0 -224
  267. package/.agents/generated/claude/skills/performance/SKILL.md +0 -121
  268. package/.agents/generated/claude/skills/react/SKILL.md +0 -227
  269. package/.agents/generated/claude/skills/react-best-practices/SKILL.md +0 -146
  270. package/.agents/generated/claude/skills/redesign-audit/SKILL.md +0 -112
  271. package/.agents/generated/claude/skills/soft-design/SKILL.md +0 -103
  272. package/.agents/generated/claude/skills/state-management/SKILL.md +0 -120
  273. package/.agents/generated/claude/skills/subagent-orchestrator/SKILL.md +0 -110
  274. package/.agents/generated/claude/skills/system-design/SKILL.md +0 -507
  275. package/.agents/generated/claude/skills/testing/SKILL.md +0 -157
  276. package/.agents/generated/claude/skills/typescript/SKILL.md +0 -192
  277. package/.agents/generated/claude/skills/ui-design/SKILL.md +0 -161
  278. package/.agents/generated/claude/skills/ui-ux-pro/SKILL.md +0 -451
  279. package/.agents/generated/claude/skills/ux-design/SKILL.md +0 -168
  280. package/.agents/generated/claude/skills/vercel-optimize/SKILL.md +0 -76
  281. package/.agents/generated/claude/skills/web-accessibility/SKILL.md +0 -225
  282. package/.agents/generated/gemini/skills/adapters/SKILL.md +0 -135
  283. package/.agents/generated/gemini/skills/architecture-diagrams/SKILL.md +0 -107
  284. package/.agents/generated/gemini/skills/brutalist-design/SKILL.md +0 -151
  285. package/.agents/generated/gemini/skills/database/SKILL.md +0 -200
  286. package/.agents/generated/gemini/skills/ddd/SKILL.md +0 -314
  287. package/.agents/generated/gemini/skills/decisions/SKILL.md +0 -143
  288. package/.agents/generated/gemini/skills/docker/SKILL.md +0 -144
  289. package/.agents/generated/gemini/skills/fastapi/SKILL.md +0 -209
  290. package/.agents/generated/gemini/skills/generators/SKILL.md +0 -142
  291. package/.agents/generated/gemini/skills/graphify/SKILL.md +0 -205
  292. package/.agents/generated/gemini/skills/impeccable-design/SKILL.md +0 -250
  293. package/.agents/generated/gemini/skills/interview-me/SKILL.md +0 -96
  294. package/.agents/generated/gemini/skills/microservices/SKILL.md +0 -227
  295. package/.agents/generated/gemini/skills/minimalist-design/SKILL.md +0 -114
  296. package/.agents/generated/gemini/skills/nestjs/SKILL.md +0 -204
  297. package/.agents/generated/gemini/skills/nextjs/SKILL.md +0 -298
  298. package/.agents/generated/gemini/skills/node/SKILL.md +0 -323
  299. package/.agents/generated/gemini/skills/performance/SKILL.md +0 -185
  300. package/.agents/generated/gemini/skills/react/SKILL.md +0 -332
  301. package/.agents/generated/gemini/skills/react-best-practices/SKILL.md +0 -152
  302. package/.agents/generated/gemini/skills/redesign-audit/SKILL.md +0 -118
  303. package/.agents/generated/gemini/skills/soft-design/SKILL.md +0 -109
  304. package/.agents/generated/gemini/skills/state-management/SKILL.md +0 -129
  305. package/.agents/generated/gemini/skills/subagent-orchestrator/SKILL.md +0 -116
  306. package/.agents/generated/gemini/skills/system-design/SKILL.md +0 -631
  307. package/.agents/generated/gemini/skills/testing/SKILL.md +0 -166
  308. package/.agents/generated/gemini/skills/typescript/SKILL.md +0 -275
  309. package/.agents/generated/gemini/skills/ui-design/SKILL.md +0 -170
  310. package/.agents/generated/gemini/skills/ui-ux-pro/SKILL.md +0 -460
  311. package/.agents/generated/gemini/skills/ux-design/SKILL.md +0 -177
  312. package/.agents/generated/gemini/skills/vercel-optimize/SKILL.md +0 -82
  313. package/.agents/generated/gemini/skills/web-accessibility/SKILL.md +0 -300
@@ -1,155 +0,0 @@
1
- ---
2
- name: vercel-react-best-practices
3
- description: React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
4
- license: MIT
5
- metadata:
6
- author: vercel
7
- version: "1.0.0"
8
- ---
9
-
10
- # Vercel React Best Practices
11
-
12
- ## Overview
13
-
14
- Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring, code generation, and production review.
15
-
16
- ## When to Use
17
-
18
- - When authoring new React functional components or Next.js App Router pages.
19
- - When implementing data fetching (client or server-side Server Actions, RSC).
20
- - When reviewing pull requests for rendering bottlenecks or memory leaks.
21
- - When optimizing bundle size, eliminating network waterfalls, or improving Core Web Vitals (LCP, INP, CLS).
22
-
23
- ## Rules & Patterns
24
-
25
- ### Rule Categories by Priority
26
-
27
- | Priority | Category | Impact | Prefix |
28
- |----------|----------|--------|--------|
29
- | 1 | Eliminating Waterfalls | CRITICAL | `async-` |
30
- | 2 | Bundle Size Optimization | CRITICAL | `bundle-` |
31
- | 3 | Server-Side Performance | HIGH | `server-` |
32
- | 4 | Client-Side Data Fetching | MEDIUM-HIGH | `client-` |
33
- | 5 | Re-render Optimization | MEDIUM | `rerender-` |
34
- | 6 | Rendering Performance | MEDIUM | `rendering-` |
35
- | 7 | JavaScript Performance | LOW-MEDIUM | `js-` |
36
- | 8 | Advanced Patterns | LOW | `advanced-` |
37
-
38
- ### 1. Eliminating Waterfalls (CRITICAL)
39
-
40
- - `async-cheap-condition-before-await` - Check cheap sync conditions before awaiting flags or remote values.
41
- - `async-defer-await` - Move await into branches where actually used.
42
- - `async-parallel` - Use `Promise.all()` for independent asynchronous operations.
43
- - `async-dependencies` - Use better-all for partial dependencies.
44
- - `async-api-routes` - Start promises early, await late in API routes.
45
- - `async-suspense-boundaries` - Use Suspense to stream content progressively.
46
-
47
- ### 2. Bundle Size Optimization (CRITICAL)
48
-
49
- - `bundle-barrel-imports` - Import directly from specific modules, avoid broad barrel files (`index.ts`).
50
- - `bundle-analyzable-paths` - Prefer statically analyzable import paths to avoid bloated traces.
51
- - `bundle-dynamic-imports` - Use `next/dynamic` or `React.lazy()` for heavy interactive components.
52
- - `bundle-defer-third-party` - Load analytics and logging scripts after hydration.
53
- - `bundle-conditional` - Load modules only when feature flags or user actions require them.
54
- - `bundle-preload` - Preload assets on hover or focus for perceived instant navigation.
55
-
56
- ### 3. Server-Side Performance (HIGH)
57
-
58
- - `server-auth-actions` - Always authenticate server actions like API routes.
59
- - `server-cache-react` - Use `React.cache()` for per-request deduplication.
60
- - `server-cache-lru` - Use LRU cache for cross-request caching.
61
- - `server-dedup-props` - Avoid duplicate serialization in RSC props.
62
- - `server-hoist-static-io` - Hoist static I/O to module level.
63
- - `server-no-shared-module-state` - Avoid module-level mutable request state in RSC/SSR.
64
- - `server-serialization` - Minimize data passed across the server-client boundary.
65
- - `server-parallel-fetching` - Restructure components to parallelize fetches.
66
- - `server-after-nonblocking` - Use `after()` for non-blocking operations like analytics logging.
67
-
68
- ### 4. Client-Side Data Fetching (MEDIUM-HIGH)
69
-
70
- - `client-swr-dedup` - Use SWR or TanStack Query for automatic request deduplication.
71
- - `client-event-listeners` - Deduplicate global event listeners.
72
- - `client-passive-event-listeners` - Use passive listeners for scroll and touch.
73
- - `client-localstorage-schema` - Version and minimize data stored in localStorage.
74
-
75
- ### 5. Re-render Optimization (MEDIUM)
76
-
77
- - `rerender-defer-reads` - Don't subscribe to state only used in callbacks.
78
- - `rerender-memo` - Extract expensive work into memoized components.
79
- - `rerender-memo-with-default-value` - Hoist default non-primitive props.
80
- - `rerender-dependencies` - Use primitive dependencies in effects and callbacks.
81
- - `rerender-derived-state` - Subscribe to derived booleans, not raw high-frequency values.
82
- - `rerender-derived-state-no-effect` - Derive state during render, never in `useEffect`.
83
- - `rerender-functional-setstate` - Use functional `setState` for stable callback references.
84
- - `rerender-lazy-state-init` - Pass initializer functions to `useState` for expensive computations.
85
- - `rerender-transitions` - Use `startTransition` for non-urgent state updates.
86
- - `rerender-use-deferred-value` - Defer expensive renders to keep input responsive.
87
- - `rerender-no-inline-components` - Never define subcomponents inside component render bodies.
88
-
89
- ### 6. Rendering Performance (MEDIUM)
90
-
91
- - `rendering-content-visibility` - Use `content-visibility: auto` for long offscreen lists.
92
- - `rendering-hoist-jsx` - Extract static JSX elements outside components.
93
- - `rendering-conditional-render` - Use ternary (`condition ? <Comp /> : null`), not `&&` to avoid 0 rendering.
94
- - `rendering-usetransition-loading` - Prefer `useTransition` for loading state indicators.
95
-
96
- ### 7. JavaScript Performance (LOW-MEDIUM)
97
-
98
- - `js-index-maps` - Build `Map` for repeated lookups instead of repeated array searches.
99
- - `js-cache-property-access` - Cache object properties in tight loops.
100
- - `js-early-exit` - Return early from functions to avoid nested complexity.
101
- - `js-hoist-regexp` - Hoist RegExp creation outside loops and functions.
102
- - `js-set-map-lookups` - Use `Set` / `Map` for O(1) lookups.
103
-
104
- ### 8. Advanced Patterns (LOW)
105
-
106
- - `advanced-effect-event-deps` - Don't put `useEffectEvent` results in effect deps.
107
- - `advanced-event-handler-refs` - Store event handlers in refs for stable listener attachments.
108
- - `advanced-init-once` - Initialize app singletons once per lifecycle.
109
-
110
- ## Code Examples
111
-
112
- ```tsx
113
- // [GOOD] Parallel server fetching without waterfall
114
- import { cache } from 'react';
115
-
116
- export const getUser = cache(async (id: string) => {
117
- return db.user.findUnique({ where: { id } });
118
- });
119
-
120
- export default async function UserPage({ params }: { params: { id: string } }) {
121
- // Parallel dispatch
122
- const userPromise = getUser(params.id);
123
- const postsPromise = getPosts(params.id);
124
-
125
- const [user, posts] = await Promise.all([userPromise, postsPromise]);
126
-
127
- return (
128
- <main>
129
- <h1>{user.name}</h1>
130
- <PostList posts={posts} />
131
- </main>
132
- );
133
- }
134
- ```
135
-
136
- ## Validation Checklist
137
-
138
- - [ ] All independent async fetches use `Promise.all()` instead of sequential `await`.
139
- - [ ] Direct imports used instead of barrel file imports for large libraries.
140
- - [ ] No `useEffect` used for deriving computed state from props or state.
141
- - [ ] Heavy interactive modals/drawers loaded dynamically via `next/dynamic`.
142
- - [ ] Server actions perform authentication checks before data mutations.
143
- - [ ] Zero subcomponents defined inside the body of parent components.
144
-
145
- ## Common Mistakes
146
-
147
- - Writing sequential `await fetchA(); await fetchB();` creating avoidable network waterfalls.
148
- - Importing from package root barrel files triggering full bundle inclusion.
149
- - Setting state inside `useEffect` in response to prop changes.
150
- - Serializing full database models with sensitive or unused fields to Client Components.
151
-
152
- ## Integration Notes
153
-
154
- - Pairs with `react` and `nextjs` skills for idiomatic App Router patterns.
155
- - Complements `performance` for Lighthouse and Core Web Vitals verification.
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "rules_followed": {
6
- "type": "boolean"
7
- }
8
- },
9
- "required": [
10
- "rules_followed"
11
- ]
12
- }
@@ -1,14 +0,0 @@
1
- name: react-best-practices
2
- type: instruction-only
3
- description: React and Next.js performance optimization guidelines from Vercel Engineering.
4
- tags:
5
- - react
6
- - nextjs
7
- - performance
8
- - vercel
9
- version: 1.0.0
10
- requires:
11
- - react
12
- resources:
13
- - SKILL.md
14
- - VALIDATION.json
@@ -1,117 +0,0 @@
1
- ---
2
- name: redesign-existing-projects
3
- description: Upgrades existing websites and apps to premium quality. Audits current design, identifies generic AI patterns, and applies high-end design standards without breaking functionality. Works with any CSS framework or vanilla CSS.
4
- ---
5
-
6
- # Redesign Skill & UI Audit
7
-
8
- ## Overview
9
-
10
- A systematic redesign and auditing protocol designed to elevate existing websites, dashboards, and web applications to world-class agency quality. It diagnoses and eradicates generic AI design fingerprints, sloppy typography, inconsistent palettes, and absent interaction states without breaking business logic or underlying component contracts.
11
-
12
- ## When to Use
13
-
14
- - When auditing an existing UI codebase for design quality, responsiveness, or accessibility.
15
- - When modernizing a legacy application or uplifting generic templates.
16
- - When tasked to "redesign", "clean up the layout", "audit UI", or "make it look expensive and modern".
17
-
18
- ## Rules & Patterns
19
-
20
- ### 1. Workflow: Scan → Diagnose → Fix
21
-
22
- 1. **Scan:** Read the codebase. Identify the framework, styling method (Tailwind v3/v4, vanilla CSS, CSS Modules), and established design tokens.
23
- 2. **Diagnose:** Run through the design audit categories. Catalog generic patterns, missing states, and optical alignment flaws.
24
- 3. **Fix:** Apply surgical, targeted upgrades working within the existing stack. Do not rewrite from scratch.
25
-
26
- ### 2. Design Audit Categories
27
-
28
- #### Typography
29
-
30
- - **Replace Browser Defaults:** Swap generic `Inter`, `Roboto`, or system fonts with expressive typefaces (`Geist`, `Outfit`, `Cabinet Grotesk`, `Satoshi`).
31
- - **Presence & Scale:** Increase display text size, tighten letter-spacing (`-0.02em` to `-0.04em`), reduce line-height on headlines.
32
- - **Reading Comfort:** Limit body text to 65 characters per line (`max-w-prose`), increase line-height to 1.6.
33
- - **Figures:** Enable tabular figures (`font-variant-numeric: tabular-nums`) for numbers in tables and data readouts.
34
- - **Orphan Prevention:** Apply `text-wrap: balance` on headlines and `text-wrap: pretty` on paragraphs.
35
-
36
- #### Color and Surfaces
37
-
38
- - **No Pure Black Backgrounds:** Replace `#000000` with tinted dark charcoal (`#0A0A0A`, `#121212`).
39
- - **Desaturate Accents:** Keep accent saturation below 80% so it blends harmoniously with neutrals.
40
- - **Single Accent Color:** Commit to one dominant accent hue; remove conflicting secondary tints.
41
- - **Tinted Shadows:** Tint shadows to match the background hue rather than harsh black opacity.
42
- - **Background Depth:** Prevent sterile flat sections by layering subtle noise overlays, ambient gradients, or masked imagery.
43
-
44
- #### Layout and Space
45
-
46
- - **Asymmetry & Bento Grids:** Break repetitive 3-column Bootstrap grids with asymmetrical spans or offset cards.
47
- - **Mobile Viewport Bug Fix:** Never use `height: 100vh`; always use `min-height: 100dvh`.
48
- - **Vertical Alignment:** Pin action buttons to the bottom of card groups (`mt-auto` or grid alignment) to maintain horizontal baseline harmony across differing text heights.
49
- - **Optical Centering:** Adjust icons, badges, and play buttons optically by 1-2px rather than relying solely on pure mathematical centering.
50
-
51
- #### Interactivity and States
52
-
53
- - **Interactive Feedback:** Add 200-300ms transitions, distinct hover shifts, and physical active presses (`scale(0.98)`).
54
- - **Visible Focus Rings:** Mandatory `:focus-visible` styling for keyboard navigation.
55
- - **States Completeness:** Always provide designed skeleton loaders, empty states, and inline error messages.
56
-
57
- #### Content & Code Quality
58
-
59
- - **Eradicate AI Clichés:** Remove buzzwords ("Elevate", "Seamless", "Unleash", "Next-Gen") and placeholder latin text.
60
- - **Semantic HTML:** Replace nested div containers with `<nav>`, `<main>`, `<article>`, `<section>`, `<aside>`.
61
- - **Relative Units:** Use `rem`, `%`, and CSS Grid rather than hardcoded pixel widths.
62
-
63
- ### 3. Fix Priority
64
-
65
- 1. **Font Swap:** Biggest instant aesthetic elevation with lowest regression risk.
66
- 2. **Palette Cleanup:** Eliminate clashing or oversaturated colors.
67
- 3. **States & Feedback:** Add hover, active, focus, loading, and empty states.
68
- 4. **Layout & Alignment:** Fix container widths, baseline alignment, and mobile viewport heights.
69
- 5. **Component Polish:** Replace generic cards and accordion boxes with modern minimal equivalents.
70
-
71
- ## Code Examples
72
-
73
- ```tsx
74
- // [BEFORE] Generic, misaligned card with generic shadow
75
- <div className="bg-white border rounded shadow p-4">
76
- <h2>{title}</h2>
77
- <p>{desc}</p>
78
- <button className="bg-blue-500 text-white p-2">Click</button>
79
- </div>
80
-
81
- // [AFTER] Polished card with optical baseline alignment, tinted surface, and micro-interaction
82
- <div className="flex flex-col bg-[#FFFFFF] dark:bg-[#121212] border border-black/5 dark:border-white/10 rounded-2xl p-6 hover:shadow-[0_4px_20px_rgba(0,0,0,0.04)] transition-all duration-200">
83
- <h3 className="font-semibold text-lg tracking-tight text-neutral-900 dark:text-neutral-100 text-balance mb-2">
84
- {title}
85
- </h3>
86
- <p className="text-sm text-neutral-600 dark:text-neutral-400 leading-relaxed text-pretty mb-6">
87
- {desc}
88
- </p>
89
- <button
90
- type="button"
91
- className="mt-auto inline-flex items-center justify-center font-medium text-sm px-4 py-2.5 rounded-xl bg-neutral-900 dark:bg-neutral-100 text-white dark:text-black hover:bg-neutral-800 active:scale-[0.98] transition-transform duration-150 focus-visible:ring-2 focus-visible:ring-neutral-400"
92
- >
93
- Continue
94
- </button>
95
- </div>
96
- ```
97
-
98
- ## Validation Checklist
99
-
100
- - [ ] All headings have `text-wrap: balance` and appropriate negative letter tracking.
101
- - [ ] No pure black `#000000` backgrounds or oversaturated accent colors (>80% saturation).
102
- - [ ] All interactive elements include `:hover`, `:active`, and `:focus-visible` styles.
103
- - [ ] Cards in side-by-side grids align primary CTA buttons along the same bottom baseline.
104
- - [ ] Viewport containers use `100dvh` instead of `100vh`.
105
- - [ ] All lists, tables, and feeds have a designed empty state.
106
-
107
- ## Common Mistakes
108
-
109
- - Rewriting components from scratch and breaking existing prop contracts or unit tests.
110
- - Forcing full-width sections without `max-w` constraints on ultra-wide screens.
111
- - Leaving action buttons at random heights inside differing text content cards.
112
- - Introducing external UI libraries without checking existing `package.json` dependencies.
113
-
114
- ## Integration Notes
115
-
116
- - Complements `impeccable-design` for hard 50-rule QA verification.
117
- - Works alongside `ui-ux-pro` for token generation and color theory.
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "rules_followed": {
6
- "type": "boolean"
7
- }
8
- },
9
- "required": [
10
- "rules_followed"
11
- ]
12
- }
@@ -1,12 +0,0 @@
1
- name: redesign-audit
2
- type: instruction-only
3
- description: Audits and upgrades existing web codebases with high-end typography, color, layout, and interaction polish.
4
- tags:
5
- - ui
6
- - design
7
- - audit
8
- - refactor
9
- version: 1.0.0
10
- resources:
11
- - SKILL.md
12
- - VALIDATION.json
@@ -1,108 +0,0 @@
1
- ---
2
- name: high-end-visual-design
3
- description: Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.
4
- ---
5
-
6
- # Agent Skill: Principal UI/UX Architect & Motion Choreographer (Awwwards-Tier)
7
-
8
- ## Overview
9
-
10
- Engineers high-end, agency-level digital experiences characterized by tactile haptic depth, cinematic spatial rhythm, obsessive micro-interactions, and fluid spring physics. Rejects generic commodity SaaS templates in favor of bespoke layout archetypes, nested double-bezel enclosures, and purposeful motion dynamics.
11
-
12
- ## When to Use
13
-
14
- - When tasked with creating luxury, premium, Awwwards-tier landing pages, portfolio showpieces, or editorial SaaS interfaces.
15
- - When explicitly prompted for "soft UI", "expensive design", "Apple-level polish", or "calm aesthetics".
16
- - When standard component libraries feel too clinical or generic.
17
-
18
- ## Rules & Patterns
19
-
20
- ### 1. Absolute Zero Directive (Strict Anti-Patterns)
21
-
22
- - **Banned Fonts:** Inter, Roboto, Arial, Open Sans, Helvetica. (Use `Geist`, `Clash Display`, `PP Editorial New`, or `Plus Jakarta Sans`).
23
- - **Banned Icons:** Thick-stroked Lucide, FontAwesome, or Material Icons. Use ultra-light, precise line icons (Phosphor Light, Remix Line).
24
- - **Banned Borders & Shadows:** Generic 1px solid gray borders. Harsh dark drop shadows (`rgba(0,0,0,0.3)`).
25
- - **Banned Layouts:** Edge-to-edge sticky navbars glued to the top. Symmetrical 3-column Bootstrap-style grids without massive whitespace.
26
- - **Banned Motion:** Standard `linear` or `ease-in-out` transitions. Instant state changes without interpolation.
27
-
28
- ### 2. The Creative Variance Engine
29
-
30
- Before writing code, consciously pick ONE combination:
31
-
32
- #### Vibe & Texture Archetypes
33
-
34
- 1. **Ethereal Glass (SaaS / AI / Tech):** Deep OLED black (`#050505`), subtle radial mesh gradients, vantablack cards with `backdrop-blur-2xl` and white/10 hairlines.
35
- 2. **Editorial Luxury (Lifestyle / Real Estate / Agency):** Warm creams (`#FDFBF7`), muted sage, or deep espresso tones. Variable serif headings with subtle CSS noise overlay (`opacity-[0.03]`).
36
- 3. **Soft Structuralism (Consumer / Health / Portfolio):** Silver-grey or pure white backgrounds, bold grotesk typography, airy floating components with ultra-diffuse ambient shadows.
37
-
38
- #### Layout Archetypes
39
-
40
- 1. **The Asymmetrical Bento:** Masonry CSS Grid of varying card spans. (Collapses to single-column `grid-cols-1 gap-6` on mobile).
41
- 2. **The Z-Axis Cascade:** Stacked cards with varying depth of field and subtle `-2deg` or `3deg` rotations. (Rotations removed on mobile).
42
- 3. **The Editorial Split:** Massive typography on the left half (`w-1/2`), with horizontal interactive card ribbons on the right.
43
-
44
- ### 3. Haptic Micro-Aesthetics
45
-
46
- - **The Double-Bezel (Doppelrand):**
47
- - **Outer Shell:** Wrapper `div` with subtle background (`bg-black/5` or `bg-white/5`), hairline border (`border border-white/10`), padding (`p-2`), and large outer radius (`rounded-[2rem]`).
48
- - **Inner Core:** Nested card inside shell with distinct background, inner highlight (`shadow-[inset_0_1px_1px_rgba(255,255,255,0.15)]`), and mathematically concentric smaller radius (`rounded-[calc(2rem-0.5rem)]`).
49
- - **Button-in-Button Trailing Icon:** Pill-shaped primary buttons (`rounded-full px-6 py-3`) with trailing arrows nested inside their own dedicated circular badge (`w-8 h-8 rounded-full bg-black/5 flex items-center justify-center`).
50
- - **Macro-Whitespace:** Minimum `py-24` to `py-40` for section padding.
51
-
52
- ### 4. Motion Choreography & Performance Guardrails
53
-
54
- - **Custom Physics:** All transitions use custom cubic-beziers: `transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)]`.
55
- - **GPU-Safe Animation:** Animate exclusively via `transform` and `opacity`. Never animate `top`, `left`, `width`, or `height`.
56
- - **Blur Discipline:** Restrict `backdrop-blur` to fixed or sticky elements (navbars, modals). Never apply to scrolling containers.
57
-
58
- ## Code Examples
59
-
60
- ```tsx
61
- export function DoubleBezelCard({ title, subtitle, tag }: { title: string; subtitle: string; tag: string }) {
62
- return (
63
- // Outer Shell
64
- <div className="p-2 rounded-[2rem] bg-black/5 dark:bg-white/5 border border-black/10 dark:border-white/10 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)] hover:shadow-2xl">
65
- // Inner Core
66
- <div className="p-8 rounded-[calc(2rem-0.5rem)] bg-[#FFFFFF] dark:bg-[#0E0E0E] shadow-[inset_0_1px_1px_rgba(255,255,255,0.15)] flex flex-col justify-between min-h-[320px]">
67
- <div>
68
- <span className="inline-block px-3 py-1 rounded-full text-[10px] uppercase tracking-[0.2em] font-medium bg-black/5 dark:bg-white/10 text-neutral-600 dark:text-neutral-400 mb-4">
69
- {tag}
70
- </span>
71
- <h3 className="text-2xl font-bold tracking-tight text-neutral-900 dark:text-white mb-2">{title}</h3>
72
- <p className="text-sm text-neutral-500 dark:text-neutral-400 leading-relaxed">{subtitle}</p>
73
- </div>
74
- <button
75
- type="button"
76
- className="group mt-6 inline-flex items-center justify-between pl-6 pr-2 py-2 rounded-full bg-neutral-900 dark:bg-white text-white dark:text-neutral-950 font-medium text-sm active:scale-[0.98] transition-all duration-300"
77
- >
78
- <span>Explore Experience</span>
79
- <span className="w-8 h-8 rounded-full bg-white/10 dark:bg-black/10 flex items-center justify-center transition-transform duration-300 group-hover:translate-x-0.5 group-hover:-translate-y-0.5">
80
- ↗
81
- </span>
82
- </button>
83
- </div>
84
- </div>
85
- );
86
- }
87
- ```
88
-
89
- ## Validation Checklist
90
-
91
- - [ ] All major cards and interactive modules use the Double-Bezel concentric architecture.
92
- - [ ] Primary buttons feature the nested button-in-button trailing icon pattern.
93
- - [ ] Section vertical padding is at minimum `py-24`.
94
- - [ ] Transitions use spring or custom cubic-bezier curves (no default linear transitions).
95
- - [ ] Layout collapses gracefully to single-column on mobile viewports (<768px).
96
- - [ ] Animations use only `transform` and `opacity`.
97
-
98
- ## Common Mistakes
99
-
100
- - Using standard `shadow-md` or harsh dark drop shadows instead of soft ambient shadows.
101
- - Failing to recalculate concentric inner border-radii (`calc(outer - padding)`).
102
- - Applying `backdrop-blur` on large scrolling sections, triggering GPU repaints.
103
- - Sticking to generic 3-column Bootstrap grids.
104
-
105
- ## Integration Notes
106
-
107
- - Complements `impeccable-design` for QA and anti-pattern enforcement.
108
- - Pairs with `ui-ux-pro` for color palette harmony and accessibility compliance.
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "rules_followed": {
6
- "type": "boolean"
7
- }
8
- },
9
- "required": [
10
- "rules_followed"
11
- ]
12
- }
@@ -1,12 +0,0 @@
1
- name: soft-design
2
- type: instruction-only
3
- description: High-end agency-grade UI architecture, haptic micro-aesthetics, and fluid spring motion choreography.
4
- tags:
5
- - ui
6
- - design
7
- - premium
8
- - motion
9
- version: 1.0.0
10
- resources:
11
- - SKILL.md
12
- - VALIDATION.json
@@ -1,56 +0,0 @@
1
- # State Management Examples — Anti-patterns vs ContextOS Standard
2
-
3
- ## Example 1: Selecting State from Zustand
4
-
5
- ### Anti-pattern: Anti-pattern (Subscribing to full store causes unnecessary renders)
6
-
7
- ```typescript
8
- // BAD: component re-renders whenever ANY property in the store changes!
9
- function CartBadge() {
10
- const store = useCartStore(); // subscribes to entire object!
11
- return <span>{store.items.length}</span>;
12
- }
13
- ```
14
-
15
- ### Best practice: ContextOS Standard (Atomic granular selector)
16
-
17
- ```typescript
18
- // GOOD: component ONLY re-renders when itemCount changes
19
- function CartBadge() {
20
- const itemCount = useCartStore((state) => state.items.length);
21
- return <span>{itemCount}</span>;
22
- }
23
- ```
24
-
25
- ---
26
-
27
- ## Example 2: Server State Invalidation
28
-
29
- ### Anti-pattern: Anti-pattern (Manually syncing server data into global state with useEffect)
30
-
31
- ```typescript
32
- // BAD: manual sync, race conditions, stale cache bugs
33
- function UserProfile({ userId }) {
34
- const { setUser } = useUserStore();
35
- useEffect(() => {
36
- fetch(`/api/users/${userId}`).then(res => res.json()).then(setUser);
37
- }, [userId]);
38
- }
39
- ```
40
-
41
- ### Best practice: ContextOS Standard (Declarative TanStack Query caching)
42
-
43
- ```typescript
44
- // GOOD: automatic caching, deduplication, background revalidation
45
- function UserProfile({ userId }: { userId: string }) {
46
- const { data: user, isLoading, error } = useQuery({
47
- queryKey: ['users', userId],
48
- queryFn: () => fetchUserById(userId),
49
- staleTime: 1000 * 60 * 5, // 5 minutes fresh
50
- });
51
-
52
- if (isLoading) return <SkeletonLoader />;
53
- if (error) return <ErrorMessage error={error} />;
54
- return <UserDetails user={user} />;
55
- }
56
- ```
@@ -1,48 +0,0 @@
1
- ---
2
- name: state-management
3
- description: Client and server state management standards using Zustand and TanStack Query. Enforces minimal global state, optimistic updates, and clean query invalidation.
4
- ---
5
-
6
- # State Management
7
-
8
- ## Overview
9
-
10
- Global client state and server state management in modern React and Next.js applications using Zustand and TanStack Query.
11
-
12
- ## When to Use
13
-
14
- Activate when managing asynchronous server data fetching/caching, optimistic UI updates, or global UI client state (modals, filters, wizards).
15
-
16
- ## Rules & Patterns
17
-
18
- ### The Rule of Two States
19
-
20
- - **SERVER STATE (Async)**: Managed exclusively by TanStack Query (`useQuery`, `useMutation`). Caching, background refetching, pagination, and invalidation.
21
- - **CLIENT STATE (Sync)**: Managed by Zustand. Modal visibility, active filters, wizard step, theme.
22
-
23
- ### Negative Constraints (What NOT to Do)
24
-
25
- 1. **NEVER store server-fetched data in Zustand or Redux stores**: Store ONLY client-local UI state in Zustand. All API data belongs in TanStack Query.
26
- 2. **NEVER duplicate derived state**: Compute values inline or via `useMemo` from existing state instead of storing redundant state variables.
27
- 3. **NEVER subscribe to entire store objects in components**: Always use atomic selector functions (e.g. `useStore(state => state.isOpen)`) to prevent unnecessary component re-renders.
28
- 4. **NEVER mutate state directly**: Always return new immutable state objects in Zustand setters.
29
- 5. **NEVER ignore optimistic rollback on mutation failure**: When implementing optimistic UI, always capture `previousData` in `onMutate` and restore it in `onError`.
30
-
31
- ## Code Examples
32
-
33
- See `EXAMPLES.md` for Zustand store patterns and optimistic TanStack mutations.
34
-
35
- ## Validation Checklist
36
-
37
- - [ ] Clear separation between Server (TanStack Query) and Client (Zustand) state
38
- - [ ] Atomic selectors used on all Zustand hook calls
39
- - [ ] Optimistic updates implement rollback on error
40
- - [ ] Zero duplicated derived state
41
-
42
- ## Common Mistakes
43
-
44
- - Subscribing to full store objects causing cascading re-renders. See `TROUBLESHOOTING.md`.
45
-
46
- ## Integration Notes
47
-
48
- Interacts with `react`, `nextjs`, and `typescript`.
@@ -1,18 +0,0 @@
1
- # State Management Troubleshooting Guide
2
-
3
- ## Common Issues & Fixes
4
-
5
- ### 1. Infinite re-renders when calling `useStore` with an inline object selector
6
-
7
- - **Cause**: Returning a new object reference from a selector without a custom equality check.
8
- - **Fix**: Use `useShallow` from `zustand/react/shallow` or select scalar values directly.
9
-
10
- ### 2. Stale data shown after mutation
11
-
12
- - **Cause**: Missing `queryClient.invalidateQueries` in `onSettled` or `onSuccess`.
13
- - **Fix**: Always invalidate the relevant query keys on mutation completion to trigger background refetch.
14
-
15
- ### 3. Server-Side Rendering (SSR) Hydration Mismatch in Next.js
16
-
17
- - **Cause**: Reading localStorage-persisted Zustand store directly during initial SSR render.
18
- - **Fix**: Use a custom `useHydratedStore` hook or render persisted components only after client mount.
@@ -1,11 +0,0 @@
1
- {
2
- "skill": "state-management",
3
- "version": "1.0.0",
4
- "checks": [
5
- "Strict separation between Server and Client state",
6
- "No server API responses cached in Zustand",
7
- "Granular atomic selectors used for component subscriptions",
8
- "Optimistic mutations include rollback handler",
9
- "Zero duplicated derived state"
10
- ]
11
- }
@@ -1,28 +0,0 @@
1
- name: state-management
2
- description: Client and server state management standards using Zustand and TanStack Query. Enforces minimal global state, optimistic updates, and clean query invalidation.
3
- version: 1.0.0
4
- category: frontend
5
- type: instruction-only
6
- requires:
7
- - react
8
- - typescript
9
- triggers:
10
- files:
11
- - "*store*"
12
- - "*state*"
13
- - "use*Query.ts"
14
- - "use*Mutation.ts"
15
- keywords:
16
- - "zustand"
17
- - "tanstack"
18
- - "react-query"
19
- - "state"
20
- - "store"
21
- - "optimistic"
22
- - "mutation"
23
- - "cache"
24
- resources:
25
- - EXAMPLES.md
26
- - SKILL.md
27
- - TROUBLESHOOTING.md
28
- - VALIDATION.json