Validates and configures all dependencies required for the Plugin Freedom System. This is a STANDALONE skill that runs BEFORE plugin workflows begin...
Purpose: Validate and configure all dependencies required for JUCE plugin development in the Plugin Freedom System.
This skill ensures new users can get started without friction by:
Target platform: macOS (extensible to Windows/Linux later)
User experience: Interactive, with clear choices between automated and guided setup
For detailed dependency requirements and installation instructions, see references/platform-requirements.md.
Summary: Python 3.8+, Build Tools (Xcode Command Line Tools/GCC/MSVC), CMake 3.15+, JUCE 8.0.0+, pluginval (optional)
When invoked via /setup command:
Check for existing configuration first:
.claude/system-config.json exists and is recent (validated within last 30 days)System Setup - Plugin Freedom System
Existing configuration found (validated 5 days ago)
What would you like to do?
1. Re-validate all dependencies (full check)
2. View current configuration
3. Reconfigure specific dependency
4. Exit
Choose (1-4): _
.claude/system-config.json contents and exitIf no valid config exists, proceed with full setup:
Check for test mode:
--test=SCENARIO argument to /setup commandTEST_MODE=SCENARIO (or empty if not in test mode)--test=$SCENARIO[TEST MODE: $SCENARIO]
Using mock data - no actual system changes will be made
Welcome message:
System Setup - Plugin Freedom System
This will validate and configure all dependencies needed for JUCE plugin development.
How would you like to proceed?
1. Automated setup (install missing dependencies automatically)
2. Guided setup (step-by-step instructions for manual installation)
3. Check only (detect what's installed, no changes)
4. Exit
Choose (1-4): _
Store user choice in MODE variable and proceed to platform detection
# Store user's mode choice (persists throughout entire setup)
MODE="automated" # or "guided" or "check-only"
This MODE variable determines behavior for ALL dependency validations (Python, Build Tools, CMake, JUCE, pluginval).
| Mode | Behavior | Installation | User Actions |
|---|---|---|---|
| automated | Attempt automated installation with confirmation | Offers automatic install ā falls back to manual if fails | Confirms installations, completes any GUI steps |
| guided | Show manual instructions only | NEVER automated - always manual instructions | Completes all installations manually, confirms when done |
| check-only | Report status without changes | NEVER offers installation | None - just review report |
Mode persistence: User's initial mode choice applies to ALL 5 dependency validations. Mode does NOT change mid-session.
Copy this checklist at skill start to track your progress:
Setup Progress:
- [ ] Platform detected and confirmed
- [ ] Python 3.8+ installed and verified
- [ ] Build tools installed and verified (Xcode Command Line Tools / GCC / MSVC)
- [ ] CMake 3.15+ installed and verified
- [ ] JUCE 8.0.0+ installed and verified
- [ ] pluginval installed and verified (optional)
- [ ] Configuration saved to .claude/system-config.json
- [ ] Setup complete
Mark each item as you complete it.
Two variables persist throughout the entire setup session:
Initialized: At skill entry when user selects from menu (lines 85-99)
Values: "automated", "guided", "check-only"
Scope: Used for ALL dependency validations (Python, Build Tools, CMake, JUCE, pluginval)
Persistence: Does NOT change mid-session - user's initial choice applies to all 5 dependencies
Example:
# User selects option 1 at entry menu
MODE="automated"
# This MODE value is used for Python validation
# Then Build Tools validation
# Then CMake validation
# Then JUCE validation
# Then pluginval validation
# MODE never changes during session
Initialized: At skill entry if user provided --test=SCENARIO argument to /setup command
Values: Scenario name (e.g., "missing-cmake", "old-python") or empty if not in test mode
Scope: Appended to ALL system-check.sh invocations throughout session
Persistence: Does NOT change mid-session
Example:
# User invoked: /setup --test=missing-cmake
TEST_MODE="missing-cmake"
# All system-check.sh calls include test mode:
bash system-check.sh --check-python --test=missing-cmake
bash system-check.sh --check-xcode --test=missing-cmake
# etc.
Step 1: Detect platform
# Run system check script (append --test=$SCENARIO if in test mode)
bash .claude/skills/system-setup/assets/system-check.sh --detect-platform ${TEST_MODE:+--test=$TEST_MODE}
Note: If TEST_MODE is set, append --test=$TEST_MODE to ALL system-check.sh invocations throughout this skill.
The script returns JSON:
{
"platform": "darwin",
"platform_version": "14.0",
"arch": "arm64"
}
Step 2: Confirm with user
Detected platform: macOS 14.0 (arm64)
Is this correct?
1. Yes, continue
2. No, let me specify
Choose (1-2): _
For each dependency (in order):
For detailed validation workflow, error handling, and dependency-specific variations, see:
High-level validation process:
For each dependency:
system-check.shSee validation-workflow.md for complete algorithm and dependency-specific handling.
After all dependencies are validated, create .claude/system-config.json:
# Generate config file
cat > .claude/system-config.json <<EOF
{
"platform": "darwin",
"platform_version": "14.0",
"arch": "arm64",
"python_path": "/usr/local/bin/python3",
"python_version": "3.11.5",
"xcode_path": "/Library/Developer/CommandLineTools",
"cmake_path": "/usr/local/bin/cmake",
"cmake_version": "3.27.4",
"juce_path": "/Users/lex/JUCE",
"juce_version": "8.0.3",
"pluginval_path": "/usr/local/bin/pluginval",
"pluginval_version": "1.0.3",
"validated_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
}
EOF
Add to .gitignore if not already present:
grep -q "system-config.json" .gitignore || echo ".claude/system-config.json" >> .gitignore
After configuration is saved, display comprehensive summary:
ā System Setup Complete
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Platform: macOS 14.0 (arm64)
Dependencies validated:
ā Python 3.11.5 (/usr/local/bin/python3)
ā Xcode Command Line Tools 15.0
ā CMake 3.27.4 (/usr/local/bin/cmake)
ā JUCE 8.0.3 (/Users/lex/JUCE)
ā pluginval 1.0.3 (/usr/local/bin/pluginval)
Configuration saved to:
.claude/system-config.json
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
What's next?
1. Create your first plugin (/dream)
2. View available commands (type /? or press Tab)
3. Read the documentation (@README.md)
4. Run system check again (/setup)
5. Exit
Choose (1-5): _
Handle user choice:
Skill("plugin-ideation")ls .claude/commands/This skill ONLY:
After setup completes successfully:
For detailed error recovery procedures and failure scenarios, see references/error-recovery.md.
General principle: All errors offer recovery paths - automated installation failures fall back to guided mode, permission errors offer sudo or user-directory alternatives, and missing critical dependencies trigger warning menus.
Invoked by:
/setup command (primary entry point)Reads:
.claude/system-config.json (if exists, to show current config)references/platform-requirements.md (platform-specific installation guides)references/juce-setup-guide.md (detailed JUCE installation)Creates:
.claude/system-config.json (validated dependency paths)Uses:
assets/system-check.sh (bash validation script)May invoke:
plugin-ideation skill (if user chooses to create plugin after setup)Setup is successful when:
.claude/system-config.jsonFor detailed execution notes, critical requirements, and anti-patterns, see references/execution-notes.md.
Key reminders: