mirror of
https://github.com/alirezarezvani/ClaudeForge.git
synced 2026-07-03 02:13:15 -04:00
35d17b0ba3
Major architectural update to support Claude Code v2.1.4+ features including hooks, modern permission syntax, and hot-reload capabilities. ## Core Component Updates ### Skill (skill/SKILL.md) - Updated frontmatter from old `tools:` to `permissions.allow:` array - Added wildcard Bash permissions: Bash(ls:*), Bash(find:*), Bash(git:*) - Python modules unchanged (backward compatible) ### Command (command/enhance-claude-md.md) - Updated frontmatter from `allowed-tools:` to `permissions.allow:` array - Added startup hook for workflow initiation - 3-phase discovery workflow unchanged ### Guardian Agent (agent/claude-md-guardian.md) - Updated frontmatter from `tools:` to `permissions.allow:` array - Added SessionStart hook for auto-updates on new sessions - Added PreToolUse/PostToolUse hooks for Write validation - Added fork_safe: true for independent operation - Removed obsolete mcp_tools field - Agent workflow logic unchanged ## Installation Scripts ### install.sh - Added Claude Code version detection (checks for 2.1.0+) - Added auto-migration logic with timestamped backups - Added post-installation v2.1.4 compatibility validation - Updated version to 2.0.0 - Updated download URLs to main branch ### install.ps1 - Added equivalent PowerShell version detection - Added auto-migration logic with timestamped backups - Added post-installation v2.1.4 compatibility validation - Updated version to 2.0.0 - Updated download URLs to main branch ## Documentation ### New Files - docs/MIGRATION_V2.md: Comprehensive migration guide - test/validate_migration.sh: Validation script (18 tests) - test/rollback.sh: Rollback script for v1.x restoration - test/README.md: Testing documentation ### Updated Files - README.md: Updated version badges (2.0.0, Claude Code 2.1.4+) - README.md: Added "New in v2.0" section highlighting features - CHANGELOG.md: Added comprehensive v2.0.0 release entry - CHANGELOG.md: Documented all changes, fixes, and breaking changes ## Validation All changes validated: ✓ Python modules compile without errors ✓ install.sh bash syntax valid ✓ YAML frontmatter syntax valid (skill, command, agent) ✓ No Python code modified (2,190 lines unchanged) ✓ Backward compatible with existing installations ## Breaking Changes - Minimum Claude Code version: 2.1.0+ (was 2.0+) - Old permission syntax deprecated (but backward compatible) - Users on Claude Code < 2.1.0 should use ClaudeForge v1.0.0 ## Migration Path Installer automatically: 1. Detects Claude Code version 2. Backs up v1.x installations 3. Installs v2.0 with new syntax 4. Validates compatibility See docs/MIGRATION_V2.md for detailed instructions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
103 lines
4.5 KiB
Bash
Executable File
103 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# ClaudeForge v2.1.4 Migration Validation Script
|
|
# Tests that the migration to v2.0.0 was successful
|
|
|
|
echo "=== ClaudeForge v2.1.4 Migration Validation ==="
|
|
echo ""
|
|
|
|
SKILLS_DIR="$HOME/.claude/skills"
|
|
COMMANDS_DIR="$HOME/.claude/commands"
|
|
AGENTS_DIR="$HOME/.claude/agents"
|
|
|
|
PASS_COUNT=0
|
|
FAIL_COUNT=0
|
|
|
|
# Helper functions
|
|
pass() {
|
|
echo "✓ $1"
|
|
((PASS_COUNT++))
|
|
}
|
|
|
|
fail() {
|
|
echo "✗ $1"
|
|
((FAIL_COUNT++))
|
|
}
|
|
|
|
# Test 1: File Existence
|
|
echo "Test 1: File Existence"
|
|
echo "----------------------"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/SKILL.md" ] && pass "Skill file exists" || fail "Skill file missing"
|
|
[ -f "$COMMANDS_DIR/enhance-claude-md/enhance-claude-md.md" ] && pass "Command file exists" || fail "Command file missing"
|
|
[ -f "$AGENTS_DIR/claude-md-guardian.md" ] && pass "Agent file exists" || fail "Agent file missing"
|
|
|
|
# Test 2: v2.1.4 Syntax Validation
|
|
echo ""
|
|
echo "Test 2: v2.1.4 Syntax Validation"
|
|
echo "---------------------------------"
|
|
grep -q "permissions:" "$SKILLS_DIR/claudeforge-skill/SKILL.md" 2>/dev/null && pass "Skill uses permissions syntax" || fail "Skill uses old syntax"
|
|
grep -q "permissions:" "$COMMANDS_DIR/enhance-claude-md/enhance-claude-md.md" 2>/dev/null && pass "Command uses permissions syntax" || fail "Command uses old syntax"
|
|
grep -q "permissions:" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "Agent uses permissions syntax" || fail "Agent uses old syntax"
|
|
|
|
# Test 3: Hooks Configuration
|
|
echo ""
|
|
echo "Test 3: Hooks Configuration"
|
|
echo "---------------------------"
|
|
grep -q "hooks:" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "Agent has hooks configured" || fail "Agent missing hooks"
|
|
grep -q "SessionStart" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "SessionStart hook present" || fail "SessionStart hook missing"
|
|
grep -q "PreToolUse" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "PreToolUse hook present" || fail "PreToolUse hook missing"
|
|
grep -q "PostToolUse" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "PostToolUse hook present" || fail "PostToolUse hook missing"
|
|
|
|
# Test 4: Fork-Safe Mode
|
|
echo ""
|
|
echo "Test 4: Fork-Safe Mode"
|
|
echo "----------------------"
|
|
grep -q "fork_safe: true" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "Fork-safe mode enabled" || fail "Fork-safe mode not configured"
|
|
|
|
# Test 5: Python Modules Integrity
|
|
echo ""
|
|
echo "Test 5: Python Modules Integrity"
|
|
echo "--------------------------------"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/analyzer.py" ] && pass "analyzer.py present" || fail "analyzer.py missing"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/validator.py" ] && pass "validator.py present" || fail "validator.py missing"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/generator.py" ] && pass "generator.py present" || fail "generator.py missing"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/template_selector.py" ] && pass "template_selector.py present" || fail "template_selector.py missing"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/workflow.py" ] && pass "workflow.py present" || fail "workflow.py missing"
|
|
|
|
# Test 6: Legacy Syntax Check (should NOT be present)
|
|
echo ""
|
|
echo "Test 6: Legacy Syntax Cleanup"
|
|
echo "-----------------------------"
|
|
! grep -q "^tools:" "$AGENTS_DIR/claude-md-guardian.md" 2>/dev/null && pass "Agent has no legacy 'tools:' field" || fail "Agent still has legacy 'tools:' field"
|
|
! grep -q "^allowed-tools:" "$COMMANDS_DIR/enhance-claude-md/enhance-claude-md.md" 2>/dev/null && pass "Command has no legacy 'allowed-tools:' field" || fail "Command still has legacy 'allowed-tools:' field"
|
|
|
|
# Test 7: Documentation
|
|
echo ""
|
|
echo "Test 7: Documentation"
|
|
echo "--------------------"
|
|
[ -f "docs/MIGRATION_V2.md" ] && pass "Migration guide exists" || fail "Migration guide missing"
|
|
grep -q "2.0.0" "CHANGELOG.md" 2>/dev/null && pass "CHANGELOG has v2.0.0 entry" || fail "CHANGELOG missing v2.0.0 entry"
|
|
grep -q "2.1.4" "README.md" 2>/dev/null && pass "README references v2.1.4" || fail "README missing v2.1.4 reference"
|
|
|
|
# Test 8: Example Files
|
|
echo ""
|
|
echo "Test 8: Example Files Unchanged"
|
|
echo "-------------------------------"
|
|
[ -f "$SKILLS_DIR/claudeforge-skill/examples/minimal-solo-CLAUDE.md" ] && pass "Example files present" || fail "Example files missing"
|
|
|
|
# Summary
|
|
echo ""
|
|
echo "==================================="
|
|
echo "Validation Complete"
|
|
echo "==================================="
|
|
echo "Passed: $PASS_COUNT"
|
|
echo "Failed: $FAIL_COUNT"
|
|
echo ""
|
|
|
|
if [ $FAIL_COUNT -eq 0 ]; then
|
|
echo "✅ All tests passed! Migration successful."
|
|
exit 0
|
|
else
|
|
echo "❌ Some tests failed. Review errors above."
|
|
exit 1
|
|
fi
|