google/google-cloud-recipe-onboarding
>- Guides a developer's first steps on Google Cloud, covering account creation, billing setup, project management, and deploying a first resource. Use when a new developer wants to initialize their first Google Cloud project, configure billing, and verify deployment. Don't use for enterprise organization setup (use Google Cloud Setup guided flow for that instead). Don't use for complex multi-project architectures.
npx skills add https://github.com/google/skills --skill google-cloud-recipe-onboarding
This skill provides a streamlined, non-interactive "happy path" for a singleton developer to get started with Google Cloud. It covers everything from environment verification and authentication to project selection, billing account linkage, and downstream safety chaining.
> [!IMPORTANT]
> For autonomous agents executing this skill:
> 1. Check-Before-Mutate Audits: Always perform silent pre-execution state audits prior to proposing or executing any project or billing changes.
> 2. Single-Question Policy: Ask the user for exactly one operational parameter or confirmation at a time during interactive execution.
> 3. Non-Interactive Output: Append non-interactive overrides (--quiet, --format="json") to all mutation commands to guarantee deterministic, machine-parseable outputs and prevent terminal hangs.
> 4. First Turn Interaction Rules (Trigger Turn): When the developer first triggers this skill with a general onboarding request (e.g. says "I want to get started with Google Cloud"):
> - Preamble Guidance: Proactively include a short orienting preamble guiding the developer to create a Google Cloud account (pointing to the console at https://console.cloud.google.com/) and run gcloud auth login to authorize their workstation, even if they appear to be already logged in.
> - First Turn Single-Question: Perform pre-flight audits silently, but do not present a complete parameters summary table or ask for final consent in the first turn. Instead, ask the developer exactly one initial operational question (e.g., *"Would you like to reuse an existing active project, or create a brand new one?"*).
> *Note: If the developer's initial prompt explicitly states "I approve the onboarding configuration", "Let's proceed with onboarding", or requests a dry-run plan (e.g., "Show me the exact plan or dry-run commands"), bypass the general preamble and initial question, and proceed directly to the requested step.*
For an individual developer, onboarding to Google Cloud involves verifying local terminal tools, establishing an authenticated session, selecting or instantiating a workspace (Project), and linking it to an active billing account. Google Cloud offers a Free Tier and a Free Trial with $300 in credits for first-time users. Learn more here.
@gmail.com) or Google Workspace / Cloud Identity account.Before soliciting input or proposing mutations, silently audit the host system's active tooling and environment status.
gcloud CLI binary is installed and accessible: which gcloud
gcloud auth list --format="json"
which gcloud returns a valid path, proceed directly to Section 2: Authenticate and Route Session.Authorize the gcloud CLI to access Google Cloud using the developer's Google Account, and verify that the account is appropriate for standalone developer onboarding.
gcloud auth login
> [!IMPORTANT]
> New User / Unauthenticated Guidance:
> If the pre-execution state audits or command failures confirm that the developer is unauthenticated (e.g., gcloud auth list is empty or active credentials are missing):
> 1. Guide them to create a Google Cloud account by navigating to the Google Cloud Console.
> 2. Instruct them to execute the gcloud auth login command to authorize their local workstation terminal session.
> 3. Do not attempt project creation or resource configuration until authentication is completed successfully.
gcloud config get-value account --format="json"
Before proceeding, verify if the account is bound to a corporate organization, as enterprise setups must follow a different architecture:
gcloud organizations list --format="json"
owner.directoryCustomerId is present (confirming a domain-verified Google Workspace or Cloud Identity organization), or if the user's prompt explicitly mentions corporate landing zones or multi-tenant project structures:[], or if it contains a Self-Owned Organization (where owner.directoryCustomerId is absent and displayName is not a verified domain name), proceed to Section 3: Select or Instantiate Your Google Cloud Project.Google Cloud resources are organized into Projects. When developers sign up for a Free Trial via the console, Google Cloud automatically creates a default project (e.g., "My First Project"). Always audit the active environment first to reuse existing projects and prevent token-burning collision errors.
List active, accessible projects (limited to prevent context window overflow):
gcloud projects list --filter="lifecycleState=ACTIVE" --limit=20 --format="json"
If the list returns an active project, present it to the developer and propose setting it as the default working project:
gcloud config set project {PROJECT_ID} --quiet
If no projects exist, or if the developer explicitly requests a brand new workspace:
PROJECT_ID and PROJECT_NAME from the developer (Single-Question Policy).Before running any project creation or billing linkage commands, the agent must present a structured markdown table summarizing the target parameters:
| Parameter | Value |
| :--- | :--- |
| Target Project ID | {PROJECT_ID} |
| Target Project Name | {PROJECT_NAME} |
| Active Identity Account | {ACCOUNT} |
| Target Billing Account ID | {BILLING_ACCOUNT_ID} |
Ask the user the exact consent query:
"I am ready to initialize your Google Cloud project and link billing. Do you want me to proceed?"
CRITICAL: The agent MUST NOT execute any gcloud projects create or billing link commands during this turn. You must display this table, ask the exact consent query, and strictly stop to wait for the user's positive affirmation.
command fails because the PROJECT_ID is already taken globally
(returning a PROJECT_ID_COLLISION or ALREADY_EXISTS error):
my-project to my-project-8472). gcloud projects create {PROJECT_ID} --name="{PROJECT_NAME}" --quiet --format="json"
gcloud config set project {PROJECT_ID} --quiet
To deploy resources on Google Cloud, your project must be linked to an active Cloud Billing account.
Check if the active project is already linked to a billing account:
gcloud billing projects describe {PROJECT_ID} --format="json"
"billingEnabled": true, skip linkage and proceed immediately to Section 5: Skill Chaining (Spend Controls & Workloads).If the project is unlinked, query the available billing account handles linked to the authenticated user identity:
gcloud billing accounts list --format="json"
Propose linking the project to the discovered Billing Account ID, and execute:
gcloud billing projects link {PROJECT_ID} --billing-account={BILLING_ACCOUNT_ID} --format="json"
Onboarding setup is now complete. To safeguard your environment and deploy workloads, you can chain to downstream specialized skills:
To avoid accidental cost overruns, consider setting up a programmatic control to automatically disable billing. When billing is disabled, all Google Cloud services and usage in the project are terminated to stop further costs:
specialized skill matching your target application (e.g.,
or bigquery-basics). If the specialized skill is not locally available,
direct the developer to the corresponding official quickstart, such as the
Cloud Run Container Deployment Quickstart.
*Note: Those downstream specialized skills are individually responsible for
dynamically enabling their own required service APIs (e.g.,
run.googleapis.com) inline during execution.*
After completing the onboarding steps, programmatically verify the completed environment state using these diagnostic commands:
which gcloud
gcloud config get-value account
gcloud projects describe {PROJECT_ID} --format="json"
"billingEnabled": true): gcloud billing projects describe {PROJECT_ID} --format="json"
Take google/google-cloud-recipe-onboarding from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.