Pstack
lastmod 2026-11-03created 2026-11-032 edits
Cursor와 Claude Code에서 에이전트가 자기 작업을 스스로 증명하게 만드는 엔지니어링 스킬 모음
About
- React 코어 팀 멤버이자 Meta·Netflix·Cursor를 거쳐 SpaceX AI에서 일하는 Lauren Tan(poteto)이 매일 쓰는 스킬·원칙·플레이북·서브에이전트를 공개한 플러그인
- 목표는 코드량이 아니라 "더 적게, 더 높은 품질로" 쓰는 것. 한 에이전트를 깊게 신뢰할 수 있어야 병렬화도 안전하다는 입장
- 진입점은
/poteto-mode하나. 요청을 23개 플레이북 중 하나에 맞추고 단계마다 필요한 스킬을 호출 - 원칙 24개를 각각 짧은 스킬로 제공 (Prove It Works, Encode Lessons in Structure, Never Block on the Human 등)
- 계획 스킬은 기본 제공하지 않음. "가장 좋은 스펙은 코드"라는 입장
- 여러 모델을 역할별로 나눠 씀. 기본값은 코드 작업에 Grok, 판단·문장 작업에 Claude Opus
- MIT 라이선스
영상 요약
- AI 코딩의 마지막 문제, SpaceX 수석 엔지니어가 해결한 방법 | 로렌 탄 × 맷 포콕
- 원 대담은 Matt Pocock의 라이브 방송(2026-10). 한 달에 PR 2,000~2,500건을 에이전트로 머지한 방법을 다룸
- 챕터와 스킬의 대응은 영상 설명란의 링크를 기준으로 재구성함
| 시간 | 챕터 | 방법 | 관련 스킬 |
| 00:00 | 자는 동안에도 일하는 AI 개발팀 | 사람이 자리에 없어도 에이전트가 작업·검증·머지를 이어감 | |
| 00:50 | 요리사가 직접 간을 본다 | 에이전트가 실제 앱을 사용자처럼 조작하고 증거를 남김 | |
| 02:29 | 같은 실수는 주방이 막는다 | 반복되는 지적을 문서 대신 lint·타입·검사로 바꿈 | |
| 03:24 | 주문을 받고 나누는 것도 AI가 | 작업을 나눠 맡기고 별도 검증 에이전트가 승인해야 머지 | |
| 04:57 | 다 맛보지 않는데 어떻게 믿나 | 머지된 결과를 표본으로 보고 문제는 환경에서 고침 | 운영 습관 |
| 06:18 | 내 주방은 내가 차린다 | 자기 작업 이력으로 자기 스킬을 만듦 | |
핵심 개념
- 미슐랭 주방: 주방장은 모든 요리를 직접 하지 않지만 장비·역할·기준을 갖추고 나가는 요리에 책임을 짐. 요리사를 늘리기 전에 주방부터 갖춤
- 신뢰 사다리: 에이전트가 스스로 증명할 수 있는 만큼만 권한을 넓힘
- 두 개의 루프
- 바깥 루프: Slack·이슈 등에서 새 정보를 받아 작업으로 바꿈
- 안쪽 루프: 코디네이터가 에이전트에게 작업을 나눠 맡기고, 에이전트가 직접 맥락을 모음
주요 스킬
-
/poteto-mode- 작업을 플레이북에 맞추고 할 일 목록을 연 뒤 필요한 스킬을 호출하는 진입점. 비가역 작업(공유 브랜치 force-push, 배포, 데이터 삭제, 고객 메시지)은 항상 멈춤 -
/create-verification-skill- 앱을 사용자처럼 실행·조작해 증거를 남기는 프로젝트 전용 검증 스킬과 기능 맵(Feature Map)을 생성- 구성: Launch(실행) · Doctor(상태 점검) · Drive(조작) · Evidence(증거) · Cleanup(정리)
- 생성한 스킬을 한 번 끝까지 실행해 증명한 뒤에 넘겨줌
/maintain-verification-skill - 앱이 바뀌어 어긋난 기능 맵을 바로잡음 /create-formal-verification-skill - 경합·재시도·상태 머신처럼 테스트가 닿기 어려운 부분을 TLA+ 등으로 형식 검증 /correct - 반복되는 실수를 아키텍처 → 타입 → lint → 테스트 → 문서 순서로 구조화 /interrogate - 여러 모델이 diff를 깨뜨려 보고 실행으로 증명된 발견만 남김 /blast-radius - 변경이 diff 밖에서 깨뜨릴 수 있는 것을 찾고 안전 근거를 코드로 증명 /automate-me - 자신의 작업 이력을 분석해 <이름>-mode 스킬을 만듦 /setup-pstack - 역할별 모델 설정 -
grill-me- 계획·설계를 집요한 인터뷰로 다듬음 -
grill-with-docs- 인터뷰하면서 ADR·용어집도 함께 남김
Claude Code에서 사용
- 명령에
pstack:접두사가 붙음 (예:/pstack:poteto-mode) - 모델 설정은
~/.claude/rules/pstack-models.md에 저장 - 서드파티 마켓플레이스라 자동 업데이트는 기본으로 꺼져 있음. 수동 갱신은
claude plugin update pstack@cursor-plugins - 검증 스킬 경로는
.cursor/skills/대신.claude/skills/ - Cursor Automations·Bugbot·클라우드 에이전트를 쓰는 단계는 건너뜀 (Slack 버그 분류 자동화
benny사용 불가)
적용 계획: accounts.cvp.run
2026-11-02에 Cloudflare Workers·D1·Better Auth·Paddle 기반 공용 계정 서비스 accounts.cvp.run에 이 방법을 적용하려고 세운 계획. 당시 저장소에는 설계 문서(docs/design.md)와 마이그레이션만 있고 구현 코드·CI는 없었음
그대로 따르면 안 되는 두 가지
- 검증 스킬은 실행 가능한 앱이 있어야 만들 수 있음.
create-verification-skill도 빌드·실행이 안 되는 저장소에서는 그것부터 고치라고 함 - 자동 머지는 일부 영역에만 적용. 대담에서 Matt Pocock이 되돌릴 수 없는 변경을 어떻게 다루냐고 물었고 Lauren Tan은 일반적인 답을 내지 않았음. 인증·결제가 바로 그 영역
1. 출발선 정리
- 설계 문서·마이그레이션·
package.json을 커밋해 기준점 확보 - pstack을 설치하고 자동 업데이트는 꺼 둔 채 유지. 인증 저장소의 작업 규칙이 몰래 바뀌지 않게 하기 위함
2. 뼈대 구축과 위험한 가정 확인
- 설계 문서 §13 단계 0(빈 Worker, D1·KV·Queue, 마이그레이션 적용,
vitest-pool-workers)부터 완료 - 소셜 로그인 2단계 인증을 Prototype 플레이북으로 가장 먼저 확인
- Better Auth 1.7.15의
twoFactor플러그인은/sign-in/email·/sign-in/username·/sign-in/phone-number만 가로챔 - 설계에 적은
databaseHooks.session.create.before방식은 아직 증명되지 않은 가정
- Better Auth 1.7.15의
@better-auth/oauth-provider에 코드가 있으나 실제 동작은 샘플 RP로 확인 필요 grill-with-docs로 정리. 설계 문서가 이미 있어 결정 기록이 남는 쪽이 맞음 3. 검증 스킬 verify-accounts
-
/pstack:create-verification-skill로.claude/skills/verify-accounts/생성 - 외부 경계는 다음과 같이 처리
| 외부 경계 | 검증 방법 |
| Turnstile | Cloudflare 테스트 키 |
| 이메일 | 개발용 발신기가 링크를 저장하고 스크립트가 읽음 |
| 소셜 로그인 6종 | 가짜 OIDC 공급자. 실제 공급자는 원격 환경에서 수동 확인 |
| TOTP | 스크립트가 비밀값으로 코드 계산 |
| 패스키 | Playwright 가상 인증기 ( |
| Paddle | 서명한 웹훅 재생기, 이후 sandbox |
| OIDC 앱·CLI | 설계 문서 §13의 샘플 RP Worker와 샘플 CLI |
- 증거는 화면과 DB 상태를 함께 확인.
wrangler d1 execute --local로admin_audit_log·account_event_outbox·credit_ledger행까지 봄 - 기능 맵 첫 5개
- 가입·로그인
- OIDC 로그인·로그아웃 전파
- 2단계 인증·재인증
- 디바이스 그랜트·PAT
- Paddle 웹훅 → 플랜·크레딧
- 다른 앱
aud토큰 거부 - 폐기한 PAT에 401
- 리프레시 토큰 재사용 시 체인 전체 폐기
- 미검증 소셜 이메일은 기존 계정에 연결되지 않음
4. 보안 체크리스트를 구조로 전환
- 문장으로만 있는 규칙은 에이전트가 건너뛰어도 아무것도 실패하지 않음. 아키텍처 → 타입 → lint → 테스트 → 문서 순서로 옮김
| 규칙 | 강제 수단 |
| | 해당 모듈 밖의 |
| 관리자 쓰기는 감사 필수 | |
| 크레딧은 | 원장·잔액 쓰기를 한 모듈로 제한 |
| PAT는 서버 래퍼로만 발급 | |
| FK | 마이그레이션 적용 뒤 스키마 검사 스크립트 |
| Better Auth 스키마 일치 | CI에서 |
| 앱 간 쿠키 공유 없음 | E2E에서 |
| 내부 RPC HTTP 미노출 | 라우트 목록 스냅샷 테스트 |
- 각 검사는 일부러 어긴 코드에서 실패하는 것을 한 번 확인
- 규칙과 강제 수단의 대응표는
CLAUDE.md에 둠
5. 자율성 구역
- 영상과 가장 크게 달라지는 부분
| 구역 | 대상 | 머지 |
| A. 되돌리기 쉬움 | 화면, 문구, i18n, 문서 | 검증 통과 시 자동 ( |
| B. 보안 경계 | 로그인, 세션, 토큰, 2단계 인증, 소셜 연결, OAuth, PAT, 관리자 판정, 웹훅 서명 | 에이전트가 구현·검증하고 사람이 읽고 머지 ( |
| C. 단방향 | production 마이그레이션·배포, 라이브 결제, 키 회전, 삭제 cron | 사람이 직접 실행 |
- B를 사람이 보는 이유: 코드는 revert할 수 있어도 그 사이 탈취된 세션·토큰은 되돌릴 수 없음. 검증 가능성과 되돌림 가능성은 별개
- 구역도 구조로 강제:
CODEOWNERS, branch protection, production 자격증명은 에이전트 환경에 두지 않음 - 처음에는 모든 구역을 사람이 머지. CI 필수 검사가 생기고 표본 검사에서 문제가 없을 때 A 구역부터 자동 머지 허용
- 무거운 검증은 B·C에 집중. 한 비교에서 pstack 전체를 쓰면 시간은 약 2배, 토큰은 훨씬 많이 들었음
6. 구현과 운영
- 설계 문서 §13 단계 1~7을
/pstack:poteto-mode로 진행 - Paddle 단계에서
create-formal-verification-skill로 웹훅 순서 역전·크레딧 멱등성 검증 (영상에는 없는 추가 항목) - 매일 전날 커밋 확인. A는 표본, B·C는 전수
- 같은 지적이 두 번 나오면 결과물만 고치지 않고
/pstack:correct로 구조에 반영 -
/pstack:automate-me는 작업 이력이 몇 주 쌓인 뒤 실행
주의
- 월 2,000~2,500건 PR은 본인 발표 수치이며 유지보수 변경이 많이 포함됐다는 분석이 있음
- 되돌릴 수 없거나 검증하기 어려운 영역(데이터 손실 등)에 대한 일반적인 답은 대담에서 나오지 않음
- 이 문서의 영상 요약은 자막이 아니라 영상 챕터, 설명란에 링크된 원본 스킬 문서, 원 대담의 2차 요약을 바탕으로 정리함
See also
- Skills
- Gstack
- Agent-skills
- Claude Code
- Cursor
- Agent-oriented software engineering
- Better Auth
- Paddle
- Playwright
- Lint
- Herdr
Favorite site
- Github - cursor/plugins (pstack)
- Github - mattpocock/skills
- AI 코딩의 마지막 문제, SpaceX 수석 엔지니어가 해결한 방법 | 로렌 탄 × 맷 포콕 - YouTube
- LIVE: Poteto (creator of pstack) on shipping 1,000's of PR's a month at SpaceX - YouTube
- pstack explained: Lauren Tan's system for trustworthy AI agents
- Poteto's 2,500 PRs: Building AI Agents That Verify Their Work
- SpaceX AI Engineer: How to Stop Being a "Human Go-Between" for AI
- On pstack: the skills behind 2,500 PRs a month
- Github - lushinshang/poteto_pstack_spacex
- pstack 스킬 사용법: poteto-mode로 쓰는 Cursor 에이전트 스킬 58개 구성, Claude Code 설치와 모델·컨텍스트 주의점