콘텐츠로 이동
Search

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 라이선스

영상 요약

시간

챕터

방법

관련 스킬

00:00

자는 동안에도 일하는 AI 개발팀

사람이 자리에 없어도 에이전트가 작업·검증·머지를 이어감

00:50

요리사가 직접 간을 본다

에이전트가 실제 앱을 사용자처럼 조작하고 증거를 남김

create-verification-skill

02:29

같은 실수는 주방이 막는다

반복되는 지적을 문서 대신 lint·타입·검사로 바꿈

principle-encode-lessons-in-structure

03:24

주문을 받고 나누는 것도 AI가

작업을 나눠 맡기고 별도 검증 에이전트가 승인해야 머지

poteto-mode

04:57

다 맛보지 않는데 어떻게 믿나

머지된 결과를 표본으로 보고 문제는 환경에서 고침

운영 습관

06:18

내 주방은 내가 차린다

자기 작업 이력으로 자기 스킬을 만듦

automate-me, grill-me

핵심 개념

  • 미슐랭 주방: 주방장은 모든 요리를 직접 하지 않지만 장비·역할·기준을 갖추고 나가는 요리에 책임을 짐. 요리사를 늘리기 전에 주방부터 갖춤
  • 신뢰 사다리: 에이전트가 스스로 증명할 수 있는 만큼만 권한을 넓힘
  • 두 개의 루프
    • 바깥 루프: Slack·이슈 등에서 새 정보를 받아 작업으로 바꿈
    • 안쪽 루프: 코디네이터가 에이전트에게 작업을 나눠 맡기고, 에이전트가 직접 맥락을 모음
  • 리뷰 대신 표본 검사: 머지된 PR을 표본으로 보고 반복되는 지름길·나쁜 패턴을 찾음. 결과물이 아니라 스킬·규칙·환경을 고침
  • 검증 에이전트: PR을 쓴 에이전트는 자기 판정으로 머지하지 않음. 새 검증 에이전트가 앱을 실제로 돌려 확인한 뒤 머지

주요 스킬

  • /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 - 역할별 모델 설정
  • 함께 소개된 Matt Pocock의 스킬
    • grill-me - 계획·설계를 집요한 인터뷰로 다듬음
    • grill-with-docs - 인터뷰하면서 ADR·용어집도 함께 남김

Claude Code에서 사용

/plugin marketplace add cursor/plugins
/plugin install pstack@cursor-plugins
/pstack:setup-pstack
  • 명령에 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 방식은 아직 증명되지 않은 가정
  • back-channel logout은 @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 가상 인증기 (package.json에 추가 필요)

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 웹훅 → 플랜·크레딧
  • 설계 문서 §13의 단계별 완료 기준을 그대로 검증 시나리오로 옮김
  • 막혀야 할 것이 막히는지도 시나리오로 확인 (영상에는 없는 추가 항목)
    • 다른 앱 aud 토큰 거부
    • 폐기한 PAT에 401
    • 리프레시 토큰 재사용 시 체인 전체 폐기
    • 미검증 소셜 이메일은 기존 계정에 연결되지 않음

4. 보안 체크리스트를 구조로 전환

  • 문장으로만 있는 규칙은 에이전트가 건너뛰어도 아무것도 실패하지 않음. 아키텍처 → 타입 → lint → 테스트 → 문서 순서로 옮김

규칙

강제 수단

isAdmin 단일 판정

해당 모듈 밖의 role 비교를 lint로 금지

관리자 쓰기는 감사 필수

audit가 필수 인자인 라우트 등록 함수만 허용

크레딧은 batch()로만 기록

원장·잔액 쓰기를 한 모듈로 제한

PAT는 서버 래퍼로만 발급

createApiKey 직접 호출을 lint로 금지

FK ON DELETE, 길이 CHECK

마이그레이션 적용 뒤 스키마 검사 스크립트

Better Auth 스키마 일치

CI에서 auth generate 결과와 비교

앱 간 쿠키 공유 없음

E2E에서 Set-Cookie에 Domain이 없음을 단언

내부 RPC HTTP 미노출

라우트 목록 스냅샷 테스트

  • 각 검사는 일부러 어긴 코드에서 실패하는 것을 한 번 확인
  • 규칙과 강제 수단의 대응표는 CLAUDE.md에 둠

5. 자율성 구역

  • 영상과 가장 크게 달라지는 부분

구역

대상

머지

A. 되돌리기 쉬움

화면, 문구, i18n, 문서

검증 통과 시 자동 (autopilot-full)

B. 보안 경계

로그인, 세션, 토큰, 2단계 인증, 소셜 연결, OAuth, PAT, 관리자 판정, 웹훅 서명

에이전트가 구현·검증하고 사람이 읽고 머지 (autopilot-stack)

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

Favorite site

author Zer0 sitemap