ait-assets
앱인토스 콘솔 등록에 필요한 초기 이미지(로고/가로형 썸네일)/텍스트 리소스를 점검하고, 이미지 자동 생성 옵션 제공. 세로형 스크린샷은 implement 이후 /ait-screenshots 가 담당
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
앱인토스 콘솔 등록에 필요한 초기 이미지(로고/가로형 썸네일)/텍스트 리소스를 점검하고, 이미지 자동 생성 옵션 제공. 세로형 스크린샷은 implement 이후 /ait-screenshots 가 담당
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
앱인토스 미니앱 전체 출시 플로우를 8단계(기획→리소스→스캐폴딩→TDS→구현→스크린샷→검수→빌드)로 순차 실행
앱의 .meta-dashboard.json을 PRD와 소스코드 분석으로 자동 생성합니다.
미니앱 기본 틀(React + Vite + granite)을 세팅하고, PRD 에 맞춰 라우팅/서버 데이터/TDS 를 자동 판단해 설치합니다.
typecheck→lint→ait build 순서로 빌드하고 .ait 번들 용량 검증 및 콘솔 업로드 절차 안내
Claude 스킬·에이전트가 정상 동작할 수 있는 환경인지 점검. 시스템·MCP·에셋 도구·환경변수를 한 번에 확인하고 실패 항목에 대한 해결 가이드를 제공.
앱인토스 검수 체크리스트 기반 코드 리뷰. light(핵심만)/full(전수검사) 모드 지원
| name | ait-assets |
| description | 앱인토스 콘솔 등록에 필요한 초기 이미지(로고/가로형 썸네일)/텍스트 리소스를 점검하고, 이미지 자동 생성 옵션 제공. 세로형 스크린샷은 implement 이후 /ait-screenshots 가 담당 |
| argument-hint | [앱 유형: game|partner] [--generate-images] |
| mode | interactive |
| step | 2 |
| label | 에셋 |
| produces | 로고, 가로형 썸네일 |
| requires | [] |
| inputs | [{"key":"appType","type":"enum","values":["game","partner"],"required":false},{"key":"generateImages","type":"boolean","required":false}] |
| outputs | [{"key":"images","type":"files","path":"apps/*/assets/*.{svg,png}"}] |
| idempotencyKey | ait-assets |
콘솔 등록에 필요한 이미지/텍스트 리소스를 점검하고 미비 사항을 안내합니다.
이미지 실제 생성은 graphic-designer 에이전트에 위임하고, SKILL은 체크리스트 점검·텍스트 규칙 검증·에이전트 호출 오케스트레이션만 담당합니다.
docs/launch-flow/02-resource-checklist.md를 읽어서 전체 리소스 목록을 확인합니다.
사용자에게 현재 준비 상태를 확인합니다 ($ARGUMENTS에 앱 유형이 있으면 자동 인식):
:, ∙, ? 만 허용, 이모지 사용 불가docs/launch-flow/02-resource-checklist.md 의 예시를 따른다각 항목의 규격/규칙 준수 여부를 검증합니다 (상세 규격: 문서 참고).
이미지 리소스 미비 시 graphic-designer 에이전트에 생성 위임 (아래 "이미지 생성 위임" 섹션 참고):
--generate-images 옵션이 있으면 생성 여부를 사용자에게 확인graphic-designer 에이전트 호출콘솔 등록용 텍스트 필드를 .meta-dashboard.json에 반영합니다 (아래 "콘솔 텍스트 필드 반영" 섹션 참고).
체크리스트 결과를 표로 정리하여 보고합니다:
모든 텍스트 입력 필드 공통: 허용 특수문자는 :, ∙, ? 뿐이며 이모지·그 외 특수문자(!@#$%&* 등) 금지.
이 단계에서 생성하는 이미지는 로고 + 가로형 썸네일 두 종입니다. 둘 다 PRD 와 브랜드 컬러만 있으면 만들 수 있어 스캐폴딩 전 시점에서도 동작합니다.
graphic-designer 에이전트 가 생성합니다. 생성 방식·스타일·제약·워크플로 등 디테일은 .claude/agents/graphic-designer.md 에 정의되어 있어 SKILL 에서 중복 기술하지 않습니다.
이 스킬에서 생성하지 않는 것:
- 세로형 스크린샷 — 실제 동작하는 dev 서버 캡처가 필요해서
/ait-implement이후 단계인/ait-screenshots(step 6) 에서 별도로 생성합니다.- 정방형 썸네일 — 콘솔 노출에 사용되지 않아 생성 대상에서 제외합니다.
subagent_type: graphic-designer
description: <app-name> 초기 에셋 생성 (로고 + 가로형 썸네일)
prompt:
앱: apps/<app-name>
생성 대상:
- 로고 (Section 1)
- 가로형 썸네일 (Section 2)
출력 경로: apps/<app-name>/assets/
규격 (에이전트 문서의 스펙 표를 따름)
- 로고: 600x600 PNG + SVG 원본
- 가로형 썸네일: 1932x828 PNG + HTML 원본
중요: 정방형 썸네일(1000x1000) · 스크린샷은 생성하지 마세요.
- 정방형 썸네일은 콘솔 노출에 쓰이지 않습니다.
- 스크린샷은 implement 이후 /ait-screenshots 스킬이 담당합니다.
브랜드: granite.config.ts의 brand.primaryColor 사용
PRD: apps/<app-name>/docs/PRD.md 참고
작업 완료 후 생성된 파일 경로와 디자인 컨셉 1줄 요약을 보고해 주세요.
apps/<app-name>/assets/
├── _sources/
│ ├── logo.svg
│ └── thumbnail-wide.html
├── logo.png # 600x600
└── thumbnail-wide.png # 1932x828
세로형 스크린샷(assets/screenshots/01~03.png) 은 별도 스킬에서 추가됩니다.
에이전트가 아래 경우 자율 실행을 중단하고 되돌아올 수 있습니다 — 사용자에게 전달해 협의:
대시보드의 스토어 등록 자료 카드는 apps/<app-name>/.meta-dashboard.json 필드를 읽어 표시합니다. 이미지 경로(logoPath, thumbnailPath, screenshotPaths)는 assets/ 파일 존재로 서버가 자동 감지하지만, 텍스트 필드는 자동 감지 대상이 아니므로 이 스킬이 직접 써야 합니다.
console-text.md 확정 직후, 동일한 값을 .meta-dashboard.json 에 반영합니다.
| 필드 | 출처 | 비고 |
|---|---|---|
nameEn | console-text.md §1 영어 앱 이름 | 문자열 |
aitCategory | console-text.md §2 카테고리 1차 후보 | 예: 교육·자기계발 > 자격증·시험 > 운전·교통 |
subtitle | console-text.md §3 부제 | 문자열 |
keywords | console-text.md §5 키워드 | console-text.md §5 의 키워드는 쉼표 단독 구분자(,) 로 분리. 키워드 내부에 쉼표 사용 금지 (한글 쉼표 포함). 각 토큰은 앞뒤 공백 제거 후 빈 문자열 제외. 예: "퀴즈, 성향, 재미" → ["퀴즈","성향","재미"]. |
isGame | §2 결정 결과 | console-text.md §2 에 명시적으로 게임 / 비게임 결정이 적혀있을 때만 덮어쓴다. 명시 없으면 기존 값을 유지 (특히 기존이 true 인 게임 앱을 false 로 덮을 위험 방지). |
그 외 필드(
nameKo,description,logoPath,thumbnailPath,screenshotPaths,prdPath,pipelineProgress,updatedAt)는 건드리지 않습니다. 각각 다른 주체(ait-plan, 대시보드 서버)가 소유합니다.
1. apps/<app-name>/.meta-dashboard.json 을 Read
2. 파싱한 객체에 nameEn/aitCategory/subtitle/keywords/isGame 만 머지
3. updatedAt 필드를 새 ISO 타임스탬프로 갱신 (new Date().toISOString() 상당 값)
4. Write 로 들여쓰기 2칸 JSON 으로 저장 (기존 포맷 유지)
- `isGame` 은 console-text.md 에 명시가 있을 때만 치환. 없으면 기존 객체의 값을 그대로 두고 머지 대상에서 제외.
| 상태 | 처리 |
|---|---|
| 파일 정상 | 위 4단계로 머지 후 저장 → ✅ 성공 |
| 파일 없음 | 아래 ".meta-dashboard.json 신규 생성" 절차를 직접 수행 후 4단계 머지 이어서 → ✅ 성공. PRD 를 찾지 못하면 즉시 ❌ 실패 |
| JSON 파싱 실패 | 즉시 중단 → ❌ 실패 (파일 경로 + 파싱 오류 메시지 포함) |
| Write 실패 | ❌ 실패 (권한/경로 문제 원인 보고) |
"그 다음엔 /ait-meta 를 실행해 주세요" 같은 후속 단계 안내는 금지 — 스킬이 직접 호출하거나 실패로 보고.
파일이 없으면 직접 초기 파일을 만든 뒤 곧장 위 4단계 머지로 이어간다.
PRD 탐색 (순서대로):
docs/PRD.mddocs/prd.mddocs/**/*PRD*.md (glob)docs/**/*prd*.md (glob)docs/**/*.md 중 내용에 "문제 정의" 또는 "Problem Statement" 포함된 파일못 찾으면 즉시 ❌ 실패 (reason: "PRD not found"). 이후 단계 진행 금지.
소스코드 분석: package.json, granite.config.ts|js, src/ 최상위(index.tsx/App.tsx/main.tsx 등), PRD 를 읽어 추론.
nameKo: PRD 제목/첫 문단nameEn: PRD 슬로건 또는 package.json namesubtitle: PRD 핵심 가치 제안 10자 내외 요약description: PRD 문제 정의 + 가치 제안 2-3문장keywords: PRD 기능/타깃 기반 5개 내외aitCategory: 추론 어려우면 "생활 > 콘텐츠" 기본값isGame: 기본 false, PRD 에 게임 명시 시만 true초기 파일 Write — 아래 스키마로 .meta-dashboard.json 생성:
{
"version": 1,
"nameKo": "추론된 한국어 이름",
"nameEn": "Inferred English Name",
"isGame": false,
"aitCategory": "추론된 카테고리",
"subtitle": "한 줄 소개",
"description": "앱 설명 2-3문장",
"keywords": ["키워드1", "키워드2", "키워드3"],
"logoPath": null,
"thumbnailPath": null,
"screenshotPaths": [],
"prdPath": "docs/PRD.md",
"utPath": null,
"updatedAt": "2026-04-24T10:00:00.000Z"
}
prdPath 는 STEP 1 에서 발견한 파일의 appDir 기준 상대경로logoPath, thumbnailPath, screenshotPaths, utPath 는 항상 null / 빈 배열updatedAt 은 new Date().toISOString() 상당 값 (ISO 8601 full datetime)appDir 기준 상대경로 (절대경로 금지)생성 직후 곧장 "반영 방법" 4단계 머지로 이어가 nameEn/aitCategory/subtitle/keywords/isGame 을 console-text.md 확정값으로 치환 후 다시 Write.
성공/실패를 이분법으로 한 번만 처리하고 세션을 마무리한다. 이미지 생성 시 apps/<app-name>/assets/ 에 PNG + 원본 파일이 생성되고, 텍스트 확정 시 .meta-dashboard.json 의 nameEn/aitCategory/subtitle/keywords/isGame 이 갱신됩니다. 후속 단계 안내 금지.
대시보드 세션으로 실행될 때 환경변수 AIT_RUN_STATUS_PATH 로 per-run JSON 파일 경로가 전달된다. 텍스트로 ✅/❌ 를 찍기 전에 반드시 이 경로에 Write 로 기록한다. 대시보드는 이 파일만 보고 COMPLETED/FAILED 를 결정한다.
성공:
{"status":"success"}
실패:
{"status":"failure","reason":"<한 줄 원인 — 예: `.meta-dashboard.json` JSON 파싱 실패>"}
대시보드 밖(터미널 직접 호출)에서는 환경변수가 비어있을 수 있으니 있을 때만 기록한다.
✅ 에셋 점검 완료
생성/확인된 파일: <경로 리스트>
.meta-dashboard.json 머지 필드: nameEn/aitCategory/subtitle/keywords/isGame
❌ 에셋 점검 실패
원인: <구체적 사유 — 예: `.meta-dashboard.json` JSON 파싱 실패 / PRD 미존재 / graphic-designer 이미지 생성 3회 실패>
정리된 임시 파일: <있으면 목록, 없으면 "없음">
규칙: 상태 파일 1회 기록 + 보고 1회 후 종료. .meta-dashboard.json 이미지 경로는 건드리지 말고(서버 자동 감지), 콘솔 텍스트 5개 필드(nameEn/aitCategory/subtitle/keywords/isGame)만 "콘솔 텍스트 필드 반영" 절차로 머지.