Agent skill

Create React Modlet

by bitovi in bitovi/ai-enablement-prompts

Create React components, hooks, or utilities following the modlet pattern.

MITAuto-check passedFrontend & Design

Install Create React Modlet

skills CLI
$ npx skills add bitovi/ai-enablement-prompts --skill create-react-modlet -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bitovi/ai-enablement-prompts create-react-modlet --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/bitovi/ai-enablement-prompts.git skills-src && mkdir -p .claude/skills && cp -r skills-src/figma/create-react-modlet .claude/skills/create-react-modlet && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
create-react-modlet
GitHub stars
121
Token cost
~2.1k tokens
SKILL.md length
435 words
Files
1
Skills in repo
40
Repo updated
First seen
Licence
MIT

At a glance

Create React components, hooks, or utilities following the modlet pattern.

  • Works in 3 steps: Plan with Todos → Create Files → Verify
  • Creating any component in packages/client/src/components/
  • SKILL.md covers What Is a Modlet?, When to Use This Skill, Modlet Locations and Naming Conventions, plus 9 more sections
  • Calls npm

What it does

Create React Modlet is an agent skill from bitovi/ai-enablement-prompts. Create React components, hooks, or utilities following the modlet pattern. Use when creating any component in packages/client/src/components/. Modlets are self-contained folders with index.ts, implementation, tests, stories (for visual), and optional types.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering React components. It works with React and Figma. The repository describes itself as: Prompts Bitovi uses for software development. The licence is MIT.

When your agent uses it

  • Creating any component in packages/client/src/components/
  • Tasks that involve React components

Example prompts

  • “/create-react-modlet”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Plan with Todos
  2. Create Files
  3. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit df229b1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Create React Modlet loads about 2.1k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 435 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~69
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from bitovi/ai-enablement-prompts at commit df229b1, republished under its MIT licence (© bitovi). 435 words, ~2,089 tokens.

Download SKILL.mdSave it as .claude/skills/create-react-modlet/SKILL.md (or your agent's skills folder).
name
create-react-modlet
description
Create React components, hooks, or utilities following the modlet pattern. Use when creating any component in packages/client/src/components/. Modlets are self-contained folders with index.ts, implementation, tests, stories (for visual), and optional types.

Skill: Creating React Modlets

This skill teaches how to create React components, hooks, and utilities following the modlet pattern in this project.

What Is a Modlet?

A modlet is a self-contained folder that houses everything related to a specific module. Each modlet includes its implementation, tests, stories (for visual components), and types—all in one place.

When to Use This Skill

Use this skill when:

  • Creating any new React component
  • Creating a custom hook
  • Creating a utility/helper function
  • Breaking down a complex component into sub-components

Modlet Locations

Components are organized in packages/client/src/components/:

packages/client/src/components/
├── ui/              # Shadcn UI components (DO NOT modify manually)
├── common/          # Shared reusable components
├── inline-edit/     # Inline editing components (grouping folder)
├── Header/          # Feature component
├── CaseList/        # Feature component
├── CaseDetails/     # Feature component
└── MenuList/        # Feature component

Naming Conventions

  • PascalCase for component folders: EditableTitle/, Header/, Button/
  • kebab-case for grouping folders: inline-edit/, common/
  • lowercase for standard folders: components/, hooks/, helpers/

Modlet Types

Visual Modlet (React Component)
ComponentName/
├── index.ts                    # Re-export entry point (required)
├── ComponentName.tsx           # Component implementation (required)
├── ComponentName.test.tsx      # Tests (required)
├── ComponentName.stories.tsx   # Storybook story (required)
└── types.ts                    # Custom types (optional)
Non-Visual Modlet (Hook/Utility)
useMyHook/
├── index.ts                    # Re-export entry point (required)
├── useMyHook.ts                # Implementation (required)
├── useMyHook.test.ts           # Tests (required)
└── types.ts                    # Custom types (optional)

Core Rules

  1. Folder naming: Name the modlet folder after its main export (e.g., /Button exports Button)
  2. index.ts only re-exports: Never define logic in index.ts, only re-export from within the modlet
  3. Tests are mandatory: Every modlet must have tests in <modlet-name>.test.tsx
  4. Stories for visual modlets: All visual components must have Storybook stories
  5. Sub-organization: Additional components go in /components subfolder, hooks in /hooks, helpers in /helpers - each as its own modlet

Creation Process

Step 1: Plan with Todos

Use manage_todo_list to track progress:

1. Create modlet folder
2. Add index.ts with re-exports
3. Add main component/hook file
4. Add test file
5. (Visual) Add story file
6. (If needed) Add types.ts
7. Verify tests pass
8. Verify TypeScript compiles
9. (Visual) Verify story renders
Step 2: Create Files
index.ts (Required)
typescript
export { ComponentName } from './ComponentName';
export type { ComponentNameProps } from './types';
ComponentName.tsx (Required)
tsx
import { cn } from '@/lib/utils';
import type { ComponentNameProps } from './types';

export function ComponentName({ className, ...props }: ComponentNameProps) {
  return (
    <div className={cn('component-styles', className)}>
      {/* Implementation */}
    </div>
  );
}
ComponentName.test.tsx (Required)
tsx
import { describe, it, expect, vi } from 'vitest';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { ComponentName } from './ComponentName';

describe('ComponentName', () => {
  it('should render correctly', () => {
    render(<ComponentName />);
    expect(screen.getByText('expected text')).toBeInTheDocument();
  });

  it('should handle user interaction', async () => {
    const user = userEvent.setup();
    const handleClick = vi.fn();
    render(<ComponentName onClick={handleClick} />);
    
    await user.click(screen.getByRole('button'));
    expect(handleClick).toHaveBeenCalled();
  });
});
ComponentName.stories.tsx (Required for Visual)
tsx
import type { Meta, StoryObj } from '@storybook/react';
import { ComponentName } from './ComponentName';

const meta: Meta<typeof ComponentName> = {
  component: ComponentName,
  title: 'Common/ComponentName',  // Use: Common/, InlineEdit/, Feature name, etc.
  tags: ['autodocs'],
};

export default meta;
type Story = StoryObj<typeof ComponentName>;

export const Default: Story = {
  args: {
    // Default props
  },
};

export const Variant: Story = {
  args: {
    // Variant props
  },
};
types.ts (Optional)
typescript
export interface ComponentNameProps {
  /** Additional CSS classes */
  className?: string;
  // Other props
}

export type ComponentNameVariant = 'primary' | 'secondary';
Step 3: Verify

Run these commands from the project root:

bash
# Run tests
npm run test

# Type check
npm run typecheck

# Start Storybook (for visual verification)
npm run storybook

Project-Specific Patterns

Import Aliases

Use the @/ alias for imports:

tsx
import { cn } from '@/lib/utils';
import { Button } from '@/components/ui/button';
import { SomeComponent } from '@/components/common/SomeComponent';
Shadcn UI Components

Reuse components from @/components/ui/:

tsx
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Card, CardHeader, CardContent } from '@/components/ui/card';
Tailwind CSS

Use Tailwind classes for styling. Use cn() for conditional classes:

tsx
import { cn } from '@/lib/utils';

<div className={cn('base-classes', isActive && 'active-classes', className)} />
Show full SKILL.md (173 more words)Show less
Story Decorators

When components need context providers:

tsx
import { BrowserRouter } from 'react-router-dom';

const meta: Meta<typeof ComponentName> = {
  component: ComponentName,
  decorators: [
    (Story) => (
      <BrowserRouter>
        <Story />
      </BrowserRouter>
    ),
  ],
};

Sub-Modlet Organization

For complex components with internal sub-components:

ComplexComponent/
├── index.ts
├── ComplexComponent.tsx
├── ComplexComponent.test.tsx
├── ComplexComponent.stories.tsx
├── types.ts
├── components/
│   ├── SubComponentA/
│   │   ├── index.ts
│   │   ├── SubComponentA.tsx
│   │   └── SubComponentA.test.tsx
│   └── SubComponentB/
│       ├── index.ts
│       ├── SubComponentB.tsx
│       └── SubComponentB.test.tsx
└── hooks/
    └── useComponentLogic/
        ├── index.ts
        ├── useComponentLogic.ts
        └── useComponentLogic.test.ts

Quality Checklist

Before completing any modlet:

  • Folder name matches main export
  • index.ts exists and only contains re-exports
  • Main module file exists
  • Test file exists and passes (npm run test)
  • (Visual only) Story file exists
  • Types file exists if custom types are defined
  • Sub-folders follow modlet structure
  • npm run typecheck passes
  • Modlet can be imported from its index.ts

Common Mistakes to Avoid

  • ❌ Missing index.ts file
  • ❌ Defining logic directly in index.ts instead of re-exporting
  • ❌ Skipping tests
  • ❌ Missing Storybook stories for visual components
  • ❌ Not verifying tests pass after creation
  • ❌ Folder name doesn't match main export name

Existing Examples

Reference these existing modlets for patterns:

Full modlet with types:

  • components/Header/ - Has index.ts, component, test, story, types

Modlet in grouping folder:

  • components/inline-edit/EditableText/ - Inline edit component

Common component:

  • components/common/ConfirmationDialog/ - Dialog component in common folder

Testing Notes

This project uses:

  • Vitest for test runner
  • @testing-library/react for component testing
  • @testing-library/user-event for user interaction testing
  • @testing-library/jest-dom for DOM matchers

Tests are configured via vitest.config.ts with jsdom environment.

© bitovi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in figma/create-react-modlet of bitovi/ai-enablement-prompts.

Open the folder on GitHubat commit df229b1

Compare with similar skills

Create React Modlet next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Create React Modlet compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create React Modlet this skillbitovi/ai-enablement-prompts121—~2.1kAutomated safety check: PassMIT
Wonder BlocksKhan/wonder-blocks163—~3.2kAutomated safety check: PassMIT
Connect Component To Figmadequelabs/cauldron129—~2kAutomated safety check: PassMPL-2.0
DaleuiDaleStudy/daleui119—~675Automated safety check: PassMIT
Shift UI Componentsshift-editor/shift343—~2.5kAutomated safety check: PassApache-2.0
Hero UI Crafthashgraph-online/awesome-codex-plugins1.2k—~3.4kAutomated safety check: PassApache-2.0

Similar skills

  • Wonder Blocks

    Khan/wonder-blocks

    Implements user interfaces using the Wonder Blocks (WB) design system — Khan Academy's React component library.

    163 GitHub stars~3.2k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Connect Component To Figma

    dequelabs/cauldron

    Add a Figma Code Connect (.figma.tsx) file for a Cauldron React component.

    129 GitHub stars~2k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Daleui

    DaleStudy/daleui

    Use the daleui React design system with semantic Panda CSS tokens and accessible components.

    119 GitHub stars~675 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Shift UI Components

    shift-editor/shift

    Guides design, implementation and review of Shift interface work: shared Base UI wrappers, Tailwind v4 theme tokens, Figma matching and accessible interaction states.

    343 GitHub stars~2.5k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Hero UI Craft

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses when Codex works on any front-end implementation, UI polish, dashboard, product screen, internal tool, design system, React component, Tailwind CSS v4 surface, HeroUI React…

    1.2k GitHub stars~3.4k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Storybook

    pproenca/dot-skills

    A skill your agent uses whenever creating, configuring, or extending Storybook for a TS/React component library — covers main.ts/preview.ts setup, CSF3 story authoring, args/argTypes/controls…

    214 GitHub stars~3.6k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed

More from bitovi/ai-enablement-prompts

All 40 skills in this repo
  • Component Registry

    bitovi/ai-enablement-prompts

    Track reusable UI components and unextracted patterns. An agent skill from bitovi/ai-enablement-prompts.

    121 GitHub stars~597 tokensUpdated 26 days ago
    Auto-check passed
  • Computed Styles

    bitovi/ai-enablement-prompts

    Extract and compare computed CSS styles between a baseline URL and a dev/Storybook URL using Playwright MCP evaluate calls.

    121 GitHub stars~2.4k tokensUpdated 26 days ago
    Auto-check passed
  • Create Plugin

    bitovi/ai-enablement-prompts

    A skill your agent uses when the user asks to "create a plugin", "add a plugin", "make a new plugin", "build a plugin", or wants to package skills into an installable plugin for this marketplace.

    121 GitHub stars~2k tokensUpdated 26 days ago
    Auto-check passed
  • Create Skill

    bitovi/ai-enablement-prompts

    A skill your agent uses when the user asks to "create a skill", "add a skill", "make a new skill", "build a skill", or wants to automate a repeated workflow into a reusable prompt.

    121 GitHub stars~1.6k tokensUpdated 26 days ago
    Auto-check passed
  • Create Skill

    bitovi/ai-enablement-prompts

    Create new Agent Skills for this project. An agent skill from bitovi/ai-enablement-prompts.

    121 GitHub stars~1.7k tokensUpdated 26 days ago
    Auto-check passed
  • Cross Package Types

    bitovi/ai-enablement-prompts

    Type flow patterns for tRPC + Prisma monorepos. An agent skill from bitovi/ai-enablement-prompts.

    121 GitHub stars~1.1k tokensUpdated 26 days ago
    Auto-check passed

Works with

Questions about Create React Modlet

What does Create React Modlet do?

Create React components, hooks, or utilities following the modlet pattern. Create React Modlet is an agent skill from bitovi/ai-enablement-prompts. Create React components, hooks, or utilities following the modlet pattern.

When should I use Create React Modlet?

Create React Modlet fits situations like: creating any component in packages/client/src/components/; tasks that involve React components.

How do I install Create React Modlet in Claude Code?

Run `npx skills add bitovi/ai-enablement-prompts --skill create-react-modlet -a claude-code`. Or copy the skill folder (figma/create-react-modlet in bitovi/ai-enablement-prompts) into .claude/skills/create-react-modlet in your project. Claude Code loads it when a task matches its description.

How do I install Create React Modlet in Codex?

Run `npx skills add bitovi/ai-enablement-prompts --skill create-react-modlet -a codex`. Or copy the skill folder (figma/create-react-modlet in bitovi/ai-enablement-prompts) into .agents/skills/create-react-modlet in your project. Codex loads it when a task matches its description.

Can I use Create React Modlet in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bitovi/ai-enablement-prompts --skill create-react-modlet -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-react-modlet, .gemini/skills/create-react-modlet, .github/skills/create-react-modlet and .opencode/skills/create-react-modlet in your project.

What does Create React Modlet need to run?

Going by SKILL.md and its folder, Create React Modlet needs the command-line tools its instructions call (npm).

Does Create React Modlet access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Create React Modlet safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Create React Modlet use?

Create React Modlet is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create React Modlet use?

About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create React Modlet?

Skills that share tags, products or a category with Create React Modlet: Wonder Blocks (Khan/wonder-blocks, 163 stars), Connect Component To Figma (dequelabs/cauldron, 129 stars), Daleui (DaleStudy/daleui, 119 stars) and Shift UI Components (shift-editor/shift, 343 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create React Modlet?

bitovi (a GitHub organization) maintains it in bitovi/ai-enablement-prompts, which has 121 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on September 11, 2026.

Source: bitovi/ai-enablement-prompts on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.