# yakcloud-starter — YakCloud 프로젝트 기반 + CLI + Claude Code 스킬 빈 폴더에서 **한 명령으로 프로젝트를 초기화**하고, **태그 push로 자동 배포**하며, **배포 환경을 CLI로 상세 설정**한다. 프레임워크 중립 스타터 앱 + CI + 매니페스트 + **`yakcloud` CLI** + **Claude Code 스킬**(`.claude/skills/yakcloud-deploy/`) 포함. ## CLI 설치 (1회) ```sh curl -fsSL https://gitea.yakenator.io/yakenator/yakcloud-starter/raw/branch/main/install.sh | sh export PATH="$HOME/.local/bin:$PATH" ``` ## 빈 폴더 → 배포까지 ```sh yakcloud project init my-app # 스타터+CI+매니페스트+Claude 스킬 스캐폴딩 cd my-app # (앱 개발 — Claude Code: "yakcloud 로 배포 붙여줘") yakcloud project info # 프로젝트 개괄(매니페스트 + 라이브 상태) yakcloud project deploy # 커밋 + 태그 push (버전 미지정 시 자동 버전업) → 자동 배포 ``` > **Claude Code 흐름**: 빈 폴더에서 "프로젝트 초기화해줘" → `yakcloud project init` → 개발 → "yakcloud에 배포해줘" → `yakcloud project deploy`. ## 명령 ``` project init [name] 빈 폴더 스캐폴딩 project deploy [vX.Y.Z] 커밋+태그 push → 자동 배포 (버전 생략 시 최신 태그 patch+1 자동 버전업) project info 프로젝트 개괄(매니페스트 + 라이브 상태) project check dry-run(직접 API 계획만) ─ 배포환경 설정(앱별): 매니페스트 수정 + 배포중이면 재빌드 없이 라이브 반영 ─ domain [wl] 도메인 등록 + 워크로드 할당(관리형=즉시 활성) scale replicas set --image/--port/--health/--cpu/--mem/--path/--rewrite env KEY=VAL … [--secret KEY] [--unset KEY] source add [plan] | source rm bind | unbind ``` 필요 env: `YAKCLOUD_URL`, `YAKCLOUD_TOKEN`(배포토큰 yakd_…), (선택) `YAKCLOUD_CLUSTER` ## 배포 전 1회 준비 1. 콘솔 → 설정 → **배포 토큰** 발급(`yakd_…`). 2. Gitea 레포 만들고 `git remote add origin …`. **Secrets**: `YAKCLOUD_URL`, `YAKCLOUD_TOKEN`, `YAKCLOUD_CLUSTER`, `REGISTRY_TOKEN`. 3. `yakcloud.yaml` 의 `cluster`·`image`(``) 수정. ## 구성 ``` bin/yakcloud # CLI 디스패처 install.sh # CLI 설치 scripts/yakcloud_deploy.py # 리컨실 배포 CLI(매니페스트→콘솔 API) scripts/yakcloud_ctl.py # info/설정 엔진(매니페스트 편집 + 라이브 PATCH) .claude/skills/yakcloud-deploy/ # Claude Code 스킬 app.py Dockerfile # 프레임워크 중립 스타터 yakcloud.yaml # 배포 매니페스트 .gitea/workflows/deploy.yml # 태그 push CI(매니페스트 구동) DATA-SOURCES.md # 소스별 주입 env 표 ```