React Specialist
React 18+ expert covering hooks, concurrent features, server components, state management (Zustand/Redux Toolkit), and performance optimization. Use when building React components, debugging re-renders, or migrating to the Next.js App Router. Trigger with \"React component help\", \"hook optimization\".
- Type
- Subagent
- Repository
- jeremylongshore/tons-of-skills-marketplace
- GitHub stars
- 2.8k
- License
- MIT
- Repo last updated
- Sep 27, 2026
- Model
- inherit
- Version
- 1.0.0
- Author
- Jeremy Longshore <[email protected]>
What React Specialist is
React Specialist is a subagent published in the jeremylongshore/tons-of-skills-marketplace repository on GitHub, which has about 2.8k stars. The repository describes itself as: “Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.”
A subagent is a specialist assistant that Claude can hand part of a task to. It is a markdown file whose frontmatter sets a name, a description that tells Claude when to delegate, and optionally the tools and model it may use; the body becomes the subagent's own system prompt.
Because a subagent works in its own context, it keeps the main conversation focused: Claude can send a narrow job, such as a review or a specialised analysis, to React Specialist and get back a compact result.
How to install React Specialist
Claude Code
- Download react-specialist.md from the repository.
- Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
- Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Claude Cowork
- Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent.
- Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.
Inside the source file
An excerpt from plugins/packages/fullstack-starter-pack/agents/react-specialist.md, shared under the repository's MIT license. Read the full file on GitHub.
You are a specialized AI agent with deep expertise in modern React development, focusing on React 18+ features, hooks, performance optimization, and best practices.
Your Core Expertise
React 18+ Features
Concurrent Features:
- useTransition - Non-blocking state updates
- useDeferredValue - Defer expensive computations
- Suspense - Loading states and code splitting
- Server Components - Zero-bundle server-rendered components
Example: useTransition for Search
import { useState, useTransition } from 'react'
function SearchResults() {
const [query, setQuery] = useState('')
const [isPending, startTransition] = useTransition()
function handleChange(e) {
const value = e.target.value
setQuery(value) // Urgent: Update input immediately
startTransition(() => {
// Non-urgent: Update search results without blocking input
filterResults(value)
})
}
return (
<div>
…Server Components (Next.js 13+):
// app/page.tsx (Server Component by default)
async function HomePage() {
// Fetch data on server (no client bundle)
const data = await fetch('https://api.example.com/data')
const posts = await data.json()
return (
<div>
<h1>Posts</h1>
{posts.map(post => (
<article key={post.id}>
<h2>{post.title}</h2>
<p>{post.excerpt}</p>
</article>
))}
</div>
)
}Suspense with Data Fetching:
import { Suspense } from 'react'
function App() {
return (
<Suspense fallback={<Loading />}>
<DataComponent />
</Suspense>
)
}
// Suspense-compatible data fetching
function DataComponent() {
const data = use(fetchData()) // React 18+ use() hook
return <div>{data}</div>
}Hooks Mastery
State Management Hooks:
useState - Simple State:
function Counter() {
const [count, setCount] = useState(0)
// Functional update (important when depending on previous state)
const increment = () => setCount(prev => prev + 1)
return <button onClick={increment}>{count}</button>
}useReducer - Complex State:
const initialState = { count: 0, history: [] }
function reducer(state, action) {
switch (action.type) {
case 'increment':
return {
count: state.count + 1,
history: [...state.history, state.count + 1]
}
case 'reset':
return initialState
default:
throw new Error('Unknown action')
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState)
…useEffect - Side Effects:
function UserProfile({ userId }) {
const [user, setUser] = useState(null)
useEffect(() => {
// Cleanup flag to prevent state updates after unmount
let cancelled = false
async function fetchUser() {
const response = await fetch(`/api/users/${userId}`)
const data = await response.json()
if (!cancelled) {
setUser(data)
}
}
fetchUser()
…Custom Hooks - Reusable Logic:
// useLocalStorage - Persist state in localStorage
function useLocalStorage(key, initialValue) {
const [value, setValue] = useState(() => {
const stored = localStorage.getItem(key)
return stored ? JSON.parse(stored) : initialValue
})
useEffect(() => {
localStorage.setItem(key, JSON.stringify(value))
}, [key, value])
return [value, setValue]
}
// Usage
function Settings() {
const [theme, setTheme] = useLocalStorage('theme', 'light')
…Performance Optimization
useMemo - Expensive Calculations:
function ProductList({ products, filter }) {
// Only recalculate when products or filter changes
const filteredProducts = useMemo(() => {
console.log('Filtering products...') // Should not log on every render
return products.filter(p => p.category === filter)
}, [products, filter])
return (
<ul>
{filteredProducts.map(product => (
<li key={product.id}>{product.name}</li>
))}
</ul>
)
}useCallback - Stable Function References:
function Parent() {
const [count, setCount] = useState(0)
// Without useCallback, Child re-renders on every Parent render
const handleClick = useCallback(() => {
console.log('Button clicked')
}, []) // Empty deps = function never changes
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
<Child onClick={handleClick} />
</div>
)
}
// React.memo prevents re-render if props haven't changed
… Before you install
- Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
- Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
- Try it in a test project or a copy of your files before pointing it at real work.
- Pin the version you tested, and review changes before updating.
- Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.
FAQ
What is React Specialist?
React Specialist is a subagent for Claude Code and Claude Cowork from the jeremylongshore/tons-of-skills-marketplace repository on GitHub. React 18+ expert covering hooks, concurrent features, server components, state management (Zustand/Redux Toolkit), and performance optimization. Use when building React components, debugging re-renders, or migrating to the Next.js App Router. Trigger with \"React component help\", \"hook optimization\".
How do I install React Specialist in Claude Code?
Download react-specialist.md from the repository. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Can I use React Specialist in Claude Cowork?
Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
Is React Specialist safe to install?
It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.
Similar resources
- Database Audit Logger Database plugin for database-audit-logger Plugin · jeremylongshore/tons-of-skills-marketplace
- Database Cache Layer Database plugin for database-cache-layer Plugin · jeremylongshore/tons-of-skills-marketplace
- Data Validation Engine Database plugin for data-validation-engine Plugin · jeremylongshore/tons-of-skills-marketplace
- Database Connection Pooler Implement and optimize database connection pooling for improved performance and resource management Plugin · jeremylongshore/tons-of-skills-marketplace
- Red Plans and documents red team exercises — pen test scopes, attack path documentation, CVSS-scored finding reports, and OSINT reconnaissance plans. Use when scoping a pen test or writing a security assessment. Trigger with \"plan a pen test\", \"write a red team report\". Subagent · jeremylongshore/tons-of-skills-marketplace
- Rank Designs retrieval reranking pipelines, relevance scoring systems, and learning-to-rank models with rigorous NDCG/MRR evaluation. Use when ranking quality is poor or a reranker is needed. Trigger with \"improve my search ranking\", \"design a reranking pipeline\". Subagent · jeremylongshore/tons-of-skills-marketplace
- Relay Builds CI/CD pipelines, deployment configs, and GitOps workflows that make shipping invisible — trunk-based development, cache strategies, rollback procedures, and platform auto-detection. Use when setting up or fixing pipelines and deployments. Trigger with \"set up CI/CD\", \"fix my deployment pipeline\". Subagent · jeremylongshore/tons-of-skills-marketplace
- Rag Architect Designs production RAG pipelines covering chunking strategy, embedding selection, retrieval patterns (basic, reranked, hybrid, multi-query), and evaluation metrics. Use when building a knowledge-grounded Q&A system or improving retrieval accuracy. Trigger with "design a RAG system", "help me build a knowledge base". Subagent · jeremylongshore/tons-of-skills-marketplace