9.9 KiB
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:
# 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:
# 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:
# 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:
# Start Claude Code
claude
# Test the slash command
/enhance-claude-md
What to expect:
- Hook message appears:
"Starting CLAUDE.md enhancement workflow" - 3-phase workflow runs normally (Discovery → Analysis → Task)
- 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:
# 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:
# 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:
# 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):
# 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:
# 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:
# 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.shruns without errors- Version detection works (shows your Claude Code version)
./test/validate_migration.shshows all tests passing (18/18)/enhance-claude-mdcommand works in Claude Code- SessionStart hook fires (see "Guardian: Checking..." on startup)
- Python modules compile without errors
./test/rollback.shsuccessfully restores backups- Documentation renders correctly (
docs/MIGRATION_V2.md)
Troubleshooting Local Tests
"Command not found: claude"
# Check if Claude Code is installed
which claude
# If not found, install Claude Code first
# Then retry testing
"Permission denied" when running scripts
# Make scripts executable
chmod +x test/validate_migration.sh
chmod +x test/rollback.sh
chmod +x install.sh
"Python module import failed"
# 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:
-
Restore your original installation (if you want to keep using v1.x):
./test/rollback.sh # Or manually restore from .pre-v2-test backups -
Keep v2.0 installed (if you want to use the new version):
# Already installed, just use it! claude /enhance-claude-md -
Create the PR:
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:
- Check the validation script output for specific failures
- Review
docs/MIGRATION_V2.mdtroubleshooting section - Check Claude Code version:
claude --version - Verify branch:
git branch(should showfeature/migrate-v2.1.4-architecture)
Pro Tip: Test in a Docker Container
For completely isolated testing:
# 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.