raycast

v1.0.0

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.

3· 2k·4 current·4 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (Raycast extensions) match the included SKILL.md and reference docs. The repo contains many Raycast API reference files (List, Grid, Detail, Form, AI, LocalStorage, Cache, showToast, BrowserExtension, etc.), which align with the stated purpose. There are no unrelated binaries, credentials, or install steps requested.
Instruction Scope
The runtime instructions are narrowly scoped to: identify UI components, consult the included references, and produce Raycast extension code examples. The provided examples and reference files do show APIs that access clipboard, selected Finder items, the extension supportPath (read/write files), and Raycast's AI API. Those capabilities are expected when authoring Raycast extensions, but they do mean generated code could read local data or send clipboard/selected text to remote AI services (AI.ask). The SKILL.md itself does not instruct indiscriminate collection or exfiltration, but it authorizes use of APIs that can handle potentially sensitive user data.
Install Mechanism
This is instruction-only (no install spec, no code executed at install), so nothing will be written to disk or fetched during installation by the skill itself.
Credentials
The skill requests no environment variables, binaries, or credentials. It documents use of Raycast APIs (including environment.canAccess checks) and does not ask for unrelated secrets. Note: extensions produced using these instructions may request or require API access (e.g., AI access) or runtime permissions (clipboard, finder) from the user — that is normal for Raycast extensions but worth reviewing in any generated code.
Persistence & Privilege
The skill does not request always: true and does not modify other skills or global settings. It's an agent-facing instruction set and does not ask for permanent platform presence.
Assessment
This skill is a documentation-driven helper for writing Raycast extensions and is internally consistent. Before using code generated from it or installing any extension you build, review the generated code for: (1) uses of Clipboard.readText, getSelectedFinderItems, or environment.supportPath — these access local user data and files; (2) calls to AI.ask or external HTTP endpoints — these will transmit data off-device; and (3) any file-write logic that writes into the extension supportPath. The skill itself does not request secrets or install binaries, but extensions produced from it may legitimately require runtime permissions — ensure you trust the code/source and confirm permission prompts when you run the extension.

Like a lobster shell, security has layers — review code before you run it.

latestvk97a60her1h17pxcf9yxqmx2097zy3hy
2kdownloads
3stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

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:

  1. Identify the core component: Determine if the UI needs a List, Grid, Detail, or Form.
  2. Consult Reference: Open and read the corresponding file in references/api/ (e.g., references/api/list.md).
  3. Use Defaults:
    • Feedback: Use showToast for Loading/Success/Failure. Use showHUD only for quick background completions.
    • Data: Use Cache for frequent/transient data, LocalStorage for persistent user data.
    • Access: Always check environment.canAccess(AI) or environment.canAccess(BrowserExtension) before use.
  4. Implementation: Provide a concise implementation using @raycast/api components.
  5. Citing: Link back to the specific references/api/*.md file 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

Examples

For end-to-end examples combining multiple components and APIs, see examples.md.

Comments

Loading comments...