/cc-bricks:create-project — 새 프로젝트 "처음부터 세팅" 자동 안내
cob kernel+bundle 신규 프로젝트와 feature 역할 패키지를 생성하고 인프라 부트스트랩을 안내합니다. 새 프로젝트를 시작할 때 사용합니다.
| 항목 | 내용 |
|---|---|
| 실행 명령 | /cc-bricks:create-project |
coco-de/co-bricks의cob도구(CLI + MCP)를 이용해, 빈 상태에서 모노레포 코드 골격과 Firebase/GCP/iOS/GitHub Secrets 인프라까지 초기 세팅을 한 번의 흐름으로 진행합니다.
한마디로#
새 가게를 열 때 ① 건물 골조·인테리어(코드 골격)를 세우고 → ② 전기·수도·인터넷(클라우드 인프라)을 연결하는 두 단계를, 미리 준비된 표준 설계도(cob
브릭)로 자동으로 처리해 주는 도우미입니다. "프로젝트 이름과 조직명 한 장"만 정하면, 폴더 구조·기능 뼈대·배포에 필요한 계정과 열쇠(Secrets)까지 순서대로 갖춰 줍니다.
누가·언제 쓰나요#
- 완전히 새로운 프로젝트를 처음 만들 때 (그린필드)
- 기존 kobic 스타일 표준 구조(Flutter + Serverpod + CoUI 모노레포)를 그대로 따라 시작하고 싶을 때
- 여러 기능(feature)을 한 스펙(
project.yaml)으로 한꺼번에 찍어내고 싶을 때
👉 이미 만들어진 프로젝트에 기능 하나만 추가하려면 이 커맨드가 아니라
cob compose(풀스택 feature 1개) 또는 각feature-*스킬을 쓰세요. 이 커맨드는 "프로젝트 자체를 처음 만드는" 진입점입니다.
무엇을 해주나요 (2단계)#
| 단계 | 하는 일 | 대표 명령 |
|---|---|---|
| A. 코드 스캐폴드 | 그린필드 모노레포 + N개 feature 골격 생성, 라우트·melos 워크스페이스 자동 등록 |
cob create
·
cob generate -s project.yaml
·
cob create-from-config
|
| B. 인프라 부트스트랩 | Firebase 프로젝트/앱 → GCP 서비스계정 → flutterfire configure → SHA-1 → iOS App Store Connect 앱 → GitHub Actions Secrets 업로드 (7-stage) | cob init |
⚠️ 인프라(B)는 CLI 전용입니다. cob MCP는 코드 생성 계열(
cob_create/cob_create_from_config등)만 노출하며init/firebase/gcp/ios/secrets는 노출하지 않습니다. 인프라 단계는 반드시cobCLI로 진행하고,firebase/gcloud/gh/fastlane로그인이 선행되어야 합니다.
어떻게 쓰나요#
# 대화형(권장): 이름·조직·feature 포함 여부를 프롬프트로 하나씩 확인
/cc-bricks:create-project
# 이름을 미리 지정 (그 외는 대화형/기본값)
/cc-bricks:create-project --name my_app
# 인프라 부트스트랩까지 이어서 진행
/cc-bricks:create-project --name my_app --with-infra
# 코드만 생성 (인프라는 나중에)
/cc-bricks:create-project --name my_app --code-only
# project.yaml 스펙으로 모노레포+features 일괄 생성
/cc-bricks:create-project --spec project.yaml
안에서 무슨 일이 벌어지나요 (실행 흐름)#
-
사전 점검(Gate 0) —
cobCLI 설치 여부 확인. 없으면 설치 안내 후 중단(degrade). 인프라 단계 선택 시firebase/gcloud/gh/fastlane로그인 상태도 함께 점검. -
입력 정리 — 프로젝트명(snake_case)·조직·TLD·GitHub·백엔드(serverpod)·포함할 feature 목록을 수집.
--spec지정 시project.yaml(spec v1)을 단일 진실원으로 사용. -
코드 스캐폴드(A) —
cob create(대화형/단일 모노레포) 또는cob generate -s project.yaml(모노레포 + N feature 합성)로 골격 생성. 라우트 등록·워크스페이스 갱신은 cob이 담당(모노레포 브릭은post_gen만, feature 합성은pre_gen만 실행). -
검수 — 생성된 폴더/워크스페이스/라우트 등록 확인,
melos bootstrap등 빌드 준비. 이어서project-init스킬의 "생성 직후 기준선 점검" 7항(서버 패키지<project>_server·<project>_client명명, coui 최신 태그, HookWidget·한 파일 한 공개 타입·타입 안전 라우트, 유니버설/앱 링크, co_golden 갤러리 Pages, co_bdd, 사내 패키지)을 확인하고 어긋난 것을 먼저 고칩니다. -
인프라 부트스트랩(B, 선택) —
--with-infra시cob init7-stage 실행 안내(각 스테이지는 실패해도 경고만 남기고 다음 진행, iOS 디렉토리 없으면 iOS 자동 스킵). -
마무리 — 다음 단계(첫 feature는
cob compose, 개발 사이클은/cc-dev:run) 안내.
⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)
Triggers#
- 그린필드 프로젝트를 처음 스캐폴딩할 때 (모노레포 부트스트랩)
project.yaml(spec v1) 한 장으로 모노레포 + N feature를 합성할 때- 신규 프로젝트의 클라우드/CI 인프라(Firebase/GCP/iOS/Secrets)를 초기화할 때
Options#
| 옵션 | 설명 | 기본값 |
|---|---|---|
--name <snake_case> | 프로젝트명 (non-interactive 시 필수) | (대화형 프롬프트) |
--spec <path> | project.yaml(spec v1)로 모노레포 + features 일괄 생성 (cob generate -s) | 없음 |
--with-infra | 코드 생성 후 cob init(7-stage 인프라 부트스트랩)까지 진행 | off |
--code-only | 코드 스캐폴드(A)만 수행, 인프라(B) 생략 | on |
--config <name> | 저장된 설정으로 생성 (cob create-from-config -c <name>) | 없음 |
--output-dir <path> | 출력 디렉토리 | . |
--dry-run | 실제 파일 생성 없이 계획만 출력 (cob generate --dry-run) | off |
Execution Contract#
Gate 0 — tooling degradation (throw 아님, degrade)#
command -v cob >/dev/null || {
echo "⚠️ cob 미설치 — 아래로 설치 후 재시도:"
echo " dart pub global activate --source git https://github.com/coco-de/co-bricks.git"
echo ' echo '"'"'export PATH="$PATH:$HOME/.pub-cache/bin"'"'"' >> ~/.zshrc && source ~/.zshrc'
exit 0 # 파이프라인 차단이 아닌 안내 후 중단
}--with-infra 선택 시 추가 로그인 점검 (미로그인은 해당 스테이지만 스킵 가능):
| CLI | 로그인 | 사용 스테이지 |
|---|---|---|
firebase | firebase login | firebase create/init/sha |
gcloud | gcloud auth login | gcp service-account |
gh | gh auth login | secrets push |
fastlane | Apple ID 로그인(2단계 인증) — create_app_online 은 API 키를 쓰지 않는다 | ios create |
A. 코드 스캐폴드 — 3 경로#
생성 전에 .cob/feature-layout.json을 먼저 읽고, 없으면 cob의 기존 legacy 트리 판정 → 나머지는 bundle 기본값을 따른다. marker와 kernel origin ref를 보존하며 반대 layout 요청은 이관 안내와 함께 실패한다. 생성 배치 계약을 적용한다.
| 입력 | 명령 | 비고 |
|---|---|---|
project.yaml 스펙 (권장) | cob generate -s project.yaml [-o <dir>] [--dry-run] | 신규 기본 kernel + bundle, N feature 역할 패키지 생성 |
| 커널 풀스택 | cob fullstack --name <name> | 앱·Serverpod·소개 사이트 조립 |
조건부 legacy — legacy 판정에서만
기존 donor monorepo 스냅샷은 cob create --type monorepo / create-from-config -c <name> / generate --base donor를 사용한다. 신규 kernel에 donor UI를 복제하지 않는다.
브릭 훅은 경로마다 다르다(cob 0.4.0).
cob create·create-from-config는 모노레포 브릭의post_gen만 실행한다(pre_gen파생값·brick.yamldefault:는 cob 이 변수로 넘긴다).cob compose·feature add·add는pre_gen만 실행한다.compose·feature add의 라우트 등록·워크스페이스 pubspec 갱신은 cob 이 직접 처리하고,add는 부품 파일을 만들고 usecase·bloc·widget 부품이면 barrel export 를 덧붙인다(endpoint 부품의 등록은serverpod generate몫).cob apply는 훅 없이 파일을 만들고 워크스페이스 pubspec 에 feature 패키지를 추가한다(라우트 등록은 하지 않는다).cob generate는 이 셋을 차례로 부른다. 원샷mason make는 두 훅을 모두 실행한다. 경로별 표는project-init스킬 참조.
B. 인프라 부트스트랩 — cob init 7-stage#
firebase create → gcp service-account → firebase init(configure)
→ firebase sha → ios create → secrets encode → secrets push각 스테이지는 내부적으로 standalone 서브커맨드를 --env all(dev/stg/prod)로 호출. 스테이지 실패는 경고 후 다음 진행(중단 아님). 스킵 옵션: --skip-firebase/--skip-gcp/--skip-configure/--skip-sha/--skip-ios/--skip-secrets. iOS 디렉토리(app/<project>/ios) 없으면 iOS 자동 스킵.
산출물 (예시)#
<project>/ # 모노레포 루트 (melos)
├── app/<project>/ # Flutter 앱
├── backend/<project>_server/ # 실행·조립·교차 기능·DB 통합 테스트 호스트
├── backend/<project>_client/ # 호스트 합성 SDK
├── feature/<d>/
│ ├── app/ # <d>; lib/src/i18n/ 기능 번역
│ ├── console/ # console_<d>; lib/src/i18n/ 기능 번역
│ ├── server/ # <d>_server, type: module; lib/src/{endpoint,service,model,…}
│ ├── client/ # <d>_client 생성 SDK
│ ├── bundle.json # 조립 선언
│ └── host-integration.json # 호스트 결합 계약
├── melos.yaml / pubspec.yaml # 워크스페이스 (cob이 등록)
└── .envrc # (인프라 시) Secrets base64 + App ID신규 기본은 공식 Serverpod 4.0.3. 모듈은 호스트를 import하지 않는다. bind(serverpod, …) / forSession(session) 세션 인지 포트와 fail-closed 어댑터를 호스트에서 연결한다. 순수 테스트는 기능 역할의 test/, DB/withServerpod 테스트는 호스트 test/integration/에 두고 bundle.json.hostTests에 등재한다.
다음 단계#
- 기준선 점검:
project-init스킬 "생성 직후 기준선 점검" — 첫 기능 코드 전에 - 첫날 전체 순서(사전점검·첫 배포 확인·co_faker 커버리지·CI 병렬 잡·모듈 병렬 착수):
new-project-quickstart스킬 - 첫 풀스택 feature 추가:
cob compose -m feature.yaml(또는 각feature-*스킬). 라이브러리급 기능은cc-dev:internal-package-registry표를 먼저 본다 - 개발 사이클 자동화:
/cc-dev:run "…"(이슈→브랜치→PR→머지) - 백엔드 코드 생성:
melos run backend:pod:generate - 스토어 콘솔 등록(Play 앱 만들기·등록정보·선언 항목, 5단계를 건너뛰었다면 App Store Connect 앱 레코드):
cc-flutter:store-console-handoff—cob init은 Play Console 앱을 만들지 않는다
Related#
skills/project-init/SKILL.md— project.yaml 스펙·cob 명령·MCP 상세 가이드- 플러그인 README → "Project Initialization (greenfield)" 섹션
cobMCP 등록: 플러그인.mcp.json(opt-in) — create 계열만 노출