基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/wrtnlabs/autobe --skill fix-interface命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | fix-interface |
| description | Fix Interface and Controller compilation errors |
| allowed-tools | Read, Edit, Write, Bash, Grep, Glob |
Fix interface and controller compilation errors according to code conventions.
NEVER use:
as keyword (type assertion)any typeFix type issues by properly defining interfaces.
Leave as-is:
console.log in Controller catch blocksconsole.error in Controller catch blocksThese are intentional and should not be changed to NestJS Logger.
Fix compilation errors in interface and controller files to ensure npm run build:main passes.
┌─────────────────────────────────────┐
│ Step 1: Run Build │
│ npm run build:main │
└───────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Step 2: Parse Interface Errors │
│ - Empty interfaces {} │
│ - Type mismatches │
│ - Missing properties │
└───────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Step 3: Fix by Convention │
│ - Fill empty interfaces │
│ - Add typia tags │
│ - Fix nullable types │
└───────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Step 4: Re-run Build │
│ Loop until 0 errors │
└─────────────────────────────────────┘
npm run build:main 2>&1 | head -100
Capture interface-related errors.
Common error patterns:
Type '{}' is not assignable → Empty interfaceProperty 'X' does not exist on type '{}' → Empty interfaceType 'string' is not assignable to type 'string & Format<"uuid">' → Missing typia tagRead Prisma schema and fill interface:
// Before
export type IEntity = {};
// After
import { tags } from "typia";
export type IEntity = {
id: string & tags.Format<"uuid">;
name: string;
status: "active" | "inactive";
created_at: string & tags.Format<"date-time">;
updated_at: string & tags.Format<"date-time">;
deleted_at: (string & tags.Format<"date-time">) | null;
};
export namespace IEntity {
export type ICreate = {
name: string;
status?: "active" | "inactive"; // optional with default
};
}
export namespace IEntity {
export type IUpdate = {
name?: string;
status?: "active" | "inactive";
};
}
export namespace IEntity {
export type ISummary = {
id: string & tags.Format<"uuid">;
name: string;
status: "active" | "inactive";
created_at: string & tags.Format<"date-time">;
};
}
export namespace IEntity {
export type IRequest = {
page?: number & tags.Minimum<1>;
limit?: number & tags.Minimum<1> & tags.Maximum<100>;
search?: string;
status?: "active" | "inactive";
};
}
// UUID
id: string & tags.Format<"uuid">;
// Email
email: string & tags.Format<"email">;
// URL
url: string & tags.Format<"uri">;
// DateTime
created_at: string & tags.Format<"date-time">;
// Numeric constraints
page: number & tags.Minimum<1>;
limit: number & tags.Minimum<1> & tags.Maximum<100>;
// Nullable field
deleted_at: (string & tags.Format<"date-time">) | null;
// Optional nullable field
description?: string | null;
Fix redundant path segments where the same word repeats:
// Before - redundant word in path: /{word}/{word}s
@Controller("{prefix}/{word}/{word}s")
export class {Word}{Word}sController { ... }
// After - remove redundant segment
@Controller("{prefix}/{word}s")
export class {Word}sController { ... }
Pattern to fix:
/{word}/{word}s → /{word}s/{word}/{word}-* → /{word}-* or /{word}/*When fixing paths, also update:
@Controller() decoratornpm run build:main
Repeat Steps 2-4 until no interface errors.
| Error Pattern | Fix |
|---|---|
Empty interface {} | Read Prisma schema, define all fields |
| Missing typia tag | Add appropriate tags.Format<> |
| Nullable mismatch | Add | null for nullable fields |
| Missing namespace | Add namespace with ICreate, IUpdate, etc. |
Redundant path /{word}/{word}s | Remove duplication: /{word}s |
npm run build:main completes with no interface errors/{word}/{word}s pattern)