Skip to content

manifest.json

manifest.json is the entry point for ModernizeSpec. AI agents read this file first to understand what the project is, what it is built with, what it is migrating to, and which other spec files are available.

{
"modernizespec": "0.1.0",
"project": "ERPNext",
"legacy": {
"framework": "frappe",
"language": "python",
"loc": 316000,
"entities": 521,
"endpoints": 768,
"age_years": 20
},
"target": {
"language": "go",
"architecture": "hexagonal",
"pattern": "strangler-fig"
},
"files": {
"domains": "domains.json",
"complexity": "complexity.json",
"extraction-plan": "extraction-plan.json",
"parity-tests": "parity-tests.json",
"migration-state": "migration-state.json"
}
}
FieldTypeRequiredDescription
modernizespecstringYesSpec version (semver). Currently "0.1.0".
projectstringYesProject name.

Describes the legacy system being modernized.

FieldTypeRequiredDescription
frameworkstringYesFramework name. Examples: "frappe", "django", "rails", "spring", "dotnet", "custom"
languagestringYesPrimary language. Examples: "python", "java", "ruby", "csharp", "php", "cobol"
locnumberYesTotal lines of code (source files only).
entitiesnumberYesNumber of business entities/models/doctypes.
endpointsnumberYesNumber of API endpoints.
age_yearsnumberNoApproximate age of the codebase in years.

Describes the modernization target.

FieldTypeRequiredDescription
languagestringYesTarget language. Examples: "go", "kotlin", "typescript", "java"
architecturestringYesTarget architecture. Options: "hexagonal", "clean", "modular-monolith", "microservices"
patternstringYesMigration pattern. Options: "strangler-fig", "big-bang", "parallel-run"

Maps logical names to file paths (relative to the modernization/ directory).

FieldTypeRequiredDescription
domainsstringNoPath to domains file
complexitystringNoPath to complexity file
extraction-planstringNoPath to extraction plan file
parity-testsstringNoPath to parity tests file
migration-statestringNoPath to migration state file

Only the required fields:

{
"modernizespec": "0.1.0",
"project": "LegacyApp",
"legacy": {
"framework": "django",
"language": "python",
"loc": 85000,
"entities": 120,
"endpoints": 200
},
"target": {
"language": "typescript",
"architecture": "modular-monolith",
"pattern": "strangler-fig"
},
"files": {}
}

When an AI agent discovers .agents/modernization/manifest.json, it should:

  1. Read the legacy object to understand the source system
  2. Read the target object to understand where the migration is heading
  3. Iterate through files to discover which spec files are available
  4. Load the relevant files based on the current task