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. Invoked by /package command or natural language like 'create installer for TapeAge' or 'package GainKnob'.
Purpose: Create professional PKG installers for sharing plugins with others.
Generates macOS PKG installers with branded UI, automated plugin installation, and Gatekeeper bypass instructions.
<critical_sequence enforcement="strict" blocking="true">
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.
</critical_sequence>
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/size<decision_gate type="checkpoint" enforcement="strict">
After 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 command</decision_gate>
For 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:
npx skills add glittercowboy/plugin-packaging下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer