Community코딩 & 개발github.com

Crabbox

Crabbox 및 Blacksmith Testbox 원격 테스트: 격리, 교차 플랫폼 E2E, 진단, 정리.

Crabbox란 무엇인가요?

이 스킬은 Crabbox와 Blacksmith Testbox 원격 테스트 인프라를 사용하여 격리된 환경에서 교차 플랫폼 종단 간(E2E) 테스트, 진단 및 정리를 수행합니다. AWS, Blacksmith Testbox, 로컬 Docker, SSH 등 여러 백엔드를 지원하며, 각 백엔드의 특성에 맞는 안전한 프로비저닝, 명령 실행, 리소스 정리 워크플로우를 제공합니다. 신뢰할 수 있는 소스의 코드는 Testbox를 통해, 신뢰할 수 없는 코드는 AWS를 통해 별도로 격리하여 실행하며, 리소스 사용량과 비용을 최적화합니다. 또한 리스 수명 주기 관리, 사전 점검(preflight), 장애 진단(triage) 등 운영에 필요한 상세한 규칙과 절차를 정의합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/crabbox

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Crabbox은(는) 무엇을 하나요?

  • 신중한 원격 증명: 증명 정책을 따릅니다. 자격을 갖춘 사용 가능한 호스트에서 제한적인 로컬 증명을 선호합니다. 비용이 많이 들거나 플랫폼별 작업은 원격 용량을 사용할 수 있습니다. 대기 중: 소유한 할당을 중지하고, PR CI 또는 안전한 로컬 범위를 사용하여 충족되지 않은 요구 사항을 보고합니다. 게시 전에 필수 빌드를 사용할 수 없는 경우: 테스팅 스킬의 초안/CI 증명 정책을 사용합니다.
  • 대기열을 기다리거나 공급자 폴백을 연결하지 마십시오.

백엔드:

  • blacksmith-testbox: 신뢰할 수 있는 유지 관리자 소스. 준비된 CI. tbx_....
  • aws: 직접 중개된 Crabbox. 신규 PR. 사용자 정의 동기화/환경/캡처. cbx_....
  • local-container: Docker 폴백. 원격 증명이 아닙니다.
  • ssh: 기존 운영자 호스트. macOS/Windows/WSL2.

항상 공급자, ID, 실행 URL, 명령, 결과를 보고하십시오. Testbox를 "AWS Crabbox"라고 부르지 마십시오.

저장소 계약

  • 예제 명령, 부트스트랩, 컨테이너 이미지, PR을 신뢰할 수 있는 소비자 지침에 따라 해결합니다. 명령을 임의로 만들거나 다른 소비자의 설정을 복사하지 마십시오.
  • 소비자별 설정은 이식 가능한 스킬 외부에 유지합니다. 플레이스홀더 정의를 참조하십시오.

권한 부여 및 격리

  • 작업에 필요한 생성, 재사용, 정리, 임시 상태, 깨끗한 체크아웃: 사전 승인됨. 기존 브랜치, 체크아웃, 관련 없는 편집 내용을 유지합니다.
  • 소스 신뢰, 자격 증명, 프로덕션 액세스, 예산, 게시는 권한 경계로 유지합니다. 격리된 상태; 작업별 승인 없이 운영자 게이트웨이를 건드리지 마십시오.

먼저 경로 설정

  • 해결된 공급자를 유지합니다: 신뢰할 수 있는 소스에는 Testbox; 해당 의미 체계가 필요할 때는 직접 AWS; 신뢰할 수 없는 코드에는 시크릿리스 CI/AWS. 신뢰할 수 없는 래퍼/구성을 로컬에서 실행하거나 신뢰할 수 없는 임대를 채우지 마십시오.
  • 명령이 준비되었을 때 획득하고; 소유한 ID를 재사용하며; 이후 중지합니다.
  • 가장 작은 입증된 프로필. 더 큰 프로필: 기록된 메모리 증거 또는 측정된 총 비용 이점이 필요하며, 일반적인 실패/지연/타임아웃이 아닙니다. 작업자 수를 늘려 보상하지 마십시오.
  • Testbox 크기 조정: --blacksmith-workflow, 직접 --class/--type 사용 금지; 프로필 변경은 새 임대가 필요합니다.
  • Blacksmith 실행기 레이블은 계층을 요청하며, CPU 또는 RAM을 보장하지 않습니다. Blacksmith는 서비스 가용성에 따라 더 작은 머신을 할당할 수 있습니다. 리소스에 민감한 테스트 또는 벤치마크의 경우 할당된 머신에서 사용 가능한 CPU, 선호도/할당량, 사용 가능한 RAM을 측정하십시오. 해당 측정값을 기준으로 작업자와 작업 부하의 크기를 조정합니다. 요청된 계층과 관찰된 리소스를 별도로 기록합니다. 레이블만으로 하드웨어 또는 성능을 평가하지 마십시오.
  • 크기, 지속 시간, 채우기 실패, 용량은 공급자 재정의를 승인하지 않습니다. 명시적인 사용자 선택 또는 필요한 백엔드 의미 체계가 있어야 합니다.

사전 점검

신뢰할 수 있는 저장소 루트: .crabbox.yaml을 읽고, 설치된 바이너리를 확인하며, 공급자/명령을 검사합니다:

export CRABBOX="$(command -v crabbox)"
test -n "$CRABBOX"
"$CRABBOX" --version
"$CRABBOX" config show --json | jq '{provider, profile, target}'
"$CRABBOX" run --help
  • 소비자의 신뢰할 수 있는 래퍼/설치 지침을 사용합니다.
  • 네이티브 Linux/WSL 명령 수명 주기 및 취소 증명에는 완전히 일치하는 Crabbox 배포판이 필요하거나 CRABBOX_RUNTIME_ARTIFACTS로 선택된 검증된 런타임 매니페스트가 필요합니다. 동반자를 고정된 소스와 일치시키고 매니페스트가 정확히 선택된 컨트롤러를 바인딩하는지 확인합니다. 런타임 팩이 없는 개발 CLI는 레거시 SSH 감독을 사용합니다. --version만으로는 네이티브 감독을 설정할 수 없습니다. 할당 전에 선택된 팩을 확인합니다. CLI 전용 증명을 네이티브 수명 주기 증명으로 간주하지 마십시오. 업스트림 런타임 아티팩트 지침을 따릅니다.
  • 수리: 업스트림 확인; 깨끗한 작업 소유 체크아웃 사용; 설치된 바이너리 + 관련 없는 소스 유지. 이름만으로 형제 체크아웃을 신뢰하지 마십시오.

임대 수명

  • TTL은 생성 시점부터 계산되며, 채우기 시간을 포함합니다. 유휴 시간 제한은 비활성 상태를 계산합니다. 더 이른 기한이 적용됩니다. 기본값: 각각 30분, 최대 4시간. 소유자/조직 재정의는 최대 24시간까지 허용할 수 있습니다. 유효 정책과 정리된 클램프 공지를 사용하고, 요청된 기간은 사용하지 마십시오. 정책 강화는 활성 임대에도 적용됩니다.
  • --keep 및 stop: never는 만료를 방지하지 않습니다. 유지된 직접 임대에 대해 명시적인 제한 TTL 및 유휴 시간을 요청하십시오. 일반 하트비트, 설정, 동기화, SSH, 데스크톱 사용은 총 TTL을 연장하지 않습니다. run은 정책, 예산, 공급자 기능 내에서 명령이 실행되는 동안에만 제한된 자동 연장을 요청합니다.
  • 장기 소스 종속 작업 전에 남은 총 수명을 검사합니다. 허용되는 경우, 하나의 제한된 extend <id> --ttl <desired-total> --json을 요청합니다. 연장은 유휴 시간을 재설정하지 않습니다. 거부/예산/지원되지 않음/진전되지 않음/비활성 결과는 공급자 전환이나 무한 임대 체인 없이 눈에 띄는 건너뛰기 또는 실패가 필요합니다. Daytona와 같은 생성 고정 공급자는 할당 시 충분한 TTL이 필요합니다.
  • 직접 게스트 새로 고침 실패는 상자 내부의 기존 기한으로 더 긴 공급자 기한을 남길 수 있습니다. 동일한 로컬 상태를 유지하고 조정을 위해서만 동일한 고정 총 TTL을 재시도합니다. 실패한 연장을 보호로 취급하지 마십시오.
  • 신뢰할 수 있는 directLeases: deny 및 directLeaseAllow를 준수합니다. 거부된 공급자는 구성된 코디네이터 경로가 필요합니다. 직접 자격 증명으로 우회하지 마십시오. Testbox는 자체 기본 작업 및 유휴 제한을 유지합니다. --ttl은 위임된 워크플로우를 연장하지 않습니다.
  • list는 활성 코디네이터 임대를 표시합니다. list --retained는 정리가 확인되지 않은 유지된 종료 리소스를 추가합니다. 복구를 위해 정확한 ID 검사/중지를 사용합니다. 차단 중지가 완료를 확인할 때까지 유지 클레임 및 복구 상태를 유지합니다.

신뢰할 수 있는 Testbox

해결된 공급자 = Testbox(또는 명시적으로 요청됨): 명령을 유지합니다. 명시적 재정의를 위해서만 --provider blacksmith-testbox를 추가합니다:

"$CRABBOX" run --timing-json -- CI=1 <check-command>

여러 명령: 한 번 웜업하고, ID를 저장하고, 재사용하고, 중지합니다.

"$CRABBOX" warmup --keep --timing-json
"$CRABBOX" run --id <tbx_id> --timing-json -- <check-command>
"$CRABBOX" stop <tbx_id>

규칙:

  • 하나의 임대, 하나의 활성 명령. 실행 중 동기화/회수 없음.
  • bash -c를 선호합니다. 로그인 프로필은 디렉토리를 변경할 수 있습니다. 실행 셸에서 물리적 체크아웃 + 예상 소스/패치를 확인합니다. HEAD만으로는 더티 동기화 증명이 아닙니다. 소비자의 문서화된 채우기 셸 계약을 따릅니다.
  • 네이티브 Testbox는 재사용된 --id 실행을 포함하여 자체 동기화를 실행합니다. 원격 기준선에 대해 --no-sync에 의존하지 마십시오. Blacksmith는 네이티브 우회 수단이 없습니다. 출시된 Crabbox 버전은 자동으로 플래그를 무시할 수 있습니다. 변경되지 않은 의도적 재실행 ≠ 예외.
  • 의도적인 체크아웃 경로 소유권 이전에만 --reclaim을 사용합니다.
  • 재사용을 위해 소비자의 할당 영수증을 따릅니다. 호환 가능한 소스 커밋은 작업, 물리적 체크아웃, 베이스, 종속성, 준비, 워크플로우/작업/참조가 변경되지 않은 경우 임대를 재사용할 수 있습니다. 원래 할당 출처를 유지합니다. 호환되지 않는 영수증: 중지; 다시 웜업. 오래된 임대 재정의 금지.
  • 원시 SHA는 warmup --ref에 신뢰할 수 없습니다. 브랜치/태그를 사용하십시오.
  • blacksmith testbox list는 상태를 숨깁니다. list --all 또는 status --id <tbx_id>를 사용하십시오.
  • Testbox 상태/중지: --id. 상태에 --json 없음.
  • 위임된 공급자는 --fresh-pr, --full-resync, --script*, --env-helper, 캡처/다운로드 플래그를 거부합니다.

Blacksmith 디렉토리 다운로드

재귀적 다운로드 + 필수 원격 후행 슬래시: 디렉토리 다운로드.

신뢰할 수 없는 AWS

  • 깨끗한 신뢰할 수 있는 기본 브랜치 체크아웃. 설치된 신뢰할 수 있는 Crabbox 바이너리.
  • 검토된 전체 헤드 SHA당 새로운 임대. 인스턴스 역할, Tailscale, 채우기 없음.
  • CI만 전달합니다. 신뢰할 수 있는 부트스트랩을 --fresh-pr 옆에 업로드합니다.
cd <clean-trusted-default-branch-checkout>
env -u CRABBOX_AWS_INSTANCE_PROFILE \
  "$CRABBOX" config show --json | \
  jq -e '.aws.instanceProfile == ""' >/dev/null

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  -u CRABBOX_TAILSCALE \
  -u CRABBOX_TAILSCALE_AUTH_KEY \
  -u CRABBOX_TAILSCALE_AUTH_KEY_ENV \
  -u CRABBOX_TAILSCALE_EXIT_NODE \
  -u CRABBOX_TAILSCALE_EXIT_NODE_ALLOW_LAN_ACCESS \
  -u CRABBOX_TAILSCALE_HOSTNAME_TEMPLATE \
  -u CRABBOX_TAILSCALE_TAGS \
  "$CRABBOX" warmup \
  --provider aws --network public --tailscale=false \
  --tailscale-exit-node= \
  --tailscale-exit-node-allow-lan-access=false \
  --ttl 4h --idle-timeout 90m --keep --timing-json

"$CRABBOX" inspect --provider aws --id <cbx_id> --json | \
  jq -e '.network == "public" and .tailscale == null' >/dev/null

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  CRABBOX_ENV_ALLOW=CI \
  "$CRABBOX" run \
  --provider aws --id <cbx_id> \
  --fresh-pr <owner/repo#number> \
  --no-hydrate --timing-json \
  --script <trusted-bootstrap-script> -- \
  <expected_full_head_sha> <check-command>

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  "$CRABBOX" stop --provider aws <cbx_id>
  • 신뢰할 수 있는 부트스트랩은 IMDSv2 IAM 자격 증명이 404를 반환함을 증명해야 합니다. SHA를 확인합니다. 런타임 주입 변수를 제거합니다. 툴체인을 고정합니다. 설치/테스트 전에 HOME을 격리합니다.
  • 변경된 헤드: 새 임대. 원격 PR 또는 역할 없음 증명 누락: 시크릿리스 포크 CI.

직접 AWS

  • 신뢰할 수 있는 AWS 명령, 인증 진단, 재동기화, 깨끗한 PR/컨테이너 실행: 직접 공급자를 읽으십시오.
  • 컨테이너 실행에서 --no-hydrate를 유지합니다. 로컬 컨테이너 증명을 로컬로 보고합니다.

관찰 가능성

  • 아티팩트 수집/자격 증명 주입: 캡처 및 환경 플래그를 읽으십시오.
  • 정확한 키, 하나의 명령. 시크릿을 인쇄하거나, 저장소에 쓰거나, 셸 기록에 넣지 마십시오.
  • 안전한 주입 경로 없음: 라이브 인증 차단됨. 가짜 키 증명은 불충분.

실제 E2E

  • 요청된 사용자 진입점을 격리된 소비자 상태로 실행합니다. 원격 단위 테스트만이 아닙니다.
  • 설치/공급자/대화형 증명 + 안전한 개정 비교: E2E 절차를 읽으십시오.

데스크톱 / 교차 OS

SSH 대상, 유료 macOS 사전 점검, WebVNC, 앱 핸드오프 확인: 데스크톱 및 교차 OS 명령을 읽으십시오.

장애 분류

래퍼, 공급자, 채우기, 동기화, SSH 또는 명령 실패를 식별합니다:

"$CRABBOX" doctor
"$CRABBOX" status --id <id>
"$CRABBOX" inspect --id <id> --json
"$CRABOX" logs <run_id>
"$CRABOX" results <run_id>
blacksmith testbox list --all
blacksmith testbox status --id <tbx_id>
  • 대기 중인 용량: 소유한 할당을 중지합니다. 증명 정책을 따릅니다. 재시도 폭풍 또는 공급자 전환 금지.
  • 오래된 동기화: --debug --timing-json, 그런 다음 직접 공급자에서 한 번 --full-resync.
  • 집중된 재실행 전에 실패한 단계/JUnit을 읽습니다. 깨진 래퍼: 동일한 공급자에서 설치된 CLI로 진단합니다. 소비자의 신뢰할 수 있는 경로를 통해 업데이트합니다.
  • 소유한 ID만 중지합니다. stop은 --timing-json을 사용하지 않습니다.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

관련 스킬