skills/raycast-extensions/SKILL.md
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.
npx skillsauth add nweii/agent-stuff raycast-extensionsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Build Raycast extensions using React, TypeScript, and Node.js.
npm install && npm run devsrc/index.tsx, changes hot-reload automatically| Need | Component |
|------|-----------|
| Searchable list of items | List |
| Image gallery/grid | Grid |
| User input collection | Form |
| Rich content display | Detail |
| Status bar presence | MenuBarExtra |
Displaying items the user searches/filters?
ListGridCollecting user input? → Form
Showing detailed content? → Detail (supports markdown + metadata)
Always-visible status bar? → MenuBarExtra
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>
);
}
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>
);
}
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).
For detailed documentation, see:
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 |
testing
Command-invoked tutoring pass for understanding something deeply: a concept being learned, or work just done in the session. Locates where the learner is, teaches one step per turn, quizzes to verify, and continues until they can explain the material back and apply it. Can produce durable artifacts (a walkthrough of the work, a record of what was learned, a glossary) saved through whatever the environment supports. Best run after substantive work, or when the aim is to learn something.
testing
Search, read, filter, combine, adapt, and save recipes in the Brain vault collection. Use whenever cooking and the collection are relevant — 'what should I make', 'recipes with miso', 'save this one' all imply it.
testing
Socratic teaching pass over the work just done in a session: incremental comprehension stages, a running checklist doc, restate-understanding-first, and AskUserQuestion quizzes. The session doesn't end until the user has demonstrated understanding. Run after Claude has completed substantive work worth deeply understanding.
development
Writing-partner processes that draw out the user's own writing through questioning: guided drafting sessions, fragment mining, shaping raw material into a piece, and phrase tightening. Use for help discovering, developing, and structuring writing (notes, essays, messages, etc).