Skip to content

Locale ko · en

책상 밖으로 — PapaCoder 현장 노트

By Harin Kim · Published 5 Aug 2026

Summary

「코딩은 대화다」 7편(마무리). ADR-0005·Internal API draft-only·WIP=1·에디토리얼 DAG가 Labs 레포에 붙는 방식.

1–6편은 도구·바이브·역할·하네스·루프·그래프를 쌓았습니다. 이론만으로는 “그래서 우리 레포에는?”이 남습니다.

핵심 한 줄: PapaCoder Labs에서는 그 사다리를 스펙·보드·Internal API·Admin 발행으로 고정해 두었고, 에이전트는 초안만 쓰며 사람은 발행합니다.

이 글은 「코딩은 대화다」 7편(마무리)입니다. 형제는 이 레포(papacoder-labs)에 이미 적혀 있는 패턴입니다. 시리즈 플랜상 형제 프로젝트 사례는 Owner 승인·비비밀 범위에서만 다루므로, 여기서는 의도적으로 넣지 않았습니다.

이전 편: 도구 · 바이브 · 멀티에이전트 · 하네스 · 루프 · 그래프

사다리가 레포에 붙는 위치

개념PapaCoder Labs에서 보이는 곳
01표면·비용Cursor로 개발·에디토리얼 런; 배포는 Vercel BFF
02바이브 → 출시작은 슬라이스 + Admin/공개 URL; 시크릿 나오면 코드 다시 보기
03역할·핸드오프agents/editorial/*, agents/development/* 카드 + typed 산출물
04하네스Internal API 키, 에이전트에 DATABASE_URL 없음, draft-only
05루프·WIP개발 보드 Now=1, 시리즈 런 slug 하나, 품질/accuracy 게이트
06그래프에디토리얼 단계 DAG + series-draft-run.md 오케스트레이터
07현장아래 스토리 — ADR-0005부터 Admin Publish까지

Rendering diagram…

결정 1 — 비용을 위해 경계를 단순화했다 (ADR-0005)

MVP에서 별도의 NestJS/Railway API를 두지 않고, Next.js 하나(Vercel) 를 BFF로 씁니다. 본문은 Git MDX가 아니라 Neon post_translations.markdown, 이력은 revisions. 로케일 ko/en은 서로 독립 최적화입니다 (ADR-0005, as of 문서 기준).

에이전트 쓰기 경로는 Cursor → POST /api/internal/... → Application use-case → Prisma입니다. DB 직접 접속은 금지입니다. ADR에 적힌 플랫폼 비용 감( LLM 제외 대략 월 US$10–20대)은 추정치이며, 토큰 비용은 별도입니다.

교훈: “에이전트 친화적”이 곧 “에이전트에게 DB를 주는 것”이 아닙니다. 얇은 Internal API + 사람 발행이 하네스입니다.

결정 2 — 에디토리얼은 DAG이고, 발행은 사람이다

런북의 정신 모델은 두 개의 문입니다 (editorial-draft-publish):

인증할 수 있는 일
Cursor / agentsINTERNAL_API_KEYdraft 생성·갱신만
Owner / AdminBetter Auth 세션편집 + Publish

파이프라인은 agents/editorial/workflow.md에 단계로 고정되어 있습니다. 이 시리즈는 packages/agents/prompts/editorial/series-draft-run.mdqueued slug 하나를 골라 같은 DAG를 끝까지 돌립니다. 산출물은 packages/agents/runs/<date>-<slug>/에 남고, Neon이 초안 SSOT가 됩니다.

품질: 에이전트 쪽 자격은 대략 ≥85 + accuracyFail면 블록. 자격은 발행을 대체하지 않습니다 — 헌장 그대로 AI drafts; human publishes.

한 번은 채팅에만 예쁜 마크다운이 있고 Admin에는 없는 상태를 만들 뻔했습니다. 그다음부터 “끝”의 정의는 Internal API 201/200 + Admin URL 로 바꿨습니다.

결정 3 — 개발도 같은 문법 (WIP=1 보드)

플랫폼 개발은 agents/development/board.mdSingle Source of Progress입니다. Now에는 카드 한 장만 올립니다. 두 장이면 오케스트레이터 버그입니다 (agents/development/workflow.md). Loop/연속 세션은 채팅 기억보다 보드를 다시 읽습니다.

에디토리얼 WIP=1(slug)과 개발 WIP=1(카드)은 같은 근육의 다른 표면입니다. 5편의 루프·6편의 그래프가 “문서 철학”이 아니라 운영 규칙이 되는 지점입니다.

결정 4 — 시크릿과 쓰기 권한을 분리한다

현장에서 반복하는 체크리스트:

[ ] Agents: INTERNAL_API_KEY only — no DATABASE_URL in agent env
[ ] Draft upsert via POST /api/internal/drafts (never publish endpoint)
[ ] Secrets in env / secret store — never commit production.env values
[ ] Human gate for Publish, force-push, prod migrate, credential edits
[ ] Run artifacts may mirror under docs/editorial/… but Neon is SSOT after upsert

4편의 하네스·5편의 정지 조건이 여기로 모입니다. 프롬프트에 “.env 건드리지 마”만 적고 끝내면, 현장에서는 이미 진 게임입니다.

실습: 다른 레포에 옮길 최소 세트

PapaCoder를 복제할 필요는 없습니다. 네 파일 습관이면 사다리의 80%를 이식할 수 있습니다.

# 1) AGENTS.md — harness policy (forbidden / required checks)
# 2) board.md or ISSUE template — WIP=1 Now column
# 3) prompts/orchestrator.md — one slug|ticket per run; stop budgets
# 4) runbook.md — “draft API vs human publish” two doors

그다음 Cursor에서:

  1. 오케스트레이터 프롬프트로 한 티켓만 진행
  2. Research/Implement/Review를 산출물 파일로 고정
  3. 자동 게이트(테스트·린트) 통과 전에는 “완료” 금지
  4. 사람만 메인/프로덕션에 머지·배포

시리즈 글을 쓰는 지금 이 런도 같은 계약입니다: 초안 upsert → Admin에서 Publish.

Cursor 사용 노트 (이 레포 기준)

  • 시리즈: Owner가 “다음 편”이라고 하면 series-draft-run.md 전체를 실행 — 트렌드 헌팅 없음.
  • 개발: board.mdNow만 보고 사이클 — 채팅 요약에 의존하지 않기.
  • 병렬 조사는 Task/서브에이전트, 쓰기는 직렬.
  • 막히면 새 목표를 추가하지 말고 보드를 Blocked로 옮기거나 사람에게 에스컬레이션.

정직하게 말하는 트레이드오프

얻은 것치른 것
에이전트 쓰기 경로가 단순Internal API·권한·감사 설계 비용
KR/EN 독립 초안이중 작성·리뷰 비용
보드/DAG로 재개 가능문서 갱신 규율 (안 지키면 즉시 빚)
draft-only로 사고 반경 축소발행 지연(사람이 병목 — 의도된 병목)
단일 BFF로 MVP 비용 억제나중에 워커/큐가 필요해질 수 있음 (ADR가 defer)

은탄환은 없습니다. 다만 프롬프트만으로 운영하지 않는다는 선택은, 이 레포에서는 이미 코드와 런북에 박혀 있습니다.

FAQ

Q. 형제 프로젝트 사례는 왜 없나요?
A. 시리즈 플랜이 Owner 승인·비비밀 범위로 제한합니다. 이 편은 Labs 공개 패턴만으로 닫습니다.

Q. 품질 85를 넘으면 자동 발행되나요?
A. 아니요. 자격 게이트일 뿐, Publish는 Admin입니다.

Q. 우리 팀은 Nest가 있는데 ADR-0005를 따라야 하나요?
A. MVP 비용·복잡도 선택입니다. 패턴(에이전트→API→사람 발행, WIP=1)은 스택과 무관하게 가져갈 수 있습니다.

Q. 시리즈는 여기서 끝인가요?
A. 이 사다리의 queued 편은 여기까지입니다. 이후 주제는 새 플랜·Owner 우선순위로 갑니다.

소스

시리즈를 덮으며

#한 줄
01모델보다 표면과 과금
02대화로 만들고, 위험 앞에서 코드를 다시 본다
03역할과 계약으로 품질
04프롬프트 밖에
05멈추는 법을 설계
06선이 안 되면 지도
07Labs에서는 그걸 레포 규칙으로 산다

다음에 할 일(독자): 자기 레포에 WIP=1 보드와 draft/human publish 두 문을 그려 보세요.
다음에 할 일(Owner): Admin에서 #01–#07 초안을 검토·발행하세요.

끝까지 읽어 주셔서 감사합니다. 코딩은, 여전히, 대화입니다 — 다만 대화에도 벽과 지도와 사람이 필요합니다.

Related posts

More in Tutorials

Comments

Checking sign-in…

No comments yet.