Phase output file naming conventions and format standards
All phase outputs MUST follow this naming convention:
.claude/.localmemory/create-{module-identifier}/phase-{NN}-{phase-name}.json
Where:
{module-identifier}: Module identifier (e.g., github-github, amazon-aws-s3){NN}: Two-digit phase number (01, 02, 03, etc.){phase-name}: Short descriptive name (lowercase, hyphen-separated)File: phase-01-discovery.json
Content:
{
"phase": 1,
"name": "Discovery & Analysis",
"status": "completed",
"timestamp": "2025-10-08T10:00:00Z",
"productPackage": "@auditlogic/product-github-github",
"modulePackage": "@zerobias-org/module-github-github",
"moduleIdentifier": "github-github",
"serviceName": "GitHub",
"productInfo": {
"vendor": "github",
"suite": null,
"service": "github",
"description": "GitHub API",
"baseUrl": "https://api.github.com"
},
"credentials": {
"status": "found",
"authMethod": "Bearer token",
"profile": "tokenProfile.yml"
},
"selectedOperation": {
"name": "listRepositories",
"method": "GET",
"endpoint": "/user/repos",
"reasoning": "Simplest GET operation with no required parameters"
},
"apiResearch": {
"connectionTested": true,
"operationTested": true,
"responsesFolder": "_work/test-responses/"
}
}
File: phase-02-scaffolding.json
Content:
{
"phase": 2,
"name": "Module Scaffolding",
"status": "completed",
"timestamp": "2025-10-08T10:30:00Z",
"modulePath": "package/github/github",
"moduleIdentifier": "github-github",
"yeomanCommand": "yo @auditmation/hub-module ...",
"validations": {
"1_directoryStructure": { "status": "passed" },
"2_packageJsonMetadata": { "status": "passed" },
"3_apiYmlProductReference": { "status": "passed" },
"4_apiYmlTitleVersion": { "status": "passed" },
"5_connectionProfileExists": { "status": "passed" },
"6_connectionStateExists": { "status": "passed" },
"7_sourceFilesExist": { "status": "passed" },
"8_testFilesExist": { "status": "passed" },
"9_dependenciesInstalled": { "status": "passed" },
"10_symlinksCreated": { "status": "passed" },
"11_typescriptConfigValid": { "status": "passed" }
},
"validationSummary": {
"total": 11,
"passed": 11,
"failed": 0
},
"note": "Build validation deferred to Phase 8 (stubs are not yet fully implemented)",
"gitCommit": {
"hash": "abc123...",
"message": "chore: scaffold github-github module"
}
}
File: phase-03-api-spec.json
Content:
{
"phase": 3,
"name": "API Specification",
"status": "completed",
"timestamp": "2025-10-08T11:00:00Z",
"files": {
"apiYml": "package/github/github/api.yml",
"connectionProfile": "package/github/github/connectionProfile.yml",
"connectionState": "package/github/github/connectionState.yml"
},
"apiSpec": {
"operations": ["connect", "listRepositories"],
"schemas": ["ConnectionProfile", "ConnectionState", "Repository"],
"securityScheme": "bearer"
},
"gate1": {
"status": "passed",
"validations": {
"noDescribeOperations": "passed",
"onlySuccessResponses": "passed",
"camelCaseProperties": "passed",
"nestedObjectsUseRef": "passed",
"noEnvelopeSchemas": "passed"
}
}
}
File: phase-04-type-generation.json
Content:
{
"phase": 4,
"name": "Type Generation",
"status": "completed",
"timestamp": "2025-10-08T11:15:00Z",
"command": "npm run clean && npm run generate",
"exitCode": 0,
"generatedFiles": [
"generated/api/index.ts",
"generated/api/GithubConnector.ts",
"generated/model/Repository.ts",
"generated/model/ConnectionProfile.ts",
"generated/model/ConnectionState.ts"
],
"gate2": {
"status": "passed",
"validations": {
"generationSuccess": "passed",
"noInlineTypes": "passed",
"noCompilationErrors": "passed"
}
}
}
File: phase-05-implementation.json
Content:
{
"phase": 5,
"name": "Core Implementation",
"status": "completed",
"timestamp": "2025-10-08T12:00:00Z",
"implementedFiles": {
"client": "src/Client.ts",
"connector": "src/GithubConnectorImpl.ts",
"producers": ["src/RepositoryProducer.ts"],
"mappers": "src/Mappers.ts"
},
"gate3": {
"status": "passed",
"validations": {
"noAnyTypes": "passed",
"usingGeneratedTypes": "passed",
"connectorExtendsInterface": "passed",
"metadataBoilerplate": "passed",
"isSupportedBoilerplate": "passed",
"mappersUseConstOutput": "passed"
}
}
}
File: phase-06-testing.json
Content:
{
"phase": 6,
"name": "Testing Setup",
"status": "completed",
"timestamp": "2025-10-08T13:00:00Z",
"testFiles": {
"connectionUnit": "test/unit/ConnectionTest.ts",
"repositoryUnit": "test/unit/RepositoryProducerTest.ts",
"connectionIntegration": "test/integration/ConnectionTest.ts",
"repositoryIntegration": "test/integration/RepositoryTest.ts"
},
"testExecution": {
"command": "npm test",
"exitCode": 0,
"totalTests": 12,
"passed": 12,
"failed": 0
},
"gate4": {
"status": "passed",
"validations": {
"testsCreated": "passed",
"onlyNockForMocking": "passed",
"noHardcodedValues": "passed"
}
},
"gate5": {
"status": "passed",
"validations": {
"allTestsPass": "passed",
"noRegressions": "passed"
}
}
}
File: phase-07-documentation.json
Content:
{
"phase": 7,
"name": "Documentation",
"status": "completed",
"timestamp": "2025-10-08T13:30:00Z",
"files": {
"userguide": "package/github/github/USERGUIDE.md",
"readme": "package/github/github/README.md"
},
"content": {
"credentialAcquisition": true,
"connectionSetup": true,
"operationExamples": true
}
}
File: phase-08-build.json
Content:
{
"phase": 8,
"name": "Build & Finalization",
"status": "completed",
"timestamp": "2025-10-08T14:00:00Z",
"build": {
"command": "npm run build",
"exitCode": 0,
"outputFiles": ["dist/index.js", "dist/index.d.ts"]
},
"shrinkwrap": {
"command": "npm run shrinkwrap",
"exitCode": 0,
"file": "npm-shrinkwrap.json"
},
"gate6": {
"status": "passed",
"validations": {
"buildSuccess": "passed",
"noErrors": "passed",
"distFilesCreated": "passed",
"shrinkwrapCreated": "passed"
}
}
}
File: phase-09-validation.json
Content:
{
"phase": 9,
"name": "Final Validation",
"status": "completed",
"timestamp": "2025-10-08T14:15:00Z",
"allGates": {
"gate1_apiSpec": "passed",
"gate2_typeGeneration": "passed",
"gate3_implementation": "passed",
"gate4_testCreation": "passed",
"gate5_testExecution": "passed",
"gate6_build": "passed"
},
"moduleReady": true,
"deploymentReady": true
}
If a phase has multiple sub-steps that need separate tracking:
phase-01-product-discovery.json
phase-01-api-research.json
phase-01-operation-selection.json
phase-01-credentials.json
Format: phase-{NN}-{step-name}.json
Use this ONLY when sub-steps are significant enough to warrant separate output files.
Files in _work/ directory don't follow this convention:
.claude/.localmemory/create-{module-id}/_work/
├── product-model.md
├── api-research.md
├── operation-selection.md
├── credentials-status.md
└── test-responses/
├── auth-response.json
└── operation-response.json
These are intermediate working files, not formal phase outputs.
Every agent must:
Phase N starts
↓
Read: phase-{N-1}-*.json (previous phase output)
↓
Execute work
↓
Write: phase-{N}-*.json (current phase output)
↓
Phase N complete
Old: task-01-output.json, task-02-output.json, etc.
New: phase-01-discovery.json, phase-02-scaffolding.json, etc.
All new work uses the NEW naming convention.