by softaworks
一款面向 Claude、Codex 和 Claude Code 的 AI 技能
1. 打开 Claude 聊天界面
2. 点击下方 "📋 复制" 按钮
3. 粘贴到 Claude 聊天框中并发送
4. 输入 "使用 openapi-to-typescript 技能" 开始使用
=== openapi-to-typescript 技能 === 作者: softaworks 描述: 一款面向 Claude、Codex 和 Claude Code 的 AI 技能 使用方法: 1. 调用技能: "使用 openapi-to-typescript 技能" 2. 提供相关信息: 根据技能要求提供必要参数 3. 查看结果: 技能会返回处理结果 示例: "使用 openapi-to-typescript 技能,帮我分析一下这段代码"
这种方法适用于所有 Claude 用户,不需要安装额外工具。
productivity
medium
A Claude Code skill that converts OpenAPI 3.0 specifications (JSON or YAML) into TypeScript interfaces and type guards.
This skill automates the process of generating type-safe TypeScript code from OpenAPI API specifications. It creates:
Use this skill when you need to:
components/schemaspathstypes/api.ts)openapi, paths, components.schemasPrimitives:
string → stringnumber / integer → numberboolean → booleannull → nullFormat Modifiers (with JSDoc comments):
uuid → string (/** UUID */)date → string (/** Date */)date-time → string (/** ISO DateTime */)email → string (/** Email */)uri → string (/** URI */)Complex Types:
Type[])"value1" | "value2")Type1 | Type2)extends)/**
* Auto-generated from: {source_file}
* Generated at: {timestamp}
*
* DO NOT EDIT MANUALLY - Regenerate from OpenAPI schema
*/
// Types
export interface User { ... }
export type Status = "active" | "draft";
// Request/Response Types
export interface GetUsersRequest { ... }
export type GetUsersResponse = User[];
// Type Guards
export function isUser(value: unknown): value is User { ... }
// Error Types (always included)
export interface ApiError { ... }
export function isApiError(value: unknown): value is ApiError { ... }
Runtime validation functions for each interface:
User: Generate TypeScript types from my OpenAPI spec at ./api/openapi.json
Claude: I'll convert your OpenAPI specification to TypeScript.
[Reads file, validates, generates types, saves to types/api.ts]
User: Convert openapi.yaml to TypeScript and save it to src/types/backend.ts
Claude: I'll generate TypeScript types from your OpenAPI spec.
[Generates and saves to specified location]
Input (openapi.json):
{
"openapi": "3.0.0",
"components": {
"schemas": {
"Product": {
"type": "object",
"properties": {
"id": {"type": "string", "format": "uuid"},
"name": {"type": "string"},
"price": {"type": "number"},
"status": {"type": "string", "enum": ["active", "draft"]}
},
"required": ["id", "name", "price", "status"]
}
}
},
"paths": {
"/products": {
"get": {
"parameters": [
{"name": "page", "in": "query", "schema": {"type": "integer"}},
{"name": "limit", "in": "query", "schema": {"type": "integer"}}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {"$ref": "#/components/schemas/Product"}
}
}
}
}
}
}
}
}
}
Output (types/api.ts):
/**
* Auto-generated from: openapi.json
* Generated at: 2026-01-18T19:00:00Z
*
* DO NOT EDIT MANUALLY - Regenerate from OpenAPI schema
*/
// ============================================================================
// Types
// ============================================================================
export type ProductStatus = "active" | "draft";
export interface Product {
/** UUID */
id: string;
name: string;
price: number;
status: ProductStatus;
}
// ============================================================================
// Request/Response Types
// ============================================================================
export interface GetProductsRequest {
page?: number;
limit?: number;
}
export type GetProductsResponse = Product[];
// ============================================================================
// Type Guards
// ============================================================================
export function isProduct(value: unknown): value is Product {
return (
typeof value === 'object' &&
value !== null &&
'id' in value &&
typeof (value as any).id === 'string' &&
'name' in value &&
typeof (value as any).name === 'string' &&
'price' in value &&
typeof (value as any).price === 'number' &&
'status' in value &&
['active', 'draft'].includes((value as any).status)
);
}
// ============================================================================
// Error Types
// ============================================================================
export interface ApiError {
status: number;
error: string;
detail?: string;
}
export function isApiError(value: unknown): value is ApiError {
return (
typeof value === 'object' &&
value !== null &&
'status' in value &&
typeof (value as any).status === 'number' &&
'error' in value &&
typeof (value as any).error === 'string'
);
}
unknown with warningsallOf scenarios may need manual refinementThis skill complements:
User, Product){Method}{Path}Request (e.g., GetUsersRequest){Method}{Path}Response (e.g., GetUsersResponse)is{TypeName} (e.g., isUser, isProduct){TypeName}{FieldName} (e.g., ProductStatus, UserRole)? suffix? suffixThe skill validates and reports:
openapi, paths, components)$ref referencesPart of the Softaworks Agent Skills collection.
View Count
0
Download Count
0
Favorite Count
0
Quality Score
51