Skip to main content

raycast-extensions

Build Raycast extensions — commands, List/Form/Grid views, hooks like useFetch, AI integration, manifest. Use when the user says 'raycast extension', 'add a raycast command', or is working in a project with @raycast/api and a Raycast manifest.

Jump to install

Source facts

Repository
nweii/agent-stuff
Last source activity
May 8, 2026 at 21:59
Detected SKILL.md language
English
Stars
10
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
13 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
raycast-extensions
description
Build Raycast extensions — commands, List/Form/Grid views, hooks like useFetch, AI integration, manifest. Use when the user says 'raycast extension', 'add a raycast command', or is working in a project with @raycast/api and a Raycast manifest.
metadata
{"author":"nweii","version":"1.1.0"}
# Raycast Extension Development Build Raycast extensions using React, TypeScript, and Node.js. ## Quick Start 1. **Create extension**: Run "Create Extension" command in Raycast 2. **Install & develop**: `npm install && npm run dev` 3. **Edit**: Modify `src/index.tsx`, changes hot-reload automatically 4. **Test**: Extension appears at top of Raycast root search ## Choosing a UI Primitive | Need | Component | |------|-----------| | Searchable list of items | `List` | | Image gallery/grid | `Grid` | | User input collection | `Form` | | Rich content display | `Detail` | | Status bar presence | `MenuBarExtra` | ### Decision Tree 1. **Displaying items the user searches/filters?** - Text-focused → `List` - Image-focused → `Grid` 2. **Collecting user input?** → `Form` 3. **Showing detailed content?** → `Detail` (supports markdown + metadata) 4. **Always-visible status bar?** → `MenuBarExtra` ## Core Patterns ### List with ActionPanel ```tsx import { ActionPanel, Action, List } from "@raycast/api"; export default function Command() { return ( <List> <List.Item title="Item" actions={ <ActionPanel> <Action.CopyToClipboard content="Copied!" /> <Action.OpenInBrowser url="https://raycast.com" /> </ActionPanel> } /> </List> ); } ``` ### Data Fetching ```tsx import { List } from "@raycast/api"; import { useFetch } from "@raycast/utils"; export default function Command() { const { data, isLoading } = useFetch<Item[]>("https://api.example.com/items"); return ( <List isLoading={isLoading}> {data?.map((item) => <List.Item key={item.id} title={item.name} />)} </List> ); } ``` ### AI Integration ```tsx import { AI, Clipboard } from "@raycast/api"; export default async function Command() { const answer = await AI.ask("Summarize this text"); await Clipboard.copy(answer); } ``` > [!NOTE] > AI requires Raycast Pro. Check access with `environment.canAccess(AI)`. ## References For detailed documentation, see: - **UI Components**: [references/ui-components.md](references/ui-components.md) - List, Detail, Form, Grid, ActionPanel, MenuBarExtra - **Hooks & Utilities**: [references/hooks-utilities.md](references/hooks-utilities.md) - useFetch, LocalStorage, Clipboard, OAuth, runAppleScript - **AI API**: [references/ai-api.md](references/ai-api.md) - AI.ask, useAI, model selection, streaming - **Package Structure**: [references/package-structure.md](references/package-structure.md) - manifest, commands, preferences ## Examples Runnable examples in `examples/`: | File | Pattern | |------|---------| | `list-with-actions.tsx` | List + ActionPanel basics | | `list-with-detail.tsx` | List with detail panel | | `form-with-validation.tsx` | Form + useForm validation | | `detail-with-metadata.tsx` | Detail markdown + metadata | | `grid-with-images.tsx` | Grid layout | | `data-fetching.tsx` | useFetch patterns | | `ai-integration.tsx` | AI.ask with streaming | | `menubar-extra.tsx` | MenuBarExtra interactions |
View on GitHub