复制安装命令
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
Opinionated skills shared by @leonardocouy for improving daily work efficiency with Claude Code.
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
来源文件:README.md
Opinionated skills shared by @leonardocouy for improving daily work efficiency with Claude Code. Skills are packaged instructions and scripts that extend agent capabilities across development, documentation, planning, and professional workflows.
Skills follow the Agent Skills format.
🚀 Installation • 📚 Available Skills • 🤖 Agents & Commands • 📖 Skill Structure • 🤝 Contributing • 📄 License • 🔗 Links
npx skills add softaworks/agent-toolkit
This method works with multiple AI coding agents (Claude Code, Codex, Cursor, AdaL, etc.)
Run the following commands in Claude Code:
/plugin marketplace add softaworks/agent-toolkit
/plugin
Option 1: Via Browse UI
Option 2: Direct Install
# Install specific skill
/plugin install codex@agent-toolkit
/plugin install humanizer@agent-toolkit
# Install specific agent
/plugin install agent-codebase-pattern-finder@agent-toolkit
# Install specific command
/plugin install command-codex-plan@agent-toolkit
Option 3: Ask the Agent
Simply tell Claude Code:
Please install Skills from github.com/softaworks/agent-toolkit
Each skill, agent, and command is an individual plugin that can be installed separately:
agent-<name>@agent-toolkit)command-<name>@agent-toolkit)To update plugins to the latest version:
/plugin in Claude CodeYou can also Enable auto-update to get the latest versions automatically.
For Claude Code (Manual) — Skills only
cp -r skills/<skill-name> ~/.claude/skills/
For claude.ai — Skills only
Add skills to project knowledge or paste SKILL.md contents into the conversation.
| Category | Skill | Description |
|---|---|---|
| 🤖 AI Tools | codex | Advanced code analysis with GPT-5.2 |
| 🤖 AI Tools | gemini | Large-scale review (200k+ context) |
| 🤖 AI Tools | perplexity | Web search & research |
| 🔮 Meta | agent-md-refactor | Refactor bloated agent instruction files |
| 🔮 Meta | command-creator | Create Claude Code slash commands |
| 🔮 Meta | plugin-forge | Build Claude Code plugins & manifests |
| 🔮 Meta | skill-judge | Evaluate skill design quality |
| 📝 Documentation | backend-to-frontend-handoff-docs | API handoff docs for frontend |
| 📝 Documentation | c4-architecture | C4 architecture diagrams with Mermaid |
| 📝 Documentation | crafting-effective-readmes | Write effective README files |
| 📝 Documentation | draw-io | Create & edit draw.io diagrams |
| 📝 Documentation | excalidraw | Work with Excalidraw diagrams |
| 📝 Documentation | frontend-to-backend-requirements | Document API requirements |
| 📝 Documentation | marp-slide | Professional presentation slides |
| 📝 Documentation | mermaid-diagrams | Software diagrams with Mermaid |
| 📝 Documentation | writing-clearly-and-concisely | Clear, professional writing |
| 🎨 Design & Frontend | design-system-starter | Create design systems |
| 🎨 Design & Frontend | mui | Material-UI v7 patterns |
| 🎨 Design & Frontend | openapi-to-typescript | Convert OpenAPI to TypeScript |
| 🎨 Design & Frontend | react-dev | Type-safe React 18-19 with TypeScript |
| 🎨 Design & Frontend | react-useeffect | React useEffect best practices |
| 🛠️ Development | database-schema-designer | Design robust database schemas |
| 🛠️ Development | dependency-updater | Smart dependency management |
| 🛠️ Development | naming-analyzer | Suggest better variable/function names |
| 🛠️ Development | lesson-learned | Extract SE lessons from recent code changes |
| 🛠️ Development | reducing-entropy | Minimize codebase size |
| 🛠️ Development | session-handoff | Seamless AI session transfers |
| 🎯 Planning | game-changing-features | Find 10x product opportunities |
| 🎯 Planning | gepetto | Detailed implementation planning |
| 🎯 Planning | requirements-clarity | Clarify requirements before coding |
| 🎯 Planning | ship-learn-next | Turn learning into actionable reps |
| 👔 Professional | daily-meeting-update | Interactive daily standup generator |
| 👔 Professional | difficult-workplace-conversations | Navigate difficult conversations |
| 👔 Professional | feedback-mastery | Deliver constructive feedback |
| 👔 Professional | professional-communication | Technical communication guide |
| 🧪 Testing | qa-test-planner | Comprehensive QA test planning |
| 📦 Git | commit-work | High-quality git commits |
| 🔧 Utilities | datadog-cli | Debug with Datadog logs & metrics |
| 🔧 Utilities | domain-name-brainstormer | Generate & check domain names |
| 🔧 Utilities | humanizer | Remove AI writing patterns |
| 🔧 Utilities | meme-factory | Generate memes with API |
| 🔧 Utilities | jira | Natural language Jira interaction |
| 🔧 Utilities | web-to-markdown | Convert webpages to Markdown |
Requires Claude Code CLI — These agents and commands are exclusive to Claude Code users.
For full access, add the marketplace and install plugins:
/plugin marketplace add softaworks/agent-toolkit /plugin install codex@agent-toolkit
Specialized sub-agents that Claude Code can delegate tasks to:
| Agent | Description |
|---|---|
| ascii-ui-mockup-generator | Visualize UI concepts through ASCII mockups |
| codebase-pattern-finder | Find similar implementations and patterns |
| communication-excellence-coach | Email refinement, tone calibration, roleplay |
| general-purpose | Default agent for complex multi-step tasks |
| mermaid-diagram-specialist | Create flowcharts, sequence diagrams, ERDs |
| ui-ux-designer | Research-backed UI/UX design feedback |
Reusable workflows invoked with /command-name:
| Command | Description |
|---|---|
/codex-plan | Create implementation plans using Codex 5.2 |
/compose-email | Draft professional emails |
/explain-changes-mental-model | Build mental model of code changes |
/explain-pr-changes | Generate PR summaries |
/sync-branch | Sync feature branch with main |
/sync-skills-readme | Update README skills table |
/viral-tweet | Optimize tweet ideas for X engagement |
Each skill contains:
SKILL.md - Detailed instructions for the agent (with YAML frontmatter)README.md - User-friendly documentation with examplesscripts/ - Helper scripts for automation (optional)references/ - Supporting documentation (optional)Contributions are welcome! When adding new skills:
SKILL.md (for agents) and README.md (for users)SKILL.md with name: and description: fieldsMIT
name: react-dev
version: 1.0.0
description: This skill should be used when building React components with TypeScript, typing hooks, handling events, or when React TypeScript, React 19, Server Components are mentioned. Covers type-safe patterns for React 18-19 including generic components, proper event typing, and routing integration (TanStack Router, React Router).Type-safe React = compile-time guarantees = confident refactoring.
<when_to_use>
NOT for: non-React TypeScript, vanilla JS React
</when_to_use>
<react_19_changes>
React 19 breaking changes require migration. Key patterns:
ref as prop - forwardRef deprecated:
// React 19 - ref as regular prop
type ButtonProps = {
ref?: React.Ref<HTMLButtonElement>;
} & React.ComponentPropsWithoutRef<'button'>;
function Button({ ref, children, ...props }: ButtonProps) {
return <button ref={ref} {...props}>{children}</button>;
}
useActionState - replaces useFormState:
import { useActionState } from 'react';
type FormState = { errors?: string[]; success?: boolean };
function Form() {
const [state, formAction, isPending] = useActionState(submitAction, {});
return <form action={formAction}>...</form>;
}
use() - unwraps promises/context:
function UserProfile({ userPromise }: { userPromise: Promise<User> }) {
const user = use(userPromise); // Suspends until resolved
return <div>{user.name}</div>;
}
See react-19-patterns.md for useOptimistic, useTransition, migration checklist.
</react_19_changes>
<component_patterns>
Props - extend native elements:
type ButtonProps = {
variant: 'primary' | 'secondary';
} & React.ComponentPropsWithoutRef<'button'>;
function Button({ variant, children, ...props }: ButtonProps) {
return <button className={variant} {...props}>{children}</button>;
}
Children typing:
type Props = {
children: React.ReactNode; // Anything renderable
icon: React.ReactElement; // Single element
render: (data: T) => React.ReactNode; // Render prop
};
Discriminated unions for variant props:
type ButtonProps =
| { variant: 'link'; href: string }
| { variant: 'button'; onClick: () => void };
function Button(props: ButtonProps) {
if (props.variant === 'link') {
return <a href={props.href}>Link</a>;
}
return <button onClick={props.onClick}>Button</button>;
}
</component_patterns>
<event_handlers>
Use specific event types for accurate target typing:
// Mouse
function handleClick(e: React.MouseEvent<HTMLButtonElement>) {
e.currentTarget.disabled = true;
}
// Form
function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
const formData = new FormData(e.currentTarget);
}
// Input
function handleChange(e: React.ChangeEvent<HTMLInputElement>) {
console.log(e.target.value);
}
// Keyboard
function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {
if (e.key === 'Enter') e.currentTarget.blur();
}
See event-handlers.md for focus, drag, clipboard, touch, wheel events.
</event_handlers>
<hooks_typing>
useState - explicit for unions/null:
const [user, setUser] = useState<User | null>(null);
const [status, setStatus] = useState<'idle' | 'loading'>('idle');
useRef - null for DOM, value for mutable:
const inputRef = useRef<HTMLInputElement>(null); // DOM - use ?.
const countRef = useRef<number>(0); // Mutable - direct access
useReducer - discriminated unions for actions:
type Action =
| { type: 'increment' }
| { type: 'set'; payload: number };
function reducer(state: State, action: Action): State {
switch (action.type) {
case 'set': return { ...state, count: action.payload };
default: return state;
}
}
Custom hooks - tuple returns with as const:
function useToggle(initial = false) {
const [value, setValue] = useState(initial);
const toggle = () => setValue(v => !v);
return [value, toggle] as const;
}
useContext - null guard pattern:
const UserContext = createContext<User | null>(null);
function useUser() {
const user = useContext(UserContext);
if (!user) throw new Error('useUser outside UserProvider');
return user;
}
See hooks.md for useCallback, useMemo, useImperativeHandle, useSyncExternalStore.
</hooks_typing>
<generic_components>
Generic components infer types from props - no manual annotations at call site.
Pattern - keyof T for column keys, render props for custom rendering:
type Column<T> = {
key: keyof T;
header: string;
render?: (value: T[keyof T], item: T) => React.ReactNode;
};
type TableProps<T> = {
data: T[];
columns: Column<T>[];
keyExtractor: (item: T) => string | number;
};
function Table<T>({ data, columns, keyExtractor }: TableProps<T>) {
return (
<table>
<thead>
<tr>{columns.map(col => <th key={String(col.key)}>{col.header}</th>)}</tr>
</thead>
<tbody>
{data.map(item => (
<tr key={keyExtractor(item)}>
{columns.map(col => (
<td key={String(col.key)}>
{col.render ? col.render(item[col.key], item) : String(item[col.key])}
</td>
))}
</tr>
))}
</tbody>
</table>
);
}
Constrained generics for required properties:
type HasId = { id: string | number };
function List<T extends HasId>({ items }: { items: T[] }) {
return <ul>{items.map(item => <li key={item.id}>...</li>)}</ul>;
}
See generic-components.md for Select, List, Modal, FormField patterns.
</generic_components>
<server_components>
React 19 Server Components run on server, can be async.
Async data fetching:
export default async function UserPage({ params }: { params: { id: string } }) {
const user = await fetchUser(params.id);
return <div>{user.name}</div>;
}
Server Actions - 'use server' for mutations:
'use server';
export async function updateUser(userId: string, formData: FormData) {
await db.user.update({ where: { id: userId }, data: { ... } });
revalidatePath(`/users/${userId}`);
}
Client + Server Action:
'use client';
import { useActionState } from 'react';
import { updateUser } from '@/actions/user';
function UserForm({ userId }: { userId: string }) {
const [state, formAction, isPending] = useActionState(
(prev, formData) => updateUser(userId, formData), {}
);
return <form action={formAction}>...</form>;
}
use() for promise handoff:
// Server: pass promise without await
async function Page() {
const userPromise = fetchUser('123');
return <UserProfile userPromise={userPromise} />;
}
// Client: unwrap with use()
'use client';
function UserProfile({ userPromise }: { userPromise: Promise<User> }) {
const user = use(userPromise);
return <div>{user.name}</div>;
}
See server-components.md for parallel fetching, streaming, error boundaries.
</server_components>
Both TanStack Router and React Router v7 provide type-safe routing solutions.
TanStack Router - Compile-time type safety with Zod validation:
import { createRoute } from '@tanstack/react-router';
import { z } from 'zod';
const userRoute = createRoute({
path: '/users/$userId',
component: UserPage,
loader: async ({ params }) => ({ user: await fetchUser(params.userId) }),
validateSearch: z.object({
tab: z.enum(['profile', 'settings']).optional(),
page: z.number().int().positive().default(1),
}),
});
function UserPage() {
const { user } = useLoaderData({ from: userRoute.id });
const { tab, page } = useSearch({ from: userRoute.id });
const { userId } = useParams({ from: userRoute.id });
}
React Router v7 - Automatic type generation with Framework Mode:
import type { Route } from "./+types/user";
export async function loader({ params }: Route.LoaderArgs) {
return { user: await fetchUser(params.userId) };
}
export default function UserPage({ loaderData }: Route.ComponentProps) {
const { user } = loaderData; // Typed from loader
return <h1>{user.name}</h1>;
}
See tanstack-router.md for TanStack patterns and react-router.md for React Router patterns.
ALWAYS:
NEVER:
评论 (0)
暂无评论,成为第一个评论者吧!