# Local Testing Guide for ClaudeForge v2.0.0 This guide walks you through testing the v2.1.4 migration on your local machine before creating a PR. --- ## Prerequisites - Claude Code 2.1.0+ installed - Current working directory: `/Users/rezarezvani/projects/ClaudeForge` - Feature branch checked out: `feature/migrate-v2.1.4-architecture` --- ## Testing Workflow ### Step 1: Backup Your Current ClaudeForge Installation If you have ClaudeForge installed, back it up first: ```bash # Check if you have existing installation ls -la ~/.claude/skills/claudeforge-skill 2>/dev/null && echo "Found existing installation" # Backup (if exists) cp -r ~/.claude/skills/claudeforge-skill ~/.claude/skills/claudeforge-skill.pre-v2-test 2>/dev/null cp -r ~/.claude/commands/enhance-claude-md ~/.claude/commands/enhance-claude-md.pre-v2-test 2>/dev/null cp ~/.claude/agents/claude-md-guardian.md ~/.claude/agents/claude-md-guardian.md.pre-v2-test 2>/dev/null echo "✓ Backup complete (if installation existed)" ``` --- ### Step 2: Test Fresh Installation Test installing from scratch: ```bash # Remove any existing installation rm -rf ~/.claude/skills/claudeforge-skill rm -rf ~/.claude/commands/enhance-claude-md rm ~/.claude/agents/claude-md-guardian.md # Run the new installer ./install.sh # Choose option 1 (user-level) # Press Y to confirm installation # Press N for quality hooks (we're just testing core features) ``` **Expected Output:** ``` ℹ Checking Claude Code version... ✓ Claude Code version 2.1.4 detected ℹ Where would you like to install ClaudeForge? ... ℹ Validating v2.1.4 compatibility... ✓ Guardian agent hooks configured ✓ v2.1.4 compatibility validated ✓ Installation completed successfully! ``` --- ### Step 3: Run Validation Script Verify the installation is correct: ```bash # Run automated validation ./test/validate_migration.sh ``` **Expected Output:** ``` === ClaudeForge v2.1.4 Migration Validation === Test 1: File Existence ---------------------- ✓ Skill file exists ✓ Command file exists ✓ Agent file exists Test 2: v2.1.4 Syntax Validation --------------------------------- ✓ Skill uses permissions syntax ✓ Command uses permissions syntax ✓ Agent uses permissions syntax Test 3: Hooks Configuration --------------------------- ✓ Agent has hooks configured ✓ SessionStart hook present ✓ PreToolUse hook present ✓ PostToolUse hook present Test 4: Fork-Safe Mode ---------------------- ✓ Fork-safe mode enabled Test 5: Python Modules Integrity -------------------------------- ✓ analyzer.py present ✓ validator.py present ✓ generator.py present ✓ template_selector.py present ✓ workflow.py present Test 6: Legacy Syntax Cleanup ----------------------------- ✓ Agent has no legacy 'tools:' field ✓ Command has no legacy 'allowed-tools:' field Test 7: Documentation -------------------- ✓ Migration guide exists ✓ CHANGELOG has v2.0.0 entry ✓ README references v2.1.4 Test 8: Example Files Unchanged ------------------------------- ✓ Example files present =================================== Validation Complete =================================== Passed: 18 Failed: 0 ✅ All tests passed! Migration successful. ``` --- ### Step 4: Test Functionality Test that the skill/command still works: ```bash # Start Claude Code claude # Test the slash command /enhance-claude-md ``` **What to expect:** 1. Hook message appears: `"Starting CLAUDE.md enhancement workflow"` 2. 3-phase workflow runs normally (Discovery → Analysis → Task) 3. Skill is invoked and works correctly **Exit Claude Code** when done testing: ``` exit ``` --- ### Step 5: Test SessionStart Hook Test that the guardian agent SessionStart hook fires: ```bash # Start a new Claude Code session claude ``` **Expected on startup:** You should see: ``` Guardian: Checking for CLAUDE.md updates... ``` This confirms the SessionStart hook is working. **Exit when done:** ``` exit ``` --- ### Step 6: Manually Verify Files Double-check the installed files have correct syntax: ```bash # Check skill frontmatter head -20 ~/.claude/skills/claudeforge-skill/SKILL.md # Should see: # --- # name: claude-md-enhancer # permissions: # allow: # - Read # - Write # ... # Check agent frontmatter head -30 ~/.claude/agents/claude-md-guardian.md # Should see: # --- # name: claude-md-guardian # permissions: # allow: # - Bash # - Read # ... # hooks: # - event: SessionStart # ... ``` --- ### Step 7: Test Migration from v1.x (Optional) If you want to test the migration logic: ```bash # Create a mock v1.x installation mkdir -p ~/.claude/skills/claudeforge-skill-mock cat > ~/.claude/skills/claudeforge-skill-mock/SKILL.md <<'EOF' --- name: claude-md-enhancer tools: Bash, Read, Write --- Old v1.x syntax EOF # Temporarily rename to simulate v1.x mv ~/.claude/skills/claudeforge-skill ~/.claude/skills/claudeforge-skill-real mv ~/.claude/skills/claudeforge-skill-mock ~/.claude/skills/claudeforge-skill # Run installer (should detect and backup v1.x) ./install.sh # Check backup was created ls ~/.claude/skills/claudeforge-skill.v1_backup* || ls ~/.claude/skills/claudeforge-skill.backup.* # Verify new syntax grep "permissions:" ~/.claude/skills/claudeforge-skill/SKILL.md # Restore real installation rm -rf ~/.claude/skills/claudeforge-skill mv ~/.claude/skills/claudeforge-skill-real ~/.claude/skills/claudeforge-skill ``` --- ### Step 8: Test Rollback Script Test that rollback works (using the backup from Step 7): ```bash # If you have backups from Step 7 ./test/rollback.sh # Verify it restored v1.x syntax head -10 ~/.claude/skills/claudeforge-skill/SKILL.md # Then reinstall v2.0 for continued testing ./install.sh ``` --- ### Step 9: Test Python Modules Still Work Verify Python modules weren't accidentally broken: ```bash # Test Python compilation python3 -m py_compile skill/analyzer.py python3 -m py_compile skill/validator.py python3 -m py_compile skill/generator.py python3 -m py_compile skill/template_selector.py python3 -m py_compile skill/workflow.py echo "✓ All Python modules compile successfully" # Test imports (from skill directory) cd skill python3 -c "from analyzer import CLAUDEMDAnalyzer; print('✓ analyzer.py imports')" python3 -c "from validator import BestPracticesValidator; print('✓ validator.py imports')" python3 -c "from generator import ContentGenerator; print('✓ generator.py imports')" python3 -c "from template_selector import TemplateSelector; print('✓ template_selector.py imports')" python3 -c "from workflow import InitializationWorkflow; print('✓ workflow.py imports')" cd .. ``` --- ### Step 10: Test in a Real Project Test the skill on an actual project: ```bash # Create a test project mkdir -p /tmp/test-claude-project cd /tmp/test-claude-project git init npm init -y # Or create any project # Start Claude Code claude # Test the enhancement command /enhance-claude-md # Follow the workflow and verify: # 1. Discovery phase works # 2. Analysis runs correctly # 3. CLAUDE.md is generated with correct format # 4. No errors or warnings # Exit and clean up exit cd /Users/rezarezvani/projects/ClaudeForge rm -rf /tmp/test-claude-project ``` --- ## Quick Test Checklist Use this checklist for rapid validation: - [ ] `./install.sh` runs without errors - [ ] Version detection works (shows your Claude Code version) - [ ] `./test/validate_migration.sh` shows all tests passing (18/18) - [ ] `/enhance-claude-md` command works in Claude Code - [ ] SessionStart hook fires (see "Guardian: Checking..." on startup) - [ ] Python modules compile without errors - [ ] `./test/rollback.sh` successfully restores backups - [ ] Documentation renders correctly (`docs/MIGRATION_V2.md`) --- ## Troubleshooting Local Tests ### "Command not found: claude" ```bash # Check if Claude Code is installed which claude # If not found, install Claude Code first # Then retry testing ``` ### "Permission denied" when running scripts ```bash # Make scripts executable chmod +x test/validate_migration.sh chmod +x test/rollback.sh chmod +x install.sh ``` ### "Python module import failed" ```bash # Ensure you're in the skill directory cd skill python3 -c "import sys; print(sys.path)" cd .. ``` ### Hooks don't fire - Hooks require Claude Code 2.1.0+ - Check version: `claude --version` - Restart Claude Code completely (not just exit/claude) - Close terminal and open a new one --- ## After Testing Successfully Once all tests pass: 1. **Restore your original installation** (if you want to keep using v1.x): ```bash ./test/rollback.sh # Or manually restore from .pre-v2-test backups ``` 2. **Keep v2.0 installed** (if you want to use the new version): ```bash # Already installed, just use it! claude /enhance-claude-md ``` 3. **Create the PR**: ```bash gh pr create --base dev --title "feat(v2.0.0): migrate to Claude Code v2.1.4+ architecture" ``` --- ## Test Results Log Keep track of your test results: | Test | Result | Notes | |------|--------|-------| | Fresh install | ☐ Pass ☐ Fail | | | Validation script | ☐ Pass ☐ Fail | | | /enhance-claude-md command | ☐ Pass ☐ Fail | | | SessionStart hook | ☐ Pass ☐ Fail | | | Python modules | ☐ Pass ☐ Fail | | | Real project test | ☐ Pass ☐ Fail | | | Rollback script | ☐ Pass ☐ Fail | | --- ## Getting Help If you encounter issues during testing: 1. Check the validation script output for specific failures 2. Review `docs/MIGRATION_V2.md` troubleshooting section 3. Check Claude Code version: `claude --version` 4. Verify branch: `git branch` (should show `feature/migrate-v2.1.4-architecture`) --- ## Pro Tip: Test in a Docker Container For completely isolated testing: ```bash # Use a Docker container with Claude Code installed docker run -it -v $(pwd):/workspace ubuntu:latest bash # Inside container: cd /workspace # Install Claude Code # Run ./install.sh # Run ./test/validate_migration.sh ``` This ensures no interference from your existing setup.