shortcuts-playground 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +54 -0
  2. package/agents/shortcut-builder.md +172 -0
  3. package/agents/shortcut-remixer.md +239 -0
  4. package/commands/build-shortcut.md +32 -0
  5. package/commands/remix-shortcut.md +34 -0
  6. package/opencode.json +30 -0
  7. package/package.json +47 -0
  8. package/plugin/validator.ts +179 -0
  9. package/skills/shortcuts-playground/ACTIONS.md +713 -0
  10. package/skills/shortcuts-playground/APPINTENTS.md +2760 -0
  11. package/skills/shortcuts-playground/AUTOMATION_TRIGGERS.md +133 -0
  12. package/skills/shortcuts-playground/BEST_PRACTICES.md +357 -0
  13. package/skills/shortcuts-playground/CHANGELOG.md +585 -0
  14. package/skills/shortcuts-playground/CONTROL_FLOW.md +777 -0
  15. package/skills/shortcuts-playground/DATE_TIME.md +75 -0
  16. package/skills/shortcuts-playground/EXAMPLES.md +738 -0
  17. package/skills/shortcuts-playground/FILTERS.md +697 -0
  18. package/skills/shortcuts-playground/HEALTHKIT.md +317 -0
  19. package/skills/shortcuts-playground/ICONS_AND_COLORS.md +89 -0
  20. package/skills/shortcuts-playground/JAVASCRIPT_WEBPAGE.md +51 -0
  21. package/skills/shortcuts-playground/PARAMETER_TYPES.md +1117 -0
  22. package/skills/shortcuts-playground/PLIST_FORMAT.md +296 -0
  23. package/skills/shortcuts-playground/README.md +77 -0
  24. package/skills/shortcuts-playground/SKILL.md +459 -0
  25. package/skills/shortcuts-playground/THIRD_PARTY_ACTIONS.md +77 -0
  26. package/skills/shortcuts-playground/TOOLKIT_SNAPSHOT.md +62 -0
  27. package/skills/shortcuts-playground/URL_SCHEMES.md +59 -0
  28. package/skills/shortcuts-playground/VARIABLES.md +569 -0
  29. package/skills/shortcuts-playground/assets/shortcuts-small.svg +14 -0
  30. package/skills/shortcuts-playground/assets/shortcuts.png +0 -0
  31. package/skills/shortcuts-playground/data/healthkit-ios26.2-reference.json +2603 -0
  32. package/skills/shortcuts-playground/data/macos27-shortpy-grounding.json +4085 -0
  33. package/skills/shortcuts-playground/data/macos27-workflow-trigger-samples.json +1 -0
  34. package/skills/shortcuts-playground/data/shortcuts-glyph-synonyms.json +5102 -0
  35. package/skills/shortcuts-playground/data/shortcuts-icon-colors.json +107 -0
  36. package/skills/shortcuts-playground/data/shortcuts-official-glyph-mapping.json +509 -0
  37. package/skills/shortcuts-playground/data/toolkit-v63-tool-ids.json +1806 -0
  38. package/skills/shortcuts-playground/data/toolkit-v78-first-party-enum-cases.json +1 -0
  39. package/skills/shortcuts-playground/data/toolkit-v78-first-party-parameter-keys.json +1 -0
  40. package/skills/shortcuts-playground/data/toolkit-v78-ios27-tool-ids.json +1222 -0
  41. package/skills/shortcuts-playground/data/toolkit-v78-tool-ids.json +2745 -0
  42. package/skills/shortcuts-playground/data/toolkit-v78-trigger-parameter-keys.json +1051 -0
  43. package/skills/shortcuts-playground/golden-shortcuts/index.jsonl +19 -0
  44. package/skills/shortcuts-playground/golden-shortcuts/xml/1be4dde95b794253bf82438e201b33e7.xml +174 -0
  45. package/skills/shortcuts-playground/golden-shortcuts/xml/2e0fb675e45948aaacee7e534f910492.xml +1016 -0
  46. package/skills/shortcuts-playground/golden-shortcuts/xml/332c12a0060043b388b22b806be7ab58.xml +1924 -0
  47. package/skills/shortcuts-playground/golden-shortcuts/xml/3dd4ee24e43f464f92adaa70a0311eaa.xml +1177 -0
  48. package/skills/shortcuts-playground/golden-shortcuts/xml/4d102301c6e646faa7a8a221f4f4ec98.xml +321 -0
  49. package/skills/shortcuts-playground/golden-shortcuts/xml/51cc4e26d1044893a0c3f2f3630cf2d2.xml +1933 -0
  50. package/skills/shortcuts-playground/golden-shortcuts/xml/623e7f1ca5f948e2bd53811fec63e544.xml +136 -0
  51. package/skills/shortcuts-playground/golden-shortcuts/xml/6a18b76843ac45c384ac3400f3740997.xml +1791 -0
  52. package/skills/shortcuts-playground/golden-shortcuts/xml/71f0cacb0f604b399b76c5dcb7286e7c.xml +2228 -0
  53. package/skills/shortcuts-playground/golden-shortcuts/xml/807525ed9f974829bc8494defac923a8.xml +259 -0
  54. package/skills/shortcuts-playground/golden-shortcuts/xml/8ab0d39826ab4249be58672763caa3ba.xml +420 -0
  55. package/skills/shortcuts-playground/golden-shortcuts/xml/91c45fd3fd3b427897d9ba485efb1227.xml +800 -0
  56. package/skills/shortcuts-playground/golden-shortcuts/xml/97be626bb25c41709d175646a7f6d8f2.xml +424 -0
  57. package/skills/shortcuts-playground/golden-shortcuts/xml/ae59e10d409348f9bd33894f03f9beb4.xml +568 -0
  58. package/skills/shortcuts-playground/golden-shortcuts/xml/afa83b6be811483b9c32189c41eb9312.xml +391 -0
  59. package/skills/shortcuts-playground/golden-shortcuts/xml/cfdb083b857e4ac189629fa386d27cdc.xml +193 -0
  60. package/skills/shortcuts-playground/golden-shortcuts/xml/e01cebe192d64b2fbca80204d03d92ab.xml +111 -0
  61. package/skills/shortcuts-playground/golden-shortcuts/xml/ef669bcf8bad489d9ef4b88bfaf5772f.xml +780 -0
  62. package/skills/shortcuts-playground/golden-shortcuts/xml/f44f5caf5e3e48d4817e73af450c4404.xml +570 -0
  63. package/skills/shortcuts-playground/scripts/generate_healthkit_reference.py +394 -0
  64. package/skills/shortcuts-playground/scripts/lookup_action_grounding.py +1164 -0
  65. package/skills/shortcuts-playground/scripts/select_shortcut_icon_color.py +597 -0
  66. package/skills/shortcuts-playground/scripts/test_random_mixed_shortcuts.py +1067 -0
  67. package/skills/shortcuts-playground/scripts/test_wiring_regressions.py +2247 -0
  68. package/skills/shortcuts-playground/scripts/validate_shortcut.py +4526 -0
@@ -0,0 +1,296 @@
1
+ # Shortcut Plist Format
2
+
3
+ Complete documentation of the `.shortcut` file structure.
4
+
5
+ **Related docs:**
6
+ - [ACTIONS.md](./ACTIONS.md) - Action identifiers and parameters
7
+ - [FILTERS.md](./FILTERS.md) - Content filters for Find/Filter actions
8
+ - [PARAMETER_TYPES.md](./PARAMETER_TYPES.md) - All parameter value types
9
+ - [VARIABLES.md](./VARIABLES.md) - Variable references and outputs
10
+ - [CONTROL_FLOW.md](./CONTROL_FLOW.md) - Conditionals, loops, menus
11
+
12
+ ## Root Structure
13
+
14
+ A `.shortcut` file is a binary plist (can be written as XML, then converted). The root is a dictionary with these keys:
15
+
16
+ ```xml
17
+ <?xml version="1.0" encoding="UTF-8"?>
18
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
19
+ <plist version="1.0">
20
+ <dict>
21
+ <!-- REQUIRED -->
22
+ <key>WFWorkflowActions</key>
23
+ <array>
24
+ <!-- Array of action dictionaries -->
25
+ </array>
26
+
27
+ <!-- REQUIRED - Version info -->
28
+ <key>WFWorkflowClientVersion</key>
29
+ <string>2700.0.4</string>
30
+ <key>WFWorkflowClientRelease</key>
31
+ <string>26A0000a</string>
32
+ <key>WFWorkflowMinimumClientVersion</key>
33
+ <integer>900</integer>
34
+ <key>WFWorkflowMinimumClientVersionString</key>
35
+ <string>900</string>
36
+
37
+ <!-- REQUIRED - Icon -->
38
+ <key>WFWorkflowIcon</key>
39
+ <dict>
40
+ <key>WFWorkflowIconGlyphNumber</key>
41
+ <integer>61440</integer>
42
+ <key>WFWorkflowIconStartColor</key>
43
+ <integer>431817727</integer>
44
+ </dict>
45
+
46
+ <!-- OPTIONAL - Shortcut name (displayed in app) -->
47
+ <key>WFWorkflowName</key>
48
+ <string>My Shortcut</string>
49
+
50
+ <!-- OPTIONAL - Usually empty arrays -->
51
+ <key>WFWorkflowHasOutputFallback</key>
52
+ <false/>
53
+ <key>WFWorkflowImportQuestions</key>
54
+ <array/>
55
+ <key>WFWorkflowOutputContentItemClasses</key>
56
+ <array/>
57
+ <key>WFWorkflowTypes</key>
58
+ <array/>
59
+
60
+ <!-- OPTIONAL - Input content types accepted -->
61
+ <key>WFWorkflowInputContentItemClasses</key>
62
+ <array>
63
+ <string>WFStringContentItem</string>
64
+ <string>WFURLContentItem</string>
65
+ <!-- ... more content types ... -->
66
+ </array>
67
+ </dict>
68
+ </plist>
69
+ ```
70
+
71
+ ## Root Keys Reference
72
+
73
+ | Key | Type | Required | Description |
74
+ |-----|------|----------|-------------|
75
+ | `WFWorkflowActions` | Array | Yes | Array of action dictionaries |
76
+ | `WFWorkflowClientVersion` | String | Yes | Client version (e.g., "2700.0.4") |
77
+ | `WFWorkflowClientRelease` | String | No | Release identifier |
78
+ | `WFWorkflowMinimumClientVersion` | Integer | Yes | Minimum version number (900+) |
79
+ | `WFWorkflowMinimumClientVersionString` | String | Yes | String version of minimum |
80
+ | `WFWorkflowIcon` | Dict | Yes | Icon configuration |
81
+ | `WFWorkflowName` | String | No | Display name |
82
+ | `WFWorkflowHasOutputFallback` | Boolean | No | Has output fallback |
83
+ | `WFWorkflowImportQuestions` | Array | No | Import-time questions |
84
+ | `WFWorkflowInputContentItemClasses` | Array | No | Accepted input types |
85
+ | `WFWorkflowOutputContentItemClasses` | Array | No | Output types |
86
+ | `WFWorkflowTypes` | Array | No | Workflow types |
87
+ | `WFWorkflowHasShortcutInputVariables` | Boolean | No | True if shortcut uses input variables |
88
+ | `WFWorkflowIsDisabledOnLockScreen` | Boolean | No | Prevents execution from Lock Screen |
89
+ | `WFWorkflowQuickActionSurfaces` | Array | No | Surfaces where shortcut appears as quick action |
90
+
91
+ ## Icon Configuration
92
+
93
+ ```xml
94
+ <key>WFWorkflowIcon</key>
95
+ <dict>
96
+ <key>WFWorkflowIconGlyphNumber</key>
97
+ <integer>61440</integer>
98
+ <key>WFWorkflowIconStartColor</key>
99
+ <integer>431817727</integer>
100
+ </dict>
101
+ ```
102
+
103
+ Use the resolver and data files documented in [ICONS_AND_COLORS.md](./ICONS_AND_COLORS.md) to pick icon values.
104
+
105
+ ### Required Icon Keys
106
+
107
+ | Key | Type | Required | Notes |
108
+ |---|---|---|---|
109
+ | `WFWorkflowIconGlyphNumber` | Integer | Yes | One of the official 507 Shortcuts glyph codes |
110
+ | `WFWorkflowIconStartColor` | Integer | Yes | One of the 15 Shortcuts palette colors (canonical or alias integer) |
111
+
112
+ ### Common Glyph Numbers
113
+
114
+ | Glyph | Number | Description |
115
+ |---|---:|---|
116
+ | shortcuts | `61440` | Default/fallback app icon |
117
+ | cloud | `59714` | Weather/cloud workflows |
118
+ | map | `61444` | Navigation/location workflows |
119
+ | checklist | `61587` | Tasks/todo workflows |
120
+ | dollarSign | `59395` | Finance/expense workflows |
121
+ | command | `61529` | Developer/terminal workflows |
122
+ | robot | `61566` | AI assistant workflows |
123
+ | paperAirplane | `59836` | Send/share workflows |
124
+
125
+ ### Color Values (Shortcuts Palette)
126
+
127
+ Colors are 32-bit integers. Canonical values:
128
+
129
+ | Color | Value | Hex |
130
+ |---|---:|---|
131
+ | Red | `4282601983` | `#F36F74` |
132
+ | Orange | `4251333119` | `#FF8E73` |
133
+ | Yellow | `4271458815` | `#F8AE5F` |
134
+ | Gold | `4274264319` | `#E8CA45` |
135
+ | Green | `4292093695` | `#53CD6B` |
136
+ | Teal | `431817727` | `#57CFB4` |
137
+ | Cyan | `1440408063` | `#5ACCDE` |
138
+ | Blue | `463140863` | `#24BAF7` |
139
+ | Navy | `946986751` | `#5874CA` |
140
+ | Purple | `2071128575` | `#9164C7` |
141
+ | Lavender | `3679049983` | `#C085E6` |
142
+ | Pink | `3980825855` | `#F694D8` |
143
+ | Gray | `255` | `#9099A3` |
144
+ | Sage | `3031607807` | `#9DA79D` |
145
+ | Tan | `2846468607` | `#A49995` |
146
+
147
+ ## Action Structure
148
+
149
+ Each action in `WFWorkflowActions` is a dictionary:
150
+
151
+ ```xml
152
+ <dict>
153
+ <key>WFWorkflowActionIdentifier</key>
154
+ <string>is.workflow.actions.showresult</string>
155
+ <key>WFWorkflowActionParameters</key>
156
+ <dict>
157
+ <!-- Action-specific parameters -->
158
+ <key>UUID</key>
159
+ <string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890</string>
160
+ <!-- ... more parameters ... -->
161
+ </dict>
162
+ </dict>
163
+ ```
164
+
165
+ ### Action Keys
166
+
167
+ | Key | Type | Required | Description |
168
+ |-----|------|----------|-------------|
169
+ | `WFWorkflowActionIdentifier` | String | Yes | Action identifier (e.g., `is.workflow.actions.showresult`) |
170
+ | `WFWorkflowActionParameters` | Dict | Yes | Action configuration |
171
+
172
+ ### Common Parameter Keys
173
+
174
+ | Key | Type | Description |
175
+ |-----|------|-------------|
176
+ | `UUID` | String | Unique ID for referencing this action's output |
177
+ | `GroupingIdentifier` | String | Links control flow actions (repeat, if, menu) |
178
+ | `WFControlFlowMode` | Integer | 0=start, 1=middle, 2=end |
179
+
180
+ ## Input Content Item Classes
181
+
182
+ These define what input types the shortcut accepts:
183
+
184
+ ```xml
185
+ <key>WFWorkflowInputContentItemClasses</key>
186
+ <array>
187
+ <string>WFAppStoreAppContentItem</string>
188
+ <string>WFArticleContentItem</string>
189
+ <string>WFContactContentItem</string>
190
+ <string>WFDateContentItem</string>
191
+ <string>WFEmailAddressContentItem</string>
192
+ <string>WFGenericFileContentItem</string>
193
+ <string>WFImageContentItem</string>
194
+ <string>WFiTunesProductContentItem</string>
195
+ <string>WFLocationContentItem</string>
196
+ <string>WFDCMapsLinkContentItem</string>
197
+ <string>WFAVAssetContentItem</string>
198
+ <string>WFPDFContentItem</string>
199
+ <string>WFPhoneNumberContentItem</string>
200
+ <string>WFRichTextContentItem</string>
201
+ <string>WFSafariWebPageContentItem</string>
202
+ <string>WFStringContentItem</string>
203
+ <string>WFURLContentItem</string>
204
+ </array>
205
+ ```
206
+
207
+ ## Binary vs XML Plist
208
+
209
+ Shortcuts are stored as binary plists but can be created as XML:
210
+
211
+ ```bash
212
+ # Convert XML to binary (optional - signing handles this)
213
+ plutil -convert binary1 MyShortcut.shortcut
214
+
215
+ # Convert binary to XML (for inspection)
216
+ plutil -convert xml1 MyShortcut.shortcut
217
+ ```
218
+
219
+ The `shortcuts sign` command accepts both formats.
220
+
221
+ ## Complete Template
222
+
223
+ ```xml
224
+ <?xml version="1.0" encoding="UTF-8"?>
225
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
226
+ <plist version="1.0">
227
+ <dict>
228
+ <key>WFWorkflowActions</key>
229
+ <array>
230
+ <dict>
231
+ <key>WFWorkflowActionIdentifier</key>
232
+ <string>is.workflow.actions.gettext</string>
233
+ <key>WFWorkflowActionParameters</key>
234
+ <dict>
235
+ <key>UUID</key>
236
+ <string>11111111-1111-1111-1111-111111111111</string>
237
+ <key>WFTextActionText</key>
238
+ <string>Hello World!</string>
239
+ </dict>
240
+ </dict>
241
+ <dict>
242
+ <key>WFWorkflowActionIdentifier</key>
243
+ <string>is.workflow.actions.showresult</string>
244
+ <key>WFWorkflowActionParameters</key>
245
+ <dict>
246
+ <key>Text</key>
247
+ <dict>
248
+ <key>Value</key>
249
+ <dict>
250
+ <key>attachmentsByRange</key>
251
+ <dict>
252
+ <key>{0, 1}</key>
253
+ <dict>
254
+ <key>OutputName</key>
255
+ <string>Text</string>
256
+ <key>OutputUUID</key>
257
+ <string>11111111-1111-1111-1111-111111111111</string>
258
+ <key>Type</key>
259
+ <string>ActionOutput</string>
260
+ </dict>
261
+ </dict>
262
+ <key>string</key>
263
+ <string></string>
264
+ </dict>
265
+ <key>WFSerializationType</key>
266
+ <string>WFTextTokenString</string>
267
+ </dict>
268
+ </dict>
269
+ </dict>
270
+ </array>
271
+ <key>WFWorkflowClientVersion</key>
272
+ <string>2700.0.4</string>
273
+ <key>WFWorkflowHasOutputFallback</key>
274
+ <false/>
275
+ <key>WFWorkflowIcon</key>
276
+ <dict>
277
+ <key>WFWorkflowIconGlyphNumber</key>
278
+ <integer>61440</integer>
279
+ <key>WFWorkflowIconStartColor</key>
280
+ <integer>431817727</integer>
281
+ </dict>
282
+ <key>WFWorkflowImportQuestions</key>
283
+ <array/>
284
+ <key>WFWorkflowMinimumClientVersion</key>
285
+ <integer>900</integer>
286
+ <key>WFWorkflowMinimumClientVersionString</key>
287
+ <string>900</string>
288
+ <key>WFWorkflowName</key>
289
+ <string>Hello World</string>
290
+ <key>WFWorkflowOutputContentItemClasses</key>
291
+ <array/>
292
+ <key>WFWorkflowTypes</key>
293
+ <array/>
294
+ </dict>
295
+ </plist>
296
+ ```
@@ -0,0 +1,77 @@
1
+ # Shortcuts Playground Skill
2
+
3
+ Claude Code skill for AI-assisted generation and remixing of macOS/iOS Shortcuts. It produces valid Shortcuts plist XML, validates it with the bundled preflight validator, and signs it on macOS with Apple's `shortcuts` CLI through plugin-provided wrapper commands.
4
+
5
+ ## Documentation Entry Points
6
+
7
+ - Start with [SKILL.md](SKILL.md) for workflow and high-level rules.
8
+ - Treat [BEST_PRACTICES.md](BEST_PRACTICES.md) as mandatory policy.
9
+ - Use [ACTIONS.md](ACTIONS.md), [APPINTENTS.md](APPINTENTS.md), and [THIRD_PARTY_ACTIONS.md](THIRD_PARTY_ACTIONS.md) as identifier references.
10
+ - Use [HEALTHKIT.md](HEALTHKIT.md) for iOS/iPadOS Health actions.
11
+ - Use [EXAMPLES.md](EXAMPLES.md) and `golden-shortcuts/index.jsonl` for working XML patterns.
12
+
13
+ ## Claude Code Usage
14
+
15
+ Install the parent Claude Code plugin, then use either slash command:
16
+
17
+ - `/shortcuts-playground:build <brief>` creates a new shortcut from scratch.
18
+ - `/shortcuts-playground:remix <absolute-path-to-xml> <change>` applies a surgical diff to an existing unsigned XML shortcut.
19
+
20
+ The Claude package provides slash commands, specialized agents, a PostToolUse validation hook, and PATH wrapper commands:
21
+
22
+ ```bash
23
+ resolve-icon --prompt "Build a weather shortcut"
24
+ validate-shortcut /path/to/Shortcut.xml
25
+ sign-shortcut /path/to/Shortcut.xml --name "Shortcut Name"
26
+ ```
27
+
28
+ `sign-shortcut` defaults to `CLAUDE_PLUGIN_OPTION_OUTPUT_DIR` or `~/Documents/Shortcuts Playground`, and `CLAUDE_PLUGIN_OPTION_SIGNING_MODE` or `anyone`.
29
+
30
+ If `shortcuts sign` reports that a validator-clean plist "isn't in the correct format", use the bundled signer wrapper or retry after binary plist conversion before assuming the XML is malformed. If XML and binary signing both fail, retry from an unrestricted shell and check filesystem permissions.
31
+
32
+ ## What's Included
33
+
34
+ | File | Description |
35
+ |------|-------------|
36
+ | [SKILL.md](SKILL.md) | Skill definition with Claude Code workflow rules |
37
+ | [ACTIONS.md](ACTIONS.md) | WF*Action identifiers and parameters |
38
+ | [APPINTENTS.md](APPINTENTS.md) | AppIntent actions (ToolKit v63 base coverage plus target-gated v78 identifiers, parameters, enum values, and research notes) |
39
+ | [PARAMETER_TYPES.md](PARAMETER_TYPES.md) | Parameter value types and serialization formats |
40
+ | [PLIST_FORMAT.md](PLIST_FORMAT.md) | Complete plist structure |
41
+ | [BEST_PRACTICES.md](BEST_PRACTICES.md) | Mandatory generation guidelines |
42
+ | [HEALTHKIT.md](HEALTHKIT.md) | HealthKit action schemas and examples |
43
+ | [CONTROL_FLOW.md](CONTROL_FLOW.md) | Repeat, conditional, and menu patterns |
44
+ | [AUTOMATION_TRIGGERS.md](AUTOMATION_TRIGGERS.md) | OS 27 ToolKit automation trigger metadata plus exported `WFWorkflowTriggers` samples for automation shortcuts |
45
+ | [FILTERS.md](FILTERS.md) | Filter action predicates |
46
+ | [VARIABLES.md](VARIABLES.md) | Variable reference patterns |
47
+ | [ICONS_AND_COLORS.md](ICONS_AND_COLORS.md) | Icon glyph and color selection |
48
+ | [EXAMPLES.md](EXAMPLES.md) | Complete working examples |
49
+ | [URL_SCHEMES.md](URL_SCHEMES.md) | Shortcuts URL scheme and x-callback-url guidance |
50
+ | [JAVASCRIPT_WEBPAGE.md](JAVASCRIPT_WEBPAGE.md) | Run JavaScript on Webpage rules |
51
+ | [DATE_TIME.md](DATE_TIME.md) | Date/time recipes and custom format guidance |
52
+ | [THIRD_PARTY_ACTIONS.md](THIRD_PARTY_ACTIONS.md) | Third-party actions (ToolKit + backups) |
53
+ | [TOOLKIT_SNAPSHOT.md](TOOLKIT_SNAPSHOT.md) | Bundled ToolKit ID snapshots and field coverage |
54
+ | `scripts/select_shortcut_icon_color.py` | Natural-language icon/color resolver |
55
+ | `scripts/lookup_action_grounding.py` | Read-only lookup for reviewed Apple-derived macOS 27 Shortpy/WF mappings |
56
+ | `scripts/validate_shortcut.py` | Preflight validator |
57
+ | `scripts/test_wiring_regressions.py` | Deterministic validator regression suite |
58
+ | `scripts/test_random_mixed_shortcuts.py` | Random mixed-action validator suite |
59
+ | `data/toolkit-v63-tool-ids.json` | Bundled ToolKit v63 action-ID allowlist |
60
+ | `data/toolkit-v78-tool-ids.json` | Bundled macOS 27 ToolKit v78 action-ID allowlist, gated by validator target |
61
+ | `data/toolkit-v78-ios27-tool-ids.json` | Bundled iOS 27 Simulator ToolKit v78 action-ID allowlist, gated by validator target |
62
+ | `data/toolkit-v78-first-party-parameter-keys.json` | Target-gated OS 27 first-party parameter-key/name/type catalog for AppIntent schema checks |
63
+ | `data/toolkit-v78-first-party-enum-cases.json` | Static OS 27 enum-case catalog for ToolKit action and trigger parameter type names |
64
+ | `data/toolkit-v78-trigger-parameter-keys.json` | OS 27 ToolKit automation trigger IDs, Python names, parameter keys, and output types |
65
+ | `data/macos27-workflow-trigger-samples.json` | Sanitized exported `WFWorkflowTriggers` samples for OS 27 automation headers |
66
+ | `data/macos27-shortpy-grounding.json` | Reviewed static Apple-derived grounding catalog for macOS 27 action schemas and Shortpy names |
67
+ | `data/healthkit-ios26.2-reference.json` | HealthKit types, category values, workout types, and units |
68
+
69
+ ## Requirements
70
+
71
+ - Python 3.10+ for validation.
72
+ - macOS with the built-in `shortcuts` CLI for signing.
73
+ - Claude Code with plugin support.
74
+
75
+ ## License
76
+
77
+ MIT