Claude Code Plugins

Community-maintained marketplace

Feedback

AI 건축 기획설계 서비스 개발 스킬. Flexity 벤치마킹 프로젝트로 Next.js + Tailwind + Three.js 기반. VWorld/공공데이터포털 API 연동 및 Google Gemini AI 통합. 사용 시점 - 토지분석 API 개발, AI 매스 스터디, 수익성 분석, 3D 시각화, Lambda 프록시 구현. 핵심 규칙 - URL 끝 슬래시 필수, 한글 파라미터는 POST+JSON, 타임아웃 설정, CORS 헤더.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name ai-building-design
description AI 건축 기획설계 서비스 개발 스킬. Flexity 벤치마킹 프로젝트로 Next.js + Tailwind + Three.js 기반. VWorld/공공데이터포털 API 연동 및 Google Gemini AI 통합. 사용 시점 - 토지분석 API 개발, AI 매스 스터디, 수익성 분석, 3D 시각화, Lambda 프록시 구현. 핵심 규칙 - URL 끝 슬래시 필수, 한글 파라미터는 POST+JSON, 타임아웃 설정, CORS 헤더.

AI 건축 기획설계 서비스 개발 스킬

프로젝트 개요

  • 벤치마킹: Flexity (https://flexity.app/)
  • 차별점: 무료 + 광고수익 + 사용자 AI API 키
  • 배포: Vercel
  • 프록시: AWS Lambda (서울 리전)

기술 스택

  • Next.js 14+ (App Router)
  • TypeScript, Tailwind CSS
  • Three.js / React-Three-Fiber (3D)
  • Google Gemini API (사용자 키)
  • VWorld, 공공데이터포털 API

⚠️ API 호출 필수 규칙

규칙 1: URL 끝 슬래시(/) 필수

// ❌ 404 에러
const URL = 'https://xxx.execute-api.amazonaws.com/prod';

// ✅ 정상
const URL = 'https://xxx.execute-api.amazonaws.com/prod/';

규칙 2: 한글 파라미터는 POST + JSON

// ❌ GET - 인코딩 깨짐
fetch(`${URL}?address=${encodeURIComponent('제주시')}`);

// ✅ POST - 안전
fetch(URL, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ address: '제주시 도남동 50-11' })
});

규칙 3: Lambda GET/POST 모두 처리

let params = event.queryStringParameters || {};
if (event.body) {
  params = { ...params, ...JSON.parse(event.body) };
}

규칙 4: CORS 헤더 필수

const headers = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Headers': 'Content-Type',
  'Access-Control-Allow-Methods': 'GET, POST, OPTIONS'
};

규칙 5: 타임아웃 설정

fetch(url, { signal: AbortSignal.timeout(15000) });

규칙 6: 응답 검증 후 JSON 파싱

if (!res.ok) throw new Error(`API Error: ${res.status}`);
const data = await res.json();

참조 문서

상세 정보는 references 폴더 참조:

  • API 상세 규칙: references/api-rules.md
  • 건축 기준: references/building-standards.md
  • AI 프롬프트: references/ai-prompts.md

프로젝트 구조

/app
  /page.tsx                # 메인 페이지
  /layout.tsx              # 레이아웃 (AdSense)
  /api/analyze/route.ts    # 토지분석 API
/lib
  /constants.ts            # 건폐율/용적률
  /prompts.ts              # AI 프롬프트
/components
  /AddressInput.tsx
  /MassStudyResult.tsx
  /Building3DView.tsx

Git 배포

git add -A && git commit -m "feat: 설명" && git push

디버깅

# Lambda POST 테스트
curl -X POST "https://xxx.amazonaws.com/prod/" \
  -H "Content-Type: application/json" \
  -d '{"type":"geocode","address":"제주시 도남동"}'