ac-framework 1.4.0 → 1.6.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.
- package/LICENSE +1 -1
- package/bin/postinstall.js +18 -2
- package/framework/.agent/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.agent/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.agent/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.agent/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.agent/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.agent/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.agent/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.agent/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.agent/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.agent/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.agent/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.agent/skills/project-constitution/SKILL.md +66 -0
- package/framework/.agent/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.agent/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.agent/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.agent/skills/sync-index/SKILL.md +35 -0
- package/framework/.agent/skills/test-generator/SKILL.md +41 -0
- package/framework/.agent/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.agent/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.agent/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.agent/workflows/ac.md +261 -0
- package/framework/.agent/workflows/opsx-apply.md +3 -3
- package/framework/.agent/workflows/opsx-archive.md +3 -3
- package/framework/.agent/workflows/opsx-bulk-archive.md +2 -2
- package/framework/.agent/workflows/opsx-continue.md +4 -4
- package/framework/.agent/workflows/opsx-explore.md +1 -1
- package/framework/.agent/workflows/opsx-ff.md +6 -6
- package/framework/.agent/workflows/opsx-new.md +4 -4
- package/framework/.agent/workflows/opsx-onboard.md +5 -5
- package/framework/.agent/workflows/opsx-sync.md +1 -1
- package/framework/.agent/workflows/opsx-verify.md +3 -3
- package/framework/.amazonq/prompts/ac.md +261 -0
- package/framework/.amazonq/prompts/opsx-apply.md +3 -3
- package/framework/.amazonq/prompts/opsx-archive.md +3 -3
- package/framework/.amazonq/prompts/opsx-bulk-archive.md +2 -2
- package/framework/.amazonq/prompts/opsx-continue.md +4 -4
- package/framework/.amazonq/prompts/opsx-explore.md +1 -1
- package/framework/.amazonq/prompts/opsx-ff.md +6 -6
- package/framework/.amazonq/prompts/opsx-new.md +4 -4
- package/framework/.amazonq/prompts/opsx-onboard.md +5 -5
- package/framework/.amazonq/prompts/opsx-sync.md +1 -1
- package/framework/.amazonq/prompts/opsx-verify.md +3 -3
- package/framework/.amazonq/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.amazonq/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.amazonq/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.amazonq/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.amazonq/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.amazonq/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.amazonq/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.amazonq/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.amazonq/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.amazonq/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.amazonq/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.amazonq/skills/project-constitution/SKILL.md +66 -0
- package/framework/.amazonq/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.amazonq/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.amazonq/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.amazonq/skills/sync-index/SKILL.md +35 -0
- package/framework/.amazonq/skills/test-generator/SKILL.md +41 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.amazonq/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.augment/commands/ac.md +261 -0
- package/framework/.augment/commands/opsx-apply.md +3 -3
- package/framework/.augment/commands/opsx-archive.md +3 -3
- package/framework/.augment/commands/opsx-bulk-archive.md +2 -2
- package/framework/.augment/commands/opsx-continue.md +4 -4
- package/framework/.augment/commands/opsx-explore.md +1 -1
- package/framework/.augment/commands/opsx-ff.md +6 -6
- package/framework/.augment/commands/opsx-new.md +4 -4
- package/framework/.augment/commands/opsx-onboard.md +5 -5
- package/framework/.augment/commands/opsx-sync.md +1 -1
- package/framework/.augment/commands/opsx-verify.md +3 -3
- package/framework/.augment/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.augment/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.augment/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.augment/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.augment/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.augment/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.augment/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.augment/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.augment/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.augment/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.augment/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.augment/skills/project-constitution/SKILL.md +66 -0
- package/framework/.augment/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.augment/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.augment/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.augment/skills/sync-index/SKILL.md +35 -0
- package/framework/.augment/skills/test-generator/SKILL.md +41 -0
- package/framework/.augment/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.augment/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.augment/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.claude/commands/opsx/ac.md +261 -0
- package/framework/.claude/commands/opsx/apply.md +3 -3
- package/framework/.claude/commands/opsx/archive.md +3 -3
- package/framework/.claude/commands/opsx/bulk-archive.md +2 -2
- package/framework/.claude/commands/opsx/continue.md +4 -4
- package/framework/.claude/commands/opsx/explore.md +1 -1
- package/framework/.claude/commands/opsx/ff.md +6 -6
- package/framework/.claude/commands/opsx/new.md +4 -4
- package/framework/.claude/commands/opsx/onboard.md +5 -5
- package/framework/.claude/commands/opsx/sync.md +1 -1
- package/framework/.claude/commands/opsx/verify.md +3 -3
- package/framework/.claude/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.claude/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.claude/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.claude/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.claude/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.claude/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.claude/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.claude/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.claude/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.claude/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.claude/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.claude/skills/project-constitution/SKILL.md +66 -0
- package/framework/.claude/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.claude/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.claude/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.claude/skills/sync-index/SKILL.md +35 -0
- package/framework/.claude/skills/test-generator/SKILL.md +41 -0
- package/framework/.claude/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.claude/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.cline/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.cline/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.cline/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.cline/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.cline/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.cline/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.cline/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.cline/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.cline/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.cline/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.cline/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.cline/skills/project-constitution/SKILL.md +66 -0
- package/framework/.cline/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.cline/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.cline/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.cline/skills/sync-index/SKILL.md +35 -0
- package/framework/.cline/skills/test-generator/SKILL.md +41 -0
- package/framework/.cline/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.cline/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.cline/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.clinerules/skills/api-design-principles/SKILL.md +528 -0
- package/framework/.clinerules/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/framework/.clinerules/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/framework/.clinerules/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/framework/.clinerules/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/framework/.clinerules/skills/brainstorming/SKILL.md +54 -0
- package/framework/.clinerules/skills/changelog-generator/SKILL.md +104 -0
- package/framework/.clinerules/skills/code-maintainability/SKILL.md +1108 -0
- package/framework/.clinerules/skills/error-handling-patterns/SKILL.md +641 -0
- package/framework/.clinerules/skills/interface-design/SKILL.md +310 -0
- package/framework/.clinerules/skills/interface-design/references/example.md +86 -0
- package/framework/.clinerules/skills/interface-design/references/principles.md +235 -0
- package/framework/.clinerules/skills/interface-design/references/validation.md +48 -0
- package/framework/.clinerules/skills/openspec-apply-change/SKILL.md +156 -0
- package/framework/.clinerules/skills/openspec-archive-change/SKILL.md +114 -0
- package/framework/.clinerules/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/framework/.clinerules/skills/openspec-continue-change/SKILL.md +118 -0
- package/framework/.clinerules/skills/openspec-explore/SKILL.md +290 -0
- package/framework/.clinerules/skills/openspec-ff-change/SKILL.md +101 -0
- package/framework/.clinerules/skills/openspec-new-change/SKILL.md +74 -0
- package/framework/.clinerules/skills/openspec-onboard/SKILL.md +529 -0
- package/framework/.clinerules/skills/openspec-sync-specs/SKILL.md +138 -0
- package/framework/.clinerules/skills/openspec-verify-change/SKILL.md +168 -0
- package/framework/.clinerules/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.clinerules/skills/project-constitution/SKILL.md +66 -0
- package/framework/.clinerules/skills/project-index/SKILL.md +234 -0
- package/framework/.clinerules/skills/project-index/scripts/scan_codebase.py +47 -0
- package/framework/.clinerules/skills/project-index/templates/agent-template.md +18 -0
- package/framework/.clinerules/skills/project-index/templates/skill-template.md +20 -0
- package/framework/.clinerules/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.clinerules/skills/secure-coding-cybersecurity/SKILL.md +793 -0
- package/framework/.clinerules/skills/secure-coding-cybersecurity/references/ai_coding_pitfalls.md +44 -0
- package/framework/.clinerules/skills/secure-coding-cybersecurity/references/owasp_top_10_2025.md +28 -0
- package/framework/.clinerules/skills/secure-coding-cybersecurity/references/secure_coding_examples.md +102 -0
- package/framework/.clinerules/skills/secure-coding-cybersecurity/scripts/security_audit.py +46 -0
- package/framework/.clinerules/skills/skill-writer/SKILL.md +385 -0
- package/framework/.clinerules/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.clinerules/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.clinerules/skills/sync-index/SKILL.md +35 -0
- package/framework/.clinerules/skills/systematic-debugging/SKILL.md +296 -0
- package/framework/.clinerules/skills/test-generator/SKILL.md +41 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.clinerules/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.clinerules/workflows/ac.md +261 -0
- package/framework/.clinerules/workflows/opsx-apply.md +3 -3
- package/framework/.clinerules/workflows/opsx-archive.md +3 -3
- package/framework/.clinerules/workflows/opsx-bulk-archive.md +2 -2
- package/framework/.clinerules/workflows/opsx-continue.md +4 -4
- package/framework/.clinerules/workflows/opsx-explore.md +1 -1
- package/framework/.clinerules/workflows/opsx-ff.md +6 -6
- package/framework/.clinerules/workflows/opsx-new.md +4 -4
- package/framework/.clinerules/workflows/opsx-onboard.md +5 -5
- package/framework/.clinerules/workflows/opsx-sync.md +1 -1
- package/framework/.clinerules/workflows/opsx-verify.md +3 -3
- package/framework/.codebuddy/commands/opsx/ac.md +261 -0
- package/framework/.codebuddy/commands/opsx/apply.md +3 -3
- package/framework/.codebuddy/commands/opsx/archive.md +3 -3
- package/framework/.codebuddy/commands/opsx/bulk-archive.md +2 -2
- package/framework/.codebuddy/commands/opsx/continue.md +4 -4
- package/framework/.codebuddy/commands/opsx/explore.md +1 -1
- package/framework/.codebuddy/commands/opsx/ff.md +6 -6
- package/framework/.codebuddy/commands/opsx/new.md +4 -4
- package/framework/.codebuddy/commands/opsx/onboard.md +5 -5
- package/framework/.codebuddy/commands/opsx/sync.md +1 -1
- package/framework/.codebuddy/commands/opsx/verify.md +3 -3
- package/framework/.codebuddy/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.codebuddy/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.codebuddy/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.codebuddy/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.codebuddy/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.codebuddy/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.codebuddy/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.codebuddy/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.codebuddy/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.codebuddy/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.codebuddy/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.codebuddy/skills/project-constitution/SKILL.md +66 -0
- package/framework/.codebuddy/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.codebuddy/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.codebuddy/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.codebuddy/skills/sync-index/SKILL.md +35 -0
- package/framework/.codebuddy/skills/test-generator/SKILL.md +41 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.codebuddy/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.codex/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.codex/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.codex/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.codex/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.codex/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.codex/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.codex/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.codex/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.codex/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.codex/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.codex/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.codex/skills/project-constitution/SKILL.md +66 -0
- package/framework/.codex/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.codex/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.codex/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.codex/skills/sync-index/SKILL.md +35 -0
- package/framework/.codex/skills/test-generator/SKILL.md +41 -0
- package/framework/.codex/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.codex/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.codex/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.continue/prompts/ac.prompt +192 -0
- package/framework/.continue/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.continue/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.continue/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.continue/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.continue/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.continue/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.continue/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.continue/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.continue/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.continue/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.continue/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.continue/skills/project-constitution/SKILL.md +66 -0
- package/framework/.continue/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.continue/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.continue/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.continue/skills/sync-index/SKILL.md +35 -0
- package/framework/.continue/skills/test-generator/SKILL.md +41 -0
- package/framework/.continue/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.continue/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.continue/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.cospec/openspec/commands/ac.md +261 -0
- package/framework/.cospec/openspec/commands/opsx-apply.md +3 -3
- package/framework/.cospec/openspec/commands/opsx-archive.md +3 -3
- package/framework/.cospec/openspec/commands/opsx-bulk-archive.md +2 -2
- package/framework/.cospec/openspec/commands/opsx-continue.md +4 -4
- package/framework/.cospec/openspec/commands/opsx-explore.md +1 -1
- package/framework/.cospec/openspec/commands/opsx-ff.md +6 -6
- package/framework/.cospec/openspec/commands/opsx-new.md +4 -4
- package/framework/.cospec/openspec/commands/opsx-onboard.md +5 -5
- package/framework/.cospec/openspec/commands/opsx-sync.md +1 -1
- package/framework/.cospec/openspec/commands/opsx-verify.md +3 -3
- package/framework/.cospec/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.cospec/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.cospec/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.cospec/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.cospec/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.cospec/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.cospec/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.cospec/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.cospec/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.cospec/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.cospec/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.cospec/skills/project-constitution/SKILL.md +66 -0
- package/framework/.cospec/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.cospec/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.cospec/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.cospec/skills/sync-index/SKILL.md +35 -0
- package/framework/.cospec/skills/test-generator/SKILL.md +41 -0
- package/framework/.cospec/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.cospec/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.cospec/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.crush/commands/opsx/ac.md +261 -0
- package/framework/.crush/commands/opsx/apply.md +3 -3
- package/framework/.crush/commands/opsx/archive.md +3 -3
- package/framework/.crush/commands/opsx/bulk-archive.md +2 -2
- package/framework/.crush/commands/opsx/continue.md +4 -4
- package/framework/.crush/commands/opsx/explore.md +1 -1
- package/framework/.crush/commands/opsx/ff.md +6 -6
- package/framework/.crush/commands/opsx/new.md +4 -4
- package/framework/.crush/commands/opsx/onboard.md +5 -5
- package/framework/.crush/commands/opsx/sync.md +1 -1
- package/framework/.crush/commands/opsx/verify.md +3 -3
- package/framework/.crush/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.crush/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.crush/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.crush/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.crush/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.crush/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.crush/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.crush/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.crush/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.crush/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.crush/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.crush/skills/project-constitution/SKILL.md +66 -0
- package/framework/.crush/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.crush/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.crush/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.crush/skills/sync-index/SKILL.md +35 -0
- package/framework/.crush/skills/test-generator/SKILL.md +41 -0
- package/framework/.crush/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.crush/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.crush/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.cursor/commands/ac.md +261 -0
- package/framework/.cursor/commands/opsx-apply.md +3 -3
- package/framework/.cursor/commands/opsx-archive.md +3 -3
- package/framework/.cursor/commands/opsx-bulk-archive.md +2 -2
- package/framework/.cursor/commands/opsx-continue.md +4 -4
- package/framework/.cursor/commands/opsx-explore.md +1 -1
- package/framework/.cursor/commands/opsx-ff.md +6 -6
- package/framework/.cursor/commands/opsx-new.md +4 -4
- package/framework/.cursor/commands/opsx-onboard.md +5 -5
- package/framework/.cursor/commands/opsx-sync.md +1 -1
- package/framework/.cursor/commands/opsx-verify.md +3 -3
- package/framework/.cursor/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.cursor/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.cursor/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.cursor/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.cursor/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.cursor/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.cursor/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.cursor/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.cursor/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.cursor/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.cursor/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.cursor/skills/project-constitution/SKILL.md +66 -0
- package/framework/.cursor/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.cursor/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.cursor/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.cursor/skills/sync-index/SKILL.md +35 -0
- package/framework/.cursor/skills/test-generator/SKILL.md +41 -0
- package/framework/.cursor/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.cursor/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.cursor/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.factory/commands/ac.md +261 -0
- package/framework/.factory/commands/opsx-apply.md +3 -3
- package/framework/.factory/commands/opsx-archive.md +3 -3
- package/framework/.factory/commands/opsx-bulk-archive.md +2 -2
- package/framework/.factory/commands/opsx-continue.md +4 -4
- package/framework/.factory/commands/opsx-explore.md +1 -1
- package/framework/.factory/commands/opsx-ff.md +6 -6
- package/framework/.factory/commands/opsx-new.md +4 -4
- package/framework/.factory/commands/opsx-onboard.md +5 -5
- package/framework/.factory/commands/opsx-sync.md +1 -1
- package/framework/.factory/commands/opsx-verify.md +3 -3
- package/framework/.factory/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.factory/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.factory/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.factory/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.factory/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.factory/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.factory/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.factory/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.factory/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.factory/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.factory/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.factory/skills/project-constitution/SKILL.md +66 -0
- package/framework/.factory/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.factory/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.factory/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.factory/skills/sync-index/SKILL.md +35 -0
- package/framework/.factory/skills/test-generator/SKILL.md +41 -0
- package/framework/.factory/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.factory/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.factory/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.gemini/commands/opsx/ac.toml +192 -0
- package/framework/.gemini/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.gemini/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.gemini/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.gemini/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.gemini/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.gemini/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.gemini/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.gemini/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.gemini/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.gemini/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.gemini/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.gemini/skills/project-constitution/SKILL.md +66 -0
- package/framework/.gemini/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.gemini/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.gemini/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.gemini/skills/sync-index/SKILL.md +35 -0
- package/framework/.gemini/skills/test-generator/SKILL.md +41 -0
- package/framework/.gemini/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.gemini/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.gemini/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.github/prompts/ac.prompt.md +192 -0
- package/framework/.github/prompts/opsx-apply.prompt.md +3 -3
- package/framework/.github/prompts/opsx-archive.prompt.md +3 -3
- package/framework/.github/prompts/opsx-bulk-archive.prompt.md +2 -2
- package/framework/.github/prompts/opsx-continue.prompt.md +4 -4
- package/framework/.github/prompts/opsx-explore.prompt.md +1 -1
- package/framework/.github/prompts/opsx-ff.prompt.md +6 -6
- package/framework/.github/prompts/opsx-new.prompt.md +4 -4
- package/framework/.github/prompts/opsx-onboard.prompt.md +5 -5
- package/framework/.github/prompts/opsx-sync.prompt.md +1 -1
- package/framework/.github/prompts/opsx-verify.prompt.md +3 -3
- package/framework/.github/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.github/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.github/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.github/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.github/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.github/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.github/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.github/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.github/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.github/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.github/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.github/skills/project-constitution/SKILL.md +66 -0
- package/framework/.github/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.github/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.github/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.github/skills/sync-index/SKILL.md +35 -0
- package/framework/.github/skills/test-generator/SKILL.md +41 -0
- package/framework/.github/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.github/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.github/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.iflow/commands/ac.md +261 -0
- package/framework/.iflow/commands/opsx-apply.md +3 -3
- package/framework/.iflow/commands/opsx-archive.md +3 -3
- package/framework/.iflow/commands/opsx-bulk-archive.md +2 -2
- package/framework/.iflow/commands/opsx-continue.md +4 -4
- package/framework/.iflow/commands/opsx-explore.md +1 -1
- package/framework/.iflow/commands/opsx-ff.md +6 -6
- package/framework/.iflow/commands/opsx-new.md +4 -4
- package/framework/.iflow/commands/opsx-onboard.md +5 -5
- package/framework/.iflow/commands/opsx-sync.md +1 -1
- package/framework/.iflow/commands/opsx-verify.md +3 -3
- package/framework/.iflow/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.iflow/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.iflow/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.iflow/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.iflow/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.iflow/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.iflow/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.iflow/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.iflow/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.iflow/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.iflow/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.iflow/skills/project-constitution/SKILL.md +66 -0
- package/framework/.iflow/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.iflow/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.iflow/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.iflow/skills/sync-index/SKILL.md +35 -0
- package/framework/.iflow/skills/test-generator/SKILL.md +41 -0
- package/framework/.iflow/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.iflow/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.iflow/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.kilocode/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.kilocode/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.kilocode/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.kilocode/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.kilocode/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.kilocode/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.kilocode/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.kilocode/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.kilocode/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.kilocode/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.kilocode/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.kilocode/skills/project-constitution/SKILL.md +66 -0
- package/framework/.kilocode/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.kilocode/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.kilocode/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.kilocode/skills/sync-index/SKILL.md +35 -0
- package/framework/.kilocode/skills/test-generator/SKILL.md +41 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.kilocode/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.kilocode/workflows/ac.md +261 -0
- package/framework/.kilocode/workflows/opsx-apply.md +3 -3
- package/framework/.kilocode/workflows/opsx-archive.md +3 -3
- package/framework/.kilocode/workflows/opsx-bulk-archive.md +2 -2
- package/framework/.kilocode/workflows/opsx-continue.md +4 -4
- package/framework/.kilocode/workflows/opsx-explore.md +1 -1
- package/framework/.kilocode/workflows/opsx-ff.md +6 -6
- package/framework/.kilocode/workflows/opsx-new.md +4 -4
- package/framework/.kilocode/workflows/opsx-onboard.md +5 -5
- package/framework/.kilocode/workflows/opsx-sync.md +1 -1
- package/framework/.kilocode/workflows/opsx-verify.md +3 -3
- package/framework/.opencode/command/ac.md +261 -0
- package/framework/.opencode/command/opsx-apply.md +3 -3
- package/framework/.opencode/command/opsx-archive.md +3 -3
- package/framework/.opencode/command/opsx-bulk-archive.md +2 -2
- package/framework/.opencode/command/opsx-continue.md +4 -4
- package/framework/.opencode/command/opsx-explore.md +1 -1
- package/framework/.opencode/command/opsx-ff.md +6 -6
- package/framework/.opencode/command/opsx-new.md +4 -4
- package/framework/.opencode/command/opsx-onboard.md +5 -5
- package/framework/.opencode/command/opsx-sync.md +1 -1
- package/framework/.opencode/command/opsx-verify.md +3 -3
- package/framework/.opencode/skills/openspec-apply-change/SKILL.md +5 -5
- package/framework/.opencode/skills/openspec-archive-change/SKILL.md +5 -5
- package/framework/.opencode/skills/openspec-bulk-archive-change/SKILL.md +4 -4
- package/framework/.opencode/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.opencode/skills/openspec-explore/SKILL.md +8 -8
- package/framework/.opencode/skills/openspec-ff-change/SKILL.md +8 -8
- package/framework/.opencode/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.opencode/skills/openspec-onboard/SKILL.md +26 -26
- package/framework/.opencode/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.opencode/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.opencode/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.opencode/skills/project-constitution/SKILL.md +66 -0
- package/framework/.opencode/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.opencode/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.opencode/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.opencode/skills/sync-index/SKILL.md +35 -0
- package/framework/.opencode/skills/test-generator/SKILL.md +41 -0
- package/framework/.opencode/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.opencode/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.opencode/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.qoder/commands/opsx/ac.md +261 -0
- package/framework/.qoder/commands/opsx/apply.md +3 -3
- package/framework/.qoder/commands/opsx/archive.md +3 -3
- package/framework/.qoder/commands/opsx/bulk-archive.md +2 -2
- package/framework/.qoder/commands/opsx/continue.md +4 -4
- package/framework/.qoder/commands/opsx/explore.md +1 -1
- package/framework/.qoder/commands/opsx/ff.md +6 -6
- package/framework/.qoder/commands/opsx/new.md +4 -4
- package/framework/.qoder/commands/opsx/onboard.md +5 -5
- package/framework/.qoder/commands/opsx/sync.md +1 -1
- package/framework/.qoder/commands/opsx/verify.md +3 -3
- package/framework/.qoder/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.qoder/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.qoder/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.qoder/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.qoder/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.qoder/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.qoder/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.qoder/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.qoder/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.qoder/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.qoder/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.qoder/skills/project-constitution/SKILL.md +66 -0
- package/framework/.qoder/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.qoder/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.qoder/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.qoder/skills/sync-index/SKILL.md +35 -0
- package/framework/.qoder/skills/test-generator/SKILL.md +41 -0
- package/framework/.qoder/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.qoder/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.qoder/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.qwen/commands/ac.md +261 -0
- package/framework/.qwen/commands/opsx-apply.md +3 -3
- package/framework/.qwen/commands/opsx-archive.md +3 -3
- package/framework/.qwen/commands/opsx-bulk-archive.md +2 -2
- package/framework/.qwen/commands/opsx-continue.md +4 -4
- package/framework/.qwen/commands/opsx-explore.md +1 -1
- package/framework/.qwen/commands/opsx-ff.md +6 -6
- package/framework/.qwen/commands/opsx-new.md +4 -4
- package/framework/.qwen/commands/opsx-onboard.md +5 -5
- package/framework/.qwen/commands/opsx-sync.md +1 -1
- package/framework/.qwen/commands/opsx-verify.md +3 -3
- package/framework/.qwen/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.qwen/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.qwen/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.qwen/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.qwen/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.qwen/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.qwen/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.qwen/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.qwen/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.qwen/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.qwen/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.qwen/skills/project-constitution/SKILL.md +66 -0
- package/framework/.qwen/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.qwen/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.qwen/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.qwen/skills/sync-index/SKILL.md +35 -0
- package/framework/.qwen/skills/test-generator/SKILL.md +41 -0
- package/framework/.qwen/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.qwen/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.qwen/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.roo/commands/ac.md +261 -0
- package/framework/.roo/commands/opsx-apply.md +3 -3
- package/framework/.roo/commands/opsx-archive.md +3 -3
- package/framework/.roo/commands/opsx-bulk-archive.md +2 -2
- package/framework/.roo/commands/opsx-continue.md +4 -4
- package/framework/.roo/commands/opsx-explore.md +1 -1
- package/framework/.roo/commands/opsx-ff.md +6 -6
- package/framework/.roo/commands/opsx-new.md +4 -4
- package/framework/.roo/commands/opsx-onboard.md +5 -5
- package/framework/.roo/commands/opsx-sync.md +1 -1
- package/framework/.roo/commands/opsx-verify.md +3 -3
- package/framework/.roo/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.roo/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.roo/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.roo/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.roo/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.roo/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.roo/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.roo/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.roo/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.roo/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.roo/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.roo/skills/project-constitution/SKILL.md +66 -0
- package/framework/.roo/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.roo/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.roo/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.roo/skills/sync-index/SKILL.md +35 -0
- package/framework/.roo/skills/test-generator/SKILL.md +41 -0
- package/framework/.roo/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.roo/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.roo/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.trae/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.trae/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.trae/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.trae/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.trae/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.trae/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.trae/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.trae/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.trae/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.trae/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.trae/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.trae/skills/project-constitution/SKILL.md +66 -0
- package/framework/.trae/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.trae/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.trae/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.trae/skills/sync-index/SKILL.md +35 -0
- package/framework/.trae/skills/test-generator/SKILL.md +41 -0
- package/framework/.trae/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.trae/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.trae/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.windsurf/skills/openspec-apply-change/SKILL.md +4 -4
- package/framework/.windsurf/skills/openspec-archive-change/SKILL.md +4 -4
- package/framework/.windsurf/skills/openspec-bulk-archive-change/SKILL.md +3 -3
- package/framework/.windsurf/skills/openspec-continue-change/SKILL.md +5 -5
- package/framework/.windsurf/skills/openspec-explore/SKILL.md +2 -2
- package/framework/.windsurf/skills/openspec-ff-change/SKILL.md +7 -7
- package/framework/.windsurf/skills/openspec-new-change/SKILL.md +5 -5
- package/framework/.windsurf/skills/openspec-onboard/SKILL.md +6 -6
- package/framework/.windsurf/skills/openspec-sync-specs/SKILL.md +2 -2
- package/framework/.windsurf/skills/openspec-verify-change/SKILL.md +4 -4
- package/framework/.windsurf/skills/performance-optimizer/SKILL.md +43 -0
- package/framework/.windsurf/skills/project-constitution/SKILL.md +66 -0
- package/framework/.windsurf/skills/requirement-checklist/SKILL.md +90 -0
- package/framework/.windsurf/skills/spec-analysis/SKILL.md +65 -0
- package/framework/.windsurf/skills/spec-clarification/SKILL.md +73 -0
- package/framework/.windsurf/skills/sync-index/SKILL.md +35 -0
- package/framework/.windsurf/skills/test-generator/SKILL.md +41 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/framework/.windsurf/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/framework/.windsurf/workflows/ac.md +261 -0
- package/framework/.windsurf/workflows/opsx-apply.md +3 -3
- package/framework/.windsurf/workflows/opsx-archive.md +3 -3
- package/framework/.windsurf/workflows/opsx-bulk-archive.md +2 -2
- package/framework/.windsurf/workflows/opsx-continue.md +4 -4
- package/framework/.windsurf/workflows/opsx-explore.md +1 -1
- package/framework/.windsurf/workflows/opsx-ff.md +6 -6
- package/framework/.windsurf/workflows/opsx-new.md +4 -4
- package/framework/.windsurf/workflows/opsx-onboard.md +5 -5
- package/framework/.windsurf/workflows/opsx-sync.md +1 -1
- package/framework/.windsurf/workflows/opsx-verify.md +3 -3
- package/framework/AGENTS.md +192 -0
- package/framework/CLAUDE.md +102 -374
- package/framework/GEMINI.md +102 -374
- package/framework/copilot-instructions.md +102 -374
- package/package.json +4 -2
- package/src/cli.js +16 -2
- package/src/commands/init.js +237 -174
- package/src/commands/spec.js +320 -0
- package/src/commands/update.js +213 -0
- package/src/config/constants.js +10 -0
- package/src/index.js +18 -2
- package/src/schemas/spec-driven/schema.yaml +47 -0
- package/src/schemas/spec-driven/templates/design.md +18 -0
- package/src/schemas/spec-driven/templates/proposal.md +16 -0
- package/src/schemas/spec-driven/templates/spec.md +15 -0
- package/src/schemas/spec-driven/templates/tasks.md +7 -0
- package/src/services/github-sync.js +235 -0
- package/src/services/installer.js +19 -9
- package/src/services/spec-engine.js +645 -0
- package/src/ui/animations.js +93 -205
- package/src/ui/banner.js +9 -144
- package/framework/.opencode/command/agents.md +0 -300
- package/framework/QWEN.md +0 -464
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Optimize SVG Precision
|
|
3
|
+
impact: LOW
|
|
4
|
+
impactDescription: reduces file size
|
|
5
|
+
tags: rendering, svg, optimization, svgo
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Optimize SVG Precision
|
|
9
|
+
|
|
10
|
+
Reduce SVG coordinate precision to decrease file size. The optimal precision depends on the viewBox size, but in general reducing precision should be considered.
|
|
11
|
+
|
|
12
|
+
**Incorrect (excessive precision):**
|
|
13
|
+
|
|
14
|
+
```svg
|
|
15
|
+
<path d="M 10.293847 20.847362 L 30.938472 40.192837" />
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Correct (1 decimal place):**
|
|
19
|
+
|
|
20
|
+
```svg
|
|
21
|
+
<path d="M 10.3 20.8 L 30.9 40.2" />
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Automate with SVGO:**
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx svgo --precision=1 --multipass icon.svg
|
|
28
|
+
```
|
package/framework/.qoder/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use useTransition Over Manual Loading States
|
|
3
|
+
impact: LOW
|
|
4
|
+
impactDescription: reduces re-renders and improves code clarity
|
|
5
|
+
tags: rendering, transitions, useTransition, loading, state
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Use useTransition Over Manual Loading States
|
|
9
|
+
|
|
10
|
+
Use `useTransition` instead of manual `useState` for loading states. This provides built-in `isPending` state and automatically manages transitions.
|
|
11
|
+
|
|
12
|
+
**Incorrect (manual loading state):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function SearchResults() {
|
|
16
|
+
const [query, setQuery] = useState('')
|
|
17
|
+
const [results, setResults] = useState([])
|
|
18
|
+
const [isLoading, setIsLoading] = useState(false)
|
|
19
|
+
|
|
20
|
+
const handleSearch = async (value: string) => {
|
|
21
|
+
setIsLoading(true)
|
|
22
|
+
setQuery(value)
|
|
23
|
+
const data = await fetchResults(value)
|
|
24
|
+
setResults(data)
|
|
25
|
+
setIsLoading(false)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<>
|
|
30
|
+
<input onChange={(e) => handleSearch(e.target.value)} />
|
|
31
|
+
{isLoading && <Spinner />}
|
|
32
|
+
<ResultsList results={results} />
|
|
33
|
+
</>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Correct (useTransition with built-in pending state):**
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
import { useTransition, useState } from 'react'
|
|
42
|
+
|
|
43
|
+
function SearchResults() {
|
|
44
|
+
const [query, setQuery] = useState('')
|
|
45
|
+
const [results, setResults] = useState([])
|
|
46
|
+
const [isPending, startTransition] = useTransition()
|
|
47
|
+
|
|
48
|
+
const handleSearch = (value: string) => {
|
|
49
|
+
setQuery(value) // Update input immediately
|
|
50
|
+
|
|
51
|
+
startTransition(async () => {
|
|
52
|
+
// Fetch and update results
|
|
53
|
+
const data = await fetchResults(value)
|
|
54
|
+
setResults(data)
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<>
|
|
60
|
+
<input onChange={(e) => handleSearch(e.target.value)} />
|
|
61
|
+
{isPending && <Spinner />}
|
|
62
|
+
<ResultsList results={results} />
|
|
63
|
+
</>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Benefits:**
|
|
69
|
+
|
|
70
|
+
- **Automatic pending state**: No need to manually manage `setIsLoading(true/false)`
|
|
71
|
+
- **Error resilience**: Pending state correctly resets even if the transition throws
|
|
72
|
+
- **Better responsiveness**: Keeps the UI responsive during updates
|
|
73
|
+
- **Interrupt handling**: New transitions automatically cancel pending ones
|
|
74
|
+
|
|
75
|
+
Reference: [useTransition](https://react.dev/reference/react/useTransition)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Defer State Reads to Usage Point
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: avoids unnecessary subscriptions
|
|
5
|
+
tags: rerender, searchParams, localStorage, optimization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Defer State Reads to Usage Point
|
|
9
|
+
|
|
10
|
+
Don't subscribe to dynamic state (searchParams, localStorage) if you only read it inside callbacks.
|
|
11
|
+
|
|
12
|
+
**Incorrect (subscribes to all searchParams changes):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function ShareButton({ chatId }: { chatId: string }) {
|
|
16
|
+
const searchParams = useSearchParams()
|
|
17
|
+
|
|
18
|
+
const handleShare = () => {
|
|
19
|
+
const ref = searchParams.get('ref')
|
|
20
|
+
shareChat(chatId, { ref })
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return <button onClick={handleShare}>Share</button>
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Correct (reads on demand, no subscription):**
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
function ShareButton({ chatId }: { chatId: string }) {
|
|
31
|
+
const handleShare = () => {
|
|
32
|
+
const params = new URLSearchParams(window.location.search)
|
|
33
|
+
const ref = params.get('ref')
|
|
34
|
+
shareChat(chatId, { ref })
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return <button onClick={handleShare}>Share</button>
|
|
38
|
+
}
|
|
39
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Narrow Effect Dependencies
|
|
3
|
+
impact: LOW
|
|
4
|
+
impactDescription: minimizes effect re-runs
|
|
5
|
+
tags: rerender, useEffect, dependencies, optimization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Narrow Effect Dependencies
|
|
9
|
+
|
|
10
|
+
Specify primitive dependencies instead of objects to minimize effect re-runs.
|
|
11
|
+
|
|
12
|
+
**Incorrect (re-runs on any user field change):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
console.log(user.id)
|
|
17
|
+
}, [user])
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Correct (re-runs only when id changes):**
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
console.log(user.id)
|
|
25
|
+
}, [user.id])
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**For derived state, compute outside effect:**
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
// Incorrect: runs on width=767, 766, 765...
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (width < 768) {
|
|
34
|
+
enableMobileMode()
|
|
35
|
+
}
|
|
36
|
+
}, [width])
|
|
37
|
+
|
|
38
|
+
// Correct: runs only on boolean transition
|
|
39
|
+
const isMobile = width < 768
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (isMobile) {
|
|
42
|
+
enableMobileMode()
|
|
43
|
+
}
|
|
44
|
+
}, [isMobile])
|
|
45
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Calculate Derived State During Rendering
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: avoids redundant renders and state drift
|
|
5
|
+
tags: rerender, derived-state, useEffect, state
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Calculate Derived State During Rendering
|
|
9
|
+
|
|
10
|
+
If a value can be computed from current props/state, do not store it in state or update it in an effect. Derive it during render to avoid extra renders and state drift. Do not set state in effects solely in response to prop changes; prefer derived values or keyed resets instead.
|
|
11
|
+
|
|
12
|
+
**Incorrect (redundant state and effect):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function Form() {
|
|
16
|
+
const [firstName, setFirstName] = useState('First')
|
|
17
|
+
const [lastName, setLastName] = useState('Last')
|
|
18
|
+
const [fullName, setFullName] = useState('')
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
setFullName(firstName + ' ' + lastName)
|
|
22
|
+
}, [firstName, lastName])
|
|
23
|
+
|
|
24
|
+
return <p>{fullName}</p>
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Correct (derive during render):**
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
function Form() {
|
|
32
|
+
const [firstName, setFirstName] = useState('First')
|
|
33
|
+
const [lastName, setLastName] = useState('Last')
|
|
34
|
+
const fullName = firstName + ' ' + lastName
|
|
35
|
+
|
|
36
|
+
return <p>{fullName}</p>
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
References: [You Might Not Need an Effect](https://react.dev/learn/you-might-not-need-an-effect)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Subscribe to Derived State
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: reduces re-render frequency
|
|
5
|
+
tags: rerender, derived-state, media-query, optimization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Subscribe to Derived State
|
|
9
|
+
|
|
10
|
+
Subscribe to derived boolean state instead of continuous values to reduce re-render frequency.
|
|
11
|
+
|
|
12
|
+
**Incorrect (re-renders on every pixel change):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function Sidebar() {
|
|
16
|
+
const width = useWindowWidth() // updates continuously
|
|
17
|
+
const isMobile = width < 768
|
|
18
|
+
return <nav className={isMobile ? 'mobile' : 'desktop'} />
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Correct (re-renders only when boolean changes):**
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
function Sidebar() {
|
|
26
|
+
const isMobile = useMediaQuery('(max-width: 767px)')
|
|
27
|
+
return <nav className={isMobile ? 'mobile' : 'desktop'} />
|
|
28
|
+
}
|
|
29
|
+
```
|
package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use Functional setState Updates
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: prevents stale closures and unnecessary callback recreations
|
|
5
|
+
tags: react, hooks, useState, useCallback, callbacks, closures
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Use Functional setState Updates
|
|
9
|
+
|
|
10
|
+
When updating state based on the current state value, use the functional update form of setState instead of directly referencing the state variable. This prevents stale closures, eliminates unnecessary dependencies, and creates stable callback references.
|
|
11
|
+
|
|
12
|
+
**Incorrect (requires state as dependency):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function TodoList() {
|
|
16
|
+
const [items, setItems] = useState(initialItems)
|
|
17
|
+
|
|
18
|
+
// Callback must depend on items, recreated on every items change
|
|
19
|
+
const addItems = useCallback((newItems: Item[]) => {
|
|
20
|
+
setItems([...items, ...newItems])
|
|
21
|
+
}, [items]) // ❌ items dependency causes recreations
|
|
22
|
+
|
|
23
|
+
// Risk of stale closure if dependency is forgotten
|
|
24
|
+
const removeItem = useCallback((id: string) => {
|
|
25
|
+
setItems(items.filter(item => item.id !== id))
|
|
26
|
+
}, []) // ❌ Missing items dependency - will use stale items!
|
|
27
|
+
|
|
28
|
+
return <ItemsEditor items={items} onAdd={addItems} onRemove={removeItem} />
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The first callback is recreated every time `items` changes, which can cause child components to re-render unnecessarily. The second callback has a stale closure bug—it will always reference the initial `items` value.
|
|
33
|
+
|
|
34
|
+
**Correct (stable callbacks, no stale closures):**
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
function TodoList() {
|
|
38
|
+
const [items, setItems] = useState(initialItems)
|
|
39
|
+
|
|
40
|
+
// Stable callback, never recreated
|
|
41
|
+
const addItems = useCallback((newItems: Item[]) => {
|
|
42
|
+
setItems(curr => [...curr, ...newItems])
|
|
43
|
+
}, []) // ✅ No dependencies needed
|
|
44
|
+
|
|
45
|
+
// Always uses latest state, no stale closure risk
|
|
46
|
+
const removeItem = useCallback((id: string) => {
|
|
47
|
+
setItems(curr => curr.filter(item => item.id !== id))
|
|
48
|
+
}, []) // ✅ Safe and stable
|
|
49
|
+
|
|
50
|
+
return <ItemsEditor items={items} onAdd={addItems} onRemove={removeItem} />
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Benefits:**
|
|
55
|
+
|
|
56
|
+
1. **Stable callback references** - Callbacks don't need to be recreated when state changes
|
|
57
|
+
2. **No stale closures** - Always operates on the latest state value
|
|
58
|
+
3. **Fewer dependencies** - Simplifies dependency arrays and reduces memory leaks
|
|
59
|
+
4. **Prevents bugs** - Eliminates the most common source of React closure bugs
|
|
60
|
+
|
|
61
|
+
**When to use functional updates:**
|
|
62
|
+
|
|
63
|
+
- Any setState that depends on the current state value
|
|
64
|
+
- Inside useCallback/useMemo when state is needed
|
|
65
|
+
- Event handlers that reference state
|
|
66
|
+
- Async operations that update state
|
|
67
|
+
|
|
68
|
+
**When direct updates are fine:**
|
|
69
|
+
|
|
70
|
+
- Setting state to a static value: `setCount(0)`
|
|
71
|
+
- Setting state from props/arguments only: `setName(newName)`
|
|
72
|
+
- State doesn't depend on previous value
|
|
73
|
+
|
|
74
|
+
**Note:** If your project has [React Compiler](https://react.dev/learn/react-compiler) enabled, the compiler can automatically optimize some cases, but functional updates are still recommended for correctness and to prevent stale closure bugs.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use Lazy State Initialization
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: wasted computation on every render
|
|
5
|
+
tags: react, hooks, useState, performance, initialization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Use Lazy State Initialization
|
|
9
|
+
|
|
10
|
+
Pass a function to `useState` for expensive initial values. Without the function form, the initializer runs on every render even though the value is only used once.
|
|
11
|
+
|
|
12
|
+
**Incorrect (runs on every render):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function FilteredList({ items }: { items: Item[] }) {
|
|
16
|
+
// buildSearchIndex() runs on EVERY render, even after initialization
|
|
17
|
+
const [searchIndex, setSearchIndex] = useState(buildSearchIndex(items))
|
|
18
|
+
const [query, setQuery] = useState('')
|
|
19
|
+
|
|
20
|
+
// When query changes, buildSearchIndex runs again unnecessarily
|
|
21
|
+
return <SearchResults index={searchIndex} query={query} />
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function UserProfile() {
|
|
25
|
+
// JSON.parse runs on every render
|
|
26
|
+
const [settings, setSettings] = useState(
|
|
27
|
+
JSON.parse(localStorage.getItem('settings') || '{}')
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
return <SettingsForm settings={settings} onChange={setSettings} />
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Correct (runs only once):**
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
function FilteredList({ items }: { items: Item[] }) {
|
|
38
|
+
// buildSearchIndex() runs ONLY on initial render
|
|
39
|
+
const [searchIndex, setSearchIndex] = useState(() => buildSearchIndex(items))
|
|
40
|
+
const [query, setQuery] = useState('')
|
|
41
|
+
|
|
42
|
+
return <SearchResults index={searchIndex} query={query} />
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function UserProfile() {
|
|
46
|
+
// JSON.parse runs only on initial render
|
|
47
|
+
const [settings, setSettings] = useState(() => {
|
|
48
|
+
const stored = localStorage.getItem('settings')
|
|
49
|
+
return stored ? JSON.parse(stored) : {}
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
return <SettingsForm settings={settings} onChange={setSettings} />
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Use lazy initialization when computing initial values from localStorage/sessionStorage, building data structures (indexes, maps), reading from the DOM, or performing heavy transformations.
|
|
57
|
+
|
|
58
|
+
For simple primitives (`useState(0)`), direct references (`useState(props.value)`), or cheap literals (`useState({})`), the function form is unnecessary.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
title: Extract Default Non-primitive Parameter Value from Memoized Component to Constant
|
|
4
|
+
impact: MEDIUM
|
|
5
|
+
impactDescription: restores memoization by using a constant for default value
|
|
6
|
+
tags: rerender, memo, optimization
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Extract Default Non-primitive Parameter Value from Memoized Component to Constant
|
|
11
|
+
|
|
12
|
+
When memoized component has a default value for some non-primitive optional parameter, such as an array, function, or object, calling the component without that parameter results in broken memoization. This is because new value instances are created on every rerender, and they do not pass strict equality comparison in `memo()`.
|
|
13
|
+
|
|
14
|
+
To address this issue, extract the default value into a constant.
|
|
15
|
+
|
|
16
|
+
**Incorrect (`onClick` has different values on every rerender):**
|
|
17
|
+
|
|
18
|
+
```tsx
|
|
19
|
+
const UserAvatar = memo(function UserAvatar({ onClick = () => {} }: { onClick?: () => void }) {
|
|
20
|
+
// ...
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
// Used without optional onClick
|
|
24
|
+
<UserAvatar />
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Correct (stable default value):**
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
const NOOP = () => {};
|
|
31
|
+
|
|
32
|
+
const UserAvatar = memo(function UserAvatar({ onClick = NOOP }: { onClick?: () => void }) {
|
|
33
|
+
// ...
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// Used without optional onClick
|
|
37
|
+
<UserAvatar />
|
|
38
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Extract to Memoized Components
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: enables early returns
|
|
5
|
+
tags: rerender, memo, useMemo, optimization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Extract to Memoized Components
|
|
9
|
+
|
|
10
|
+
Extract expensive work into memoized components to enable early returns before computation.
|
|
11
|
+
|
|
12
|
+
**Incorrect (computes avatar even when loading):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function Profile({ user, loading }: Props) {
|
|
16
|
+
const avatar = useMemo(() => {
|
|
17
|
+
const id = computeAvatarId(user)
|
|
18
|
+
return <Avatar id={id} />
|
|
19
|
+
}, [user])
|
|
20
|
+
|
|
21
|
+
if (loading) return <Skeleton />
|
|
22
|
+
return <div>{avatar}</div>
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Correct (skips computation when loading):**
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
const UserAvatar = memo(function UserAvatar({ user }: { user: User }) {
|
|
30
|
+
const id = useMemo(() => computeAvatarId(user), [user])
|
|
31
|
+
return <Avatar id={id} />
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
function Profile({ user, loading }: Props) {
|
|
35
|
+
if (loading) return <Skeleton />
|
|
36
|
+
return (
|
|
37
|
+
<div>
|
|
38
|
+
<UserAvatar user={user} />
|
|
39
|
+
</div>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Note:** If your project has [React Compiler](https://react.dev/learn/react-compiler) enabled, manual memoization with `memo()` and `useMemo()` is not necessary. The compiler automatically optimizes re-renders.
|
package/framework/.qoder/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Put Interaction Logic in Event Handlers
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: avoids effect re-runs and duplicate side effects
|
|
5
|
+
tags: rerender, useEffect, events, side-effects, dependencies
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Put Interaction Logic in Event Handlers
|
|
9
|
+
|
|
10
|
+
If a side effect is triggered by a specific user action (submit, click, drag), run it in that event handler. Do not model the action as state + effect; it makes effects re-run on unrelated changes and can duplicate the action.
|
|
11
|
+
|
|
12
|
+
**Incorrect (event modeled as state + effect):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function Form() {
|
|
16
|
+
const [submitted, setSubmitted] = useState(false)
|
|
17
|
+
const theme = useContext(ThemeContext)
|
|
18
|
+
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (submitted) {
|
|
21
|
+
post('/api/register')
|
|
22
|
+
showToast('Registered', theme)
|
|
23
|
+
}
|
|
24
|
+
}, [submitted, theme])
|
|
25
|
+
|
|
26
|
+
return <button onClick={() => setSubmitted(true)}>Submit</button>
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Correct (do it in the handler):**
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
function Form() {
|
|
34
|
+
const theme = useContext(ThemeContext)
|
|
35
|
+
|
|
36
|
+
function handleSubmit() {
|
|
37
|
+
post('/api/register')
|
|
38
|
+
showToast('Registered', theme)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return <button onClick={handleSubmit}>Submit</button>
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Reference: [Should this code move to an event handler?](https://react.dev/learn/removing-effect-dependencies#should-this-code-move-to-an-event-handler)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Do not wrap a simple expression with a primitive result type in useMemo
|
|
3
|
+
impact: LOW-MEDIUM
|
|
4
|
+
impactDescription: wasted computation on every render
|
|
5
|
+
tags: rerender, useMemo, optimization
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Do not wrap a simple expression with a primitive result type in useMemo
|
|
9
|
+
|
|
10
|
+
When an expression is simple (few logical or arithmetical operators) and has a primitive result type (boolean, number, string), do not wrap it in `useMemo`.
|
|
11
|
+
Calling `useMemo` and comparing hook dependencies may consume more resources than the expression itself.
|
|
12
|
+
|
|
13
|
+
**Incorrect:**
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
function Header({ user, notifications }: Props) {
|
|
17
|
+
const isLoading = useMemo(() => {
|
|
18
|
+
return user.isLoading || notifications.isLoading
|
|
19
|
+
}, [user.isLoading, notifications.isLoading])
|
|
20
|
+
|
|
21
|
+
if (isLoading) return <Skeleton />
|
|
22
|
+
// return some markup
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Correct:**
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
function Header({ user, notifications }: Props) {
|
|
30
|
+
const isLoading = user.isLoading || notifications.isLoading
|
|
31
|
+
|
|
32
|
+
if (isLoading) return <Skeleton />
|
|
33
|
+
// return some markup
|
|
34
|
+
}
|
|
35
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use Transitions for Non-Urgent Updates
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: maintains UI responsiveness
|
|
5
|
+
tags: rerender, transitions, startTransition, performance
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Use Transitions for Non-Urgent Updates
|
|
9
|
+
|
|
10
|
+
Mark frequent, non-urgent state updates as transitions to maintain UI responsiveness.
|
|
11
|
+
|
|
12
|
+
**Incorrect (blocks UI on every scroll):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function ScrollTracker() {
|
|
16
|
+
const [scrollY, setScrollY] = useState(0)
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const handler = () => setScrollY(window.scrollY)
|
|
19
|
+
window.addEventListener('scroll', handler, { passive: true })
|
|
20
|
+
return () => window.removeEventListener('scroll', handler)
|
|
21
|
+
}, [])
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Correct (non-blocking updates):**
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { startTransition } from 'react'
|
|
29
|
+
|
|
30
|
+
function ScrollTracker() {
|
|
31
|
+
const [scrollY, setScrollY] = useState(0)
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
const handler = () => {
|
|
34
|
+
startTransition(() => setScrollY(window.scrollY))
|
|
35
|
+
}
|
|
36
|
+
window.addEventListener('scroll', handler, { passive: true })
|
|
37
|
+
return () => window.removeEventListener('scroll', handler)
|
|
38
|
+
}, [])
|
|
39
|
+
}
|
|
40
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use useRef for Transient Values
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: avoids unnecessary re-renders on frequent updates
|
|
5
|
+
tags: rerender, useref, state, performance
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Use useRef for Transient Values
|
|
9
|
+
|
|
10
|
+
When a value changes frequently and you don't want a re-render on every update (e.g., mouse trackers, intervals, transient flags), store it in `useRef` instead of `useState`. Keep component state for UI; use refs for temporary DOM-adjacent values. Updating a ref does not trigger a re-render.
|
|
11
|
+
|
|
12
|
+
**Incorrect (renders every update):**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
function Tracker() {
|
|
16
|
+
const [lastX, setLastX] = useState(0)
|
|
17
|
+
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const onMove = (e: MouseEvent) => setLastX(e.clientX)
|
|
20
|
+
window.addEventListener('mousemove', onMove)
|
|
21
|
+
return () => window.removeEventListener('mousemove', onMove)
|
|
22
|
+
}, [])
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<div
|
|
26
|
+
style={{
|
|
27
|
+
position: 'fixed',
|
|
28
|
+
top: 0,
|
|
29
|
+
left: lastX,
|
|
30
|
+
width: 8,
|
|
31
|
+
height: 8,
|
|
32
|
+
background: 'black',
|
|
33
|
+
}}
|
|
34
|
+
/>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Correct (no re-render for tracking):**
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
function Tracker() {
|
|
43
|
+
const lastXRef = useRef(0)
|
|
44
|
+
const dotRef = useRef<HTMLDivElement>(null)
|
|
45
|
+
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
const onMove = (e: MouseEvent) => {
|
|
48
|
+
lastXRef.current = e.clientX
|
|
49
|
+
const node = dotRef.current
|
|
50
|
+
if (node) {
|
|
51
|
+
node.style.transform = `translateX(${e.clientX}px)`
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
window.addEventListener('mousemove', onMove)
|
|
55
|
+
return () => window.removeEventListener('mousemove', onMove)
|
|
56
|
+
}, [])
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<div
|
|
60
|
+
ref={dotRef}
|
|
61
|
+
style={{
|
|
62
|
+
position: 'fixed',
|
|
63
|
+
top: 0,
|
|
64
|
+
left: 0,
|
|
65
|
+
width: 8,
|
|
66
|
+
height: 8,
|
|
67
|
+
background: 'black',
|
|
68
|
+
transform: 'translateX(0px)',
|
|
69
|
+
}}
|
|
70
|
+
/>
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
```
|