360 Secure SkillHub
360 安全技能中心

raycast

面向 Raycast 扩展开发的参考型技能:以 references/api/*.md 为规范来源,指导用 @raycast/api、React、TypeScript 选择并实现 List、Grid、Detail、Form、ActionPanel、Toast/HUD、Cache/LocalStorage、AI.ask、BrowserExtension 等组件与 API,附最小代码示例和引用方式。

xaif
xaif
热度 92.86
最近更新 2026-05-11 15:50:57
分类:开发依赖:读写文件应用场景:代码生成 / API 集成 / 模板

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add raycast
Metadata
name
raycast-extensions
description
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:

  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.