Skip to content

F.R.I.D.A.Y. - Migration Orchestration System

JikiME-ADK's dedicated migration orchestration system. A systematic and precise framework transition automation inspired by Iron Man's second AI assistant.

Overview

F.R.I.D.A.Y. (Framework Relay & Integration Deployment Assistant Yesterday) is a dedicated migration orchestrator that transforms legacy systems to modern frameworks. While J.A.R.V.I.S. handles development, F.R.I.D.A.Y. specializes exclusively in migration, autonomously performing the entire process of analysis, planning, execution, and verification.

Core Philosophy

"Transitioning to the new system, sir. All legacy patterns mapped and ready."

Differences from J.A.R.V.I.S.

FeatureJ.A.R.V.I.S. (Development)F.R.I.D.A.Y. (Migration)
Discovery5 agents in parallel3 agents (source-focused)
PlanningMulti-strategy comparisonDynamic skill discovery + strategy comparison
ExecutionDDD cycleDDD + behavior preservation verification
TrackingSPEC-based.migrate-config.yaml + progress.yaml
VerificationLSP + TestsPlaywright E2E + visual regression + performance comparison
Completion Marker<jikime>DONE</jikime><jikime>MIGRATION_COMPLETE</jikime>

Architecture

System Structure

┌─────────────────────────────────────────────────────────────────┐
│                    F.R.I.D.A.Y. System                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Phase 0: Discovery (3-Way Parallel)                            │
│  ┌──────────┐ ┌──────────────┐ ┌──────────────┐                │
│  │ Codebase │ │  Dependency  │ │    Risk      │                │
│  │ Explorer │ │   Analyzer   │ │  Assessor    │                │
│  └────┬─────┘ └──────┬───────┘ └──────┬───────┘                │
│       └───────────────┼────────────────┘                        │
│                       ▼                                         │
│           ┌──────────────────────┐                              │
│           │  .migrate-config.yaml │                              │
│           │  + Complexity Score   │                              │
│           └──────────┬───────────┘                              │
│                      ▼                                          │
│  Phase 1: Detailed Analysis                                     │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  Component/Route/State/DB Mapping → as_is_spec.md        │   │
│  └─────────────────────────────────────┬───────────────────┘   │
│                                        ▼                        │
│  Phase 2: Intelligent Planning                                  │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐            │
│  │ Strategy A   │ │ Strategy B   │ │ Strategy C   │            │
│  │ Incremental  │ │   Phased     │ │  Big-Bang    │            │
│  └──────┬───────┘ └──────┬───────┘ └──────┬───────┘            │
│         └────────────────┼────────────────┘                    │
│                          ▼                                      │
│           ┌────────────────────────┐                            │
│           │ Dynamic Skill Discovery│                            │
│           │ + migration_plan.md    │                            │
│           └────────────┬───────────┘                            │
│                        ▼                                        │
│  Phase 3: DDD Execution (Per Module)                            │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  FOR EACH module:                                        │   │
│  │    ├── ANALYZE  (understand source behavior + identify DB models) │   │
│  │    ├── PRESERVE (characterization tests + DB layer tests)  │   │
│  │    ├── IMPROVE  (target framework + ORM conversion)       │   │
│  │    ├── LSP Quality Gate (regression check)               │   │
│  │    └── Self-Assessment:                                  │   │
│  │        ├── SUCCESS → Next module                         │   │
│  │        ├── LSP REGRESSION → Pivot approach               │   │
│  │        ├── 3x FAIL → Pivot approach                      │   │
│  │        └── Complexity >90 → User guidance                │   │
│  └─────────────────────────────────────────────────────────┘   │
│                        ▼                                        │
│  Phase 4: Verification (Playwright E2E)                         │
│  ┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐  │
│  │  Visual  │ │ Cross-Browser│ │  Core Web    │ │   A11y   │  │
│  │Regression│ │   Testing    │ │   Vitals     │ │  (axe)   │  │
│  └──────────┘ └──────────────┘ └──────────────┘ └──────────┘  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
FileDescription
templates/.claude/commands/jikime/friday.mdF.R.I.D.A.Y. slash command (587 lines)
templates/.claude/commands/jikime/migrate-0-discover.mdPhase 0 command
templates/.claude/commands/jikime/migrate-1-analyze.mdPhase 1 command
templates/.claude/commands/jikime/migrate-2-plan.mdPhase 2 command
templates/.claude/commands/jikime/migrate-3-execute.mdPhase 3 command
templates/.claude/commands/jikime/migrate-4-verify.mdPhase 4 command
docs/migration.mdMigration system documentation
docs/migrate-playwright.mdPlaywright verification system
docs/jarvis.mdJ.A.R.V.I.S. development orchestrator documentation
templates/.jikime/config/quality.yamlLSP Quality Gates configuration

Config-First Approach

The core design principle of F.R.I.D.A.Y. is Config-First. Once the configuration file is generated in Phase 0, it is automatically referenced in all subsequent phases.

.migrate-config.yaml

yaml
# Automatically generated in Phase 0
project_name: my-vue-app
source_path: ./legacy-vue-app
source_architecture: monolith           # Detected in Phase 0 (monolith, separated, unknown)
target_framework: nextjs16
artifacts_dir: ./migrations/my-vue-app
output_dir: ./migrations/my-vue-app/out
db_type: postgresql                     # Detected in Phase 0
db_orm: eloquent                        # Detected in Phase 0

# Added in Phase 2
target_architecture: fullstack-monolith  # User selection (fullstack-monolith, frontend-backend, frontend-only)
db_access_from: frontend                 # Automatically derived from target_architecture
# target_framework_backend: fastapi      # frontend-backend architecture only

Artifact Flow

@<source-path>/

    ▼ (Phase 0-1: Discover + Analyze)
.migrate-config.yaml                  ← Project settings (including source_architecture, db_type, db_orm)
{artifacts_dir}/as_is_spec.md         ← Detailed analysis (including Database Layer + Architecture Layers)

    ▼ (Phase 2: Plan)
.migrate-config.yaml update           ← Architecture selection (target_architecture, db_access_from)
{artifacts_dir}/migration_plan.md     ← Migration plan (Phase structure by architecture)

    ▼ (Phase 3: Execute)
{output_dir}/                         ← Migrated project (structure varies by architecture)
  ├─ fullstack-monolith: {output_dir}/ (single)
  ├─ frontend-backend: {output_dir}/frontend/ + {output_dir}/backend/
  └─ frontend-only: {output_dir}/ (single, no DB)
{artifacts_dir}/progress.yaml         ← Progress tracking

    ▼ (Phase 4: Verify)
{artifacts_dir}/verification_report.md ← Verification results (architecture-specific verification)

    ▼ (Optional: Whitepaper)
{whitepaper_output}/                  ← Client report

Usage

Basic Usage

bash
# Full automatic orchestration (recommended)
/jikime:friday "Migrate Vue app to Next.js" @./legacy-vue-app/

# Specify target framework
/jikime:friday @./my-app/ --target fastapi

# Safe strategy (conservative approach)
/jikime:friday @./legacy/ "Migrate to Go" --strategy safe

# Enable auto loop
/jikime:friday @./src/ --target nextjs --loop --max 30

# Resume interrupted migration
/jikime:friday resume

# Generate whitepaper
/jikime:friday @./app/ --target nextjs --whitepaper --client "ABC Corp" --lang ko

Manual Step-by-Step Execution

bash
/jikime:migrate-0-discover @./my-vue-app/ --target nextjs
/jikime:migrate-1-analyze
/jikime:migrate-2-plan
/jikime:migrate-3-execute
/jikime:migrate-4-verify --full

Command Options

OptionDescriptionDefault
@<path>Source project pathCurrent directory
--targetTarget framework (nextjs, fastapi, go, flutter, etc.)Auto-detect
--strategyExecution strategy: auto, safe, fastauto
--loopEnable automatic error correction loopfalse
--max NMaximum number of iterations50
--whitepaperGenerate migration whitepaperfalse
--clientClient company name (for whitepaper cover)-
--langWhitepaper language (ko, en, ja, zh)conversation_language
resumeResume previous migration-

Intelligence Features

1. Discovery (Phase 0) - 3-Way Parallel

3 specialized agents analyze the source project simultaneously:

AgentRoleOutput
Codebase ExplorerFile structure, framework detection, DB/ORM type, source architecture patternsTech stack, component list, DB info, source architecture (monolith/separated/unknown), complexity score
Dependency AnalyzerPackage dependencies, version compatibility, breaking changesDependency map, upgrade requirements
Risk AssessorMigration risks, anti-patterns, legacy locksRisk score, blocker identification

2. Analysis (Phase 1) - as_is_spec.md Generation

Documents the complete structure of the source project:

  • Component/Route/State mapping
  • Database layer analysis (models, query patterns, external data services)
  • Architecture layer analysis (Frontend / Backend / Data / Shared layer identification + coupling analysis)
  • Business logic documentation
  • API endpoint mapping
  • Dependency and risk assessment

3. Planning (Phase 2) - Architecture Selection + Dynamic Skill Discovery

F.R.I.D.A.Y. dynamically discovers skills without hardcoded framework patterns:

bash
# Internal process executed automatically
jikime-adk skill search "{target_framework}"

Architecture Pattern Selection (core step of Phase 2):

  1. Recommendations based on source_architecture and Architecture Layers analysis results
  2. Present 3 options to user: fullstack-monolith / frontend-backend / frontend-only
  3. If frontend-backend is selected, follow-up question for backend framework (FastAPI/NestJS/Express/Go)
  4. Update .migrate-config.yaml (target_architecture, target_framework_backend, db_access_from)

Generates and compares 2-3 migration strategies:

StrategyRiskSpeedSuitable When
IncrementalLowSlowComplexity > 70
PhasedMediumMediumComplexity 40-70
Big-BangHighFastComplexity < 40

4. Execution (Phase 3) - DDD Migration Cycle

Execution strategy varies based on target_architecture:

ArchitectureExecution Method
fullstack-monolithSingle project DDD cycle (default)
frontend-backend4-stage separate execution: Shared → Backend → Frontend → Integration
frontend-onlyDDD cycle for frontend modules only (DB steps skipped)

Performs ANALYZE-PRESERVE-IMPROVE cycle for each module:

ANALYZE:     Understand source component behavior
ANALYZE-DB:  Identify data models and query patterns (if DB exists)
PRESERVE:    Write characterization tests (capture current behavior)
PRESERVE-DB: Write data layer tests (if DB exists)
IMPROVE:     Convert to target framework (apply skill conventions)
IMPROVE-DB:  Convert ORM/data access patterns (if DB exists)

LSP Quality Gates

LSP-based quality gates are automatically applied during Phase 3 execution:

PhaseConditionDescription
planrequire_baseline: trueCapture LSP baseline when establishing migration plan
executemax_errors: 0Zero type errors/lint errors required
verifyrequire_clean_lsp: trueLSP clean state required before verification

Configuration location: .jikime/config/quality.yamlconstitution.lsp_quality_gates

Ralph Loop Integration

F.R.I.D.A.Y.'s DDD Migration Cycle integrates with LSP Quality Gates:

Ralph Loop Cycle (Migration):
  1. ANALYZE: Source component analysis + LSP baseline capture
  2. PRESERVE: Characterization test generation
  3. IMPROVE: Convert to target framework
  4. LSP Check: LSP diagnostics after conversion (regression check)
  5. Decision: Continue, Retry, or Pivot

When LSP regression is detected, F.R.I.D.A.Y. automatically attempts alternative migration patterns.

Self-Assessment Loop

F.R.I.D.A.Y. automatically evaluates during each module conversion:

  1. "Is the current module being migrated successfully?"

    • TypeScript compilation successful?
    • Characterization tests passing?
    • Build successful?
  2. "Should the approach be changed?"

    • Trigger: 3 consecutive failures on the same module
    • Action: Attempt alternative migration pattern
  3. "Is the complexity too high for automatic migration?"

    • Trigger: Single component complexity > 90
    • Action: Split into sub-components or request user guidance

Progress Tracking

yaml
# {artifacts_dir}/progress.yaml
project: my-vue-app
source: vue3
target: nextjs16
target_architecture: fullstack-monolith  # Selected architecture pattern
status: in_progress
strategy: phased

phases:
  discover: completed
  analyze: completed
  plan: completed
  execute: in_progress
  verify: pending

modules:
  total: 15
  completed: 8
  in_progress: 1
  failed: 0
  pending: 6

current:
  module: UserProfile
  iteration: 2

5. Verification (Phase 4) - Playwright E2E

A 10-step verification system ensures migration quality:

StepVerification ItemTool
1Infrastructure (Auto-start dev server)Playwright
2Route discovery (Explore testable routes)Explore
3Visual regression (5 viewport comparison)Playwright Screenshots
4Behavior testing (forms, API, JS errors)Playwright Actions
5Cross-browser (Chromium/Firefox/WebKit)Playwright Multi-Browser
6Performance (Core Web Vitals, bundle size)Playwright Metrics
7Accessibility (WCAG compliance)axe-core
8Agent delegation (e2e-tester + skills)Task Agent
9Integration verification (flags, dependencies)CLI
10Report (Markdown + HTML + JSON)Write

Strategy Details

auto (default)

F.R.I.D.A.Y. analyzes migration complexity and automatically selects the optimal strategy:

Migration TypeAnalysis ResultSelected Strategy
Simple (single framework, <20 components)Complexity < 40Big-Bang (direct sequential)
Medium (2-3 concerns, 20-50 components)Complexity 40-70Phased (checkpoints)
Complex (multi-domain, >50 components)Complexity > 70Incremental (parallel orchestration)

safe (conservative)

Applies maximum verification and safeguards:

  • User confirmation between each Phase
  • Individual component migration
  • Full test suite execution at each step
  • Rollback points for all Phases

fast (aggressive)

Fast execution for small migrations:

  • Minimal checkpoints (Phase-level only)
  • Batch component migration
  • Skip selective verification
  • Prioritize quick completion

Framework Agnosticism

F.R.I.D.A.Y. is designed to be framework-agnostic. Without hardcoded target framework patterns, all knowledge is gathered dynamically:

SourceKnowledge Origin
Skillsjikime-adk skill search "{target_framework}"
Context7Fallback when no skill exists
as_is_spec.mdSource analysis data

Supported Migrations (non-exhaustive)

SourceTarget Options
Vue 2/3Next.js (App Router)
React (CRA)Next.js (App Router)
AngularNext.js, SvelteKit
jQueryReact, Vue, Svelte
PHPNext.js, FastAPI, Go
MonolithMicroservices
Any sourceAny target

Whitepaper Generation

Using the --whitepaper flag generates a client report after migration completion:

Artifact Structure

{whitepaper_output}/
├── 00_cover.md                    # Cover + Table of Contents
├── 01_executive_summary.md        # Non-technical summary
├── 02_migration_summary.md        # Execution timeline
├── 03_architecture_comparison.md  # Before/After diagrams
├── 04_component_inventory.md      # Migrated component list
├── 05_performance_report.md       # Performance metrics
├── 06_quality_report.md           # Quality metrics
└── 07_lessons_learned.md          # Recommendations

Supported Languages

CodeLanguage
koKorean
enEnglish
jaJapanese
zhChinese

Resume Capability

You can continue an interrupted migration:

bash
/jikime:friday resume

Internal operation:

  1. Read project settings from .migrate-config.yaml
  2. Check current status from {artifacts_dir}/progress.yaml
  3. Identify last completed Phase
  4. Continue from next pending Phase/module
  5. Restore strategy and context

Agent Delegation

Agent Delegation by Phase

PhaseAgentRole
Phase 0Explore (x3)Code analysis, dependency analysis, risk assessment
Phase 1manager-specas_is_spec.md generation
Phase 2manager-strategyMigration strategy development
Phase 3backend, frontendDDD-based code migration
Phase 4e2e-testerPlaywright verification

Output Format

During Execution

markdown
## F.R.I.D.A.Y.: Phase 3 - Execution (Module 8/15)

### Migration: Vue 3 → Next.js 16
### Complexity Score: 55/100

### Module Status
- [x] Auth module (5 components)
- [x] Users module (3 components)
- [ ] Products module <- in progress
- [ ] Orders module
- [ ] Dashboard module

### Self-Assessment
- Progress: YES (build errors: 3 -> 1)
- Pivot needed: NO
- Current module confidence: 80%

### Active Issues
- WARNING: ProductCard.tsx - dynamic import pattern needs manual review

Continuing...

Completion

markdown
## F.R.I.D.A.Y.: MIGRATION COMPLETE

### Summary
- Source: Vue 3 (Vuetify)
- Target: Next.js 16 (App Router)
- Strategy Used: Phased
- Modules Migrated: 15/15
- Tests: 89/89 passing
- Build: SUCCESS
- Iterations: 12
- Self-Corrections: 2

### Predictive Suggestions
1. Set up CI/CD pipeline for the new project
2. Configure production environment variables
3. Set up monitoring and error tracking
4. Plan user acceptance testing

<jikime>MIGRATION_COMPLETE</jikime>

Limitations & Safety

Limitations

  • Maximum 3 strategy pivots (user intervention requested afterward)
  • Maximum 5 retries per module
  • Session-only learning (no cross-session learning)

Safety Measures

  • [HARD] All implementations delegated to specialist agents
  • [HARD] User confirmation required before Phase 3 execution (except --strategy fast)
  • [HARD] Completion marker required: <jikime>MIGRATION_COMPLETE</jikime>
  • [HARD] Dynamic skill discovery - no hardcoded framework patterns
  • [HARD] Read from .migrate-config.yaml and as_is_spec.md - no source re-analysis
  • [HARD] LSP Quality Gate: Zero errors required in execute phase
  • Rollback points created for each Phase
  • LSP Quality Gates automatically alert when regression is detected

Best Practices

When to Use F.R.I.D.A.Y.?

Suitable cases:

  • Transitioning legacy projects to modern frameworks
  • Framework upgrades (Vue 2 → Vue 3, React CRA → Next.js)
  • Monolithic → Microservices conversion
  • Frontend framework replacement

When J.A.R.V.I.S. is better:

  • Implementing new features
  • Refactoring existing code (without framework changes)
  • Bug fixes
  • Performance optimization

Dual Orchestrator Switching

bash
# Development work → J.A.R.V.I.S.
/jikime:jarvis "Add user authentication"

# Migration work → F.R.I.D.A.Y.
/jikime:friday "Migrate Vue app to Next.js 16"

# Automatic routing (keyword-based)
"migrate this app" F.R.I.D.A.Y.
"implement login" J.A.R.V.I.S.

Version: 1.3.0 Last Updated: 2026-02-03 Codename: F.R.I.D.A.Y. (Framework Relay & Integration Deployment Assistant Yesterday) Inspiration: Iron Man's second AI Assistant (successor to J.A.R.V.I.S.) Changelog:

  • v1.3.0: Added Architecture Pattern support (fullstack-monolith, frontend-backend, frontend-only); Architecture selection step (Phase 2); Architecture-specific execution/verification strategies; source_architecture detection
  • v1.2.0: Added Database Layer support (DB/ORM detection, DB-aware DDD cycle, DB schema verification)
  • v1.1.0: LSP Quality Gates integration, Ralph Loop Integration added
  • v1.0.0: Initial release - Migration-focused orchestrator extracted from J.A.R.V.I.S.

Released under the MIT License.