| name | vercel-env-audit |
| description | Vercel 전체 프로젝트의 환경변수(env/secrets)를 한 번에 감사하는 스킬. 어떤 프로젝트가 어떤 키를 쓰는지 매핑하고, 각 키(OPENAI_API_KEY, STRIPE_*, DATABASE_URL 등)의 재발급 방법까지 안내. 사용 시점: (1) '내 Vercel secret 전부 보여줘', (2) '모든 프로젝트에서 사용 중인 env 조회', (3) '키 로테이션/재발급 하려고 하는데 어디서 쓰이는지', (4) 'vercel env audit', (5) 'API key 유출 대응' 키워드 언급 시. |
Vercel Env Audit
Vercel 계정/팀의 모든 프로젝트에 설정된 환경변수를 수집해서, 어떤 프로젝트가 어떤 키를 쓰는지 매핑하고 키별 재발급 방법을 안내하는 스킬.
실행 흐름
- Vercel API 토큰 확보 (아래 "토큰 가져오기" 참조)
- 스크립트 실행 → 모든 프로젝트/모든 env 키 수집
- 결과 리포트: 프로젝트별 키 목록 + 키별 역매핑 + 재발급 방법 안내
1. Vercel API 토큰 가져오기
환경변수 또는 키체인에 저장된 토큰을 이 우선순위로 찾는다:
echo "$VERCEL_TOKEN"
security find-generic-password -s "vercel-api-token" -w 2>/dev/null
cat ~/.vercel-token 2>/dev/null
위 세 곳 모두에 없으면 사용자에게 요청한다 — 이 문구 그대로 출력:
Vercel API 토큰이 필요합니다. 아래 중 하나로 제공해 주세요:
- https://vercel.com/account/tokens 에서 "Create Token" (Scope: Full Account 권장, Expiration 적절히 설정) → 발급된 토큰을 이 대화창에 붙여넣기
- 또는 터미널에서 미리 저장:
export VERCEL_TOKEN="xxxxxxxxxxxx"
security add-generic-password -a "$USER" -s "vercel-api-token" -w "xxxxxxxxxxxx"
사용자가 토큰을 채팅에 붙여넣으면 절대 파일에 기록하지 말고 그 세션에서 export VERCEL_TOKEN=... 로만 사용한다. 사용자가 "저장해줘"라고 명시한 경우에만 키체인에 등록.
2. 팀 스코프 확인
Vercel은 개인 계정과 팀이 분리되어 있으므로 양쪽 다 훑어야 전체가 나온다.
curl -s "https://api.vercel.com/v2/teams" \
-H "Authorization: Bearer $VERCEL_TOKEN" | jq -r '.teams[] | "\(.id)\t\(.slug)\t\(.name)"'
팀이 여러 개면 사용자에게 "모든 팀을 훑을까요, 특정 팀만 할까요?" 확인.
3. 스크립트 실행
스킬 루트를 SKILL_DIR 로 잡고 실행한다 (설치 방식에 따라 경로 유연):
SKILL_DIR="$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]:-$0}")")")"
bash "$SKILL_DIR/scripts/list-all-env.sh"
bash "$SKILL_DIR/scripts/list-all-env.sh" --team <team-slug-or-id>
bash "$SKILL_DIR/scripts/list-all-env.sh" --json > /tmp/vercel-env-audit.json
스크립트는 기본적으로 값은 받지 않고 키 이름/대상 환경(production/preview/development)/타입(encrypted/plain/secret)만 수집한다. 값까지 필요하다고 사용자가 명시적으로 말하면 --decrypt 플래그 안내.
4. 리포트 형식
스크립트 출력을 받아 다음 두 섹션으로 정리해 보여준다:
A. 프로젝트 → 키 매핑
📦 my-nextjs-app (team: acme)
├─ DATABASE_URL [production, preview] encrypted
├─ STRIPE_SECRET_KEY [production] encrypted
└─ NEXT_PUBLIC_POSTHOG_KEY [production, preview] plain
📦 my-worker (personal)
├─ OPENAI_API_KEY [production] encrypted
└─ SENTRY_DSN [all] plain
B. 키 → 프로젝트 역매핑 (중복/로테이션 대상 파악용)
🔑 OPENAI_API_KEY
- my-worker (production)
- analytics-app (production, preview)
→ 재발급: references/reissue-guide.md#openai
🔑 STRIPE_SECRET_KEY
- my-nextjs-app (production)
→ 재발급: references/reissue-guide.md#stripe
키 이름을 references/reissue-guide.md 의 패턴과 매칭해서 해당 키의 재발급 방법 요약을 인라인으로 붙여준다. 매칭 안 되는 키는 "재발급 방법 미확인 — 해당 서비스 대시보드 확인 필요"로 표시.
5. 보안 유의사항
참고