raycast-extensions について
React、TypeScript、Raycast API を使った Raycast 拡張機能の開発を支援するスキルです。API リファレンス、UI パターン、データ処理、制限付き API のアクセス確認を案内します。
主な機能
- 01React と TypeScript の実装ガイド
- 02Raycast API リファレンスの参照
- 03List、Grid、Detail、Form のパターン
- 04Cache と LocalStorage の利用ガイド
- 05制限付き API のアクセス確認
活用シーン
- 01検索可能な拡張機能の UI を構築
- 02フォームと詳細ビューを追加
- 03一時データと永続データの保存先を選択
- 04アクセス確認付きで AI やブラウザー機能を実装
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ alexi-build/ raycast-extensions-skill --skill raycast-extensionsインストール後、Claude Code で/raycast-extensionsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples.mdreferences/api/alert.mdclipboard.mdcommand-related-utilities.mdactions.mdaction-panel.mdbrowser-extension.mdcaching.mdcolors.mdai.mddetail.mdenvironment.mdkeyboard.mdfeedback.mdhud.mdgrid.mdnavigation.mdpikachu-1.mdpikachu-3.mdpikachu-2.mdform.mdmenu-bar-commands.mdicons-images.mdoauth.mdlist.mdpikachu-4.mdpreferences.mdpikachu.mdsystem-utilities.mdstorage.md詳細
Raycast Extensions スキル
React、TypeScript、Raycast API を使って、強力な拡張機能を構築します。
リポジトリの規約
- Raycast 拡張機能リポジトリの
CHANGELOG.mdを更新するときは、日付のプレースホルダーとして常に{PR_MERGE_DATE}を使用します。 CHANGELOG.mdに具体的な日付を記載しないでください。
クイックスタート(エージェントのワークフロー)
Raycast の機能の実装や修正を依頼された場合は、以下の手順に従ってください。
- 中心となるコンポーネントを特定する:UI に
List、Grid、Detail、Formのどれが必要かを判断します。 - リファレンスを参照する:
references/api/内の対応するファイル(例:references/api/list.md)を開いて読みます。 - 既定の方針を適用する:
- フィードバック:読み込み/成功/失敗の通知には
showToastを使用します。バックグラウンド処理の迅速な完了を知らせる場合に限り、showHUDを使用します。 - データ:頻繁に使う一時的なデータには
Cacheを、ユーザーデータの永続化にはLocalStorageを使用します。 - アクセス:使用前に必ず
environment.canAccess(AI)またはenvironment.canAccess(BrowserExtension)を確認します。 - 変更履歴:Raycast 拡張機能リポジトリの
CHANGELOG.mdを更新するときは、日付のプレースホルダーとして常に{PR_MERGE_DATE}を使用します。具体的な日付は記載しないでください。
- フィードバック:読み込み/成功/失敗の通知には
- 実装:
@raycast/apiのコンポーネントを使って簡潔に実装します。 - 参照元を示す:使用した
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 リファレンスの一覧
- UI コンポーネント
- インタラクティブ機能
- ユーティリティとサービス
- データと設定
- 詳細
例
複数のコンポーネントと API を組み合わせたエンドツーエンドの例については、examples.md をご覧ください。
コメント
Markdown 対応