بنقرة واحدة
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 ويثبّتها لك.
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
استنادا إلى تصنيف SOC المهني
| 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.