在 Manus 中运行任何 Skill
一键导入
一键导入
一键在 Manus 中运行任何 Skill
开始使用api-response
星标0
分支0
更新时间2026年4月6日 07:31
API 라우트 응답 포맷 통일. 성공/실패 구조, HTTP 상태코드, 에러 코드 강제.
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
API 라우트 응답 포맷 통일. 성공/실패 구조, HTTP 상태코드, 에러 코드 강제.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
AI 프롬프트 템플릿 중앙 관리. 변수 플레이스홀더, 태그 규칙, 프롬프트 주입 방지.
DB 컬럼 ↔ TypeScript 타입 1:1 매핑 강제. enum 값 고정, nullable 규칙.
ZPD 기반 적응적 모드 전환 (Grill-Me → Guide-Me → Quick-Me). 3회 오답 감지, 모드 복귀 로직.
Vercel 배포 전 체크리스트. 환경변수, API 키 노출 방지, OIDC 설정.
수학 오개념 5유형 분류 패턴. AI 응답에 [MISCONCEPTION_TYPE] 태그 강제.
React 컴포넌트 패턴. Server/Client 분리, shadcn/ui 우선, JSDoc 주석, props 타입.
| name | api-response |
| description | API 라우트 응답 포맷 통일. 성공/실패 구조, HTTP 상태코드, 에러 코드 강제. |
| metadata | {"filePattern":["**/api/**/*.ts","**/route.ts"],"bashPattern":[]} |
// ✅ 성공
NextResponse.json(
{ success: true, data: T, message?: string },
{ status: 200 | 201 }
);
// ✅ 실패
NextResponse.json(
{ success: false, error: string, code: ErrorCode },
{ status: 400 | 404 | 500 }
);
type ErrorCode = 'VALIDATION_ERROR' | 'NOT_FOUND' | 'INTERNAL_ERROR';
/**
* @file app/api/{domain}/route.ts
* @description {설명}
* @domain {도메인}
* @access server-only
*/
import { NextRequest, NextResponse } from 'next/server';
import { createSupabaseAdmin } from '@/lib/supabase/admin';
export async function POST(request: NextRequest) {
try {
const body = await request.json();
// 1. 입력 검증
if (!body.requiredField) {
return NextResponse.json(
{ success: false, error: '필수 항목입니다', code: 'VALIDATION_ERROR' },
{ status: 400 }
);
}
// 2. 비즈니스 로직
const supabase = createSupabaseAdmin();
const { data, error } = await supabase
.from('table')
.insert(body)
.select()
.single();
if (error) throw new Error(error.message);
// 3. 성공 응답
return NextResponse.json(
{ success: true, data },
{ status: 201 }
);
} catch (error) {
console.error('[POST /api/{domain}]', error);
return NextResponse.json(
{ success: false, error: '서버 오류가 발생했습니다', code: 'INTERNAL_ERROR' },
{ status: 500 }
);
}
}
any 타입 응답success 필드 없는 응답