shortcuts-generator について
Apple Shortcutsにインポートできる、署名可能な`.shortcut`ファイルを生成するスキルです。plistの構造、アクションのパラメーター、変数参照、制御フローを扱います。
主な機能
- 01ショートカットのplistファイル生成
- 02アクション識別子とパラメーターの設定
- 03変数参照による出力の接続
- 04繰り返し・条件分岐・メニューの構築
- 05アクションとパラメーターの資料
活用シーン
- 01複数アクションを含むショートカットの作成
- 02前のアクションの出力を後続へ渡す処理
- 03条件分岐や繰り返しを含むフローの構築
- 04ファイルに署名してShortcutsへインポート
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ drewocarr/ generate-shortcuts-skill --skill shortcuts-generatorインストール後、Claude Code で/shortcuts-generatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
APPINTENTS.mdREADME.mdACTIONS.mdPLIST_FORMAT.mdVARIABLES.mdCONTROL_FLOW.mdEXAMPLES.mdFILTERS.mdPARAMETER_TYPES.md詳細
macOS ショートカットジェネレーター
Appleのショートカットアプリにインポートできる、署名可能な有効な .shortcut ファイルを生成します。
クイックスタート
ショートカットは、次の構造を持つバイナリ plist です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WFWorkflowActions</key>
<array>
</array>
<key>WFWorkflowClientVersion</key>
<string>2700.0.4</string>
<key>WFWorkflowHasOutputFallback</key>
<false/>
<key>WFWorkflowIcon</key>
<dict>
<key>WFWorkflowIconGlyphNumber</key>
<integer>59511</integer>
<key>WFWorkflowIconStartColor</key>
<integer>4282601983</integer>
</dict>
<key>WFWorkflowImportQuestions</key>
<array/>
<key>WFWorkflowMinimumClientVersion</key>
<integer>900</integer>
<key>WFWorkflowMinimumClientVersionString</key>
<string>900</string>
<key>WFWorkflowName</key>
<string>My Shortcut</string>
<key>WFWorkflowOutputContentItemClasses</key>
<array/>
<key>WFWorkflowTypes</key>
<array/>
</dict>
</plist>
最小限の Hello World
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.gettext</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>UUID</key>
<string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890</string>
<key>WFTextActionText</key>
<string>Hello World!</string>
</dict>
</dict>
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.showresult</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>Text</key>
<dict>
<key>Value</key>
<dict>
<key>attachmentsByRange</key>
<dict>
<key>{0, 1}</key>
<dict>
<key>OutputName</key>
<string>Text</string>
<key>OutputUUID</key>
<string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890</string>
<key>Type</key>
<string>ActionOutput</string>
</dict>
</dict>
<key>string</key>
<string></string>
</dict>
<key>WFSerializationType</key>
<string>WFTextTokenString</string>
</dict>
</dict>
</dict>
基本概念
1. アクション
各アクションには次の要素があります。
- 識別子:
is.workflow.actions.<name>(例:is.workflow.actions.showresult) - パラメーター:
WFWorkflowActionParameters内の、アクション固有の設定 - UUID:このアクションの出力を参照するための一意の識別子
2. 変数参照
前のアクションの出力を使用するには:
- 出力元のアクションに
UUIDパラメーターが必要です attachmentsByRange辞書内のOutputUUIDを使って参照します- 文字列内で変数を挿入する位置に、プレースホルダーとして
(U+FFFC)を使用します WFSerializationTypeをWFTextTokenStringに設定します
3. 制御フロー
制御フローアクション(繰り返し、条件分岐、メニュー)では、次の要素を使用します。
GroupingIdentifier:開始/中間/終了アクションを関連付けるUUIDWFControlFlowMode:0=開始、1=中間(else/case)、2=終了
よく使うアクションのクイックリファレンス
| アクション | 識別子 | 主要なパラメーター |
|---|---|---|
| テキスト | is.workflow.actions.gettext | WFTextActionText |
| 結果を表示 | is.workflow.actions.showresult | Text |
| 入力を求める | is.workflow.actions.ask | WFAskActionPrompt、WFInputType |
| AIモデルを使用 | is.workflow.actions.askllm | WFLLMPrompt、WFLLMModel、WFGenerativeResultType |
| コメント | is.workflow.actions.comment | WFCommentActionText |
| URL | is.workflow.actions.url | WFURLActionURL |
| URLの内容を取得 | is.workflow.actions.downloadurl | WFURL、WFHTTPMethod |
| 天気を取得 | is.workflow.actions.weather.currentconditions | (必須項目なし) |
| アプリを開く | is.workflow.actions.openapp | WFAppIdentifier |
| URLを開く | is.workflow.actions.openurl | WFInput |
| アラート | is.workflow.actions.alert | WFAlertActionTitle、WFAlertActionMessage |
| 通知 | is.workflow.actions.notification | WFNotificationActionTitle、WFNotificationActionBody |
| 変数を設定 | is.workflow.actions.setvariable | WFVariableName、WFInput |
| 変数を取得 | is.workflow.actions.getvariable | WFVariable |
| 数値 | is.workflow.actions.number | WFNumberActionNumber |
| リスト | is.workflow.actions.list | WFItems |
| 辞書 | is.workflow.actions.dictionary | WFItems |
| 繰り返す(回数) | is.workflow.actions.repeat.count | WFRepeatCount、GroupingIdentifier、WFControlFlowMode |
| 繰り返す(各項目) | is.workflow.actions.repeat.each | WFInput、GroupingIdentifier、WFControlFlowMode |
| If/Otherwise | is.workflow.actions.conditional | WFInput、WFCondition、GroupingIdentifier、WFControlFlowMode |
| メニューから選択 | is.workflow.actions.choosefrommenu | WFMenuPrompt、WFMenuItems、GroupingIdentifier、WFControlFlowMode |
| 写真を検索 | is.workflow.actions.filter.photos | WFContentItemFilter(FILTERS.mdを参照) |
| 写真を削除 | is.workflow.actions.deletephotos | photos(WFInputではありません!) |
詳細リファレンスファイル
完全なドキュメントについては、以下を参照してください。
- PLIST_FORMAT.md - plist構造の詳細
- ACTIONS.md - 427種類すべてのWF*Action識別子とパラメーター
- APPINTENTS.md - 728種類すべてのAppIntentアクション
- PARAMETER_TYPES.md - すべてのパラメーター値の型とシリアライズ形式
- VARIABLES.md - 変数参照システム
- CONTROL_FLOW.md - 繰り返し、条件分岐、メニューのパターン
- FILTERS.md - 検索/フィルターアクション用のコンテンツフィルター(写真、ファイルなど)
- EXAMPLES.md - 完全な動作例
ショートカットの署名
ショートカットは、インポートする前に必ず署名する必要があります。macOS の shortcuts CLI を使用してください。
# Sign for anyone to use
shortcuts sign --mode anyone --input MyShortcut.shortcut --output MyShortcut_signed.shortcut
# Sign for people who know you
shortcuts sign --mode people-who-know-me --input MyShortcut.shortcut --output MyShortcut_signed.shortcut
署名の手順:
- plist を XML として
.shortcutファイルに書き込みます shortcuts signを実行して、暗号署名を追加します(約19KB増加します)- 署名済みファイルを Shortcuts.app で開いてインポートできます
ショートカットを作成するワークフロー
- アクションを定義する - ショートカットに実行させる内容を列挙します
- UUID を生成する - 出力を生成する各アクションに一意の UUID が必要です
- アクション配列を構築する - 識別子とパラメーターを含む各アクションの辞書を作成します
- 変数参照を接続する -
OutputUUIDを使って出力と入力を接続します - plist でラップする - アイコン、名前、バージョンを含むルート構造を追加します
- ファイルに書き込む -
.shortcutとして保存します(XML plist 形式で問題ありません) - 署名する -
shortcuts signを実行してインポート可能にします
主なルール
- UUID は大文字にする必要があります:
A1B2C3D4-E5F6-7890-ABCD-EF1234567890 - WFControlFlowMode は整数です:
<string>0</string>ではなく<integer>0</integer>を使用します - 範囲キーの形式:
{position, length}- 例:最初の文字には{0, 1}を使用します - プレースホルダー文字:
(U+FFFC)は、変数を挿入する位置を示します - 制御フローには対応する終了アクションが必要です:すべての繰り返し/if/メニューの開始には、同じ
GroupingIdentifierを持つ終了アクションが必要です
コメント
Markdown 対応