신규 variant 승격 실습 예시
co-retail 프로토타입을 기준으로 두 경로를 손으로 비교해보는 실습 가이드 | ← 레퍼런스 문서로 돌아가기
templates/co-work/로 프로젝트를 스캐폴딩했고, Projects/co-retail/에 Phase A 프로토타입도 만들었다. 두 디렉터리를 나란히 놓고 어떤 파일이 정식 템플릿에는 있는데 프로토타입에는 없는지 직접 확인해보려 한다. 연습용 워크스페이스(ai-workspace-standards-demo) 안에서 이어서 진행한다고 전제한다.
-
두 디렉터리 목록 나란히 비교
정식 variant인 co-work과 아직 프로토타입 단계인 co-retail의 최상위 파일 목록을 비교한다.
diff <(ls templates/co-work/) <(ls Projects/co-retail/)
-
정식 템플릿에만 있는 항목 확인
보통
variant.json,README.md/README_ko.md,docs/adr/는 정식 템플릿에는 있지만 Phase A 프로토타입 단계에서는 아직 없거나 비어 있다. 먼저 정식 템플릿(co-work) 쪽에 이 파일들이 실제로 있는지 확인한다.ls templates/co-work/variant.json templates/co-work/README_ko.md templates/co-work/docs/adr/
이어서 co-retail 프로토타입 쪽 폴더 목록을 확인해, 위 파일들이 아직 없는지 비교한다.
ls Projects/co-retail/
variant.json은 정식 베리언트(variant)가 스캐폴딩 대상으로 등록되기 위한 메타데이터(버전, skill_manifest, script_manifest)를 담는다. Phase A 프로토타입 단계에서는 아직 이 파일이 없거나 최소한으로만 존재하는 게 정상이다 — 이 차이 자체가 "아직 승격되지 않았다"는 신호다.
PROMOTION_CHECKLIST.md를 채울 때 무엇이 빠져 있는지 바로 알 수 있다.
PROMOTION_CHECKLIST.md의 조건들과 variant.json의 skill_manifest/script_manifest를 채워야 한다.
-
PROMOTION_CHECKLIST.md 항목 점검
체크리스트에는 대체로 "필수 검증 스크립트 통과", "플랫폼 패리티 확보", "에이전트 frontmatter 완결성" 같은 항목이 들어간다. co-retail의 경우 6장 §2에서 만든
researcher.md,writer.md가 필수 필드를 모두 갖췄는지부터 다시 확인한다. 두 스크립트는 서로 다른 것을 검사하므로 각각 실행하고 결과를 따로 확인한다.① 에이전트 frontmatter 완결성 검사 — name, tier, handoff 등 필수 필드가 빠짐없이 채워졌는지 확인한다.
bun run agent:verify
② 스킬 매니페스트 검사 — 베리언트(variant)가 참조하는 스킬이 실제로 존재하고 네 플랫폼(.claude/.gemini/.agents/.codex)에 고르게 배포돼 있는지 확인한다.
bun scripts/validate-skills.ts
-
variant.json에 manifest 정의
co-retail이 사용하는 스킬(예: campaign-research, copywriting)과 변형 전용 스크립트가 있다면
skill_manifest.variant_specific과script_manifest에 각각 등록한다.{ "name": "co-retail", "inherits_common": "1.0.0", "skill_manifest": { "variant_specific": ["campaign-research", "copywriting"] }, "script_manifest": [] }
skill_manifest.variant_specific은 이 베리언트(variant)가 공통 스킬 외에 추가로 필요로 하는 스킬을 선언하는 자리다. 여기 등록되지 않은 스킬은 승격 파이프라인의 reconcile 단계에서 누락될 위험이 있다.
PROMOTION_CHECKLIST.md 템플릿을 기준으로 채워야 한다 — 여기 예시는 일반적인 흐름을 보여주는 것이지 항목의 전체 목록이 아니다.
l3-to-variant-pipeline.ts를 실행해 co-retail을 정식 templates/co-retail/로 전환하려 한다. 이 단계부터는 실제 git 이력에 흔적을 남기는 되돌리기 까다로운 작업이다.
-
승격 파이프라인 실행
--l3-path는 Phase A 프로토타입 경로,--name은 최종 variant 이름,--type은 도메인 유형,--description은 variant 설명이다.--description과 선택 플래그인--version(기본값 0.1.0),--status(기본값 beta)는 승격 결과물인templates/co-retail/variant.json에 직접 기록된다.bun scripts/l3-to-variant-pipeline.ts --l3-path=Projects/co-retail --name=co-retail --type=collaboration --description="Retail domain agent team"
-
플랫폼 패리티 수동 확인
.claude/와.gemini/, 그리고.agents/·.codex/의 commands·skills·prompts 디렉터리 목록이 서로 대응하는지 diff로 확인한다(Claude/Gemini/Antigravity/Codex 네 플랫폼 패리티).diff <(ls templates/co-retail/.claude/commands/) <(ls templates/co-retail/.gemini/commands/) diff <(ls templates/co-retail/.gemini/commands/) <(ls templates/co-retail/.agents/commands/) diff <(ls templates/co-retail/.claude/skills/) <(ls templates/co-retail/.gemini/skills/) diff <(ls templates/co-retail/.gemini/skills/) <(ls templates/co-retail/.agents/skills/) diff <(ls templates/co-retail/.agents/skills/) <(ls templates/co-retail/.codex/skills/)
-
최종 게이트 — validate-templates.ts
모든 절차가 끝난 뒤 마지막으로 구조 검증을 한 번 더 돌려, 신규 베리언트(variant)가 워크스페이스 전체 규정을 만족하는지 확인한다.
bun scripts/validate-templates.ts
Projects/co-retail/에 있던 파일 중 공통 파일(L0/common)과 동일한 것은 제거해 중복을 없앤다. 다만 스킬 디렉터리는 이 reconcile 대상에서 의도적으로 제외되므로, 승격 후 .claude/skills/와 .gemini/skills/에 스킬이 그대로 남아 있는지 별도로 확인해야 한다.
_ORIGIN.md의 "Manual Phase B Steps" 절이 있다면, 파이프라인이 자동으로 옮기지 못한 도메인 전용 디렉터리 목록이 거기 적혀 있다 — 이 목록을 빠짐없이 수동으로 옮겼는지 마지막으로 대조한다. 예를 들어 co-retail의 _ORIGIN.md라면 아래처럼 적혀 있을 수 있다.
## Manual Phase B Steps - [ ] brand-assets/ 디렉터리를 templates/co-retail/brand-assets/로 복사 - [ ] campaign-templates/ 아래 캠페인 브리프 골격 파일을 그대로 이관 - [ ] channel-configs.json의 채널 목록 초기값을 빈 배열로 초기화
ai-workspace-standards main 브랜치 기준 | 2026년 7월 14일 작성
← 핸드북 홈으로