mcpField
R
raycast-extensions

raycast-extensions

github.com/nweii开发1051 次安装4 天前更新
代码仓库

关于 raycast-extensions

raycast-extensions 是用于使用 React、TypeScript 和 Node.js 开发 Raycast 扩展的技能,面向扩展开发者。它介绍界面组件的选择、常用开发模式,并附有可运行示例和参考文档。

主要功能

  1. 01指导 Raycast 扩展快速入门
  2. 02按界面需求选择组件
  3. 03介绍列表与操作面板模式
  4. 04涵盖数据获取与表单验证
  5. 05提供可运行示例和参考资料

适用场景

  1. 01创建新的 Raycast 扩展
  2. 02为搜索结果选择合适布局
  3. 03实现表单或详细内容界面
  4. 04参考数据获取和 AI 示例

安装

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

$npx skills add https://github.com/nweii/agent-stuff --skill raycast-extensions

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

包含的文件

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

examples/
ai-integration.tsx
data-fetching.tsx
detail-with-metadata.tsx
form-with-validation.tsx
grid-with-images.tsx
list-with-actions.tsx
list-with-detail.tsx
menubar-extra.tsx
references/
ai-api.md
hooks-utilities.md
package-structure.md
ui-components.md

详细介绍

Raycast 扩展开发

使用 React、TypeScript 和 Node.js 构建 Raycast 扩展。

快速开始

  1. 创建扩展:在 Raycast 中运行“Create Extension”命令
  2. 安装并开发:npm install && npm run dev
  3. 编辑:修改 src/index.tsx,更改会自动热重载
  4. 测试:扩展会显示在 Raycast 根搜索结果的顶部

选择 UI 原语

需求组件
可搜索的项目列表List
图片图库/网格Grid
收集用户输入Form
显示丰富内容Detail
状态栏常驻显示MenuBarExtra
决策树
  1. 要显示用户可以搜索/筛选的项目吗?

    • 以文本为主 → List
    • 以图片为主 → Grid
  2. 要收集用户输入吗? → Form

  3. 要显示详细内容吗? → Detail(支持 Markdown 和元数据)

  4. 要在状态栏中始终显示吗? → MenuBarExtra

核心模式

带有 ActionPanel 的列表
import { ActionPanel, Action, List } from "@raycast/api";

export default function Command() {
  return (
    <List>
      <List.Item
        title="Item"
        actions={
          <ActionPanel>
            <Action.CopyToClipboard content="Copied!" />
            <Action.OpenInBrowser url="https://raycast.com" />
          </ActionPanel>
        }
      />
    </List>
  );
}
数据获取
import { List } from "@raycast/api";
import { useFetch } from "@raycast/utils";

export default function Command() {
  const { data, isLoading } = useFetch<Item[]>("https://api.example.com/items");
  
  return (
    <List isLoading={isLoading}>
      {data?.map((item) => <List.Item key={item.id} title={item.name} />)}
    </List>
  );
}
AI 集成
import { AI, Clipboard } from "@raycast/api";

export default async function Command() {
  const answer = await AI.ask("Summarize this text");
  await Clipboard.copy(answer);
}

说明

AI 需要 Raycast Pro。使用 environment.canAccess(AI) 检查访问权限。

参考资料

如需详细文档,请参阅:

示例

examples/ 中提供了可运行的示例:

文件模式
list-with-actions.tsxList 和 ActionPanel 基础用法
list-with-detail.tsx带详情面板的 List
form-with-validation.tsxForm 和 useForm 验证
detail-with-metadata.tsxDetail Markdown 和元数据
grid-with-images.tsxGrid 布局
data-fetching.tsxuseFetch 模式
ai-integration.tsx使用流式传输的 AI.ask
menubar-extra.tsxMenuBarExtra 交互

评论

支持 Markdown