shortcut-forge
Apple Shortcuts MCP server: let Claude, Codex or ChatGPT build, lint and sign real iOS Shortcuts (.shortcut) that run on iPhone. Mac auto-signing, open shortcut library, iOS 27.
Install / Use
claude mcp add Hyunki6040 -- npx -y github:Hyunki6040/shortcut-forgeIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Our assessment of shortcut-forge
shortcut-forge scores 83/100 on our quality scale, 2182nd of 2,872 Automation skills we index.
Its MCP Server is 13 KB long, well organised into 12 sections with 9 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 23 days ago, so shortcut-forge is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
shortcut-forge compared with similar skills
All 4 of these similar skills score higher than shortcut-forge; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| shortcut-forge (this skill)by Hyunki6040 | 83 | 3 | 23d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 109.6k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.0k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.8k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 98.8k | 1d ago | MCP Server |
Frequently asked questions
- How do I install shortcut-forge?
- Run
claude mcp add Hyunki6040 -- npx -y github:Hyunki6040/shortcut-forge. The install tabs above show the steps for each supported agent. - Which AI agents does shortcut-forge work with?
- It is written for Claude Code, Claude Desktop and OpenAI Codex, as a MCP Server file. Other agents that read the same format can often use it too.
- Is shortcut-forge safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is shortcut-forge still maintained?
- The repository was last updated 23 days ago, so shortcut-forge is actively maintained.
Skill content
View source on GitHubThe problem (you've probably said one of these)
"I asked ChatGPT for a shortcut and got fourteen steps to tap in by hand."
"The file imported fine. Then: 'Choose a value for each parameter of this action.'"
"iOS 27 can build a shortcut from a description, but only on my iPhone 15 Pro, one shortcut at a time, and I can't review or version what it changed."
"Every MCP server I found for Shortcuts only runs shortcuts I already have."
"Every time I fix the family shortcut, everyone has to download it again."
Apple Shortcuts is the most powerful automation layer on the iPhone, and still the hardest thing to get an AI to produce. The file format is undocumented, a structurally valid plist can still break on the device, and nothing catches the difference until you're staring at an error on your phone.
The fix
shortcut-forge is an MCP server, a Claude plugin and a Python library that turns "make me a shortcut that…"
into a signed .shortcut file that has been checked against the ways shortcuts really fail on iPhone.
You: "Every time I take my vitamins, log them to Apple Health, tick off today's reminder
and set up tomorrow's, but never create duplicates."
Claude: → shortcut_library("supplements") → shortcut_from_template("supplement-tracker", …)
✓ 750 actions · 0 lint errors · signed on your Mac
→ ~/Downloads/shortcut-forge/Supplement Check.shortcut (AirDrop / iCloud Drive → tap → Add)
| | Apple "Describe a Shortcut" (iOS 27) | Asking a chatbot | Other Shortcuts MCPs | shortcut-forge | |---|---|---|---|---| | Works from Claude, Codex, ChatGPT, Cursor… | – | ✓ | some | ✓ | | No new iPhone required | needs iPhone 15 Pro+ / Apple silicon | ✓ | ✓ | ✓ | | Output you can read, diff, version, review | – | text | varies | JSON spec + plist | | Checked against real on-device failures | n/a (native) | – | structure only | 15 semantic rules | | Signed and importable on iPhone | ✓ (native) | – | rarely | ✓ auto on macOS | | Updates without re-downloading | – | – | – | remote config + update check | | Shared, remixable library | – | – | – | ✓ 20+ entries |
Apple's built-in builder is great for quick personal one-liners and lives right in the app; use it. Reach for shortcut-forge when you want an AI you already use to build something bigger, reviewable and shareable.
Install
Claude Code (plugin = MCP server + skill + /shortcut command)
/plugin marketplace add Hyunki6040/shortcut-forge
/plugin install shortcut-forge@shortcut-forge
Claude Desktop: double-click shortcut-forge.mcpb from Releases, or:
{ "mcpServers": { "shortcut-forge": { "command": "uvx", "args": ["shortcut-forge", "mcp"] } } }
OpenAI Codex
codex mcp add shortcut-forge -- uvx shortcut-forge mcp
ChatGPT, Gemini, any chatbot: connect over HTTP (shortcut-forge mcp --http) or, with no MCP at all, paste
prompts/LLM_PROMPT.md and drop the JSON it writes into the Mac watch folder (below).
Cursor, VS Code, Windsurf, Gemini CLI: see docs/CLIENTS.md.
Python / CLI
uv tool install shortcut-forge # or: pipx install shortcut-forge
shortcut-forge template supplement-tracker --sign
Mac auto-signing: drop a spec, get a shortcut
iOS only imports signed shortcuts, and only a Mac can sign them. shortcut-forge makes that invisible:
shortcut-forge mac install-agent # launchd agent, starts at login
iCloud Drive/Shortcut Forge/ ← drop *.json specs or *.unsigned.shortcut (from any device or AI)
iCloud Drive/Shortcut Forge/Signed/ ← signed .shortcut appears in seconds → open it on your iPhone
iCloud Drive/Shortcut Forge/Failed/ ← anything that failed lint, with a .log explaining why
Ask ChatGPT on your phone for a spec, save it to Files, and the shortcut is ready on the same phone before you finish your coffee. In Claude Desktop / Claude Code on a Mac, signing happens inside the tool call.
What people build with it
From the Open Shortcut Library. Every one is a readable spec, lint-clean in CI.
| | Shortcut | What it does | |---|---|---| | 🌤 | Morning Brief | Your messy thoughts → a 3-line plan by Apple Intelligence → a reminder | | 🎯 | Focus Block | Blocks 25/50/90 min on your calendar from right now | | ✅ | Meeting → Action Items | Notes in, reminders out, summary on the clipboard | | 🌐 | Clipboard Translate | Translate whatever you copied, result back on the clipboard | | ☕️ | Caffeine Log | One tap → Apple Health, warns past 400 mg | | 💸 | Expense Log | Amount + category → CSV in Stored Content → paste into your sheet | | 🅿️ | Parking Spot | Save where you parked, open it in Maps later | | 📡 | Webhook Trigger | POST JSON to n8n / Zapier / Home Assistant | | 🐙 | GitHub Issue | File an issue from your phone | | 🍱 | Lunch Picker | Reads options from a JSON URL: edit once, every phone updates, no reinstall | | 💊 | 영양제 체크 (the original) | The real 1,073-action shortcut that started this project. Two people, ten time slots, alternate-day doses, Health + Reminders + Apple Intelligence |
…and more: mood journal, sleep diary, grocery list, weather voice brief, low-battery nudge, water log.
Built something? Share it → Tell your AI "submit this to the shortcut-forge library".
Use it
Plain language in any MCP client:
- "Make a shortcut that asks how I slept and every Sunday has Apple Intelligence summarise the week."
- "Start from the library's expense log, but in won and with my categories."
- "Here's my exported shortcut. Why does it crash?" →
shortcut_lint+shortcut_inspect
Python: variables work in f-strings.
from shortcut_forge import Shortcut
sc = Shortcut("Hello", version="1.0.0")
name = sc.ask("What's your name?")
with sc.if_(name, "contains", "Claude") as br:
sc.notify("Hi twin", f"Nice to meet another Claude, {name}")
br.otherwise()
sc.notify("Hi", f"Welcome, {name}")
sc.storage_set("last_name", name) # iOS 27 Stored Content, done right
sc.health_log("Vitamin D", "50") # mcg → mg handled for you
sc.save("Hello.unsigned.shortcut")
JSON (what the MCP tools and chatbots write): 50+ step types, plus a raw escape hatch for any action.
{"name": "Hello", "version": "1.0.0", "actions": [
{"ask": "What's your name?", "as": "name"},
{"if": ["{{name}}", "contains", "Claude"],
"then": [{"notify": "Hi twin", "body": "{{name}}"}],
"else": [{"notify": "Hi", "body": "Welcome, {{name}}"}]}
]}
MCP tools
| Tool | What it does |
|---|---|
| shortcut_build | JSON spec → .shortcut, always linted, signed on macOS |
| shortcut_library | Browse / fetch 20+ community shortcuts as starting points |
| shortcut_from_template | supplement-tracker (multi-user), water-log |
| shortcut_lint | 15 rules (SF000–SF014) for any unsigned shortcut, including ones exported from the app |
| shortcut_inspect | Indented outline of a shortcut |
| shortcut_sign | shortcuts sign wrapper, verifies the AEA1 header |
| shortcut_publish | Sign + manifest.json so installed copies can update themselves |
| shortcut_submit | Package your shortcut + PR commands for the library |
| shortcut_llm_prompt | System prompt for chatbots without MCP |
| shortcut_reference | spec · pitfalls · lint-rules · health-types · templates · library · ios27 |
Field notes: why "it imported" isn't "it works"
We built a two-person tracker by having Claude generate the plist. It took more than a dozen import → run → screenshot rounds. Every failure was invisible at build time:
| What we wrote | What the iPhone did | Rule |
|---|---|---|
| Stored Content set from a variable | Saved nothing, no error | SF001 |
| Health sample "77.4 mcg" of B12 | Logged 77,400,000 mcg (the unit string is read as grams) | SF003 |
| If <dictionary value> is "Lunch" | Comparison field empty → run aborted | SF005 |
| Delete a stored key that isn't there | Error 16 | SF002 |
| Mark found reminders as done | A picker popped up mid-run | SF007 |
| Get Contents of URL on every run | Offline once → whole shortcut aborts | SF014 |
| Create tomorrow's reminder | Duplicates on every run | builder |
The builder can't produce these; the linter catches them in any shortcut. Full notes: PITFALLS.md.
What is a .shortcut file?
- A
.shortcutfile (not.shortor.shortcuts) is an Apple Shortcuts workflow: a binary property list (WFWorkflowActions,WFWorkflowIcon, …) where every action is an identifier likeis.workflow.actions.gettextplus parameters. Variables are "token strings" with UTF-16 offsets. - Since iOS 15, shared shortcut files must be signed. A signed file is an Apple Encrypted Archive whose first
bytes are
AEA1. Unsigned plists import on a Mac but iOS refuses them. - Signing modes:
anyone(any device can import) orpeople-who-know-me(contacts only). Only macOS can sign (shortcuts sign), which is why shortcut-forge automates the Mac side. .wflowwas the format of the old Workflow app that became Shortcuts; iCloud links (icloud.com/shortcuts/…) are snapshots created from the app and can't be generated or updated programmatically.
FAQ
Do I need a Mac? To sign, yes (Apple's rule). Building and linting run anywhere; the watch-folder agent lets
one Mac sign for every device you own.
Does my data leave my machine? No. The server runs locally; nothing is uploaded. Library shortcuts that use
remote_config fetch only the JSON URL they name.
Is this affiliated with Apple or Anthropic?
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
109.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
79.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.8kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
98.8k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
