apple-shortcuts — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited apple-shortcuts (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate plist XML that the Shortcuts app imports. Targets macOS 12+ and iOS 15+. Use this skill for creation, modification, reverse engineering, and reference lookups.
Since iOS 15 / macOS 12, Shortcuts refuses unsigned files. This skill produces plist XML. Delivery to the user requires one of:
anyone to produce a distributable .shortcut. The user double-clicks or runs open -a Shortcuts out.shortcut`.
.shortcut first), re-save — Shortcuts re-signs it.
.shortcut via iCloud share link (https://www.icloud.com/ shortcuts/...), AirDrop, or Messages. Unsigned plist XML cannot be imported on iOS.
State this cost to the user before generating. If they lack macOS, the deliverable is XML plus instructions; full binary signing without macOS is a rabbit hole this skill does not enter.
See gotchas/signing-and-sharing.md for the full story.
If you know the action by name but not its identifier:
./tools/find-action-identifier.py "send message"If you need to discover an unknown third-party action on macOS:
./tools/list-app-intents.py --bundle com.example.appIf you need the full native action catalog:
./tools/list-native-actions.pyConsult references in this order:
references/plist-format.md for the envelope and top-level keys.references/variables-and-types.md for magic variable wiring.references/actions-native-*.md for concrete action schemas.patterns/*.md if the task matches a known pattern.templates/*.plist as starting points.Write the plist as XML. Every action dict must carry at minimum WFWorkflowActionIdentifier and WFWorkflowActionParameters.
./tools/validate-shortcut.py path/to/shortcut.plistFix any errors. Then either sign on macOS or instruct the user to.
Load only the files your current task needs. This table maps request types to files.
| Request contains | Load |
|---|---|
| "how do I make a shortcut that..." | patterns/ + relevant actions-*.md |
| "what's the identifier for X action" | actions-native-full-index.md or find |
| "why won't my shortcut import" | gotchas/signing-and-sharing.md |
| "what does this .shortcut file do" | tools/inspect-shortcut.py |
| "call an API / fetch JSON" | patterns/http-api-calls.md |
| "show a menu to the user" | patterns/user-input.md |
| "run another shortcut" | patterns/shortcuts-chaining.md |
| "personal automation / trigger" | patterns/automation-triggers.md |
| "use <third-party app> action" | third-party/<app>.md |
| "variables aren't working" | references/variables-and-types.md |
| "compare two shortcuts" | tools/diff-actions.py |
| "what actions are in WorkflowKit" | tools/list-native-actions.py |
shapes the action set. Shell Script, AppleScript, JXA, and window management are macOS-only. Health, HomeKit scene execution, and camera actions are iOS-only.
identifier is unverified, mark it ⚠ unverified in your plan and prefer a verified alternative.
references/*.mdand third-party/*.md you need. Do not eagerly load the full catalog.
WFWorkflowActions array. Assign a UUID to every action whose output is referenced later. Wire magic variables via attachmentsByRange using {position, length} strings and the U+FFFC object replacement character (see references/variables-and-types.md).
tools/validate-shortcut.py. Do not skip thisstep.
paths (macOS CLI, macOS GUI, iOS), noting the signing requirement explicitly.
<?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>WFWorkflowClientVersion</key>
<string>2607.0.3</string>
<key>WFWorkflowMinimumClientVersion</key>
<integer>900</integer>
<key>WFWorkflowMinimumClientVersionString</key>
<string>900</string>
<key>WFWorkflowIcon</key>
<dict>
<key>WFWorkflowIconGlyphNumber</key>
<integer>59511</integer>
<key>WFWorkflowIconStartColor</key>
<integer>463140863</integer>
</dict>
<key>WFWorkflowImportQuestions</key>
<array/>
<key>WFWorkflowInputContentItemClasses</key>
<array>
<string>WFStringContentItem</string>
</array>
<key>WFWorkflowTypes</key>
<array/>
<key>WFWorkflowActions</key>
<array>
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.gettext</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>WFTextActionText</key>
<string>Hello from Claude</string>
</dict>
</dict>
<dict>
<key>WFWorkflowActionIdentifier</key>
<string>is.workflow.actions.showresult</string>
<key>WFWorkflowActionParameters</key>
<dict>
<key>Text</key>
<string>Hello from Claude</string>
</dict>
</dict>
</array>
</dict>
</plist>This is templates/minimal-shortcut.plist. It imports after signing.
# Save plist with .shortcut extension
mv out.plist out.shortcut
# Sign it for public sharing
shortcuts sign -i out.shortcut -o out.signed.shortcut -m anyone
# Open in Shortcuts.app to complete import
open -a Shortcuts out.signed.shortcutSigning modes:
anyone — distributable via any channel; lax trust.people-who-know-me — requires recipient to be in Contacts.mv out.plist out.shortcut
open -a Shortcuts out.shortcutShortcuts.app imports, signs locally, and stores in ~/Library/Shortcuts/.
There is no iOS signing toolchain. The user must receive a shortcut that was signed on macOS. Paths:
https://www.icloud.com/shortcuts/<uuid> link. Recipient taps link, Shortcuts opens.
.shortcut file from macOS to iOS..shortcut file.If the user is iOS-only and has no macOS device, the skill cannot fully close the loop. Deliver the plist XML and document the gap.
references/plist-format.md — envelope, top-level keys, content itemclasses, XML rules.
references/variables-and-types.md — magic variables,attachmentsByRange, serialization types, coercion.
references/control-flow.md — If, Repeat, Choose from Menu,GroupingIdentifier, WFControlFlowMode.
references/actions-native-core.md — Text, Dictionary, List,Variables, Scripting, Device.
references/actions-native-web.md — URL, Get Contents of URL, JSONparsing, headers, authentication.
references/actions-native-files.md — Files, Photos, Documents,archive, hash.
references/actions-native-communication.md — Messages, Mail,Notifications, Speak Text.
references/actions-native-automation.md — Automations, triggers,focus, personal vs home.
references/actions-native-full-index.md — Flat identifier index,fallback lookup.
third-party/actions-app.md — Sindre Sorhus's Actions (OSS, free,covers ~80% of gaps).
third-party/data-jar.md — Simon Støvring's persistent key-valuestore.
third-party/toolbox-pro.md — Alex Hay's advanced utilities.third-party/scriptable.md — JavaScript bridge.third-party/a-shell.md — iOS shell bridge.third-party/jayson.md — JSON manipulation.third-party/pushcut.md — Automation server, webhooks.third-party/discovery-pattern.md — Reverse engineer any unknownthird-party app's actions.
patterns/http-api-calls.md — REST calls, auth headers, pagination.patterns/json-parsing.md — Dictionary access, Get Dictionary Value.patterns/error-handling.md — Exit, fallback, validation.patterns/user-input.md — Ask, Choose from Menu, Show Alert.patterns/shortcuts-chaining.md — Run Shortcut with parameters,output passing.
patterns/automation-triggers.md — Personal automation, Home,limits, confirmation.
gotchas/platform-differences.md — iOS vs macOS vs watchOS actionavailability.
gotchas/signing-and-sharing.md — iOS 15+ signing requirement, sharelinks, trust prompts.
gotchas/common-pitfalls.md — Variable scope, UUID duplicates,magic variable binding bugs.
gotchas/performance.md — Action limits, timeouts, Get Contents ofURL failure modes.
tools/validate-shortcut.py — Validate a plist. Check syntax,required keys, identifier existence, variable referencing.
tools/inspect-shortcut.py — Dump a .shortcut or .plist asstructured JSON or human-readable list.
tools/list-native-actions.py — Extract WFWorkflowActionIdentifiervalues from WorkflowKit.framework (macOS) or fall back to embedded index.
tools/list-app-intents.py — Scan installed apps for App Intentsmetadata and enumerate their Shortcuts actions.
tools/find-action-identifier.py — Fuzzy search for an action byname across native and known third-party catalogs.
tools/diff-actions.py — Semantic diff between two shortcuts(action-by-action, reorder-aware).
tools/README.md — Script inventory, usage examples, exit codes.is not verified, mark it ⚠ unverified in output and suggest the user confirm via tools/list-native-actions.py or by round-tripping through Shortcuts.app.
actions-native-full-index.md and third-party/*.md; prose references link there rather than re-state.
templates/ passesplutil -lint and tools/validate-shortcut.py.
chat may be in the user's language; files in this skill are English.
Before generating, resolve:
automation, menu bar (macOS).
is.workflow.actions.*?
Do not guess. Ask the user for any of the five that remain unclear after reading the request.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.