shortcuts-generator

Generate macOS/iOS Shortcuts by creating plist files. Use when asked to create shortcuts, automate workflows, build .shortcut files, or generate Shortcuts plists. Covers 1,155 actions (427 WF*Actions + 728 AppIntents), variable references, and control flow.

7 stars

Best use case

shortcuts-generator is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Generate macOS/iOS Shortcuts by creating plist files. Use when asked to create shortcuts, automate workflows, build .shortcut files, or generate Shortcuts plists. Covers 1,155 actions (427 WF*Actions + 728 AppIntents), variable references, and control flow.

Teams using shortcuts-generator should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/shortcuts-skill/SKILL.md --create-dirs "https://raw.githubusercontent.com/Demerzels-lab/elsamultiskillagent/main/public/skills/erik-agens/shortcuts-skill/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/shortcuts-skill/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How shortcuts-generator Compares

Feature / Agentshortcuts-generatorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Generate macOS/iOS Shortcuts by creating plist files. Use when asked to create shortcuts, automate workflows, build .shortcut files, or generate Shortcuts plists. Covers 1,155 actions (427 WF*Actions + 728 AppIntents), variable references, and control flow.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# macOS Shortcuts Generator

Generate valid `.shortcut` files that can be signed and imported into Apple's Shortcuts app.

## Quick Start

A shortcut is a binary plist with this structure:

```xml
<?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>
        <!-- Actions go here -->
    </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>
```

### Minimal Hello World

```xml
<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>
```

## Core Concepts

### 1. Actions
Every action has:
- **Identifier**: `is.workflow.actions.<name>` (e.g., `is.workflow.actions.showresult`)
- **Parameters**: Action-specific configuration in `WFWorkflowActionParameters`
- **UUID**: Unique identifier for referencing this action's output

### 2. Variable References
To use output from a previous action:
1. The source action needs a `UUID` parameter
2. Reference it using `OutputUUID` in an `attachmentsByRange` dictionary
3. Use `` (U+FFFC) as placeholder in the string where the variable goes
4. Set `WFSerializationType` to `WFTextTokenString`

### 3. Control Flow
Control flow actions (repeat, conditional, menu) use:
- `GroupingIdentifier`: UUID linking start/middle/end actions
- `WFControlFlowMode`: 0=start, 1=middle (else/case), 2=end

## Common Actions Quick Reference

| Action | Identifier | Key Parameters |
|--------|------------|----------------|
| Text | `is.workflow.actions.gettext` | `WFTextActionText` |
| Show Result | `is.workflow.actions.showresult` | `Text` |
| Ask for Input | `is.workflow.actions.ask` | `WFAskActionPrompt`, `WFInputType` |
| Use AI Model | `is.workflow.actions.askllm` | `WFLLMPrompt`, `WFLLMModel`, `WFGenerativeResultType` |
| Comment | `is.workflow.actions.comment` | `WFCommentActionText` |
| URL | `is.workflow.actions.url` | `WFURLActionURL` |
| Get Contents of URL | `is.workflow.actions.downloadurl` | `WFURL`, `WFHTTPMethod` |
| Get Weather | `is.workflow.actions.weather.currentconditions` | (none required) |
| Open App | `is.workflow.actions.openapp` | `WFAppIdentifier` |
| Open URL | `is.workflow.actions.openurl` | `WFInput` |
| Alert | `is.workflow.actions.alert` | `WFAlertActionTitle`, `WFAlertActionMessage` |
| Notification | `is.workflow.actions.notification` | `WFNotificationActionTitle`, `WFNotificationActionBody` |
| Set Variable | `is.workflow.actions.setvariable` | `WFVariableName`, `WFInput` |
| Get Variable | `is.workflow.actions.getvariable` | `WFVariable` |
| Number | `is.workflow.actions.number` | `WFNumberActionNumber` |
| List | `is.workflow.actions.list` | `WFItems` |
| Dictionary | `is.workflow.actions.dictionary` | `WFItems` |
| Repeat (count) | `is.workflow.actions.repeat.count` | `WFRepeatCount`, `GroupingIdentifier`, `WFControlFlowMode` |
| Repeat (each) | `is.workflow.actions.repeat.each` | `WFInput`, `GroupingIdentifier`, `WFControlFlowMode` |
| If/Otherwise | `is.workflow.actions.conditional` | `WFInput`, `WFCondition`, `GroupingIdentifier`, `WFControlFlowMode` |
| Choose from Menu | `is.workflow.actions.choosefrommenu` | `WFMenuPrompt`, `WFMenuItems`, `GroupingIdentifier`, `WFControlFlowMode` |
| Find Photos | `is.workflow.actions.filter.photos` | `WFContentItemFilter` (see FILTERS.md) |
| Delete Photos | `is.workflow.actions.deletephotos` | `photos` (**NOT** `WFInput`!) |

## Detailed Reference Files

For complete documentation, see:
- [PLIST_FORMAT.md](PLIST_FORMAT.md) - Complete plist structure
- [ACTIONS.md](ACTIONS.md) - All 427 WF*Action identifiers and parameters
- [APPINTENTS.md](APPINTENTS.md) - All 728 AppIntent actions
- [PARAMETER_TYPES.md](PARAMETER_TYPES.md) - All parameter value types and serialization formats
- [VARIABLES.md](VARIABLES.md) - Variable reference system
- [CONTROL_FLOW.md](CONTROL_FLOW.md) - Repeat, Conditional, Menu patterns
- [FILTERS.md](FILTERS.md) - Content filters for Find/Filter actions (photos, files, etc.)
- [EXAMPLES.md](EXAMPLES.md) - Complete working examples

## Signing Shortcuts

Shortcuts MUST be signed before they can be imported. Use the macOS `shortcuts` CLI:

```bash
# 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
```

The signing process:
1. Write your plist as XML to a `.shortcut` file
2. Run `shortcuts sign` to add cryptographic signature (~19KB added)
3. The signed file can be opened/imported into Shortcuts.app

## Workflow for Creating Shortcuts

1. **Define actions** - List what the shortcut should do
2. **Generate UUIDs** - Each action that produces output needs a unique UUID
3. **Build action array** - Create each action dictionary with identifier and parameters
4. **Wire variable references** - Connect outputs to inputs using `OutputUUID`
5. **Wrap in plist** - Add the root structure with icon, name, version
6. **Write to file** - Save as `.shortcut` (XML plist format is fine)
7. **Sign** - Run `shortcuts sign` to make it importable

## Key Rules

1. **UUIDs must be uppercase**: `A1B2C3D4-E5F6-7890-ABCD-EF1234567890`
2. **WFControlFlowMode is an integer**: Use `<integer>0</integer>` not `<string>0</string>`
3. **Range keys use format**: `{position, length}` - e.g., `{0, 1}` for first character
4. **The placeholder character**: `` (U+FFFC) marks where variables are inserted
5. **Control flow needs matching ends**: Every repeat/if/menu start needs an end action with same `GroupingIdentifier`

Related Skills

report-generator

7
from Demerzels-lab/elsamultiskillagent

Generates a structured report HTML based on a specific template.

ai-proposal-generator

7
from Demerzels-lab/elsamultiskillagent

Generate professional HTML proposals from meeting notes. Features 5 proposal styles (Corporate, Entrepreneur, Creative, Consultant, Minimal), 6+ color themes, and a Design Wizard for custom templates. Triggers on "create proposal", "proposal for [client]", "proposal wizard", "proposal from [notes]", "show proposal styles", "finalize proposal". Integrates with ai-meeting-notes for context. Outputs beautiful, responsive HTML ready to send or export as PDF.

fliz-ai-video-generator

7
from Demerzels-lab/elsamultiskillagent

Complete integration guide for the Fliz REST API - an AI-powered video generation platform that transforms text content into professional videos with voiceovers, AI-generated images, and subtitles. Use this skill when: - Creating integrations with Fliz API (WordPress, Zapier, Make, n8n, custom apps) - Building video generation workflows via API - Implementing webhook handlers for video completion notifications - Developing automation tools that create, manage, or translate videos - Troubleshooting Fliz API errors or authentication issues - Understanding video processing steps and status polling Key capabilities: video creation from text/Brief, video status monitoring, translation, duplication, voice/music listing, webhook notifications.

PPT Generator Pro - Claude Code Skill

7
from Demerzels-lab/elsamultiskillagent

## 📋 元数据

ai-ppt-generator

7
from Demerzels-lab/elsamultiskillagent

The awesome PPT format generation tool provided by baidu.

ai-lead-generator-skill

7
from Demerzels-lab/elsamultiskillagent

Generate qualified B2B leads for any industry using AI-powered research and LinkedIn/Apollo integration.

tiktok-ai-model-generator

7
from Demerzels-lab/elsamultiskillagent

Generate AI model videos for TikTok livestreams using Pinterest, Claude, Nano Banana Pro, and Veo or Kling. Use for creating AI-generated fashion models wearing products, animating them into videos, or building automated TikTok content production workflows. This skill provides a complete 4-step workflow covering Pinterest reference selection, Claude JSON prompt generation, Nano Banana Pro image generation, and video animation. Perfect for e-commerce sellers, content creators, and TikTok marketers who need AI models to showcase products.

free-ai-prompt-generator-for-chatgpt-gemini-more-q-6e800b2c

7
from Demerzels-lab/elsamultiskillagent

Write an AI prompt for a job description that attracts top talent

ai-portrait-generator

7
from Demerzels-lab/elsamultiskillagent

Generate ultra-photorealistic portraits using structured JSON prompts. Use when creating AI-generated portraits, character art, or realistic human images with cinematic quality and detailed specifications.

ad-creative-generator

7
from Demerzels-lab/elsamultiskillagent

Generate diverse, engaging ad prompts for any product or brand across 20+ creative styles and 10 categories. Use when user needs advertisement concepts, marketing prompts, or creative marketing content generation.

permanent-note-generator

7
from Demerzels-lab/elsamultiskillagent

从文章中自动提取并生成符合 Zettelkasten 方法论的永久笔记。用于处理文章,识别5种核心笔记类型(观点/论点、概念/定义、事实/证据、方法/流程、思维模型/原则),并按照原子性、独立性原则生成高质量的永久笔记。当用户需要从文章、书籍或其他材料中提取永久笔记时使用此技能。

readme-generator

7
from Demerzels-lab/elsamultiskillagent

Generate a production-quality README.md by analyzing project structure, framework, and code.