一键导入
module-lifecycle
Manage complete module lifecycle - install, uninstall, reset, destroy
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manage complete module lifecycle - install, uninstall, reset, destroy
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Build coordination wrapper for VCV Rack modules using Makefile
Load module context from handoff files to resume work
Multi-agent parallel investigation for complex VCV Rack problems
Validate panel ↔ creative brief consistency, catch design drift
Adaptive brainstorming for VCV Rack module concepts and improvements
Version management, bug fixes, feature additions for VCV Rack modules
| name | module-lifecycle |
| description | Manage complete module lifecycle - install, uninstall, reset, destroy |
| allowed-tools | ["Bash","Read","Edit","Write"] |
| preconditions | ["Varies by mode (see mode-specific preconditions)"] |
Purpose: Manage the complete lifecycle of VCV Rack modules from installation to removal with proper state tracking and safety features.
This skill handles all module lifecycle operations:
~/Documents/Rack2/plugins-[platform]-[arch]/)All operations include proper platform detection, state tracking, and safety features (confirmations, backups).
This skill operates in different modes based on the invoking command:
| Mode | Operation | Command | Purpose |
|---|---|---|---|
| 1 | Installation | /install-module | Deploy to VCV Rack plugins folder |
| 2 | Uninstallation | /uninstall | Remove plugin, keep source |
| 3 | Reset to Ideation | /reset-to-ideation | Remove implementation, keep idea/mockups |
| 4 | Destroy | /destroy | Complete removal with backup |
| Menu | Interactive | /clean | Present menu, user chooses mode |
Pattern: Commands are thin routers that invoke this skill with a specific mode. The skill dispatches to the appropriate reference file for detailed implementation.
Why this matters:
VCV Rack scans the plugins directory for modules. Installing to the correct location ensures your module appears in VCV Rack's module browser.
Plugin directories by platform:
~/Documents/Rack2/plugins-mac-arm64/~/Documents/Rack2/plugins-mac-x64/~/Documents/Rack2/plugins-linux-x64/%USERPROFILE%\Documents\Rack2\plugins-win-x64\The complete installation process:
See references/installation-process.md for complete implementation.
Detect current platform:
# Determine platform
PLATFORM=$(uname -s)
ARCH=$(uname -m)
case "$PLATFORM" in
Darwin)
if [[ "$ARCH" == "arm64" ]]; then
RACK_PLATFORM="mac-arm64"
else
RACK_PLATFORM="mac-x64"
fi
;;
Linux)
RACK_PLATFORM="linux-x64"
;;
MINGW*|MSYS*|CYGWIN*)
RACK_PLATFORM="win-x64"
;;
*)
echo "Unknown platform: $PLATFORM"
exit 1
;;
esac
echo "Detected platform: $RACK_PLATFORM"
Standard VCV Rack plugin directories:
# Platform-specific plugin directories
case "$RACK_PLATFORM" in
mac-arm64|mac-x64)
PLUGINS_DIR="$HOME/Documents/Rack2/plugins-$RACK_PLATFORM"
;;
linux-x64)
PLUGINS_DIR="$HOME/Documents/Rack2/plugins-$RACK_PLATFORM"
;;
win-x64)
PLUGINS_DIR="$USERPROFILE/Documents/Rack2/plugins-$RACK_PLATFORM"
;;
esac
# Verify directory exists
if [[ ! -d "$PLUGINS_DIR" ]]; then
echo "VCV Rack plugins directory not found: $PLUGINS_DIR"
echo "Is VCV Rack 2 installed?"
exit 1
fi
Check for built plugin:
# Extract version from plugin.json
VERSION=$(jq -r '.version' "modules/$MODULE_NAME/plugin.json")
# Expected plugin file
PLUGIN_FILE="modules/$MODULE_NAME/dist/$MODULE_NAME-$VERSION-$RACK_PLATFORM.vcvplugin"
if [[ ! -f "$PLUGIN_FILE" ]]; then
echo "Plugin file not found: $PLUGIN_FILE"
echo ""
echo "Would you like to build it now?"
echo "1. Yes, build and install"
echo "2. No, exit"
echo ""
read -p "Choose (1-2): " choice
if [[ "$choice" == "1" ]]; then
# Invoke build-automation skill
echo "Building module..."
make -C "modules/$MODULE_NAME" dist
# Check if build succeeded
if [[ ! -f "$PLUGIN_FILE" ]]; then
echo "Build failed. Check logs/[ModuleName]/build_*.log"
exit 1
fi
else
exit 0
fi
fi
1. Remove old versions:
# Find existing installations
OLD_PLUGINS=$(find "$PLUGINS_DIR" -name "$MODULE_NAME-*.vcvplugin" -o -type d -name "$MODULE_NAME")
if [[ -n "$OLD_PLUGINS" ]]; then
echo "Removing old versions..."
echo "$OLD_PLUGINS" | while read -r old_plugin; do
rm -rf "$old_plugin"
echo " Removed: $old_plugin"
done
fi
2. Copy plugin file:
# Copy to plugins directory
cp "$PLUGIN_FILE" "$PLUGINS_DIR/"
echo "✓ Installed: $PLUGINS_DIR/$(basename $PLUGIN_FILE)"
3. Verification:
# Verify installation
INSTALLED_PLUGIN="$PLUGINS_DIR/$(basename $PLUGIN_FILE)"
if [[ -f "$INSTALLED_PLUGIN" ]]; then
FILE_SIZE=$(ls -lh "$INSTALLED_PLUGIN" | awk '{print $5}')
echo "✓ File present: $FILE_SIZE"
# Check modification time (should be recent)
MOD_TIME=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$INSTALLED_PLUGIN")
echo "✓ Modified: $MOD_TIME"
else
echo "✗ Installation verification failed"
exit 1
fi
No cache clearing needed:
VCV Rack automatically detects new plugins on launch. No cache clearing is required unlike DAW plugins.
Update MODULES.md:
**Status:** 📦 Installed
**Version:** [X.Y.Z]
**Last Updated:** [YYYY-MM-DD]
**Installation:**
- Platform: [mac-arm64 | mac-x64 | linux-x64 | win-x64]
- Location: ~/Documents/Rack2/plugins-[platform]/[ModuleName]-[version]-[platform].vcvplugin
Complete uninstallation process:
See references/uninstallation-process.md for complete implementation.
1. Platform detection:
# Detect platform (same as installation)
PLATFORM=$(uname -s)
ARCH=$(uname -m)
# ... (platform detection code)
2. Find installed files:
# Plugins directory
PLUGINS_DIR="$HOME/Documents/Rack2/plugins-$RACK_PLATFORM"
# Find all installations of this module
INSTALLED_FILES=$(find "$PLUGINS_DIR" -name "$MODULE_NAME-*.vcvplugin" -o -type d -name "$MODULE_NAME")
if [[ -z "$INSTALLED_FILES" ]]; then
echo "Module not found in plugins directory"
exit 0
fi
echo "Found installations:"
echo "$INSTALLED_FILES"
3. Confirm removal:
echo ""
echo "Remove these files?"
echo "1. Yes, uninstall"
echo "2. No, cancel"
echo ""
read -p "Choose (1-2): " choice
if [[ "$choice" != "1" ]]; then
echo "Cancelled"
exit 0
fi
4. Remove files:
echo "Uninstalling..."
echo "$INSTALLED_FILES" | while read -r file; do
rm -rf "$file"
echo " Removed: $file"
done
echo "✓ Uninstallation complete"
5. Update MODULES.md:
Change status from 📦 Installed to ✅ Working:
**Status:** ✅ Working
**Version:** [X.Y.Z]
**Last Updated:** [YYYY-MM-DD]
Surgical rollback that removes implementation but preserves ideation artifacts:
What gets preserved:
What gets removed:
Use case: Implementation went wrong, but the concept and panel design are solid. Start fresh from Stage 0.
See references/mode-3-reset.md for complete implementation.
1. Verify module exists:
if [[ ! -d "modules/$MODULE_NAME" ]]; then
echo "Module not found: $MODULE_NAME"
exit 1
fi
2. Check status (block if in development):
STATUS=$(grep -A 3 "^### $MODULE_NAME$" MODULES.md | grep "Status:" | awk '{print $2}')
if [[ "$STATUS" == "🚧" ]]; then
echo "Cannot reset module that is still in development"
echo "Complete or cancel the workflow first with /continue"
exit 1
fi
3. Create backup before reset:
BACKUP_DIR="backups/$MODULE_NAME-reset-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r "modules/$MODULE_NAME" "$BACKUP_DIR/"
echo "✓ Backup created: $BACKUP_DIR"
4. Preserve ideation artifacts:
# Keep these directories/files
PRESERVE_FILES=(
".ideas/creative-brief.md"
".ideas/mockups/"
".ideas/parameter-spec.md"
"res/*.svg" # Panel designs
"plugin.json" # Basic module info
)
# Create temporary directory
TEMP_DIR=$(mktemp -d)
for file in "${PRESERVE_FILES[@]}"; do
if [[ -e "modules/$MODULE_NAME/$file" ]]; then
mkdir -p "$TEMP_DIR/$(dirname $file)"
cp -r "modules/$MODULE_NAME/$file" "$TEMP_DIR/$file"
fi
done
5. Remove implementation:
# Remove everything
rm -rf "modules/$MODULE_NAME"
# Restore preserved files
mkdir -p "modules/$MODULE_NAME"
cp -r "$TEMP_DIR/"* "modules/$MODULE_NAME/"
rm -rf "$TEMP_DIR"
echo "✓ Implementation removed, ideation artifacts preserved"
6. Uninstall from VCV Rack:
# Remove from plugins directory
PLUGINS_DIR="$HOME/Documents/Rack2/plugins-$RACK_PLATFORM"
find "$PLUGINS_DIR" -name "$MODULE_NAME-*" -exec rm -rf {} \;
7. Update MODULES.md:
**Status:** 💡 Ideated
**Version:** -
**Last Updated:** [YYYY-MM-DD]
**Note:** Reset to ideation - implementation removed, concept preserved
Complete removal with backup for abandoned modules:
What gets removed:
Safety features:
Use case: Abandoned experiment, complete failure, duplicate by mistake. Never using this module again.
See references/mode-4-destroy.md for complete implementation.
1. Verify module exists:
if [[ ! -d "modules/$MODULE_NAME" ]]; then
echo "Module not found: $MODULE_NAME"
exit 1
fi
2. Check status (block if in development):
STATUS=$(grep -A 3 "^### $MODULE_NAME$" MODULES.md | grep "Status:" | awk '{print $2}')
if [[ "$STATUS" == "🚧" ]]; then
echo "Cannot destroy module that is still in development"
echo "Complete or cancel the workflow first with /continue"
exit 1
fi
3. Confirmation (require exact name):
echo "⚠️ WARNING: This will completely remove $MODULE_NAME"
echo ""
echo "This will delete:"
echo "- Source code (modules/$MODULE_NAME/)"
echo "- Installed plugin (if any)"
echo "- MODULES.md entry"
echo ""
echo "A timestamped backup will be created first."
echo ""
echo "To confirm, type the module name exactly: $MODULE_NAME"
read -p "> " confirmation
if [[ "$confirmation" != "$MODULE_NAME" ]]; then
echo "Confirmation failed. Destruction cancelled."
exit 0
fi
4. Create timestamped backup:
BACKUP_DIR="backups/$MODULE_NAME-destroyed-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r "modules/$MODULE_NAME" "$BACKUP_DIR/"
echo "✓ Backup created: $BACKUP_DIR"
5. Remove everything:
# Remove source
rm -rf "modules/$MODULE_NAME"
echo "✓ Removed source code"
# Remove from plugins directory
PLUGINS_DIR="$HOME/Documents/Rack2/plugins-$RACK_PLATFORM"
find "$PLUGINS_DIR" -name "$MODULE_NAME-*" -exec rm -rf {} \;
echo "✓ Removed installed plugin"
# Remove from MODULES.md
sed -i.bak "/^### $MODULE_NAME$/,/^### /{ /^### $MODULE_NAME$/d; /^### /!d; }" MODULES.md
echo "✓ Removed MODULES.md entry"
6. Optional: Remove troubleshooting docs:
echo ""
echo "Remove troubleshooting docs mentioning this module?"
echo "1. Yes, clean up docs"
echo "2. No, keep docs for reference"
echo ""
read -p "Choose (1-2): " choice
if [[ "$choice" == "1" ]]; then
# Find and remove docs mentioning this module
grep -rl "$MODULE_NAME" troubleshooting/ | while read -r doc; do
rm "$doc"
echo " Removed: $doc"
done
fi
7. Final confirmation:
✓ Module destroyed: [ModuleName]
Backup location: backups/[ModuleName]-destroyed-[timestamp]/
To restore from backup:
cp -r backups/[ModuleName]-destroyed-[timestamp]/[ModuleName] modules/
# Then rebuild: make -C modules/[ModuleName]
When invoked via /clean [ModuleName], present interactive menu:
Module cleanup options for [ModuleName]:
1. Uninstall - Remove from VCV Rack plugins folder (keep source code)
2. Reset to ideation - Remove implementation, keep idea/mockups
3. Destroy - Complete removal with backup (IRREVERSIBLE except via backup)
4. Cancel
Choose (1-4): _
Menu logic:
Common error scenarios with troubleshooting:
See references/error-handling.md for all error scenarios and fixes.
After successful installation:
✓ [ModuleName] installed successfully
What's next?
1. Test in VCV Rack (recommended) → Launch VCV Rack and test module
2. Create another module → /dream
3. Document this module → Create user manual
4. Share module (export build) → Package for distribution
5. Other
Choose (1-5): _
Handle responses:
module-ideation skill.ideas/Invoked by:
/install-module [ModuleName] → Mode 1 (Installation)/uninstall [ModuleName] → Mode 2 (Uninstallation)/reset-to-ideation [ModuleName] → Mode 3 (Reset)/destroy [ModuleName] → Mode 4 (Destroy)/clean [ModuleName] → Interactive menumodule-workflow skill → After Stage 6 (offers installation)module-improve skill → After successful changes (offers reinstallation)Invokes:
Updates:
MODULES.md → Status changes to 📦 Installed, adds installation metadataCreates:
~/Documents/Rack2/plugins-[platform]-[arch]/[ModuleName]-[version]-[platform].vcvpluginBlocks:
Installation is successful when:
NOT required for success:
When executing this skill:
Common pitfalls:
~/Documents/Rack2/plugins-mac-[arch]/.vcvplugin (ZIP archive)~/Documents/Rack2/plugins-linux-x64/.vcvplugin (ZIP archive)%USERPROFILE%\Documents\Rack2\plugins-win-x64\.vcvplugin (ZIP archive)Plugin archive (.vcvplugin) contains:
ModuleName/
├── plugin.json # Module metadata
├── plugin.so/.dylib/.dll # Compiled module
└── res/ # Resources
└── *.svg # Panel designs
VCV Rack extracts on launch:
When VCV Rack launches, it automatically extracts .vcvplugin archives to the same directory, creating a folder with the module contents. Both the archive and extracted folder coexist.