/raycast
Raycast extension development. Use when working with @raycast/api imports, Raycast commands/tools, or building extensions.
Claude Code
$ npx -y skills add bendrucker/claude --skill raycast --agent claude-code
Codex
$ npx skills add bendrucker/claude --skill raycast -a codex -y
Cursor
$ npx skills add bendrucker/claude --skill raycast -a cursor -y
Gemini CLI
$ npx skills add bendrucker/claude --skill raycast -a gemini-cli -y
GitHub Copilot
$ npx skills add bendrucker/claude --skill raycast -a github-copilot -y
OpenCode
$ npx skills add bendrucker/claude --skill raycast -a opencode -y
Windsurf
$ npx skills add bendrucker/claude --skill raycast -a windsurf -y
SKILL.md
raycast.SKILL.mdname: raycast
description: Raycast extension development. Use when working with @raycast/api imports, Raycast commands/tools, or building extensions.
user-invocable: true
disable-model-invocation: true
Raycast
Project Structure
Commands map by name to `src/<name>.tsx`. Tools live in `src/tools/<name>.ts`. Use `.tsx` for UI commands, `.ts` for no-view commands and tools. Icons go in `assets/`. The `package.json` serves as both the npm manifest and the Raycast extension manifest.
See [references/manifest.md](references/manifest.md)
Manifest
The `package.json` is a superset of npm's format with Raycast-specific fields: `commands`, `tools`, `preferences`, `platforms`, `categories`, `icon`, and `author`. Command modes are `view` (renders UI), `no-view` (runs silently), and `menu-bar` (menu bar extra).
See [references/manifest.md](references/manifest.md)
Components
React-based UI with `@raycast/api`. Top-level views: `List`, `Grid`, `Detail`, `Form`. Wrap actions in `ActionPanel` with `Action` items. Always pass `isLoading` to top-level components. Use `List.EmptyView` for empty states.
See [references/components.md](references/components.md)
Hooks
`@raycast/utils` provides data-fetching and state hooks: `useFetch` for URL fetching, `usePromise` and `useCachedPromise` for async functions with stale-while-revalidate caching, `useForm` for form validation, `useLocalStorage` for persistent state, and `useExec` for shell commands. Use `keepPreviousData` to prevent flickering during search.
See [references/hooks.md](references/hooks.md)
AI Tools
Tools export a default async function with a typed `Input` parameter. JSDoc comments on the `Input` type teach the AI to use the tool. Export a `confirmation` function for destructive operations. Configure `ai.instructions` in `package.json` for extension-level guidance.
See [references/ai-tools.md](references/ai-tools.md)
Development
Bootstrap with `npx create-raycast-extension`. Install dependencies with `npm install`. Run `npm run dev` for development with hot reloading. Run `npm run build` to type-check and bundle. Run `npm run lint` for code style. Use npm (not yarn or pnpm) and commit `package-lock.json`.
Store
Extensions require Apple Style Title Case for names. Icons must be 512x512 PNG. Screenshots should be 2000x1250 PNG. Include a `CHANGELOG.md`. Add a `README.md` if setup is required. Run `npm run publish` to submit.
See [references/store.md](references/store.md)
Read more
name: raycast description: Raycast extension development. Use when working with @raycast/api imports, Raycast commands/tools, or building extensions. user-invocable: true disable-model-invocation: true
Raycast
Project Structure
Commands map by name to `src/<name>.tsx`. Tools live in `src/tools/<name>.ts`. Use `.tsx` for UI commands, `.ts` for no-view commands and tools. Icons go in `assets/`. The `package.json` serves as both the npm manifest and the Raycast extension manifest.
See [references/manifest.md](references/manifest.md)
Manifest
The `package.json` is a superset of npm's format with Raycast-specific fields: `commands`, `tools`, `preferences`, `platforms`, `categories`, `icon`, and `author`. Command modes are `view` (renders UI), `no-view` (runs silently), and `menu-bar` (menu bar extra).
See [references/manifest.md](references/manifest.md)
Components
React-based UI with `@raycast/api`. Top-level views: `List`, `Grid`, `Detail`, `Form`. Wrap actions in `ActionPanel` with `Action` items. Always pass `isLoading` to top-level components. Use `List.EmptyView` for empty states.
See [references/components.md](references/components.md)
Hooks
`@raycast/utils` provides data-fetching and state hooks: `useFetch` for URL fetching, `usePromise` and `useCachedPromise` for async functions with stale-while-revalidate caching, `useForm` for form validation, `useLocalStorage` for persistent state, and `useExec` for shell commands. Use `keepPreviousData` to prevent flickering during search.
See [references/hooks.md](references/hooks.md)
AI Tools
Tools export a default async function with a typed `Input` parameter. JSDoc comments on the `Input` type teach the AI to use the tool. Export a `confirmation` function for destructive operations. Configure `ai.instructions` in `package.json` for extension-level guidance.
See [references/ai-tools.md](references/ai-tools.md)
Development
Bootstrap with `npx create-raycast-extension`. Install dependencies with `npm install`. Run `npm run dev` for development with hot reloading. Run `npm run build` to type-check and bundle. Run `npm run lint` for code style. Use npm (not yarn or pnpm) and commit `package-lock.json`.
Store
Extensions require Apple Style Title Case for names. Icons must be 512x512 PNG. Screenshots should be 2000x1250 PNG. Include a `CHANGELOG.md`. Add a `README.md` if setup is required. Run `npm run publish` to submit.
See [references/store.md](references/store.md)
Other skills on claude.
cli
Type-safe CLI argument parsing with commander and @commander-js/extra-typings, the standard parser for this repo's Bun scripts.…
prose-lab
Turn the user's labels on repo prose, or their notes from reviewing a document in Plannotator, into calibrated Vale rules.
activity
Report real device usage from ActivityWatch. Covers per-app time, window titles, and active vs idle spans. Use when asked "what…
agent-team
Orchestrating Claude Code agent teams. Use when creating teams, spawning teammates, assigning tasks, configuring teammate modes,…
handoff
Hand the current conversation off to a fresh background agent that picks up the work immediately, so you can step away and track…
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about raycast.
- Which coding agents can use raycast?
- raycast installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

