React Composition Patterns
vercel-labs/openreview
Rules for structuring React components with composition instead of boolean props, covering compound components, lifted state, variants and React 19 changes.
Refactor a monolithic React component file into a standardized module structure with components/, hooks/, utils/, types/, and config/ subdirectories.
$ npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JNTMTMTM/eIsland eisland-dev-refactor-module-split --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/JNTMTMTM/eIsland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/eisland-dev-refactor-module-split .claude/skills/eisland-dev-refactor-module-split && rm -rf skills-srcUse ~/.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/
Install the "eisland-dev-refactor-module-split" agent skill from https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-split into .claude/skills/eisland-dev-refactor-module-split/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "eisland-dev-refactor-module-split", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-splitType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JNTMTMTM/eIsland eisland-dev-refactor-module-split --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JNTMTMTM/eIsland.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/eisland-dev-refactor-module-split .agents/skills/eisland-dev-refactor-module-split && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "eisland-dev-refactor-module-split" agent skill from https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-split into .agents/skills/eisland-dev-refactor-module-split/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "eisland-dev-refactor-module-split", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JNTMTMTM/eIsland eisland-dev-refactor-module-split --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JNTMTMTM/eIsland.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/eisland-dev-refactor-module-split .cursor/skills/eisland-dev-refactor-module-split && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "eisland-dev-refactor-module-split" agent skill from https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-split into .cursor/skills/eisland-dev-refactor-module-split/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "eisland-dev-refactor-module-split", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/JNTMTMTM/eIsland.git --path .claude/skills/eisland-dev-refactor-module-split--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JNTMTMTM/eIsland eisland-dev-refactor-module-split --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JNTMTMTM/eIsland.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/eisland-dev-refactor-module-split .gemini/skills/eisland-dev-refactor-module-split && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "eisland-dev-refactor-module-split" agent skill from https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-split into .gemini/skills/eisland-dev-refactor-module-split/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "eisland-dev-refactor-module-split", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install JNTMTMTM/eIsland eisland-dev-refactor-module-splitInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JNTMTMTM/eIsland.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/eisland-dev-refactor-module-split .github/skills/eisland-dev-refactor-module-split && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "eisland-dev-refactor-module-split" agent skill from https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-split into .github/skills/eisland-dev-refactor-module-split/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "eisland-dev-refactor-module-split", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JNTMTMTM/eIsland eisland-dev-refactor-module-split --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JNTMTMTM/eIsland.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/eisland-dev-refactor-module-split .opencode/skills/eisland-dev-refactor-module-split && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "eisland-dev-refactor-module-split" agent skill from https://github.com/JNTMTMTM/eIsland/tree/main/.claude/skills/eisland-dev-refactor-module-split into .opencode/skills/eisland-dev-refactor-module-split/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "eisland-dev-refactor-module-split", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
eisland-dev-refactor-module-splitRefactor a monolithic React component file into a standardized module structure with components/, hooks/, utils/, types/, and config/ subdirectories.
Eisland Dev Refactor Module Split is an agent skill from JNTMTMTM/eIsland. Refactor a monolithic React component file into a standardized module structure with components/, hooks/, utils/, types/, and config/ subdirectories. Use this skill whenever the user asks to "split", "refactor", "拆分", "拆解", or "restructure" a component file into subdirectories, or when they mention organizing code into modules.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/evals.json`, `references/COMMENT_STANDARDS.md` and `references/FRONTEND_STANDARDS.md`).
It sits in Frontend & Design, covering Refactoring and React components. It works with React. The repository describes itself as: eIsland - A sleek, Apple Dynamic Island inspired floating widget for Windows, built with Electron. The licence is GPL-3.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 411adb9. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Eisland Dev Refactor Module Split loads about 3.2k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 91 tokens; SKILL.md has 1,161 words of instructions outside code blocks.
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.
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.
The full file from JNTMTMTM/eIsland at commit 411adb9, republished under its GPL-3.0 licence (© JNTMTMTM). 1,161 words, ~3,170 tokens.
.claude/skills/eisland-dev-refactor-module-split/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Split a monolithic React component file into a clean module structure with five subdirectories: components/, hooks/, utils/, types/, and config/, plus an index.ts entry point.
.tsx file has grown large and contains multiple concerns (utility functions, hooks, sub-components, constants, type definitions)Before extracting any code, verify the target module directory has the required structure. If any of the following are missing, create them first:
<module>/
├── index.ts (if missing, create with placeholder export)
├── types/ (if missing, create directory)
├── config/ (if missing, create directory)
├── utils/ (if missing, create directory)
├── hooks/ (if missing, create directory)
└── components/ (if missing, create directory).gitkeep placeholderindex.ts should initially export the original component (update after refactoring)Read the target file in full. Categorize every piece of code into one of five buckets:
| Bucket | Criteria | Target directory |
|---|---|---|
| Types | type, interface, component prop interfaces, hook return types | types/ |
| Constants | const values, config keys, store keys, i18n keys/defaults | config/ |
| Pure functions | No React hooks, no side effects, deterministic input→output | utils/ |
| React hooks | Uses useState, useEffect, useMemo, useCallback, or custom hooks | hooks/ |
| Sub-components | Returns JSX, used within the main component | components/ |
Also check if the file's sibling directories already exist (e.g., components/ or hooks/ may already have files from prior refactoring). Don't duplicate existing extractions.
For each extracted piece, create a new file in the appropriate directory. Every file must include:
@file, @description, @author tags@param, @returns for all exported functionsNaming conventions:
types/ — camelCase with module prefix (e.g., todoTypes.ts, albumTypes.ts, localFileSearchTypes.ts)config/ — camelCase with module prefix (e.g., todoConfig.ts, albumConfig.ts, localFileSearchConfig.ts)utils/ — camelCase with module prefix (e.g., todoUtils.ts, albumUtils.ts, localFileSearchUtils.ts)hooks/ — camelCase with use prefix (e.g., useTodos.ts, useAlbumItems.ts, useLocalFileSearch.ts)components/ — PascalCase component name (e.g., TodoTab.tsx, TodoHeader.tsx, AlbumGridItem.tsx)Create types/<module>Types.ts before other files. This file must contain:
Use<Module>Return interface describing the hook's full return shape<Component>Props for every sub-componentAll component prop interfaces and hook return types MUST be defined in types/, not inline in component or hook files.
Example pattern:
// types/todoTypes.ts
/** 紧急程度 */
export type Priority = 'P0' | 'P1' | 'P2';
/** 单条待办 */
export interface TodoItem { ... }
/** useTodos hook 返回值类型 */
export interface UseTodosReturn { ... }
/** TodoHeader 组件入参 */
export interface TodoHeaderProps { ... }
/** TodoInputBar 组件入参 */
export interface TodoInputBarProps { ... }Replace the extracted code in the original file with imports from the new modules. The source file should become a thin composition layer that:
../hooks/use<Module>./<ComponentName>useEffect, no utility functionsCreate <module>/index.ts that re-exports the main component:
export { TodoTab } from './components/TodoTab';Run these checks in order — all must pass before committing:
# 1. TypeScript compilation
npx tsc --noEmit --pretty
# 2. Comment standards compliance (file headers, JSDoc)
npm run comment:check
# 3. i18n completeness (all t() keys exist in both zh-CN and en-US)
npm run i18n:check
# 4. Unit tests
npm run testIf any check fails, fix the issue before proceeding. Common failures:
comment:check — missing license header, missing @file/@description/@author, missing JSDoc on exported functionsi18n:check — a t('key') call references a key not present in both locale filestest — a refactored import path broke a test, or an extracted function changed behaviorUse a conventional commit message:
refactor(<module-name>): extract types, utils, hooks, components, config from <OriginalFile>
- types/<name>Types.ts: type definitions + component prop interfaces
- utils/<name>Utils.ts: <what it does>
- hooks/use<Name>.ts: <what it does>
- components/<Name>.tsx: <what it does>
- config/<name>Config.ts: <what it contains>
- index.ts: module entry point
- <OriginalFile>.ts: simplified from <N> to <M> linesfeature/
├── index.ts (module entry point, re-exports main component)
├── types/
│ └── featureTypes.ts (types, hook return type, component prop interfaces)
├── config/
│ └── featureConfig.ts (constants, store keys, defaults)
├── utils/
│ └── featureUtils.ts (pure utility functions)
├── hooks/
│ └── useFeature.ts (all state management logic)
└── components/
├── FeatureTab.tsx (thin composition layer: hook + sub-components)
├── FeatureHeader.tsx (sub-component)
└── FeatureList.tsx (sub-component)todo/
├── index.ts
├── types/todoTypes.ts
├── config/todoConfig.ts
├── utils/todoUtils.ts
├── hooks/useTodos.ts
└── components/
├── TodoTab.tsx
├── TodoHeader.tsx
├── TodoInputBar.tsx
├── TodoList.tsx
├── TodoItem.tsx
└── TodoSubItem.tsx
album/
├── index.ts
├── types/albumTypes.ts
├── config/albumConfig.ts
├── utils/albumUtils.ts
├── hooks/
│ ├── useAlbumItems.ts
│ ├── useAlbumViewer.ts
│ ├── useAlbumViewerActions.ts
│ ├── useAlbumSelection.ts
│ ├── useAlbumGridConfig.ts
│ └── useAlbumDrag.ts
└── components/
├── AlbumTab.tsx
├── AlbumHeader.tsx
├── AlbumOverview.tsx
├── AlbumViewer.tsx
├── AlbumGridItem.tsx
├── AlbumMetaPanel.tsx
└── AlbumSelectionBar.tsx
localFileSearch/
├── index.ts
├── types/localFileSearchTypes.ts
├── config/localFileSearchConfig.ts
├── utils/localFileSearchUtils.ts
├── hooks/useLocalFileSearch.ts
└── components/
├── LocalFileSearchTab.tsx
├── LocalFileSearchHeader.tsx
├── LocalFileSearchRootRow.tsx
├── LocalFileSearchQueryRow.tsx
├── LocalFileSearchConfigPanel.tsx
└── LocalFileSearchResults.tsxEvery extracted file MUST satisfy ALL of the following before the refactoring is considered complete.
| # | Criterion | Check |
|---|---|---|
| C1 | Every .ts/.tsx file starts with the GPL-3.0 license block (project name, URL, copyright, author, GPL notice) | npm run comment:check |
| C2 | Every .ts/.tsx file has a file-level JSDoc with @file, @description, @author | npm run comment:check |
| C3 | Every exported function/class/method has JSDoc with @param and @returns | npm run comment:check |
| C4 | @author is set to 鸡哥 (project default) | Visual check |
| C5 | Comments are in Chinese, explain "why" not "what" | Visual check |
| C6 | No comments on simple getters/setters, self-explanatory assignments, or template code | Visual check |
| # | Criterion | Check |
|---|---|---|
| F1 | Use const for constants, let for reassignable vars, never var | npm run test (lint) |
| F2 | One variable per declaration | Visual check |
| F3 | No any type — use explicit types or unknown | npx tsc --noEmit |
| F4 | Interface over type for object shapes; type only for unions/tuples | Visual check |
| F5 | ES6 modules (import/export), no require() | Visual check |
| F6 | Import order: builtins → external → internal (absolute) → parent relative → sibling relative | Visual check |
| F7 | No file extension in import paths | Visual check |
| F8 | Single quotes for JS/TS strings, double quotes for JSX attribute values | Visual check |
| F9 | 2-space indentation | Visual check |
| F10 | Semicolons at end of statements | Visual check |
| F11 | Unix line endings (\n) | Visual check |
| F12 | Variables/functions: camelCase; Classes/interfaces/types/enums: PascalCase; Constants: UPPER_SNAKE_CASE | Visual check |
| F13 | React components defined as named function declarations, not anonymous arrow functions | Visual check |
| F14 | No unused React import (JSX transform handles it) | npx tsc --noEmit |
| F15 | Hooks called only at top level, never in conditions/loops | Visual check |
| # | Criterion | Check |
|---|---|---|
| I1 | Every t('key') in extracted files has a matching entry in both zh-CN.json and en-US.json | npm run i18n:check |
| I2 | No hardcoded Chinese or English strings in UI code — all wrapped in t() | npm run i18n:check |
| # | Criterion | Check |
|---|---|---|
| B1 | TypeScript compiles with zero errors | npx tsc --noEmit |
| B2 | All existing tests pass | npm run test |
| B3 | No logic changes — the refactored code produces identical behavior | npm run test |
| B4 | Every useEffect extracted to a hook preserves the same dependency array | Visual check against original |
types/, config/, utils/, hooks/, components/). If a directory has no files, create a .gitkeep placeholder.types/ must be created first. All component prop interfaces and hook return types go in types/, not inline in component or hook files.index.ts is required. Every module must have an index.ts that re-exports the main component.useEffect, useState, useMemo, useCallback block in the original file must end up in a hook file. The main component should have zero useEffect calls after refactoring.utils/. Don't leave pure functions in the component.type and interface definitions used across multiple files go in types/.CSSProperties not React.CSSProperties. When importing CSS type utilities, import CSSProperties directly from 'react' — do not use React.CSSProperties without importing React.hooks/ that needs a store type uses ../../../../store/types, not an alias.t() calls remain in the JSX; only the default values and key constants move to config/.© JNTMTMTM, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .claude/skills/eisland-dev-refactor-module-split of JNTMTMTM/eIsland.
Open the folder on GitHubat commit 411adb9
Eisland Dev Refactor Module Split 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Eisland Dev Refactor Module Split this skillJNTMTMTM/eIsland | 320 | — | ~3.2k | Automated safety check: Pass | GPL-3.0 | |
| React Composition Patternsvercel-labs/openreview | 1.7k | 58 repos | ~721 | Automated safety check: Pass | MIT | |
| Vercel React Best Practicessanity-io/sanity | 6.4k | 130 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Dify Component Writing Guidelanggenius/dify | 158k | — | ~626 | Automated safety check: Pass | Custom licence | |
| React Best Practicesmastra-ai/mastra | 29k | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| No Use Effectfastrepl/anarlog | 9.4k | — | ~825 | Automated safety check: Pass | MIT |
vercel-labs/openreview
Rules for structuring React components with composition instead of boolean props, covering compound components, lifted state, variants and React 19 changes.
sanity-io/sanity
React and Next.js performance optimization guidelines from Vercel Engineering.
langgenius/dify
Use when implementing or refactoring React/TypeScript components and the task requires decisions about component ownership, feature boundaries, state, data…
mastra-ai/mastra
React performance optimization guidelines from Mastra Engineering.
fastrepl/anarlog
Avoid direct React useEffect usage when writing or reviewing React components and hooks.
ryokun6/ryos
React performance optimization guidelines from Vercel Engineering (vercel-labs/agent-skills).
JNTMTMTM/eIsland
Generate a release announcement markdown for eIsland. An agent skill from JNTMTMTM/eIsland.
JNTMTMTM/eIsland
Refactor a monolithic React component file into a standardized module structure with components/, hooks/, utils/, and config/ subdirectories.
JNTMTMTM/eIsland
Add a new empty subpage (tab) to an existing eIsland settings section with page navigation support.
JNTMTMTM/eIsland
Add a new SVG icon to the project's icon enum system with matching test assertions.
JNTMTMTM/eIsland
Analyze the current git status, review all staged and unstaged changes, and create a commit with a proper English commit message following conventional commit format.
JNTMTMTM/eIsland
Update or create documentation in the eIsland VuePress docs site (web/eisland-web-docs).
Works with
Categories
Refactor a monolithic React component file into a standardized module structure with components/, hooks/, utils/, types/, and config/ subdirectories. Eisland Dev Refactor Module Split is an agent skill from JNTMTMTM/eIsland. Refactor a monolithic React component file into a standardized module structure with components/, hooks/, utils/, types/, and config/ subdirectories.
Eisland Dev Refactor Module Split fits situations like: the user asks to split; restructure a component file into subdirectories; they mention organizing code into modules.
Run `npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a claude-code`. Or copy the skill folder (.claude/skills/eisland-dev-refactor-module-split in JNTMTMTM/eIsland) into .claude/skills/eisland-dev-refactor-module-split in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a codex`. Or copy the skill folder (.claude/skills/eisland-dev-refactor-module-split in JNTMTMTM/eIsland) into .agents/skills/eisland-dev-refactor-module-split in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JNTMTMTM/eIsland --skill eisland-dev-refactor-module-split -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/eisland-dev-refactor-module-split, .gemini/skills/eisland-dev-refactor-module-split, .github/skills/eisland-dev-refactor-module-split and .opencode/skills/eisland-dev-refactor-module-split in your project.
Going by SKILL.md and its folder, Eisland Dev Refactor Module Split needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Eisland Dev Refactor Module Split is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 11k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Eisland Dev Refactor Module Split: React Composition Patterns (vercel-labs/openreview, 1.7k stars), Vercel React Best Practices (sanity-io/sanity, 6.4k stars), Dify Component Writing Guide (langgenius/dify, 158k stars) and React Best Practices (mastra-ai/mastra, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JNTMTMTM (a GitHub user) maintains it in JNTMTMTM/eIsland, which has 320 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 7, 2026.
Source: JNTMTMTM/eIsland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.