Skip to main content

fix-interface

Fix Interface and Controller compilation errors

インストールへ移動

ソース情報

リポジトリ
wrtnlabs/autobe
ソースの最終更新活動
2026年2月24日 04:09
検出された SKILL.md の言語
英語
スター
1,360
フォーク
156

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
fix-interface
description
Fix Interface and Controller compilation errors
allowed-tools
Read, Edit, Write, Bash, Grep, Glob
# Fix Interface Errors Fix interface and controller compilation errors according to code conventions. ## FORBIDDEN **NEVER use:** - `as` keyword (type assertion) - `any` type Fix type issues by properly defining interfaces. ## DO NOT MODIFY **Leave as-is:** - `console.log` in Controller catch blocks - `console.error` in Controller catch blocks These are intentional and should not be changed to NestJS Logger. --- ## Purpose Fix compilation errors in interface and controller files to ensure `npm run build:main` passes. ## Workflow ``` ┌─────────────────────────────────────┐ │ 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 │ └─────────────────────────────────────┘ ``` --- ## Step 1: Run Build ```bash npm run build:main 2>&1 | head -100 ``` Capture interface-related errors. --- ## Step 2: Parse Errors Common error patterns: - `Type '{}' is not assignable` → Empty interface - `Property 'X' does not exist on type '{}'` → Empty interface - `Type 'string' is not assignable to type 'string & Format<"uuid">'` → Missing typia tag --- ## Step 3: Fix by Convention ### Empty Interface Fix Read Prisma schema and fill interface: ```typescript // 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; }; ``` ### ICreate Convention ```typescript export namespace IEntity { export type ICreate = { name: string; status?: "active" | "inactive"; // optional with default }; } ``` ### IUpdate Convention ```typescript export namespace IEntity { export type IUpdate = { name?: string; status?: "active" | "inactive"; }; } ``` ### ISummary Convention ```typescript export namespace IEntity { export type ISummary = { id: string & tags.Format<"uuid">; name: string; status: "active" | "inactive"; created_at: string & tags.Format<"date-time">; }; } ``` ### IRequest Convention ```typescript export namespace IEntity { export type IRequest = { page?: number & tags.Minimum<1>; limit?: number & tags.Minimum<1> & tags.Maximum<100>; search?: string; status?: "active" | "inactive"; }; } ``` ### Typia Tags ```typescript // 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 Types ```typescript // Nullable field deleted_at: (string & tags.Format<"date-time">) | null; // Optional nullable field description?: string | null; ``` ### Path Naming Fix Fix redundant path segments where the same word repeats: ```typescript // 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: 1. Controller `@Controller()` decorator 2. Controller class name 3. Controller file name and directory 4. Related provider function names 5. Test file paths and API calls --- ## Step 4: Verify ```bash npm run build:main ``` Repeat Steps 2-4 until no interface errors. --- ## Common Fixes | 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` | --- ## Exit Condition - `npm run build:main` completes with no interface errors - All interfaces properly defined - All typia tags applied - No redundant path segments (`/{word}/{word}s` pattern)
GitHubで見る