20살에 45개의 앱을 만들고 그중 하나는 월 3만 달러를 버는 이야기. 대학생이 70일 만에 6자리 수익을 올린 사연. 여러분 피드에도 이런 이야기들로 가득하죠. 제 피드도 마찬가지입니다.
하지만 그 어떤 게시물도 알려주지 않는 것이 있습니다: 앱을 "아이디어"에서 "앱스토어 출시"까지, 매번 여러분이 모든 단계를 직접 관리하지 않아도 되는 지루한 시스템 말이죠.
저는 올해 그 시스템을 만들었습니다. AI 에이전트가 운영합니다 — Claude Code와 Codex가 교대 근무를 하면서요. 10개의 iOS 앱과 수십 개의 오픈소스 도구가 이 시스템을 통과했습니다: 제출, 거절, 재제출, 프로덕션 배포, 광고 캠페인, 그리고 살 가치가 없었던 프로젝트들의 종말까지.
오늘 이 시스템을 오픈소스로 공개합니다. 무료, MIT 라이선스, 강의도 없고, 뉴스레터도 없고, "비법 쪽지 보내주세요" 같은 것도 없습니다:
→ github.com/davidmosiah/agents-that-ship
코드는 절대 어려운 부분이 아니었습니다
AI는 이미 코드를 작성합니다. 그 부분은 해결됐어요. 2026년에도 여전히 앱을 죽이는 것은:
- 다섯 가지를 시작하고 아무것도 끝내지 못함
- 에이전트가 새벽 2시에 같은 죽은 수정을 열두 번 재시도함
- 아이패드에서 다크 모드로 열어본 사람이 아무도 없는 UI에 "완료!"라고 표시함
- 일주일 치 작업이 노트북에 푸시되지 않은 채 쌓여 있음
- "출시했어!"라고 말하지만 실제로는 "로컬 브랜치에 그대로 있음"
- 죽은 프로젝트의 크론 잡이 장례식 후에도 며칠 동안 게시물을 올리고 (돈을 쓰고) 있음
- 이 모든 것은 코딩 문제가 아닙니다. 운영 문제입니다. 그리고 제가 본 어떤 CLAUDE.md나 AGENTS.md 파일도 이것을 다루지 않습니다 — 그 파일들은 모두 코드베이스를 설명하고, 실제 돈이 되는 작업이 시작되는 지점에서 딱 멈춥니다.
- 그래서 저는 나머지 절반을 작성했습니다.
저는 이 시스템을 구축하기 위해 7,500개의 프롬프트를 감사했습니다
어느 순간 저는 제 두 에이전트에게 보낸 모든 프롬프트를 살펴보기 시작했습니다. 약 7,500개였죠. 잔인한 발견이었습니다: 대부분은 제가 같은 다섯 가지 교훈을 다시 가르치고 있었던 것입니다. 작업을 푸시하세요. 그 수정을 계속 재시도하지 마세요. 다섯 가지 옵션을 주지 마세요. 아이패드를 확인하세요. 실제로 실행해 봤나요?
그래서 저는 반복되는 모든 수정 사항을 문서화된 규칙으로 만들었습니다. 그 후로 제 가장 흔한 프롬프트는 "네, 부탁합니다"가 되었습니다.
그게 전부입니다. 에이전트는 더 많은 자율성이 필요하지 않습니다. 그들은 잘 만들어진 사전 결정이 필요하며, 그래서 여러분의 역할은 "예"라고 말하는 것으로 축소됩니다.
9가지 플레이북
각각은 에이전트에게 직접 작성되었습니다 — 2인칭으로, 에이전트가 우회할 수 없는 게이트가 있습니다:
- 01 킥오프 → 상태를 읽고, ONE 가지를 제안하세요. 메뉴는 없습니다.
- 02 스펙 → 실행 가능한 게이트가 있는 단계. "정교함"은 게이트가 아닙니다.
- 03 빌드 → 최소 diff, 실제로 실행해 보고, 축하하기 전에 푸시하세요.
- 04 언스틱 → 두 번 실패한 수정 = 편집 중단, 전략 변경.
- 05 폴리시 → 모든 화면을 살펴보세요. 라이트+다크, 폰+태블릿, 모든 언어. 스크린샷이 없으면 일어나지 않은 것입니다.
- 06 프레시 아이즈 → 다른 모델이 저장소에서 모든 주장을 다시 도출합니다. 자기 검토는 자신의 알리바이를 교정하는 것과 같습니다.
- 07 쉽 → 커밋됨 ≠ 푸시됨 ≠ 제출됨 ≠ 승인됨 ≠ 라이브. 실제 상태를 명명하세요.
- 08 메트릭스 → 모든 숫자에 델타를 표시하고, 모든 실험은 죽는 날짜와 함께 태어납니다.
- 09 선셋 → 죽은 프로젝트를 제대로 매장하세요: 모든 스케줄러를 청소하고, 지출을 중단하고, 평결을 작성하세요.
시간을 인쇄하는 규칙
투 스트라이크. 같은 실패를 두 번 하면 에이전트의 문제 모델이 잘못된 것입니다. 편집을 중단하세요. 처음부터 재현하고, 실제로 다른 가설을 작성하고, 계측한 다음 수정하세요. 변수 이름을 바꾸고 재시도하는 것은 스트라이크 2이지, 아이디어 2가 아닙니다. 이 하나의 규칙이 제가 아는 어떤 프롬프트 트릭보다 더 많은 토큰을 절약합니다.
작성자는 검증자가 아닙니다. 위험한 작업에서 "완료"라고 말하기 전에, 두 번째 에이전트 — 다른 모델, 깨끗한 컨텍스트 — 가 실제 저장소에서 주장을 다시 도출합니다. 두 개의 다른 모델이 상호 검토하는 것은 자기 검토가 구조적으로 잡을 수 없는 것을 잡아냅니다.
푸시되지 않은 작업은 존재하지 않습니다. "푸시했어?"는 제가 가장 많이 반복했던 질문이었습니다. 이제 커밋+푸시가 묻지 않고 모든 블록을 닫습니다. 한 문장이 한 종류의 불안을 완전히 없앴습니다.
제대로 매장하세요. 한 번 프로젝트를 종료했는데, 그 유령이 이틀 동안 매일 다이제스트를 계속 게시했습니다 — 하나의 잊혀진 타이머가 장례식에서 살아남은 것입니다. 선셋 플레이북은 모든 머신의 모든 스케줄러를 증거물 출력과 함께 청소합니다.
두 에이전트, 하나의 머신
승수 효과: 제 에이전트들은 번갈아 가며 작업합니다. 할당량이 있는 쪽이 구현하고, 다른 쪽이 검증합니다. 핸드오프는 게이트가 있는 스펙이지, 분위기가 아닙니다. 그리고 약 150줄짜리 잠금 스크립트가 같은 저장소에서 충돌하는 것을 방지합니다 — 종료 코드 3은 "다른 에이전트가 여기 있습니다, 다른 프론트를 선택하세요"를 의미합니다.
두 개의 다른 모델을 파이프라인으로 실행하는 것은 현재 AI에서 가장 저렴한 품질 업그레이드입니다. 저장소에 전체 계약이 있습니다.
왜 무료인가요?
왜냐하면 마크다운이기 때문입니다. 아홉 개의 파일. SDK도, 프레임워크도, 다음 모델이 출시될 때 쓸모없어지는 것도 없습니다. Claude Code 스킬, AGENTS.md 섹션, 또는 Cursor 규칙으로 작동합니다 — 어댑터가 포함되어 있습니다.
그리고 그 안에 또 하나의 규칙이 있습니다, 제가 다른 모든 것보다 지키고 싶은 규칙: 여러분의 이름으로 공개되는 것은 무엇이든 새로운 '예' 없이는 안 됩니다. 저장소, 게시물, 패키지 모두 마찬가지입니다. 에이전트의 열정이 여러분의 평판을 소비할 수 있어서는 안 됩니다.
(이 글은 에이전트가 초안을 작성했습니다. 사람이 승인했습니다. 그게 시스템이 작동하는 방식입니다.)
가져가세요:
→ github.com/davidmosiah/agents-that-ship
포크하고, 분해하고, 절반에 동의하지 마세요. 제가 어떤 대가를 치르더라도 지키고 싶은 유일한 규칙: 계약은 문서로 존재해야 합니다. 여러분의 머릿속에만 살아있는 모든 규칙은 에이전트가 내일 다시 어길 것입니다.





