statuslin.es
요약
statuslin.es는 Claude Code를 활용하여 터미널 상태 표시줄 스크립트를 공유하고 미리 볼 수 있는 커뮤니티 갤러리입니다. 사용자는 실제 코드를 실행하기 전에 렌더링된 미리보기를 통해 작동 방식을 확인할 수 있습니다. 이 플랫폼은 강력한 안전 모델(E2B 샌드박스, 사람 검토)을 갖추고 있으며, 개발 과정에서 AI 에이전트가 주도하는 '에이전트 중심'의 코드베이스를 채택했습니다.
핵심 포인트
- Claude Code 기반의 상태 표시줄 스크립트를 공유합니다.
- E2B 샌드박스와 사람 검토로 높은 안전성을 확보했습니다.
- 렌더링 미리보기를 통해 실제 작동을 사전에 확인할 수 있습니다.
- Bun, Vite 등 최신 스택과 AI 에이전트 중심 개발 방식을 사용합니다.
statuslin.es
Claude Code 상태 표시줄의 커뮤니티 갤러리입니다. 실제 설정을 렌더링된 미리보기로 탐색하고, 사람들이 어떤 것을 복사했는지 확인한 다음, 터미널에 하나를 복사해 보세요. 소스 코드에서 추측하는 대신 각 스크립트가 실제로 무엇을 렌더링하는지 먼저 볼 수 있습니다.
statuslin.es 에서 실시간으로 확인하세요.
작동 방식 (그리고 안전성)
상태 표시줄은 Claude Code가 실행하여 터미널 하단 스트립을 그리는 임의의 스크립트입니다. 따라서 이 사이트는 낯선 사람들의 셸 스크립트를 호스팅하고 실행합니다. 안전 모델이 핵심입니다:
- 사용자의 코드는 제출 시에 한 번만 실행됩니다. 페이지 조회 시에는 실행되지 않습니다. 제출된 스크립트는 네트워크 접근이 기본적으로 차단되고, 하드 5초 타임아웃이 적용되며,
COLUMNS/LINES만 전달되는 새로운 E2B 샌드박스에서 단 한 번 실행됩니다. 그 후 샌드박스는 파괴됩니다. (스크립트가 필요한 네트워크 호스트를 선언할 수 있으며, 해당 제출물은 인간의 검토를 거쳐 출구 허용 목록(egress allowlist) 뒤에서 렌더링됩니다.) 갤러리를 탐색하는 것은 미리 렌더링된 HTML을 제공하므로 방문 시 어떤 스크립트도 실행되지 않습니다. - 모든 설정은 게시되기 전에 사람이 검토합니다. 렌더링된 미리보기는 검토 대기열에 들어갑니다. 아무것도 자동으로 라이브 상태가 되지 않습니다.
- 게시된 버전은 콘텐츠 해시에 고정되며 불변합니다. 정확하게 검토된 바이트가 제공되고 복사됩니다. 승인 후 검토되지 않은 코드로 교체할 방법이 없습니다.
스택 (Stack)
Bun · Vite · TanStack Start (React SSR) · Better Auth (GitHub) · Drizzle + Postgres · E2B.
이것은 에이전트 중심(agent-first) 코드베이스입니다. 대부분의 변경 사항은 기계적 게이트(타입 검사, 린팅, 테스트, git hooks)를 대상으로 AI 에이전트에 의해 작성됩니다. CLAUDE.md에 규칙이 담겨 있으며, CONTRIBUTING.md는 시작하는 방법입니다.
로컬 개발 (Local development)
사전 요구 사항(Prereqs): Bun과 Docker. 그런 다음 bun install을 실행하세요.
1. 로컬 Postgres
개발용 호스팅 데이터베이스는 없습니다. 로컬 개발 환경은 자체 임시(throwaway) Postgres 컨테이너를 사용합니다. 포트는 이미 사용 중인 5432와 충돌하지 않도록 5433입니다:
docker run -d --name statuslines-postgres \
-e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=statuslines \
-p 5433:5432 postgres:18
나중에 docker start statuslines-postgres / docker stop statuslines-postgres로 시작/중지하세요.
2. 환경 변수 (.env.local)
.env.example을 .env.local로 복사하세요. Bun이 이를 자동으로 로드하며, 이 파일만이 로컬 앱이 읽는 유일한 환경 변수 파일입니다. (.env.staging / .env.production은 Fly secrets에 푸시하는 소스일 뿐입니다; docs/deploy.md를 참조하세요.)
.env.example에는 DATABASE_URL과 BETTER_AUTH_URL의 작동하는 로컬 기본값이 이미 포함되어 있으므로, 사용자가 채워 넣어야 할 값은 다음과 같습니다:
BETTER_AUTH_SECRET= # 다음으로 생성: openssl rand -base64 32
GITHUB_CLIENT_ID= # 아래 GitHub OAuth 앱에서 가져옴
GITHUB_CLIENT_SECRET= # 아래 GitHub OAuth 앱에서 가져옴
E2B_API_KEY는 로컬에서는 선택 사항입니다. 대신 RENDER_RUNNER=fake를 설정하면 제출된 스크립트가 내장된 가짜(fake) 러너로 렌더링됩니다. 개발 서버는 제출되는 즉시 각 제출물을 백그라운드에서 렌더링하며, 별도의 워커가 없습니다.
개발 서버의 포트는 BETTER_AUTH_URL에서 파생되므로, 기본값 :3100은 해당 URL에서 가져온 것입니다. URL을 변경하면 포트도 함께 이동합니다.
GitHub OAuth 앱 생성
로그인은 GitHub 전용이므로, 로컬 개발 환경에는 자체 무료 OAuth 앱이 필요합니다:
- GitHub → Settings → Developer settings → OAuth Apps → New OAuth App으로 이동하세요.
(https://github.com/settings/developers). - 다음을 채우세요:
- Application name: 아무거나 (예:
statuslines-dev) - Homepage URL:
http://localhost:3100 - Authorization callback URL:
http://localhost:3100/api/auth/callback/github
- Application name: 아무거나 (예:
- 등록한 후, Client ID를
GITHUB_CLIENT_ID에 복사하고, Generate a new client secret을 생성하여GITHUB_CLIENT_SECRET에 복사하세요.
3. Schema, run, seed
bun run db:migrate # 로컬 DB에 스키마 생성
bun run dev # BETTER_AUTH_URL 포트에서 서비스 (기본값 http://localhost:3100)
GitHub로 한 번 로그인하여 사용자를 생성한 후, 샘플 설정을 위해 (선택적으로) bun run seed:gallery를 실행합니다. 이 명령어는 작성할 기존 사용자(existing user)가 필요하므로 첫 번째 로그인 이후에 실행해야 합니다.
사용자가 있는 경우, bun run dev:login을 실행하면 세션을 생성하고 쿠키 명령어를 출력하여 자동화된 브라우저가 GitHub를 다시 거치지 않고도 로그인된 페이지를 테스트할 수 있게 해줍니다. 자세한 내용은 docs/testing-signed-in.md를 참조하세요. (이 명령어 역시 기존 사용자가 필요하므로 첫 번째 GitHub 로그인을 대체하지 않습니다.)
4. The gate
푸시(push)하기 전에 항상 실행합니다 (pre-commit hook은 lint + typecheck만 실행함):
bun run check # 타입 체크 + lint + 테스트
테스트는 실제 커밋된 마이그레이션(migrations)을 대상으로 PGlite를 사용하므로 컨테이너가 실행될 필요가 없습니다.
브라우저 스모크 테스트도 있습니다. bun run smoke는 실제 브라우저를 구동하여 실행 중인 앱에 대해 작동시키고, 소스 게이트(source gates)로는 감지할 수 없는 Hydration/Auth 오류를 포착합니다. 이 명령어는 agent-browser, 마이그레이션된 개발 DB, 그리고 로그인된 사용자가 필요하므로 푸시 훅의 일부가 아닙니다. 클라이언트나 인증 관련 부분을 수정했을 때 로컬에서 실행하세요.
기여 (Contributing)
코드 기여를 환영합니다. CONTRIBUTING.md를 참조하세요. 상태 라인(status line)을 공유하려면 이 레포지토리가 필요하지 않습니다. statuslin.es에서 제출하세요. 보안 문제를 발견했나요? SECURITY.md를 참조하세요.
라이선스 (License)
MIT.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기