create-quadrokit 0.3.2 → 0.3.4

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 (92) hide show
  1. package/README.md +1 -1
  2. package/package.json +3 -3
  3. package/template-common/.agents/skills/quadro-paged-collection/SKILL.md +33 -0
  4. package/template-common/.agents/skills/vercel-composition-patterns/AGENTS.md +946 -0
  5. package/template-common/.agents/skills/vercel-composition-patterns/README.md +60 -0
  6. package/template-common/.agents/skills/vercel-composition-patterns/SKILL.md +89 -0
  7. package/template-common/.agents/skills/vercel-composition-patterns/rules/_sections.md +29 -0
  8. package/template-common/.agents/skills/vercel-composition-patterns/rules/_template.md +24 -0
  9. package/template-common/.agents/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  10. package/template-common/.agents/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  11. package/template-common/.agents/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  12. package/template-common/.agents/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  13. package/template-common/.agents/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  14. package/template-common/.agents/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  15. package/template-common/.agents/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  16. package/template-common/.agents/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  17. package/template-common/.agents/skills/vercel-react-best-practices/AGENTS.md +3750 -0
  18. package/template-common/.agents/skills/vercel-react-best-practices/README.md +123 -0
  19. package/template-common/.agents/skills/vercel-react-best-practices/SKILL.md +148 -0
  20. package/template-common/.agents/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  21. package/template-common/.agents/skills/vercel-react-best-practices/rules/_template.md +28 -0
  22. package/template-common/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  23. package/template-common/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  24. package/template-common/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  25. package/template-common/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  26. package/template-common/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  27. package/template-common/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  28. package/template-common/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  29. package/template-common/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  30. package/template-common/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  31. package/template-common/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  32. package/template-common/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  33. package/template-common/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  34. package/template-common/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  35. package/template-common/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  36. package/template-common/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  37. package/template-common/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  38. package/template-common/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  39. package/template-common/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  40. package/template-common/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  41. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  42. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  43. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  44. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  45. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  46. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  47. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  48. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  49. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  50. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  51. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  52. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  53. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  54. package/template-common/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  55. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  56. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  57. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  58. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  59. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  60. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  61. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  62. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  63. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  64. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  65. package/template-common/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  66. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  67. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  68. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  69. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  70. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  71. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  72. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  73. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  74. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  75. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  76. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  77. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  78. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  79. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  80. package/template-common/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  81. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  82. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  83. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  84. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  85. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  86. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  87. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  88. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  89. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  90. package/template-common/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  91. package/template-common/.agents/skills/web-design-guidelines/SKILL.md +39 -0
  92. package/template-common/skills-lock.json +20 -0
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Avoid Shared Module State for Request Data
3
+ impact: HIGH
4
+ impactDescription: prevents concurrency bugs and request data leaks
5
+ tags: server, rsc, ssr, concurrency, security, state
6
+ ---
7
+
8
+ ## Avoid Shared Module State for Request Data
9
+
10
+ For React Server Components and client components rendered during SSR, avoid using mutable module-level variables to share request-scoped data. Server renders can run concurrently in the same process. If one render writes to shared module state and another render reads it, you can get race conditions, cross-request contamination, and security bugs where one user's data appears in another user's response.
11
+
12
+ Treat module scope on the server as process-wide shared memory, not request-local state.
13
+
14
+ **Incorrect (request data leaks across concurrent renders):**
15
+
16
+ ```tsx
17
+ let currentUser: User | null = null
18
+
19
+ export default async function Page() {
20
+ currentUser = await auth()
21
+ return <Dashboard />
22
+ }
23
+
24
+ async function Dashboard() {
25
+ return <div>{currentUser?.name}</div>
26
+ }
27
+ ```
28
+
29
+ If two requests overlap, request A can set `currentUser`, then request B overwrites it before request A finishes rendering `Dashboard`.
30
+
31
+ **Correct (keep request data local to the render tree):**
32
+
33
+ ```tsx
34
+ export default async function Page() {
35
+ const user = await auth()
36
+ return <Dashboard user={user} />
37
+ }
38
+
39
+ function Dashboard({ user }: { user: User | null }) {
40
+ return <div>{user?.name}</div>
41
+ }
42
+ ```
43
+
44
+ Safe exceptions:
45
+
46
+ - Immutable static assets or config loaded once at module scope
47
+ - Shared caches intentionally designed for cross-request reuse and keyed correctly
48
+ - Process-wide singletons that do not store request- or user-specific mutable data
49
+
50
+ For static assets and config, see [Hoist Static I/O to Module Level](./server-hoist-static-io.md).
@@ -0,0 +1,83 @@
1
+ ---
2
+ title: Parallel Data Fetching with Component Composition
3
+ impact: CRITICAL
4
+ impactDescription: eliminates server-side waterfalls
5
+ tags: server, rsc, parallel-fetching, composition
6
+ ---
7
+
8
+ ## Parallel Data Fetching with Component Composition
9
+
10
+ React Server Components execute sequentially within a tree. Restructure with composition to parallelize data fetching.
11
+
12
+ **Incorrect (Sidebar waits for Page's fetch to complete):**
13
+
14
+ ```tsx
15
+ export default async function Page() {
16
+ const header = await fetchHeader()
17
+ return (
18
+ <div>
19
+ <div>{header}</div>
20
+ <Sidebar />
21
+ </div>
22
+ )
23
+ }
24
+
25
+ async function Sidebar() {
26
+ const items = await fetchSidebarItems()
27
+ return <nav>{items.map(renderItem)}</nav>
28
+ }
29
+ ```
30
+
31
+ **Correct (both fetch simultaneously):**
32
+
33
+ ```tsx
34
+ async function Header() {
35
+ const data = await fetchHeader()
36
+ return <div>{data}</div>
37
+ }
38
+
39
+ async function Sidebar() {
40
+ const items = await fetchSidebarItems()
41
+ return <nav>{items.map(renderItem)}</nav>
42
+ }
43
+
44
+ export default function Page() {
45
+ return (
46
+ <div>
47
+ <Header />
48
+ <Sidebar />
49
+ </div>
50
+ )
51
+ }
52
+ ```
53
+
54
+ **Alternative with children prop:**
55
+
56
+ ```tsx
57
+ async function Header() {
58
+ const data = await fetchHeader()
59
+ return <div>{data}</div>
60
+ }
61
+
62
+ async function Sidebar() {
63
+ const items = await fetchSidebarItems()
64
+ return <nav>{items.map(renderItem)}</nav>
65
+ }
66
+
67
+ function Layout({ children }: { children: ReactNode }) {
68
+ return (
69
+ <div>
70
+ <Header />
71
+ {children}
72
+ </div>
73
+ )
74
+ }
75
+
76
+ export default function Page() {
77
+ return (
78
+ <Layout>
79
+ <Sidebar />
80
+ </Layout>
81
+ )
82
+ }
83
+ ```
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Parallel Nested Data Fetching
3
+ impact: CRITICAL
4
+ impactDescription: eliminates server-side waterfalls
5
+ tags: server, rsc, parallel-fetching, promise-chaining
6
+ ---
7
+
8
+ ## Parallel Nested Data Fetching
9
+
10
+ When fetching nested data in parallel, chain dependent fetches within each item's promise so a slow item doesn't block the rest.
11
+
12
+ **Incorrect (a single slow item blocks all nested fetches):**
13
+
14
+ ```tsx
15
+ const chats = await Promise.all(
16
+ chatIds.map(id => getChat(id))
17
+ )
18
+
19
+ const chatAuthors = await Promise.all(
20
+ chats.map(chat => getUser(chat.author))
21
+ )
22
+ ```
23
+
24
+ If one `getChat(id)` out of 100 is extremely slow, the authors of the other 99 chats can't start loading even though their data is ready.
25
+
26
+ **Correct (each item chains its own nested fetch):**
27
+
28
+ ```tsx
29
+ const chatAuthors = await Promise.all(
30
+ chatIds.map(id => getChat(id).then(chat => getUser(chat.author)))
31
+ )
32
+ ```
33
+
34
+ Each item independently chains `getChat` → `getUser`, so a slow chat doesn't block author fetches for the others.
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Minimize Serialization at RSC Boundaries
3
+ impact: HIGH
4
+ impactDescription: reduces data transfer size
5
+ tags: server, rsc, serialization, props
6
+ ---
7
+
8
+ ## Minimize Serialization at RSC Boundaries
9
+
10
+ The React Server/Client boundary serializes all object properties into strings and embeds them in the HTML response and subsequent RSC requests. This serialized data directly impacts page weight and load time, so **size matters a lot**. Only pass fields that the client actually uses.
11
+
12
+ **Incorrect (serializes all 50 fields):**
13
+
14
+ ```tsx
15
+ async function Page() {
16
+ const user = await fetchUser() // 50 fields
17
+ return <Profile user={user} />
18
+ }
19
+
20
+ 'use client'
21
+ function Profile({ user }: { user: User }) {
22
+ return <div>{user.name}</div> // uses 1 field
23
+ }
24
+ ```
25
+
26
+ **Correct (serializes only 1 field):**
27
+
28
+ ```tsx
29
+ async function Page() {
30
+ const user = await fetchUser()
31
+ return <Profile name={user.name} />
32
+ }
33
+
34
+ 'use client'
35
+ function Profile({ name }: { name: string }) {
36
+ return <div>{name}</div>
37
+ }
38
+ ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: web-design-guidelines
3
+ description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
4
+ metadata:
5
+ author: vercel
6
+ version: "1.0.0"
7
+ argument-hint: <file-or-pattern>
8
+ ---
9
+
10
+ # Web Interface Guidelines
11
+
12
+ Review files for compliance with Web Interface Guidelines.
13
+
14
+ ## How It Works
15
+
16
+ 1. Fetch the latest guidelines from the source URL below
17
+ 2. Read the specified files (or prompt user for files/pattern)
18
+ 3. Check against all rules in the fetched guidelines
19
+ 4. Output findings in the terse `file:line` format
20
+
21
+ ## Guidelines Source
22
+
23
+ Fetch fresh guidelines before each review:
24
+
25
+ ```
26
+ https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
27
+ ```
28
+
29
+ Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
30
+
31
+ ## Usage
32
+
33
+ When a user provides a file or pattern argument:
34
+ 1. Fetch guidelines from the source URL above
35
+ 2. Read the specified files
36
+ 3. Apply all rules from the fetched guidelines
37
+ 4. Output findings using the format specified in the guidelines
38
+
39
+ If no files specified, ask the user which files to review.
@@ -0,0 +1,20 @@
1
+ {
2
+ "version": 1,
3
+ "skills": {
4
+ "vercel-composition-patterns": {
5
+ "source": "vercel-labs/agent-skills",
6
+ "sourceType": "github",
7
+ "computedHash": "f98931159fa9c7fed043bcd18a891a46dcf89ababa38df13a4c5b7b30dc0ce07"
8
+ },
9
+ "vercel-react-best-practices": {
10
+ "source": "vercel-labs/agent-skills",
11
+ "sourceType": "github",
12
+ "computedHash": "1be892a3ea68b74654326ef836a58dd528d99ae0ab8d879764e2519c39068e67"
13
+ },
14
+ "web-design-guidelines": {
15
+ "source": "vercel-labs/agent-skills",
16
+ "sourceType": "github",
17
+ "computedHash": "a6a44d5498f7e8f68289902f3dedfc6f38ae0cee1e96527c80724cf27f727c2a"
18
+ }
19
+ }
20
+ }