From bitrise-agentic-onboarding
Sign a brand-new prospect up to Bitrise from inside Claude using the Bitrise MCP server's anonymous registration tools. Use this whenever the user says things like "sign me up to Bitrise", "create my Bitrise account", "I want to try Bitrise", "start a Bitrise trial", or expresses interest in trying Bitrise but doesn't have an account yet. Also use as the first step when the user asks for end-to-end Bitrise onboarding. Do NOT use this skill if the user already has a Bitrise PAT configured — go straight to bitrise-ci-onboarding.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bitrise-agentic-onboarding:bitrise-signupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Walk a prospect from "no Bitrise account" to "MCP authenticated and ready to
Walk a prospect from "no Bitrise account" to "MCP authenticated and ready to
build". The Bitrise MCP server's agentic-onboarding branch exposes two
tools that run anonymously (no PAT required), and this skill drives them.
Signup is special: it's the only flow where the MCP works without a PAT, and it ends with the agent rewriting the user's MCP client config to install the PAT it just received. That's a sharp edge — the rest of this skill is about not slipping on it.
Before you start, verify the user has a working install of the Bitrise MCP
from the agentic-onboarding branch. The hosted endpoint at
https://mcp.bitrise.io runs main and does not yet have these tools.
Two install options work:
claude mcp add bitrise -- go run github.com/bitrise-io/bitrise-mcp/v2@agentic-onboarding
Note: BITRISE_TOKEN does NOT need to be set yet. The new code lets stdio
start without a token; signup tools work anonymously, and the token is
installed afterwards.Authorization header; the registration group runs without one.If the user is connected to the hosted mcp.bitrise.io, stop and tell them
the signup tools aren't deployed there yet and ask them to switch to a local
install of the branch. Don't try to call register against a server that
doesn't have it — you'll get a "tool not found" error and confuse the user.
If the user mentions they already have a Bitrise account and just need to
hook up the MCP, skip signup entirely and ask them for their existing PAT
(generated at https://app.bitrise.io/me/account/security). This skill is
for net-new accounts.
Ask the user which email address they want to register with. Don't assume the email in the session metadata is the right one — they may want to use a work email vs. a personal one. Confirm before sending.
Call register with { "email": "<the email>" }. The response is:
{ "pending_signup_id": "<id>", "expires_at": "<iso8601>" }
A 6-digit OTP code is emailed to the user. Tell them to check their inbox
(including spam). Capture pending_signup_id — you'll need it next.
If the response is an error: surface the status and body to the user and
stop. Common cases: invalid email format (400), email already registered
(409 — the user may already have an account; offer to skip to PAT setup
instead). The error response is structured JSON like
{"status": 409, ...body fields...} — read the status field to branch.
Ask the user to paste the OTP from the email. Then call:
verify_registration with { "pending_signup_id": "<from step 2>", "otp": "<6-digit code>" }.
The response is:
{
"user_slug": "<slug>",
"api_token": "<pat>",
"token_expires_at": "<iso8601>",
"workspace_slug": "<slug or omitted>"
}
The api_token is a real, live Bitrise Personal Access Token. Treat it as a
secret. Do NOT echo it back in a chat message, do NOT log it, do NOT save it
to a file the user can see. Hold it just long enough to install it (next
step), then drop it from anything you write down.
If the OTP is wrong or expired, the response is an error with the appropriate
status. Offer to re-send by calling register again with the same email.
This is the only step that needs you to leave the MCP and edit configuration. Two cases:
Stdio mode (most likely for the PoC):
The user's claude mcp add command needs the token in BITRISE_TOKEN. Tell
them you're going to remove and re-add the MCP server with the token wired
in. Then run, in the user's shell:
claude mcp remove bitrise
claude mcp add bitrise -e BITRISE_TOKEN=<api_token> -- go run github.com/bitrise-io/bitrise-mcp/v2@agentic-onboarding
HTTP mode:
Re-add with an Authorization: Bearer <api_token> header:
claude mcp remove bitrise
claude mcp add --transport http bitrise <url> -H "Authorization: Bearer <api_token>"
After the config update, the user must restart Claude (or otherwise
re-establish the MCP connection) for the new token to take effect. Tell them
this explicitly. Until they do, every tool except register /
verify_registration will fail with the auth error
missing Bitrise authentication: ....
Once the user confirms they've reconnected, call me and list_workspaces
to confirm the PAT works. Show the user:
me)list_workspaces — for a fresh signup
there will be exactly one, auto-created during registrationThis confirms signup worked end-to-end and gives the user (and the next skill) the workspace slug they'll need.
After this skill finishes, the prospect has:
If the user invoked this skill as part of an end-to-end onboarding flow,
hand off to bitrise-ci-onboarding and pass the workspace slug along.
expires_at field on the register response tells
you when. If the user takes a long time to check email, the verify call
may fail — re-run register to get a fresh OTP.workspace_slug on the verify response can be omitted. If it's
missing, fall back to list_workspaces after the PAT is installed.claude mcp list will show it; offer to run that for them if they're
unsure.npx claudepluginhub bitrise-io/agentic-onboarding --plugin bitrise-agentic-onboardingProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.