Token导航 LogoToken导航

Agent Skill · 开发

xstate-v5(状态 v5)

xstate-v5 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

xstate-v5 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为执行命令;许可证信息还不明确,第三方扫描已通过,按安装量在开发类的 21,746 个 Skill 里排第 13,537。

总安装 879周安装 37GitHub Stars 1下载 308核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:xstate-v5(状态 v5)
来源仓库:https://github.com/programbo/xstate-skill
仓库路径:skills/xstate-v5
安装命令:
npx skills add https://github.com/programbo/xstate-skill --skill xstate-v5
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/programbo/xstate-skill --skill xstate-v5

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

xstate-v5 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。适用于状态机设计、事件流转分析或复杂交互逻辑管理等开发任务。

通过 npx skills add 命令从指定 GitHub 仓库安装,需确认权限范围和联网能力。建议核实维护状态,避免触发不必要的文件读写或命令执行操作。可结合原始 README 进一步了解具体用法和功能边界。

来源仓库内路径:skills/xstate-v5

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/programbo/xstate-skill --skill xstate-v5;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要执行命令,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

xstate-v5 怎么安装?

在终端执行 npx skills add https://github.com/programbo/xstate-skill --skill xstate-v5。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

xstate-v5 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

xstate-v5 需要什么权限?

权限级别是执行命令。安装流程涉及命令执行,可能通过 npx skills add https://github.com/programbo/xstate-skill --skill xstate-v5 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

xstate-v5 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

xstate-v5 用的人多吗?

公开数据是累计安装 879 次,近一周安装 37 次,下载 308 次,GitHub 1 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

xstate-v5 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要执行命令,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 不能接受 Skill 在你机器上执行命令的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
xstate-v5

状态 v5 · 本页

8791执行命令未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

xstate-v5 (Strict) Skill

Build, refactor, and review XState v5 state machines (TypeScript and React) using a strict, strongly-typed ruleset.

Source of truth: references/xstate-v5-rules.md (this repo, resolved from the skill root). If anything in this skill conflicts with the rules file, follow the rules file.

Inlined Non-Negotiable Contract (Agent Must Follow)

These requirements are intentionally duplicated here so an agent can comply without first loading external references:

  • Design first, code second:

- Produce planning artifacts before implementation (state inventory, event catalog, transition table, async/actor map, acceptance-test scenarios). - Include a boundary/decomposition decision record (what is split vs orchestrated, and why).

  • No god-machine architecture:

- Unrelated domains (auth, toasts, navigation, workflows, transport/retry policy) must not be fully modeled in one machine. - A single machine is acceptable only as a thin orchestration root or tightly coupled app-shell parallel regions.

  • No state-mirroring context flags:

- Do not duplicate mode in context booleans (isLoading, isAuthenticated, etc.) when state.value already represents the mode. - If a temporary migration flag exists, document rationale and removal plan.

  • XState v5 strictness:

- Use setup({...}).createMachine({...}). - Implement actions/guards/actors in setup(...). - Send event objects only. - Avoid forbidden v4 patterns (interpret, Machine, cond, send, pure, choose, etc.).

  • Enforce explicit async and actor boundaries:

- Request/response: invoke with onDone and onError. - Long-lived collaborators: spawnChild/stopChild and explicit routing via sendTo.

Fail-closed rule:

  • If any detail is ambiguous, load references/xstate-v5-rules.md before writing or reviewing machine code.
  • If that file is missing/unreadable, stop and report the issue instead of guessing.

When To Use

Use this skill when the task involves:

  • XState v5 machines/actors (xstate, @xstate/react)
  • Refactoring XState code to be more type-safe and idiomatic v5
  • Migrating XState v4 patterns (Machine/interpret/cond/send/pure/choose/etc.) to v5 equivalents
  • Planning/designing statecharts prior to implementing them as XState v5 machines
  • Designing actor boundaries (invoke vs spawnChild) and React integration via createActorContext

Hard Requirements (Enforced)

  • Prefer setup({...}).createMachine({...}) for all machines.
  • Implement all actions, guards, and actors in the setup({...}) object.
  • Prefer passing event-derived data via typed params to actions/guards.
  • Never send string events. Always send event objects: actor.send({type: '...'}).
  • Forbid XState v4 legacy APIs and patterns listed in references/xstate-v5-rules.md.
  • Do not model unrelated domains (auth, notifications/toasts, navigation, data lifecycle, etc.) inside one machine, except a thin orchestration machine.
  • Do not mirror state in context booleans (isLoading, isAuthenticated, etc.) when state.value already represents that mode.

Rules Table Of Contents

Quick Start

Minimal typed machine skeleton:

import { setup, assign } from "xstate"

type Ctx = { count: number }

type Ev = { type: "inc" } | { type: "add"; amount: number } | { type: "reset" }

type Input = { initialCount?: number }

export const counterMachine = setup({
  types: {
    context: {} as Ctx,
    events: {} as Ev,
    input: {} as Input,
  },
  actions: {
    inc: assign({ count: ({ context }) => context.count + 1 }),
    add: assign({
      count: ({ context }, params: { amount: number }) => context.count + params.amount,
    }),
    reset: assign({ count: ({ input }) => input.initialCount ?? 0 }),
  },
}).createMachine({
  id: "counter",
  context: ({ input }) => ({ count: input.initialCount ?? 0 }),
  on: {
    inc: { actions: "inc" },
    add: {
      actions: {
        type: "add",
        params: ({ event }) => ({ amount: event.amount }),
      },
    },
    reset: { actions: "reset" },
  },
})

React shared state skeleton:

import { createActorContext, shallowEqual } from "@xstate/react"
import { type SnapshotFrom } from "xstate"
import { counterMachine } from "./counterMachine"

const CounterCtx = createActorContext(counterMachine)

export const CounterProvider = CounterCtx.Provider
export const useCounterSelector = CounterCtx.useSelector
export const useCounterActorRef = CounterCtx.useActorRef

const selectCount = (s: SnapshotFrom<typeof counterMachine>) => s.context.count
export const useCount = () => useCounterSelector(selectCount)

const selectCtx = (s: SnapshotFrom<typeof counterMachine>) => s.context
export const useCounterContext = () => useCounterSelector(selectCtx, shallowEqual)

Workflow (What To Do Each Time)

  1. Read references/xstate-v5-rules.md first.
  2. Identify the target surface area:

- Plain machine/actor (non-React) - React integration (createActorContext) or local useActor - Migration from v4 patterns

  1. Design the statechart first:

- See references/xstate-v5-rules.md#0-statechart-design-before-you-code. - Write down: state inventory, event catalog (payload + source), transition table, async/actor boundaries, and acceptance-test scenarios. - Record a boundary/decomposition decision before type design: - Which concerns belong in separate actors/machines (based on lifecycle, owner, and failure mode). - Which concerns are intentionally orchestrated at top-level (and why). - Any exception note if keeping logic in one machine. - Default: do this unless the user explicitly asks to skip planning.

  1. Design types first:

- types.context, types.events, and types.input (and types.output if applicable) - Use zod schemas only if the codebase already uses Zod or the user asks for it.

  1. Put implementations in setup({actions, guards, actors}):

- Actions/guards take typed params when they need event-derived data. - Only read event-specific fields inside implementations when necessary; use assertEvent then.

  1. Choose async boundaries:

- Prefer invoke with typed input for request/response flows. - Use spawnChild/stopChild for long-lived child actors.

  1. Use v5 runtime APIs:

- createActor(machine) (not interpret) - raise / sendTo (not send action) - enqueueActions (not pure/choose)

  1. Validate:

- tsc passes; no any leaks in params. - No string event sends. - No v4 forbidden imports or config keys (cond, withContext, withConfig, etc.). - Prefer waitFor for async actor tests and xstate/graph (createTestModel, getShortestPaths, etc.) for model/graph-driven test generation.

When A Monolith Is Acceptable

Use a single top-level machine only when it is a thin orchestration root that coordinates child actors or tightly coupled parallel app-shell concerns. Even then, unrelated domain logic should live in separate actors/machines and communicate via explicit events.

Review Checklist (Use When Auditing PRs)

  • All machines are setup(...).createMachine(...).
  • Machine has a clear statechart plan (states/events/transition table) or the PR description includes it.
  • No domain-smell: one machine has one responsibility or explicit orchestration scope.
  • No state-mirroring context flags without documented rationale.
  • No implementations inside types.
  • actions/guards read event fields only via params or assertEvent.
  • No interpret, Machine, withConfig, withContext, cond, send, pure, choose.
  • invoke has onError (and onDone when appropriate).
  • React usage prefers createActorContext at module scope; selectors are stable and use shallowEqual for objects.

Common Fixes

  • Event payload used inside an action:

- Prefer: compute payload in params and make the action implementation depend on params. - Otherwise: add assertEvent(event, 'someType') inside the implementation.

  • v4 cond:

- Rename to guard and move guard implementation into setup({guards: {...}}).

  • v4 interpret:

- Replace with createActor(machine) and .start() where needed.

Notes

If official docs feel ambiguous, follow the rules file guidance: confirm behavior against XState v5 source, issues/discussions, or a minimal reproduction/type-test rather than guessing.

平台分布

Codex

35.23%
按下载量换算109

Claude

30.17%
按下载量换算93

Cursor

18.45%
按下载量换算57

Gemini CLI

10.21%
按下载量换算31

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/programbo/xstate-skill --skill xstate-v5 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills