Raycast OpenClaw Skill - ClawHub
Do you want your AI agent to automate Raycast workflows? This free skill from ClawHub helps with cli utilities tasks without building custom tools from scratch.
What this skill does
Build and maintain Raycast extensions using the Raycast API. Triggers on @raycast/api, List, Grid, Detail, Form, AI.ask, LocalStorage, Cache, showToast, and BrowserExtension. Use this repo's references/api/*.md files as the primary source of truth for component specs and API usage.
Install
npx clawhub@latest install raycastFull SKILL.md
Open original| name | description |
|---|---|
| raycast-extensions | Build and maintain Raycast extensions using the Raycast API. Triggers on @raycast/api, List, Grid, Detail, Form, AI.ask, LocalStorage, Cache, showToast, and BrowserExtension. Use this repo's references/api/*.md files as the primary source of truth for component specs and API usage. |
Raycast Extensions Skill
Build powerful extensions with React, TypeScript, and the Raycast API.
Quick Start (Agent Workflow)
Follow these steps when tasked with implementing or fixing Raycast features:
- Identify the core component: Determine if the UI needs a
List,Grid,Detail, orForm. - Consult Reference: Open and read the corresponding file in
references/api/(e.g.,references/api/list.md). - Use Defaults:
- Feedback: Use
showToastfor Loading/Success/Failure. UseshowHUDonly for quick background completions. - Data: Use
Cachefor frequent/transient data,LocalStoragefor persistent user data. - Access: Always check
environment.canAccess(AI)orenvironment.canAccess(BrowserExtension)before use.
- Feedback: Use
- Implementation: Provide a concise implementation using
@raycast/apicomponents. - Citing: Link back to the specific
references/api/*.mdfile you used.
Cookbook Patterns
1. List & Grid (Searchable UI)
Use List for text-heavy data and Grid for image-heavy data.
<List isLoading={isLoading} searchBarPlaceholder="Search items..." throttle>
<List.Item
title="Item Title"
subtitle="Subtitle"
accessories={[{ text: "Tag" }]}
actions={
<ActionPanel>
<Action.Push title="View Details" target={<Detail markdown="# Details" />} />
<Action.CopyToClipboard title="Copy" content="value" />
</ActionPanel>
}
/>
</List>
2. Detail (Rich Markdown)
Use for displaying long-form content or item details.
<Detail
isLoading={isLoading}
markdown="# Heading\nContent here."
metadata={
<Detail.Metadata>
<Detail.Metadata.Label title="Status" text="Active" icon={Icon.Checkmark} />
</Detail.Metadata>
}
/>
3. Form (User Input)
Always include a SubmitForm action.
<Form
actions={
<ActionPanel>
<Action.SubmitForm onSubmit={(values) => console.log(values)} />
</ActionPanel>
}
>
<Form.TextField id="title" title="Title" placeholder="Enter title" />
<Form.TextArea id="description" title="Description" />
</Form>
4. Feedback & Interactivity
Prefer showToast for most feedback.
// Success/Failure
await showToast({ style: Toast.Style.Success, title: "Success!" });
// HUD (Overlay)
await showHUD("Done!");
5. Data Persistence
Use Cache for performance, LocalStorage for persistence.
// Cache (Sync/Transient)
const cache = new Cache();
cache.set("key", "value");
// LocalStorage (Async/Persistent)
await LocalStorage.setItem("key", "value");
6. AI & Browser Extension (Restricted APIs)
Always wrap in environment.canAccess checks.
if (environment.canAccess(AI)) {
const result = await AI.ask("Prompt");
}
if (environment.canAccess(BrowserExtension)) {
const tabs = await BrowserExtension.getTabs();
}
Additional Resources
API Reference Tree
- UI Components
- Interactivity
- Utilities & Services
- Data & Configuration
- Advanced
Examples
For end-to-end examples combining multiple components and APIs, see examples.md.