用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill devsreact-components命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
基于 SOC 职业分类
正在显示 SKILL.md
| name | devsreact-components |
| description | | Use when this capability is needed. |
Automated Scaffolding:
Use the scaffold-component.mjs script to quickly generate the boilerplate for a new feature component:
node .claude/skills/react-component/scripts/scaffold-component.mjs <featureName> <ComponentName>
<featureName> (camelCase): e.g., userProfile (creates src/features/userProfile/components/).<ComponentName> (PascalCase): e.g., UserProfileCard (generates UserProfileCardContainer.tsx, UserProfileCardView.tsx, UserProfileCardView.stories.tsx).
Run this command from the root of your React project.Read principles.md for core philosophy
Read patterns.md for container/presenter pattern
Read project-structure.md for file placement
| Type | Purpose | Contains |
|---|---|---|
| Container | Data fetching, state management | Hooks, no complex markup |
| Presenter | Pure UI rendering | Props, no side effects |
| Hook | Reusable logic | No JSX |
# Shared UI primitive
src/components/ui/<ComponentName>.tsx
# Feature-specific
src/features/<feature>/components/<Name>Container.tsx
src/features/<feature>/components/<Name>View.tsx
Container + Presenter pair:
// Container: handles data
export function FeatureContainer() {
const { data, error, isLoading } = useFeatureQuery()
if (isLoading) return <FeatureView state="loading" />
if (error) return <FeatureView state="error" message={error.message} />
if (!data) return <FeatureView state="empty" />
return <FeatureView state="ready" data={data} />
}
// Presenter: handles UI
export function FeatureView({ state, data, message }: FeatureViewProps) {
// Pure rendering based on props
}
Create stories for all four states: loading, error, empty, ready.
// FeatureView.stories.tsx
export const Loading = { args: { state: 'loading' } }
export const Empty = { args: { state: 'empty' } }
export const Error = { args: { state: 'error', message: 'Something went wrong' } }
export const Ready = { args: { state: 'ready', data: mockData } }
For more on creating interactive stories with controls, documenting with MDX, and mocking API requests for container components, see the Advanced Storybook Guide.
<Component>Propstailwind.config.js)cn() utility for conditional classessm, md, lg, xl minimumforms/<schema>.tsforms/use-<form>-form.ts| File | When to Read |
|---|---|
| naming.md | Variable, function, component naming |
| principles.md | Core philosophy (KISS, YAGNI, UX-first) |
| patterns.md | Container/presenter, composition |
| headless-components.md | Headless pattern, Radix-style composition |
| project-structure.md | File organization |
| state-and-styling.md | State management, Tailwind, async UX |
| forms-and-testing.md | RHF + Zod, Vitest + RTL |
| advanced-storybook.md | Interactive stories, MDX, API mocking |
| error-handling.md | Error boundaries, logging, reporting |
| security.md | Web3 safety, logging |
| accessibility.md | a11y best practices, testing |
| packages.md |
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
| Approved dependencies |
| code-review.md | Review checklist |