mcpField
R
raycast-extensions

raycast-extensions

github.com/alexi-build开发1755 次安装25 周前更新
代码仓库

关于 raycast-extensions

用于使用 React、TypeScript 和 Raycast API 构建 Raycast 扩展的技能,涵盖 API 参考、界面模式、数据处理及受限 API 的访问检查。

主要功能

  1. 01React 和 TypeScript 实现指导
  2. 02查阅 Raycast API 参考
  3. 03List、Grid、Detail 和 Form 模式
  4. 04Cache 与 LocalStorage 使用指导
  5. 05受限 API 访问检查

适用场景

  1. 01构建可搜索的扩展界面
  2. 02添加表单和详情视图
  3. 03为临时或持久数据选择存储方式
  4. 04通过访问检查实现 AI 或浏览器功能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alexi-build/raycast-extensions-skill --skill raycast-extensions

安装后在 Claude Code 中输入/raycast-extensions确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples.md
references/api/
alert.md
clipboard.md
command-related-utilities.md
actions.md
action-panel.md
browser-extension.md
caching.md
colors.md
ai.md
detail.md
environment.md
keyboard.md
feedback.md
hud.md
grid.md
navigation.md
pikachu-1.md
pikachu-3.md
pikachu-2.md
form.md
menu-bar-commands.md
icons-images.md
oauth.md
list.md
pikachu-4.md
preferences.md
pikachu.md
system-utilities.md
storage.md

详细介绍

Raycast 扩展技能

使用 React、TypeScript 和 Raycast API 构建强大的扩展。

仓库约定

  • 更新 Raycast 扩展仓库的 CHANGELOG.md 时,始终使用 {PR_MERGE_DATE} 作为日期占位符。
  • 切勿在 CHANGELOG.md 中填写具体日历日期。

快速入门(Agent 工作流)

实现或修复 Raycast 功能时,请按以下步骤操作:

  1. 确定核心组件:判断 UI 是否需要 List、Grid、Detail 或 Form。
  2. 查阅参考文档:打开并阅读 references/api/ 中对应的文件(例如 references/api/list.md)。
  3. 使用默认方案:
    • 反馈:加载中、成功或失败时使用 showToast。仅在快速的后台任务完成时使用 showHUD。
    • 数据:频繁变化或临时数据使用 Cache,持久化的用户数据使用 LocalStorage。
    • 访问权限:使用前始终检查 environment.canAccess(AI) 或 environment.canAccess(BrowserExtension)。
    • 更新日志:更新 Raycast 扩展仓库的 CHANGELOG.md 时,始终使用 {PR_MERGE_DATE} 作为日期占位符。切勿填写具体日历日期。
  4. 实现:使用 @raycast/api 组件提供简洁的实现。
  5. 注明出处:链接到你使用的具体 references/api/*.md 文件。

实用模式

1. List 和 Grid(可搜索的 UI)

文本较多的数据使用 List,图片较多的数据使用 Grid。

<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(富文本 Markdown)

用于展示长篇内容或项目详情。

<Detail
  isLoading={isLoading}
  markdown="# Heading\nContent here."
  metadata={
    <Detail.Metadata>
      <Detail.Metadata.Label title="Status" text="Active" icon={Icon.Checkmark} />
    </Detail.Metadata>
  }
/>
3. Form(用户输入)

始终包含 SubmitForm 操作。

<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. 反馈与交互

大多数情况下优先使用 showToast 提供反馈。

// Success/Failure
await showToast({ style: Toast.Style.Success, title: "Success!" });

// HUD (Overlay)
await showHUD("Done!");
5. 数据持久化

使用 Cache 提升性能,使用 LocalStorage 实现持久化。

// Cache (Sync/Transient)
const cache = new Cache();
cache.set("key", "value");

// LocalStorage (Async/Persistent)
await LocalStorage.setItem("key", "value");
6. AI 与浏览器扩展(受限 API)

始终使用 environment.canAccess 检查进行保护。

if (environment.canAccess(AI)) {
  const result = await AI.ask("Prompt");
}

if (environment.canAccess(BrowserExtension)) {
  const tabs = await BrowserExtension.getTabs();
}

更多资源

API 参考目录

示例

如需查看结合多个组件和 API 的端到端示例,请参阅 examples.md。

评论

支持 Markdown