onboarding
This skill automates Open-Inspect setup, including infrastructure provisioning, CI/CD, and credential handling.
Install
mkdir -p .claude/skills/onboarding && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6437" && unzip -o skill.zip -d .claude/skills/onboarding && rm skill.zipInstalls to .claude/skills/onboarding
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Deploy your own Open-Inspect instance. Use when the user wants to set up, deploy, or onboard toKey capabilities
- →Provision Open-Inspect infrastructure via Terraform
- →Aggregate cloud service credentials
- →Configure CI/CD pipelines for deployment
- →Verify service integration across Vercel and Modal
How it works
It orchestrates a multi-phase checklist that prompts for specific credentials and triggers Terraform providers to deploy resources sequentially.
Inputs & outputs
When to use onboarding
- →Deploying a new Open-Inspect instance
- →Configuring CI/CD for Open-Inspect
- →Verifying deployment credentials
About this skill
Open-Inspect Deployment Guide
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.
Before Starting
Use TodoWrite to create a checklist tracking these phases:
- Initial setup questions
- Repository setup
- Credential collection (Cloudflare, Vercel, Modal, Anthropic)
- GitHub App creation (+ Google OAuth if enabled)
- Slack App creation (if enabled)
- Security secrets generation
- Terraform configuration
- Terraform deployment (two phases)
- Post-deployment Slack setup (if enabled)
- Post-deployment GitHub Bot setup (if enabled)
- Web app deployment
- Verification
- CI/CD setup (optional)
Phase 1: Initial Questions
First, generate a random suffix suggestion for the user:
echo "Suggested deployment name: $(openssl rand -hex 3)"
Use AskUserQuestion to gather:
- Directory location - Where to create the project (default: current directory or ~/workplace/open-inspect-{suffix})
- GitHub account - Which account/org hosts the private repo
- Deployment name - A globally unique identifier for URLs (e.g., their GitHub username, company
name, or the random suffix generated above). Explain this creates URLs like
open-inspect-{deployment_name}.vercel.appand must be unique across all Vercel users. - Slack integration - Yes or No
- GitHub bot integration - Yes or No (automated PR reviews and comment-triggered actions)
- Sign-in providers - GitHub, Google, or both. At least one is required.
- Prerequisites confirmation - Confirm they have accounts on Cloudflare, Vercel, Modal, Anthropic
Phase 2: Repository Setup
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 [email protected]:ColeMurray/open-inspect.git .
git remote rename origin upstream
git remote add origin [email protected]:{github_account}/open-inspect-{name}.git
git push -u origin main
npm install
npm run build -w @open-inspect/shared
Phase 3: Credential Collection
Hand off to user for each service. Use AskUserQuestion to collect credentials.
Cloudflare
Tell the user:
- Account ID: Found in dashboard URL or account overview
- Workers Subdomain: Workers & Pages → Overview, bottom-right panel shows
*.YOUR-SUBDOMAIN.workers.dev - API Token: Create at https://dash.cloudflare.com/profile/api-tokens with template "Edit Cloudflare Workers" + permissions for Workers KV Storage (Edit), Workers R2 Storage (Edit), D1 (Edit)
R2 Bucket
Check wrangler login status, then create bucket:
wrangler whoami
wrangler r2 bucket create open-inspect-{name}-tf-state
Tell user to create R2 API Token at R2 → Overview → Manage R2 API Tokens with "Object Read & Write" permission.
Vercel
- API Token: https://vercel.com/account/tokens
- Team/Account ID: Settings → "Your ID" (even personal accounts have one, usually starts with
team_)
Modal
- Token ID and Secret: https://modal.com/settings or
modal token new - Workspace name: Visible in Modal dashboard URL
Then set the token:
modal token set --token-id {token_id} --token-secret {token_secret}
modal profile current
Anthropic
- API Key: https://console.anthropic.com (starts with
sk-ant-)
Phase 4: GitHub App Setup
Guide the user through creating a GitHub App. Its App ID, private key, and installation ID are always required for repository access. Its client ID and secret enable GitHub sign-in only when the user selected GitHub:
- Go to https://github.com/settings/apps → "New GitHub App"
- Name:
Open-Inspect-{YourName}(globally unique) - Homepage URL: The deployed web app URL for the selected platform:
- Vercel:
https://open-inspect-{deployment_name}.vercel.app - Cloudflare workers.dev:
https://open-inspect-web-{deployment_name}.{subdomain}.workers.dev - Cloudflare custom domain:
https://{your-custom-domain}
- Vercel:
- Webhook: Uncheck "Active"
- If GitHub sign-in is selected, set the Callback URL (under "Identifying and authorizing
users"):
{deployed-web-app-url}/api/auth/callback/github- CRITICAL: The origin must exactly match the Homepage URL selected above.
- Repository permissions: Contents (Read & Write), Pull requests (Read & Write), Metadata (Read-only), and Issues (Read & Write) only if the GitHub bot is enabled. Pull requests permission also authorizes creating and applying labels to session-created pull requests; labeling does not require Issues permission.
- If GitHub sign-in uses email/domain admission, set Account permissions: Email addresses (Read-only)
- Create app, note App ID
- If GitHub sign-in is selected, generate a Client Secret and note the Client ID and Client Secret. Otherwise leave both Terraform values empty.
- Generate Private Key (downloads .pem file)
- Install app on account, note Installation ID from URL
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.pem
Phase 4b: Google OAuth Setup (If Enabled)
Only if the user selected Google sign-in. Skip for GitHub-only deployments and leave
google_client_id and google_client_secret empty.
Guide user:
- https://console.cloud.google.com/apis/credentials → "Create Credentials" → "OAuth client ID"
- Application type: Web application
- Authorized redirect URI:
https://open-inspect-{deployment_name}.vercel.app/api/auth/callback/google(or your*.workers.devweb URL ifweb_platform = "cloudflare")- CRITICAL: Must match deployed web URL exactly!
- OAuth consent screen: request only
openid,email,profilescopes (non-sensitive — no Google verification review required) - Note Client ID and Client Secret
Then in terraform.tfvars:
- Set
google_client_idandgoogle_client_secret(both required together; leave both empty to disable) - Add at least one entry to
allowed_emails(exact addresses, e.g.[email protected]) orallowed_email_domains. Preferallowed_emailsfor shared domains like gmail.com. - If Google is the only sign-in provider, leave
github_client_idandgithub_client_secretempty. Keep the GitHub App ID, private key, and installation ID configured for repository access.
The next request to /login shows Google after both credentials are deployed; no separate web flag
or rebuild is required. Google users get the same flat access; their PRs fall back to the App bot
unless the same verified email is also a linked GitHub identity.
Phase 5: Slack App Setup (If Enabled)
Guide user:
- https://api.slack.com/apps → "Create New App" → "From scratch"
- OAuth & Permissions → Add scopes:
app_mentions:read,chat:write,channels:history,channels:read,groups:history,groups:read,im:history,im:read,files:read,files:write,reactions:write - Install to Workspace, note Bot Token (
xoxb-...) - Basic Information → note Signing Secret
- App Home and Event Subscriptions configured AFTER deployment (worker must be running for URL verification)
files:read forwards user-attached images into sessions; files:write posts generated media back
to Slack. Reinstall the app whenever either scope is added to an existing installation.
Phase 6: Generate Security Secrets
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 enabled
Phase 7: Terraform Configuration
Create 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 = false
If GitHub bot is enabled, also set:
enable_github_bot = true
github_webhook_secret = "{generated_value}"
github_bot_username = "{app-slug}[bot]"
Phase 8: Terraform Deployment (Two-Phase)
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-bot
Phase 1 (bindings disabled):
cd terraform/environments/production
terraform init -backend-config=backend.tfvars
terraform apply
Phase 2 (after Phase 1 succeeds): Update tfvars to set both bindings to true, then:
terraform apply
Phase 9: Complete Slack Setup (If Enabled)
After Terraform deployment, guide user:
Enable App Home
- App Home → Show Tabs → Enable "Home Tab"
- Save Changes
The App Home provides a settings interface where users can configure their preferred Claude model.
Configure Event Subscriptions
- Event Subscriptions → Enable → Request URL:
https://open-inspect-slack-bot-{deployment_name}.{subdomain}.workers.dev/events - Wait for "Verified" checkmark
- Subscribe to bot events:
app_home_opened,app_mention,message.im
Configure Interactivity
- Interactivity → Enable → Request URL:
https://open-inspect-slack-bot-{deployment_name}.{subdomain}.workers.dev/interactions - Select Menus →
Content truncated.
When not to use it
- →Managing existing production deployments
- →General software development workflows
Prerequisites
Limitations
- →Requires significant user-provided secrets
- →Multi-phase deployment prone to environment timeouts
- →Limited to the defined Open-Inspect architecture
How it compares
It acts as an interactive deployment engineer, guiding the setup of sensitive infrastructure rather than simply providing a static script.
Compared to similar skills
onboarding side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| onboarding (this skill) | 1 | 4mo | Review | Intermediate |
| cloudflare | 0 | 2mo | No flags | Beginner |
| terraform-module-library | 7 | 4mo | No flags | Advanced |
| azure-deployment-preflight | 7 | 6mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
cloudflare
bilal-chajia
Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task. Biase
terraform-module-library
wshobson
Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.
azure-deployment-preflight
github
Performs comprehensive preflight validation of Bicep deployments to Azure, including template syntax validation, what-if analysis, and permission checks. Use this skill before any deployment to Azure to preview changes, identify potential issues, and ensure the deployment will succeed. Activate when users mention deploying to Azure, validating Bicep files, checking deployment permissions, previewing infrastructure changes, running what-if, or preparing for azd provision.
senior-devops
davila7
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup, infrastructure as code, deployment automation, and monitoring. Use when setting up pipelines, deploying applications, managing infrastructure, implementing monitoring, or optimizing deployment processes.
devops-iac-engineer
davila7
Implements infrastructure as code using Terraform, Kubernetes, and cloud platforms. Designs scalable architectures, CI/CD pipelines, and observability solutions. Provides security-first DevOps practices and site reliability engineering guidance.
deployment-engineer
sickn33
Expert deployment engineer specializing in modern CI/CD pipelines, GitOps workflows, and advanced deployment automation. Masters GitHub Actions, ArgoCD/Flux, progressive delivery, container security, and platform engineering. Handles zero-downtime deployments, security scanning, and developer experience optimization. Use PROACTIVELY for CI/CD design, GitOps implementation, or deployment automation.