generate-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.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "generate-artifacts" with this command: npx skills add haibaraaiaptx/frontend-openapi-skills/haibaraaiaptx-frontend-openapi-skills-generate-artifacts

OpenAPI Artifact Generation

Generate models and request layer code from OpenAPI via aptx-ft CLI.

Contents

Prerequisites

pnpm add -D @aptx/frontend-tk-cli

Command Overview

CommandPurpose
model genGenerate TypeScript models
aptx functionsGenerate endpoint specs + function wrappers
aptx react-queryGenerate React Query hooks
aptx vue-queryGenerate Vue Query composables

⚠️ Dependency: react-query and vue-query require spec/ from aptx functions. Run functions first.

Parameter Reference

All paths are relative to working directory (project root).

ParameterRequiredDescription
-iOpenAPI file path (e.g., ./openapi.json)
-oOutput directory (e.g., ./src/api)
--model-moderelative (same project) or package (monorepo)
--model-pathPath or package name for model imports
--client-modeglobal (default) / local / package
--client-packageCustom client package name
--no-manifestDisable manifest tracking (default: false)
--manifest-dirCustom manifest directory (default: .generated)
--dry-runPreview mode without updating manifest (default: false)

Model Source Decision

Is models directory inside the same package where API code is generated?
├── YES → --model-mode relative --model-path ./src/models
└── NO  → --model-mode package --model-path @org/models (from package.json "name")

Client Mode Decision

Which HTTP client will the generated code use?
├── Default @aptx/api-client → omit or --client-mode global
├── Custom client in this project → --client-mode local
└── Custom client from npm package → --client-mode package --client-package @org/api-client

⚠️ All aptx commands require --model-mode and --model-path. Without these, generated code will have broken imports.

Discovery Phase - MANDATORY FIRST STEP

Before executing any generation command, discover the actual project configuration.

For Monorepo Projects

# 1. Find packages
ls -d packages/*/

# 2. Get model package name (use THIS for --model-path)
cat packages/domains/package.json  # Extract "name" field

# 3. Verify API package dependencies
cat packages/api/package.json

Critical Rules

❌ NEVER✅ ALWAYS
Guess package name from directoryRead package.json "name" field
Assume @project-name/modelsUse exact value from "name"
Infer from packages/domains/ pathPackage name ≠ directory name

Discovery Checklist

  • Model package directory (e.g., packages/domains/)
  • Model package name from package.json (e.g., @repo/domains)
  • API package directory (e.g., packages/api/)
  • API output path (e.g., packages/api/src)

Workflow

  1. Discovery → Read package.json files
  2. Check output directory → determine if --preserve is needed for models
  3. Confirm → Output dir, model/client settings with user
  4. Execute → Show command, get approval, run

Preserve Parameter Logic for Models

ALWAYS check if target model directory contains existing files before generating:

# Check if model output directory has existing files
ls ./src/models/*.ts 2>/dev/null || echo "empty"
Directory StateAction
Empty or not existsGenerate models WITHOUT --preserve
Has existing .ts filesGenerate models WITH --preserve to keep enum translations

Why: When regenerating models in a non-empty directory, --preserve keeps manually translated enum names while adding new values.

Manifest Tracking

The CLI automatically tracks generated files and detects changes between generations.

Manifest CLI Options

OptionDefaultPurpose
--no-manifestfalseDisable manifest tracking
--manifest-dir <path>.generatedCustom manifest directory
--dry-runfalsePreview mode: generate report without updating manifest

Generated Manifest Files

When manifest tracking is enabled (default), the following files are generated:

<output>/
├── .generated/
│   ├── manifest.json           # Tracks all generated files
│   ├── deletion-report.json    # Machine-readable change report
│   └── deletion-report.md      # Human-readable change report with LLM suggestions
└── api files...

When to Use Manifest Options

ScenarioCommand
Normal generationOmit manifest options (default)
CI/CD without trackingAdd --no-manifest
Preview changes before applyingAdd --dry-run
Custom manifest locationAdd --manifest-dir ./meta

Automatic Barrel Updates

The CLI automatically updates barrel files (index.ts) after generation.

You no longer need to manually run barrel gen after generating artifacts - the generation commands handle this automatically.

What Gets Updated

  • <output>/index.ts - Barrel file for the output directory
  • Subdirectory barrel files as needed

When Manual Barrel Update is Needed

The automatic update handles most cases. Use manual barrel gen only when:

  • Fixing corrupted barrel files
  • Processing non-standard directory structures
  • One-time batch updates across multiple directories

Single Project

# 0. Check if models directory has existing files
ls ./src/models/*.ts 2>/dev/null

# 1. Models (add --preserve if directory is NOT empty)
pnpm exec aptx-ft -i ./openapi.json model gen --output ./src/models --style module --preserve

# 2. Functions
pnpm exec aptx-ft aptx functions -i ./openapi.json -o ./src/api \
  --model-mode relative --model-path ./src/models

# 3. Query layer (choose one)
pnpm exec aptx-ft aptx react-query -i ./openapi.json -o ./src/api \
  --model-mode relative --model-path ./src/models

# Preview changes without updating manifest
pnpm exec aptx-ft aptx functions -i ./openapi.json -o ./src/api \
  --model-mode relative --model-path ./src/models --dry-run

Monorepo

# 0. Check if models directory has existing files
ls ./packages/models/src/*.ts 2>/dev/null

# 1. Models (add --preserve if directory is NOT empty)
pnpm exec aptx-ft -i ./openapi.json model gen --output ./packages/models/src --style module --preserve

# 2. Functions
pnpm exec aptx-ft aptx functions -i ./openapi.json -o ./apps/web/src/api \
  --model-mode package --model-path @org/models

# 3. Query layer (choose one)
pnpm exec aptx-ft aptx react-query -i ./openapi.json -o ./apps/web/src/api \
  --client-mode package --client-package @org/api-client \
  --model-mode package --model-path @org/models

# Custom manifest directory
pnpm exec aptx-ft aptx functions -i ./openapi.json -o ./apps/web/src/api \
  --model-mode package --model-path @org/models --manifest-dir ./meta

Output Structure

src/api/
├── .generated/                     # Manifest tracking files
│   ├── manifest.json               # Tracks all generated files
│   ├── deletion-report.json        # Machine-readable change report
│   └── deletion-report.md          # Human-readable change report
├── index.ts                        # Barrel file (auto-updated)
├── spec/namespace/xxx.ts           # Endpoint definitions (from functions)
├── functions/namespace/xxx.ts      # Function wrappers (from functions)
├── react-query/namespace/          # React Query hooks
│   ├── xxx.query.ts
│   └── xxx.mutation.ts
└── vue-query/namespace/            # Vue Query composables
    ├── xxx.query.ts
    └── xxx.mutation.ts

Framework-Specific Guides

Boundaries

This skill handles generic OpenAPI → TypeScript generation:

  • Does NOT process Materal-specific enum semantics → use adapt-materal-enums
  • Does NOT validate OpenAPI specification correctness
  • Does NOT handle authenticated URL downloads → use download-openapi first

Related Skills

  • download-openapi: Fetch OpenAPI spec from URL
  • generate-models: Model-only generation
  • adapt-materal-enums: Materal framework enum adaptation

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

download-openapi

No summary provided by upstream source.

Repository SourceNeeds Review
General

adapt-materal-enums

No summary provided by upstream source.

Repository SourceNeeds Review
General

generate-models

No summary provided by upstream source.

Repository SourceNeeds Review