
faf-migrate
by Wolfe-Jam
Championship-Grade Claude Code Skills for project.faf Files
SKILL.md
name: faf-migrate description: Migrate old project.faf formats to current IANA-registered version (3.0.0+). Upgrades from legacy formats, adds required fields, preserves existing content. Use when user has old FAF file, sees format version warnings, or wants latest specification compliance. allowed-tools: Read, Write, Edit, Bash
FAF Migrate - Format Version Upgrader
Purpose
Automatically upgrade project.faf files from older format versions to the current IANA-registered specification (v3.0.0+). Preserves all existing content while adding required modern fields.
The Goal: Painless migration from any old format to current standard. Zero data loss.
When to Use
This skill activates automatically when the user:
- Has old project.faf (format version <3.0.0)
- Sees "old format version" warning from
faf validate - Says "Upgrade my FAF format"
- Says "Migrate to latest version"
- Asks "How do I update my project.faf?"
- Has project.faf without IANA media type
- Wants IANA registration compliance
Trigger Words: migrate, upgrade, update, convert, modernize, latest version, IANA compliance
How It Works
Step 1: Detect Current Version
Check existing format version:
# Read current format version
grep -A2 "metadata:" project.faf | grep "format_version"
Possible versions:
- v1.x (original, pre-metadata) - deprecated
- v2.x (added metadata) - deprecated
- v3.x (IANA registered) - current
Step 2: Backup Original
Always backup before migration:
# Create backup
cp project.faf project.faf.backup
# Verify backup exists
ls -la project.faf.backup
Step 3: Execute Migration
Run the migration command:
faf migrate
This command (from faf-cli v3.1.1):
- Detects current version
- Determines required upgrades
- Adds missing fields
- Updates format version
- Preserves all existing content
- Creates backup automatically
Step 4: Verify Migration
Check migration succeeded:
# Validate new format
faf validate
# Check new version
grep -A2 "metadata:" project.faf | grep "format_version"
# Should show: 3.0.0 or higher
# Verify IANA media type added
grep "iana_media_type" project.faf
# Should show: application/vnd.faf+yaml
Step 5: Test & Score
After migration, verify everything works:
# Score the migrated file
faf score
# Sync if you have CLAUDE.md
faf bi-sync
# Final validation
faf validate
Migration Paths
v1.x → v3.0.0
What v1.x looked like:
name: my-project
description: What it does
language: TypeScript
framework: React
testing: Jest
What gets added:
# Original content preserved
name: my-project
# 'description' renamed to 'purpose' (semantic clarity)
purpose: What it does
# Metadata section added (v3.0.0 requirement)
metadata:
format_version: 3.0.0
iana_media_type: application/vnd.faf+yaml
created: 2025-11-02
migrated_from: 1.0.0
# Version field added (semver)
version: 1.0.0
# Architecture section added (v3.0.0 structure)
architecture:
type: web-app # Inferred from context
language: TypeScript # Moved from root
# Stack section added (v3.0.0 structure)
stack:
framework: React # Moved from root
# Testing section restructured
testing:
framework: Jest # Moved from root
Migration time: ~50ms
v2.x → v3.0.0
What v2.x looked like:
name: my-project
purpose: What it does
version: 1.0.0
metadata:
format_version: 2.5.0
created: 2024-06-15
architecture:
type: web-app
language: TypeScript
stack:
framework: React 18
What gets added:
# All original content preserved
# metadata section enhanced
metadata:
format_version: 3.0.0 # Updated from 2.5.0
iana_media_type: application/vnd.faf+yaml # Added (IANA registration)
created: 2024-06-15 # Preserved
migrated_from: 2.5.0 # Migration history
# Everything else unchanged
name: my-project
purpose: What it does
version: 1.0.0
architecture:
type: web-app
language: TypeScript
stack:
framework: React 18
Migration time: ~20ms
Examples
Example 1: Migrate from v1.x
User: "Upgrade my FAF format"
Skill Activates:
- Check current version:
grep -A2 "metadata:" project.faf
# No metadata section found → v1.x format
- Backup original:
cp project.faf project.faf.backup
- Migrate:
faf migrate
# Output:
✓ Detected format version: 1.0.0 (legacy)
✓ Backing up to project.faf.backup
✓ Migrating to format version 3.0.0
✓ Adding metadata section
✓ Adding IANA media type
✓ Restructuring architecture section
✓ Migration complete (45ms)
New format version: 3.0.0
IANA compliance: ✓
- Verify:
faf validate
# ✓ Valid YAML syntax
# ✓ Format version 3.0.0
# ✓ IANA media type: application/vnd.faf+yaml
# ✓ All required fields present
# project.faf is valid!
faf score
# 🥈 Silver (58%) - Same content, modern format
- Report to user: "Successfully migrated from v1.0.0 to v3.0.0!
Changes:
- Added metadata section
- Added IANA media type (application/vnd.faf+yaml)
- Restructured architecture section
- All original content preserved
Backup: project.faf.backup
Your file is now IANA-compliant and ready to use with all modern FAF tools."
Example 2: Migrate from v2.x
User: "I see a format version warning. How do I update?"
Skill Activates:
- Check version:
grep "format_version" project.faf
# format_version: 2.3.0
- Migrate:
faf migrate
# Output:
✓ Detected format version: 2.3.0
✓ Backing up to project.faf.backup
✓ Migrating to format version 3.0.0
✓ Adding IANA media type
✓ Migration complete (18ms)
New format version: 3.0.0
- Report: "Upgraded from v2.3.0 to v3.0.0 (18ms).
What changed:
- Format version: 2.3.0 → 3.0.0
- Added: IANA media type (application/vnd.faf+yaml)
- Added: Migration history (migrated_from: 2.3.0)
What didn't change:
- All your content (preserved exactly)
- File structure (already modern)
- AI-readiness score (same content)
You're now using the IANA-registered standard."
Example 3: Already on Latest
User: "Migrate my FAF"
Skill Activates:
- Check version:
grep "format_version" project.faf
# format_version: 3.0.0
- Run migrate:
faf migrate
# Output:
✓ Already on latest format version: 3.0.0
✓ IANA media type present
✓ No migration needed
project.faf is up to date!
- Report: "Your project.faf is already on the latest format (v3.0.0). No migration needed!"
Migration Safety
Automatic Backups
Every migration creates a backup:
# Before migration
project.faf # Original
# After migration
project.faf # Migrated (new format)
project.faf.backup # Backup (original, unchanged)
Rollback if needed:
# Restore from backup
cp project.faf.backup project.faf
Content Preservation
Guaranteed preservation:
- ✅ All field values (preserved exactly)
- ✅ All custom sections (preserved)
- ✅ All comments (preserved where possible)
- ✅ All content structure (preserved or improved)
What changes:
- Format version number (old → 3.0.0)
- Metadata structure (adds IANA compliance)
- Section organization (improves, doesn't lose)
What never changes:
- Your project name
- Your project purpose
- Your stack information
- Your testing details
- Your custom content
Validation After Migration
Always validate after migrating:
faf migrate
faf validate # Should pass with zero errors
faf score # Should match or improve previous score
If validation fails after migration: This is a bug. Restore backup and report issue:
# Restore original
cp project.faf.backup project.faf
# Report issue at:
# https://github.com/Wolfe-Jam/faf-cli/issues
Troubleshooting
Issue: Migration fails with YAML error
Solution:
# Original file may have syntax errors
faf validate # Check original FIRST
# Fix syntax errors in original
# Then retry migration
faf migrate
Issue: Backup already exists
Solution:
# Multiple migration attempts create project.faf.backup
# Option 1: Remove old backup
rm project.faf.backup
faf migrate
# Option 2: Save old backup
mv project.faf.backup project.faf.backup.old
faf migrate
Issue: Lost custom sections after migration
Solution:
# This should never happen. Restore and report:
cp project.faf.backup project.faf
# Compare files to identify what was lost
diff project.faf.backup project.faf
# Report issue with diff output
Issue: Score decreased after migration
Solution:
# Migration should not decrease score
# If it does, this is a bug
# Restore backup
cp project.faf.backup project.faf
# Compare scores
faf score # Original score
# Migrate again with verbose output
faf migrate --verbose # (if supported)
# Report unexpected score decrease
Supporting Files
This skill works with:
- faf-cli (v3.1.1+) - Migration engine
- project.faf - File being migrated
- project.faf.backup - Safety backup
Related Skills
Migration integrates with:
- faf-validate - Check format before/after migration
- faf-score - Verify score maintained after migration
- faf-init - Alternative: create new file instead of migrating
- faf-sync - Sync migrated file to CLAUDE.md
Key Principles
Zero Data Loss:
- All content preserved
- Automatic backups
- Rollback available
- Safety first
Backward Compatibility:
- Reads all old formats (v1.x, v2.x)
- Upgrades automatically
- No manual intervention required
- Smooth migration path
IANA Compliance:
- Adds official media type
- Updates to registered specification
- Internet standard compliance
- Universal recognition
NO BS ZONE:
- Migration is safe (proven, tested)
- Backups are automatic (not optional)
- Validation is enforced (not skipped)
- Rollback is available (not hidden)
Success Metrics
When this skill succeeds, users should:
- Have project.faf on format version 3.0.0+
- Have IANA media type in metadata
- Have backup of original file
- Pass validation with zero errors
- Maintain or improve AI-readiness score
- Trust the migration process
Quick Reference
Migrate to latest:
faf migrate
Rollback if needed:
cp project.faf.backup project.faf
Verify migration:
faf validate # Should pass
faf score # Should match or improve
What gets added:
metadata:
format_version: 3.0.0 # Updated
iana_media_type: application/vnd.faf+yaml # Added
migrated_from: [old version] # History
Generated by FAF Skill: faf-migrate v1.0.0 Migration Edition: Zero Data Loss "Safe migration. IANA compliance. Championship standards."
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon


