Deploy your own Open-Inspect instance. Use when the user wants to set up, deploy, or onboard to Open-Inspect. Guides through repository setup, credential collection, Terraform deployment, and verification with user handoffs.
Install with Tessl CLI
npx tessl i github:ColeMurray/background-agents --skill onboarding86
Quality
81%
Does it follow best practices?
Impact
100%
1.51xAverage score across 3 eval scenarios
You are guiding the user through deploying their own instance of Open-Inspect. This is a multi-phase process requiring user interaction for credential collection and external service configuration.
Use TodoWrite to create a checklist tracking these phases:
First, generate a random suffix suggestion for the user:
echo "Suggested deployment name: $(openssl rand -hex 3)"Use AskUserQuestion to gather:
open-inspect-{deployment_name}.vercel.app and must be unique across all Vercel users.Execute these commands (substitute values from Phase 1):
mkdir -p {directory_path}
gh repo create {github_account}/open-inspect-{name} --private --description "Open-Inspect deployment"
cd {directory_path}
git clone git@github.com:ColeMurray/open-inspect.git .
git remote rename origin upstream
git remote add origin git@github.com:{github_account}/open-inspect-{name}.git
git push -u origin main
npm install
npm run build -w @open-inspect/sharedHand off to user for each service. Use AskUserQuestion to collect credentials.
Tell the user:
*.YOUR-SUBDOMAIN.workers.devCheck wrangler login status, then create bucket:
wrangler whoami
wrangler r2 bucket create open-inspect-{name}-tf-stateTell user to create R2 API Token at R2 → Overview → Manage R2 API Tokens with "Object Read & Write" permission.
team_)modal token newThen set the token:
modal token set --token-id {token_id} --token-secret {token_secret}
modal profile currentsk-ant-)Guide user through creating a GitHub App (handles both OAuth and repo access):
Open-Inspect-{YourName} (globally unique)https://open-inspect-{deployment_name}.vercel.apphttps://open-inspect-{deployment_name}.vercel.app/api/auth/callback/github
After receiving the .pem path, convert to PKCS#8:
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in {pem_path} -out /tmp/github-app-key-pkcs8.pem
cat /tmp/github-app-key-pkcs8.pemGuide user:
app_mentions:read, chat:write, channels:history,
channels:read, groups:history, groups:read, reactions:writexoxb-...)echo "token_encryption_key: $(openssl rand -base64 32)"
echo "repo_secrets_encryption_key: $(openssl rand -base64 32)"
echo "internal_callback_secret: $(openssl rand -base64 32)"
echo "nextauth_secret: $(openssl rand -base64 32)"
echo "modal_api_secret: $(openssl rand -hex 32)"
echo "github_webhook_secret: $(openssl rand -hex 32)" # Only if GitHub bot enabledCreate terraform/environments/production/backend.tfvars:
access_key = "{r2_access_key}"
secret_key = "{r2_secret_key}"
bucket = "open-inspect-{name}-tf-state"
endpoints = {
s3 = "https://{cloudflare_account_id}.r2.cloudflarestorage.com"
}Create terraform/environments/production/terraform.tfvars with all collected values. Set:
enable_durable_object_bindings = false
enable_service_bindings = falseIf GitHub bot is enabled, also set:
enable_github_bot = true
github_webhook_secret = "{generated_value}"
github_bot_username = "{app-slug}[bot]"Important: Build the workers before running Terraform (Terraform references the built bundles):
npm run build -w @open-inspect/control-plane -w @open-inspect/slack-bot -w @open-inspect/github-botPhase 1 (bindings disabled):
cd terraform/environments/production
terraform init -backend-config=backend.tfvars
terraform applyPhase 2 (after Phase 1 succeeds): Update tfvars to set both bindings to true, then:
terraform applyAfter Terraform deployment, guide user:
The App Home provides a settings interface where users can configure their preferred Claude model.
https://open-inspect-slack-bot-{deployment_name}.{subdomain}.workers.dev/eventsapp_home_opened, app_mentionhttps://open-inspect-slack-bot-{deployment_name}.{subdomain}.workers.dev/interactions/invite @BotNameAfter Terraform deployment, guide user:
https://open-inspect-github-bot-{deployment_name}.{subdomain}.workers.dev/webhooks/githubgithub_webhook_secret valueThe bot username is the App's slug with [bot] appended. E.g., if the app is My-Inspect-App, the
bot username is my-inspect-app[bot]. Confirm this matches github_bot_username in
terraform.tfvars.
npx vercel link --project open-inspect-{deployment_name}
npx vercel --prodcurl https://open-inspect-control-plane-{deployment_name}.{subdomain}.workers.dev/health
curl https://{workspace}--open-inspect-api-health.modal.run
curl -I https://open-inspect-{deployment_name}.vercel.appPresent deployment summary table. Instruct user to test: visit web app, sign in with GitHub, create session, send prompt.
Ask if user wants GitHub Actions CI/CD. If yes, use gh secret set for all required secrets.
enable_github_bot = true, and
github_bot_username matches the App's bot loginnpm run build -w @open-inspect/control-plane -w @open-inspect/slack-bot -w @open-inspect/github-botnpm run build -w @open-inspect/shared4eed8e7
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.