materal-enum-adapter
Materal Framework Enum Adapter
Detects Materal Framework's enum endpoints and fetches real enum data from the API for efficient enum generation.
How It Works
Two-command workflow for fast, batch-style enum generation:
fetch - Get enum data from API
- Parse OpenAPI spec for
Enums/GetAll*endpoints (auto-detects namespace) - Extract enum names from endpoint paths
- Fetch
{Key, Value}pairs from Materal API (Chinese values) - Output JSON for AI batch translation
generate - Generate TypeScript files
- Read AI-translated enum data (with English names)
- Validate data structure
- Generate TypeScript enum files (one per enum, overwrites existing)
- Note: Does NOT generate
index.ts- already exists fromgenerate-ts-models
Namespace Detection
Auto-detects namespace prefix from first enum endpoint:
| Endpoint Pattern | Detected Namespace | API URL Example |
|---|---|---|
/MainAPI/Enums/GetAllRole |
/MainAPI |
{base-url}/MainAPI/Enums/GetAllRole |
/GatewayAPI/Enums/GetAllStatus |
/GatewayAPI |
{base-url}/GatewayAPI/Enums/GetAllStatus |
/Enums/GetAllType |
(empty) |
{base-url}/Enums/GetAllType |
Usage
Fetch enum data from API
node skills/materal-enum-adapter/scripts/adapter.js <spec-file> --base-url <url> fetch
Arguments:
spec-file- Path to OpenAPI JSON--base-url- Materal API base URL
Example:
node skills/materal-enum-adapter/scripts/adapter.js openapi.json --base-url http://localhost:5000 fetch
Generate TypeScript files
node skills/materal-enum-adapter/scripts/adapter.js <translation-file> [--output-dir <dir>] generate
Arguments:
translation-file- Path to AI-translated JSON file--output-dir <dir>- Output directory (default:./src/enums)
Example:
node skills/materal-enum-adapter/scripts/adapter.js translations.json --output-dir ./src/types generate
Output Format
fetch output (for AI translation)
{
"success": true,
"detected": true,
"enums": ["Role", "Status"],
"enumsSkipped": 0,
"enumData": [
{
"name": "Role",
"description": "角色",
"values": [
{"key": 0, "value": "管理员"},
{"key": 1, "value": "用户"}
]
}
]
}
Fields:
success- Operation completed successfullydetected- Materal Framework enum controller foundenums- Successfully fetched enum namesenumsSkipped- Number of failed fetchesenumData[].name- Enum name (PascalCase)enumData[].description- Enum descriptionenumData[].values[].key- Enum key (number or string)enumData[].values[].value- Original Chinese value
generate input (AI creates this)
Transform fetch output by replacing value with englishName:
{
"enumData": [
{
"name": "Role",
"values": [
{"key": 0, "englishName": "Administrator", "originalValue": "管理员"},
{"key": 1, "englishName": "User", "originalValue": "用户"}
]
}
]
}
Required fields:
enumData[].name- Enum name (PascalCase)enumData[].values[].key- Enum key (number or string)enumData[].values[].englishName- English name (PascalCase)enumData[].values[].originalValue- Original Chinese value (optional)
generate output (summary)
{
"success": true,
"generated": 2,
"enums": ["Role", "Status"],
"outputDir": "./src/enums"
}
Generated files:
src/enums/
├── Role.ts
└── Status.ts
Role.ts:
export enum Role {
Administrator = 0,
User = 1
}
Note: index.ts is NOT generated - it already exists from generate-ts-models workflow. This skill only overwrites individual enum files with translated values.
Important: Ensure --output-dir matches the directory used by generate-ts-models (default: ./types).
Workflow Example
# Step 1: Generate base models (includes enums + index.ts)
node skills/generate-ts-models/scripts/generate.js openapi.json ./src/types
# Step 2: Fetch real enum values from API
node skills/materal-enum-adapter/scripts/adapter.js openapi.json --base-url http://localhost:5000 fetch > raw.json
# Step 3: AI translates values (batch - single API call)
# Creates translations.json with englishName field
# Step 4: Generate translated enum files (overwrites only enum files)
node skills/materal-enum-adapter/scripts/adapter.js translations.json --output-dir ./src/types generate
Final output:
src/types/
├── User.ts # from generate-ts-models
├── Role.ts # from generate-ts-models, overwritten by materal-enum-adapter
├── index.ts # from generate-ts-models (not regenerated)
Performance: 10-50x faster than AI generating files individually (single translation batch + instant file generation).
Requirements
- OpenAPI spec with
Enums/GetAll*endpoints (any namespace prefix) - Materal API running at
--base-url - Network access to API
Error Handling
Common errors
| Command | Error | Cause | Action |
|---|---|---|---|
| fetch | Cannot read spec file |
Invalid JSON or wrong path | Check file path and JSON validity |
| fetch | No Materal Framework Enums controller detected |
No enum endpoints in spec | Verify spec format |
| fetch | Failed to fetch Role enum after 3 retries |
API unreachable | Check API availability and network |
| generate | Failed to read or parse translation file |
Invalid JSON | Check file path and JSON validity |
| generate | Invalid translation data: missing or invalid enumData array |
Missing enumData | Verify JSON structure |
| generate | Invalid value in Role: missing key or englishName |
Missing required fields | Check all values have key and englishName |
Error codes: All errors exit with code 1.
More from haibaraaiaptx/frontend-openapi-skills
download-openapi
Download remote OpenAPI/Swagger JSON specification from a URL to local file using aptx-ft CLI. TRIGGER when user mentions: (1) fetch/pull/download swagger or openapi from URL, (2) save API spec to openapi.json locally, (3) get API documentation from server, or (4) prepare local input for code generation. DO NOT TRIGGER when: generating code/types from local file, reading existing openapi.json, downloading non-OpenAPI files, or authentication is required.
25generate-artifacts
Generate frontend artifacts from OpenAPI via aptx-ft, including models and request clients. Use when user wants: (1) to generate API code from OpenAPI/Swagger, (2) React Query hooks from API spec, (3) Vue Query composables from API spec, (4) function-based API clients, (5) a standard flow for frontend projects without framework-specific business adaptation, (6) track generated files with manifest, (7) preview changes before generation, or (8) update barrel files automatically.
24generate-models
Generate TypeScript interfaces and enums from OpenAPI schemas using aptx-ft CLI. Use when user asks to: (1) generate types/models from OpenAPI/Swagger, (2) create TypeScript interfaces from API schema, (3) extract type definitions from openapi.json, (4) generate selective models with --name filter, (5) preserve translated enum values, (6) track generated files with manifest, (7) preview changes before generation, or (8) update barrel files automatically. Do NOT use for full artifact generation with request layer or Material UI enum adaptation.
23adapt-materal-enums
Materal-specific enum adaptation workflow: fetch enum values from provider API, let LLM fill suggested_name, then apply patch with aptx-ft. Use ONLY when: (1) user mentions Materal framework, (2) Materal naming rules are required, or (3) adapting Materal enum semantics. Do NOT use for generic OpenAPI projects.
23generate-barrels
Generate barrel index.ts files for TypeScript projects. Use when user mentions: (1) barrel files, (2) index.ts exports, (3) re-export files, (4) simplify import paths, (5) create index files for directory, or (6) generate export aggregators.
18download-swagger-file
从 URL 下载 OpenAPI 3.x JSON 规范文件。用于:(1)从远程服务器获取 API 规范,(2)将 OpenAPI JSON 保存到本地,(3)为 TypeScript 模型生成准备规范。
6