akuko — 이야기를 영화로, 한 단계씩 검토하며
이 파일은 라우터입니다. 각 액션은 actions/ 아래에 있는 자체 파일에 있으며, 필요할 때 로드하여 따릅니다. 액션 동작을 여기에 인라인으로 작성하지 마십시오. 공유 규칙은 lib/에 있습니다:
lib/state.md— 프로젝트 파일, 단계, 상태 전환, 결정 폴딩. 무언가를 쓰기 전에 반드시 읽으십시오.lib/hosts.md— 호스트 감지, 각 호스트가 할 수 있는 작업, 호스트 어댑터.lib/spend.md— 지출 게이트 및 비용 원장(WP-03).lib/providers.md— 제공자(WP-03).
프로젝트 형식은 schema/akuko-project.ts(akuko.json, JSON Schema는 schema/akuko-project.schema.json)입니다.
모든 액션은 동일한 방식으로 시작합니다
- 호스트 감지(
lib/hosts.md§감지): A claude-artifact · B 로컬(local) · C ikenga.node --experimental-strip-types hosts/detect.ts --tools <전체 도구 목록 — 로드 및 지연된 모든 도구 이름>을 실행합니다. 출력에경고(warning)가 있거나 의심스러운 경우 호스트를 A(아티팩트 DB)로 처리하고 프로젝트 폴더를 절대 생성하지 마십시오. 결과를akuko.json.host에 기록합니다. - 호스트 어댑터를 통해 프로젝트를 읽습니다(
readState()). 프로젝트가 없으면intake(또는 사용자가 먼저 설정을 원하는 경우setup)로 라우팅합니다. - 다른 작업을 수행하기 전에 마지막 실행 이후 사용자가 내린 결정을 접습니다(
readDecisions()→lib/state.md§결정 폴딩). - 액션 파일을 로드하고 따릅니다.
writeState()를 통해서만 프로젝트를 쓰고,storeAsset()을 통해서만 파일을 저장합니다.
라우팅
| 사용자가 말한 경우… | 이 파일을 로드 | 담당자 |
|---|---|---|
| "akuko 설정", "구성", "예산 설정", "내 키 추가" | actions/setup.md | WP-08 |
| "내 설정 확인", "빠진 것", "닥터" | actions/doctor.md | WP-08 |
| "이 이야기/대본으로 영화 만들기", "프로젝트 시작", "인테이크" | actions/intake.md | WP-04 |
| "분석", "샷 목록", "브레이크다운", "샷 목록 가져오기" | actions/breakdown.md | WP-04 |
| "등장인물", "장소", "룩/스타일", "바이블" | actions/bible.md | WP-05 |
| "스토리보드", "스케치 보드", "비트 보드", "보드" | actions/board.md | WP-21 |
| "키프레임", "최종 패널", "키프레임", "연속성 확인" | actions/keyframes.md | WP-22 |
| "애니메이트", "클립 만들기", "모션", "트리트먼트", "카메라 움직임" | actions/motion.md | WP-10 · WP-11 · WP-27 |
| "립싱크", "대사 말하게 하기", "립싱크" | actions/lipsync.md | WP-28b |
| "내레이션", "음악", "음향 효과", "사운드" | actions/sound.md | WP-12 |
| "애니마틱", "영화 미리보기", "보게 해줘", "러프 컷", "어셈블" | actions/assemble.md | B-11 (preview 빌드됨) · WP-13 (러프 컷, 픽처 락: 스텁) |
| "내보내기", "Resolve로 보내기", "타임라인 제공" | actions/export.md | WP-23 (Resolve 핸드오프) |
| "검토했음", "내 노트 적용", "리뷰" | actions/review.md | WP-07a |
| "… 보여줘", "보드 열어줘", "보기" | actions/view.md | WP-07c |
| "어디까지 왔나", "다음은 뭐지", "상태", "비용은 얼마", "견적" | actions/status.md | WP-30 (전체 영화 견적) |
내보내기는 승인된 영화를 DaVinci Resolve에 타임라인과 미디어로 전달합니다. MP4 마스터, 컷다운 및 Canva 데크는 보류됩니다(계획 라운드 7): MP4를 요청받으면 그렇게 말하고 핸드오프를 제안하십시오.
일치하는 항목이 없으면 status를 실행하고 그것이 제안하는 다음 액션을 제공하십시오. 액션 파일(또는 요청된 경로)이 여전히 **스텁 (WP-02)**이라고 표시되면, 아직 구축되지 않았다고 말하고 중단하십시오 — 즉흥적으로 구현하지 마십시오. 애니마틱도 즉흥적으로 만들지 않습니다: assemble preview가 빌드된 무료 경로입니다(승인된 키프레임을 샷에 맞춰 시간 배치, 절대 리뷰 유닛이 아니며 프로젝트에 저장되지 않음).
단계
intake → breakdown → sketch → bible → keyframes → motion → sound → assemble → export (0–8, schema/akuko-project.ts#STAGES; 영화 프로필은 profiles/film/profile.json). 이전 단계가 승인되어야만 다음 단계가 열립니다(lib/state.md §단계).
리뷰 규칙
이 규칙은 모든 호스트, 모든 액션 및 보기에 적용됩니다:
- 오직 사람만 승인합니다. 액션은 유닛을
pending-review로 이동합니다. 사람의 결정만 유닛을approved로 이동합니다. 어떤 액션이나 보기도 자동 승인, 사전 체크 또는 일괄 승인하지 않습니다. - 리뷰를 지나 자동으로 진행하지 마십시오. 각 단계는 리뷰 게이트(Atelier
ux_mode: approve)에서 끝납니다: 실행 후 생성된 것에서 멈춥니다. - 단계 내에서 한 번에 한 유닛씩 처리합니다: 생성, 보여주기, 기다리기 — 하나의 샷이 반송되었다고 전체 단계를 재생성하지 마십시오.
- 결정은 결정 형식(스키마의
Decision)을 따르며, 리뷰 표면이 호스트 저장소에 기록합니다. 보기는akuko.json을 편집하거나writeState()를 호출하지 않습니다. - 요청된 변경 사항은 존중하고 표시합니다: 유닛을 수정하고 "수정됨(Revised): …" 주석을 추가한 다음
pending-review로 되돌립니다.
지출 규칙
- 승인 없는 유료 호출 금지. 모든 유료 작업(이미지, 비디오, TTS)은 지출 게이트(
lib/spend.md)를 거칩니다: 견적, 상한선, 지출된 금액 및 승인 시 남은 금액을 표시한 후 해당 작업에 대한 명시적인 승인을 기다립니다. - 상한선 없음, 지출 없음.
akuko.json.budget이 null이면 유료 작업을 거부하고setup을 가리킵니다. - 상한선 또는 작업의
approved_max를 초과하지 마십시오. 대신 중단하고 물어보십시오. - 비용은 숨기거나 반올림하지 않습니다. 모든 유료 호출은 성공 또는 실패 여부에 관계없이
ledger[]에 기록됩니다. - 키는 환경(또는 호스트의 비밀 저장소) 에 남아 있어야 합니다 —
akuko.json, 보기, 아티팩트 데이터베이스, 원장 또는 보드가 읽을 수 있는 파일에 절대 넣지 않으며, 다시 알리지 않습니다. claude.ai(호스트 A)에서 키는 채팅당 붙여넣기되며, 유료 직접 호출이 실행되려고 할 때만 사용됩니다: 먼저 네트워크를 탐색(scripts/probe.ts)하고, 이 채팅 기록에 키가 표시되며 이 채팅에만 사용되고 어디에도 기록되지 않는다고 알린 후 "내 키를 이 채팅에 사용"을 받고, 해당 명령의 환경에만 설정하고, 예약하고, 보드에 저장하고, 전송합니다(lib/spend.md§호스트 A, R-11). - 하우스 룰이 비용보다 우선합니다. 프로젝트에
rules가 있는 경우, 모든 작업은 지출 게이트 전에 이에 대해 검사되며, 위반 시 거부(rules-breach)되고, 위반한 규칙과 문제가 되는 텍스트 또는 파일을 명명합니다. 이를 보고하고 중단하십시오; 절대 다른 표현으로 바꾸거나, 참조를 삭제하거나, 규칙을 편집하여 통과시키지 마십시오. 무료 사전 점검을 위해rules/cli.ts check를 실행하십시오(lib/state.md§"Rules guard (WP-26)"). - 플랜 허용량도 지출입니다. 사용자의 자체 플랜 허용량(예: claude.ai의 Canva 월간 AI 제한)을 사용하는 연결된 도구는 각 웨이브에 대해 OK를 받습니다: 횟수, 서비스, akuko가 남은 양을 볼 수 없으며, 정확한 응답은
approve <n> <service> generations입니다. 각 생성은 0원과 유닛 수와 함께 원장에 기록됩니다(lib/spend.md§허용량).
한 줄로 요약한 호스트
- A — claude-artifact (claude.ai): Node와 파일은 한 채팅 동안 지속되는 원격 작업 공간에만 있으므로, 지속적인 프로젝트 폴더가 없습니다. 프로젝트는 보드 아티팩트의 데이터베이스에 있습니다. 에이전트는 도구 호출로 읽고 쓰며 작업 복사본에서 단계 명령을 실행합니다. 연결된 MCP(예: Canva), 수동 프롬프트 패키지, 네트워크 탐색 후 해당 채팅에 붙여넣은 키를 사용한 유료 직접 API를 통한 생성(R-11); MP4는 로컬에서 렌더링합니다.
- B — 로컬 (Claude Code):
akuko.json은 디스크에, 파일은 프로젝트 폴더에, 모든 제공자는 환경 키를 통해, HyperFrames + FFmpeg. - C — ikenga: B에 Ikenga 브리지(및 MCP가 연결된 경우 Studio) 추가; Studio는 렌더 상태를 소유합니다.
세부 사항 및 기능 증거: lib/hosts.md.
파일
SKILL.md 이 라우터
actions/*.md 액션당 하나의 파일(Atelier 프론트매터)
lib/state.md 프로젝트 파일 규칙, 단계, 전환, 결정 폴딩
lib/hosts.md 호스트 감지, 기능, 수동 호스트 확인
hosts/types.ts HostAdapter 계약(G-HOST)
hosts/{claude-artifact,local,ikenga}.ts 호스트당 하나의 어댑터
profiles/film/ 영화 프로필
schema/ akuko.json 형식(G-SCHEMA)