Agent Skillssimstudioai/sim › you-might-not-need-state

you-might-not-need-state

GitHub

分析并修复 React 中不必要的使用 useState、派生状态及服务端状态本地化等反模式,确保遵循单一数据源原则。

.agents/skills/you-might-not-need-state/SKILL.md simstudioai/sim

Trigger Scenarios

审查 React 代码中的状态管理逻辑 检查是否存在冗余的 useState 使用 验证是否错误地将服务端或全局状态复制到局部状态

Install

npx skills add simstudioai/sim --skill you-might-not-need-state -g -y
More Options

Non-standard path

npx skills add https://github.com/simstudioai/sim/tree/main/.agents/skills/you-might-not-need-state -g -y

Use without installing

npx skills use simstudioai/sim@you-might-not-need-state

指定 Agent (Claude Code)

npx skills add simstudioai/sim --skill you-might-not-need-state -a claude-code -g -y

安装 repo 全部 skill

npx skills add simstudioai/sim --all -g -y

预览 repo 内 skill

npx skills add simstudioai/sim --list

SKILL.md

Frontmatter
{
    "name": "you-might-not-need-state",
    "description": "Analyze and fix unnecessary useState, derived state, and server-state-in-local-state anti-patterns",
    "argument-hint": "[scope] [fix=true|false]"
}

You Might Not Need State

Arguments:

  • scope: what to analyze (default: your current changes). Examples: "diff to main", "PR #123", "src/components/", "whole codebase"
  • fix: whether to apply fixes (default: true). Set to false to only propose changes.

User arguments: $ARGUMENTS

Context

This codebase uses React Query for all server state and Zustand for client-only global state. useState should only be used for ephemeral UI concerns (open/closed, hover, local form input). Server data should never be copied into useState or Zustand — React Query is the single source of truth.

References

Read these before analyzing:

  1. https://react.dev/learn/choosing-the-state-structure — 5 principles for structuring state
  2. https://tkdodo.eu/blog/dont-over-use-state — never store derived/computed values in state
  3. https://tkdodo.eu/blog/putting-props-to-use-state — never mirror props into state via useEffect

Anti-patterns to detect

  1. Derived state stored in useState: If a value can be computed from props, other state, or query data, compute it inline during render instead of storing it in state.
  2. Server state copied into useState: Never useState + useEffect to sync React Query data into local state. Use query data directly. The only exception is forms where users edit server data.
  3. Props mirrored into state: Never useState(prop) + useEffect(() => setState(prop)). Use the prop directly, or use a key to reset component state.
  4. Chained useEffect state updates: Never chain Effects that set state to trigger other Effects. Calculate all derived values in the event handler or inline during render.
  5. Storing objects when an ID suffices: Store selectedId not a copy of the selected object. Derive the object: items.find(i => i.id === selectedId).
  6. State that duplicates Zustand or React Query: If the data already lives in a store or query cache, don't create a parallel useState.

Steps

  1. Read the references above to understand the guidelines
  2. Analyze the specified scope for the anti-patterns listed above
  3. If fix=true, apply the fixes. If fix=false, propose the fixes without applying.

Version History

  • ceda457 Current 2026-08-20 15:30

Same Skill Collection

.agents/skills/add-block-preview/SKILL.md
.agents/skills/add-block/SKILL.md
.agents/skills/add-column-type/SKILL.md
.agents/skills/add-connector/SKILL.md
.agents/skills/add-enrichment/SKILL.md
.agents/skills/add-feature-flag/SKILL.md
.agents/skills/add-hosted-key/SKILL.md
.agents/skills/add-integration/SKILL.md
.agents/skills/add-managed-cli/SKILL.md
.agents/skills/add-model/SKILL.md
.agents/skills/add-tools/SKILL.md
.agents/skills/add-trigger/SKILL.md
.agents/skills/babysit/SKILL.md
.agents/skills/cleanup/SKILL.md
.agents/skills/council/SKILL.md
.agents/skills/db-migrate/SKILL.md
.agents/skills/design-taste-frontend/SKILL.md
.agents/skills/emcn-design-review/SKILL.md
.agents/skills/emil-design-eng/SKILL.md
.agents/skills/make-interfaces-feel-better/SKILL.md
.agents/skills/memory-load-check/SKILL.md
.agents/skills/react-query-best-practices/SKILL.md
.agents/skills/ship/SKILL.md
.agents/skills/tool-registry-boundary/SKILL.md
.agents/skills/v2-api-conventions/SKILL.md
.agents/skills/validate-connector/SKILL.md
.agents/skills/validate-integration/SKILL.md
.agents/skills/validate-model/SKILL.md
.agents/skills/validate-trigger/SKILL.md
.agents/skills/you-might-not-need-a-callback/SKILL.md
.agents/skills/you-might-not-need-a-comment/SKILL.md
.agents/skills/you-might-not-need-a-memo/SKILL.md
.agents/skills/you-might-not-need-an-effect/SKILL.md
.agents/skills/you-might-not-need-url-state/SKILL.md
.claude/skills/add-settings-page/SKILL.md
helm/sim/.claude/skills/sim-helm/SKILL.md
.agents/skills/migrate-application-operation/SKILL.md

Metadata

Files
0
Version
ceda457
Hash
18f440f3
Indexed
2026-08-20 15:30

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 07:37
浙ICP备14020137号-1 $방문자$