Create branded PKG installers for plugin distribution. Use when user requests to package a plugin, create installer, share plugin with others, or mentions distributing/sending plugin to someone...
Purpose: Create professional PKG installers for sharing plugins with others.
Generates macOS PKG installers with branded UI, automated plugin installation, and Gatekeeper bypass instructions.
Track your progress:
Plugin Packaging Progress:
- [ ] 1. Prerequisites verified (plugin installed, binaries exist)
- [ ] 2. Metadata extracted (contracts read, version/description/parameters)
- [ ] 3. Branding files created (Welcome, ReadMe, Conclusion)
- [ ] 4. Base package built (pkgbuild complete)
- [ ] 5. Branded installer created (productbuild complete)
- [ ] 6. Distribution package output (dist/ created, committed, PLUGINS.md updated)
Check plugin is ready for packaging:
~/Library/Audio/Plug-Ins/VST3/[ProductName].vst3~/Library/Audio/Plug-Ins/Components/[ProductName].componentBlocking: If not installed, guide user to run /install-plugin [PluginName] first.
Preconditions verified in this step:
Read multiple files in parallel using multiple Read tool calls:
plugins/[PluginName]/CMakeLists.txt (for PRODUCT_NAME extraction)plugins/[PluginName]/.ideas/parameter-spec.md (detailed parameter descriptions)plugins/[PluginName]/.ideas/creative-brief.md (features, use cases, design rationale)Extract PRODUCT_NAME using grep + sed (see Section 1.2 in references/pkg-creation.md).
Template variables to extract:
Generate Welcome.txt, ReadMe.txt, and Conclusion.txt by reading templates from assets/ and replacing {{VARIABLE}} placeholders with metadata from contracts (.ideas/parameter-spec.md and creative-brief.md provide richer content than PLUGINS.md).
See Section 3 in references/pkg-creation.md for complete bash implementation.
Create foundational PKG with installation logic:
4a. Create temp directory structure (see Section 4a in references/pkg-creation.md)
4b. Copy binaries to payload (see Section 4a in references/pkg-creation.md)
Validation: Verify binaries copied successfully. ONLY proceed to 4c when both files are present.
4c. Create postinstall script (see Section 4b in references/pkg-creation.md for complete script)
4d. Run pkgbuild (see Section 4c in references/pkg-creation.md for complete command)
Validation: Verify base PKG created. ONLY proceed to step 5 when PKG file exists.
Wrap base package with branding:
5a. Create Distribution.xml (see Section 5a in references/pkg-creation.md for complete XML structure)
5b. Run productbuild (see Section 5b in references/pkg-creation.md for complete command)
Validation: Verify branded PKG created. ONLY proceed to step 6 when branded PKG exists.
Finalize and present to user:
6a. Create dist directory (see Section 6a in references/pkg-creation.md)
6b. Copy installer (see Section 6b in references/pkg-creation.md)
6c. Generate install-readme.txt (see Section 6c in references/pkg-creation.md for complete template)
6d. Commit distribution package:
git add plugins/[PluginName]/dist/
git commit -m "feat([PluginName]): create v[X.Y.Z] distribution package"
6e. Update PLUGINS.md with packaging metadata:
**Last Packaged:** YYYY-MM-DD
**Distribution:** plugins/[PluginName]/dist/[PluginName]-by-TACHES.pkg (X.X MB)
6f. Display summary:
β [PluginName] packaged successfully
Created: plugins/[PluginName]/dist/[PluginName]-by-TACHES.pkg (X.X MB)
Distribution package includes:
- [PluginName]-by-TACHES.pkg (branded installer)
- install-readme.txt (installation guide)
Send both files to your friend.
Invoked by:
/package [PluginName] commandInvokes:
Reads:
PLUGINS.md β Plugin metadataplugins/[PluginName]/CMakeLists.txt β PRODUCT_NAME extraction~/Library/Audio/Plug-Ins/VST3/[Product].vst3 β Source binary~/Library/Audio/Plug-Ins/Components/[Product].component β Source binaryCreates:
plugins/[PluginName]/dist/[PluginName]-by-TACHES.pkg β Branded installerplugins/[PluginName]/dist/install-readme.txt β Installation guideUpdates:
PLUGINS.md β Add Last Packaged: timestamp and Distribution: package path/sizeAfter successful packaging, present this menu and WAIT for user response:
β [PluginName] packaged successfully
Created: plugins/[PluginName]/dist/[PluginName]-by-TACHES.pkg (X.X MB)
What's next?
1. Test installer (recommended) β Verify PKG works correctly
2. Package another plugin β /package [OtherPlugin]
3. View installation guide β Show install-readme.txt contents
4. Share distribution files β Instructions for sending to friend
5. Other
Choose (1-5): _
Option handlers:
cat commandFor error scenarios and troubleshooting, see references/pkg-creation.md Section 6 (Error Scenarios).
Packaging succeeds when:
plugins/[PluginName]/dist/NOT required for success:
When executing this skill:
rm -rf /tmp/[PluginName]-installer)Branding consistency: