{
  "schemaVersion": "1.0",
  "item": {
    "slug": "gcloud",
    "name": "Google Cloud Platform",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/jortega0033/gcloud",
    "canonicalUrl": "https://clawhub.ai/jortega0033/gcloud",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/gcloud",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gcloud",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "gcloud",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-03T21:51:18.815Z",
      "expiresAt": "2026-05-10T21:51:18.815Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gcloud",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gcloud",
        "contentDisposition": "attachment; filename=\"gcloud-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "gcloud"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/gcloud"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/gcloud",
    "agentPageUrl": "https://openagent3.xyz/skills/gcloud/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gcloud/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gcloud/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Google Cloud Platform Skill",
        "body": "Manage GCP resources using gcloud, gsutil, and firebase CLIs."
      },
      {
        "title": "gcloud CLI (one-time setup)",
        "body": "# Download and extract\ncd ~ && curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-linux-x86_64.tar.gz\ntar -xzf google-cloud-cli-linux-x86_64.tar.gz\n\n# Install (adds to PATH via .bashrc)\n./google-cloud-sdk/install.sh --quiet --path-update true\n\n# Reload shell or source\nsource ~/.bashrc\n\n# Authenticate\ngcloud auth login"
      },
      {
        "title": "Firebase CLI",
        "body": "npm install -g firebase-tools\nfirebase login"
      },
      {
        "title": "Authentication & Config",
        "body": "# List authenticated accounts\ngcloud auth list\n\n# Switch active account\ngcloud config set account EMAIL\n\n# List projects\ngcloud projects list\n\n# Set default project\ngcloud config set project PROJECT_ID\n\n# View current config\ngcloud config list"
      },
      {
        "title": "List Instances",
        "body": "# All instances across projects\ngcloud compute instances list --project PROJECT_ID\n\n# With specific fields\ngcloud compute instances list --project PROJECT_ID \\\n  --format=\"table(name,zone,status,networkInterfaces[0].accessConfigs[0].natIP)\""
      },
      {
        "title": "Start/Stop/Restart",
        "body": "gcloud compute instances start INSTANCE_NAME --zone ZONE --project PROJECT_ID\ngcloud compute instances stop INSTANCE_NAME --zone ZONE --project PROJECT_ID\ngcloud compute instances reset INSTANCE_NAME --zone ZONE --project PROJECT_ID"
      },
      {
        "title": "SSH Access",
        "body": "# Interactive SSH\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\n# Run command remotely\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID --command \"uptime\"\n\n# With tunneling (e.g., for local port forwarding)\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID -- -L 8080:localhost:8080"
      },
      {
        "title": "View Logs",
        "body": "# Serial port output (boot logs)\ngcloud compute instances get-serial-port-output INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\n# Tail logs via SSH\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID --command \"journalctl -f\""
      },
      {
        "title": "List Services",
        "body": "# List all services in a region\ngcloud run services list --region REGION --project PROJECT_ID\n\n# All regions\ngcloud run services list --project PROJECT_ID"
      },
      {
        "title": "Deploy",
        "body": "# Deploy from source (builds container automatically)\ngcloud run deploy SERVICE_NAME \\\n  --source . \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --allow-unauthenticated\n\n# Deploy existing container image\ngcloud run deploy SERVICE_NAME \\\n  --image gcr.io/PROJECT_ID/IMAGE:TAG \\\n  --region REGION \\\n  --project PROJECT_ID"
      },
      {
        "title": "View Service Details",
        "body": "gcloud run services describe SERVICE_NAME --region REGION --project PROJECT_ID"
      },
      {
        "title": "View Logs",
        "body": "# Stream logs\ngcloud run services logs read SERVICE_NAME --region REGION --project PROJECT_ID --limit 50\n\n# Or use Cloud Logging\ngcloud logging read \"resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE_NAME\" \\\n  --project PROJECT_ID --limit 20 --format=\"table(timestamp,textPayload)\""
      },
      {
        "title": "Update Environment Variables",
        "body": "gcloud run services update SERVICE_NAME \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --set-env-vars \"KEY1=value1,KEY2=value2\""
      },
      {
        "title": "Traffic Management",
        "body": "# Route 100% traffic to latest\ngcloud run services update-traffic SERVICE_NAME --to-latest --region REGION --project PROJECT_ID\n\n# Split traffic (canary)\ngcloud run services update-traffic SERVICE_NAME \\\n  --to-revisions=REVISION1=90,REVISION2=10 \\\n  --region REGION --project PROJECT_ID"
      },
      {
        "title": "List Projects",
        "body": "firebase projects:list"
      },
      {
        "title": "Deploy",
        "body": "# Deploy everything (hosting + functions + rules)\nfirebase deploy --project PROJECT_ID\n\n# Hosting only\nfirebase deploy --only hosting --project PROJECT_ID\n\n# Specific site (multi-site setup)\nfirebase deploy --only hosting:SITE_NAME --project PROJECT_ID"
      },
      {
        "title": "Preview Channels",
        "body": "# Create preview channel\nfirebase hosting:channel:deploy CHANNEL_NAME --project PROJECT_ID\n\n# List channels\nfirebase hosting:channel:list --project PROJECT_ID\n\n# Delete channel\nfirebase hosting:channel:delete CHANNEL_NAME --project PROJECT_ID"
      },
      {
        "title": "Rollback",
        "body": "# List recent deploys\nfirebase hosting:releases:list --project PROJECT_ID\n\n# Rollback to specific version\nfirebase hosting:rollback --project PROJECT_ID"
      },
      {
        "title": "Cloud Storage (gsutil)",
        "body": "# List buckets\ngsutil ls\n\n# List contents\ngsutil ls gs://BUCKET_NAME/\n\n# Copy file\ngsutil cp LOCAL_FILE gs://BUCKET_NAME/path/\ngsutil cp gs://BUCKET_NAME/path/file LOCAL_PATH\n\n# Sync directory\ngsutil -m rsync -r LOCAL_DIR gs://BUCKET_NAME/path/\n\n# Make public\ngsutil iam ch allUsers:objectViewer gs://BUCKET_NAME"
      },
      {
        "title": "Cloud Logging",
        "body": "# Read recent logs\ngcloud logging read \"resource.type=gce_instance\" --project PROJECT_ID --limit 20\n\n# Filter by severity\ngcloud logging read \"severity>=ERROR\" --project PROJECT_ID --limit 20\n\n# Specific resource\ngcloud logging read \"resource.type=cloud_run_revision AND resource.labels.service_name=my-service\" \\\n  --project PROJECT_ID --limit 20"
      },
      {
        "title": "Monitoring Metrics",
        "body": "# List available metrics\ngcloud monitoring metrics list --project PROJECT_ID | head -50\n\n# Describe metric\ngcloud monitoring metrics-scopes describe projects/PROJECT_ID"
      },
      {
        "title": "View Current Costs",
        "body": "# List billing accounts\ngcloud billing accounts list\n\n# Get billing account linked to project\ngcloud billing projects describe PROJECT_ID\n\n# View cost breakdown (requires billing export to BigQuery or use console)\n# Quick estimate via APIs enabled:\ngcloud services list --enabled --project PROJECT_ID"
      },
      {
        "title": "Set Budget Alerts",
        "body": "# Create budget (via gcloud beta)\ngcloud billing budgets create \\\n  --billing-account=BILLING_ACCOUNT_ID \\\n  --display-name=\"Monthly Budget\" \\\n  --budget-amount=50EUR \\\n  --threshold-rule=percent=50 \\\n  --threshold-rule=percent=90 \\\n  --threshold-rule=percent=100\n\n# List budgets\ngcloud billing budgets list --billing-account=BILLING_ACCOUNT_ID\n\n# Describe budget\ngcloud billing budgets describe BUDGET_ID --billing-account=BILLING_ACCOUNT_ID"
      },
      {
        "title": "Cost-Saving Tips",
        "body": "# Stop unused VMs (saves $$$)\ngcloud compute instances stop INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\n# Schedule auto-start/stop (use Cloud Scheduler + Cloud Functions or cron)\n\n# Check for idle resources\ngcloud recommender recommendations list \\\n  --project=PROJECT_ID \\\n  --location=global \\\n  --recommender=google.compute.instance.IdleResourceRecommender"
      },
      {
        "title": "Create & Manage Secrets",
        "body": "# Enable API\ngcloud services enable secretmanager.googleapis.com --project PROJECT_ID\n\n# Create a secret\necho -n \"my-secret-value\" | gcloud secrets create SECRET_NAME \\\n  --data-file=- \\\n  --project PROJECT_ID\n\n# Or from file\ngcloud secrets create SECRET_NAME --data-file=./secret.txt --project PROJECT_ID"
      },
      {
        "title": "Access Secrets",
        "body": "# Get latest version\ngcloud secrets versions access latest --secret=SECRET_NAME --project PROJECT_ID\n\n# Get specific version\ngcloud secrets versions access 1 --secret=SECRET_NAME --project PROJECT_ID\n\n# List all secrets\ngcloud secrets list --project PROJECT_ID\n\n# List versions of a secret\ngcloud secrets versions list SECRET_NAME --project PROJECT_ID"
      },
      {
        "title": "Update Secrets",
        "body": "# Add new version\necho -n \"new-value\" | gcloud secrets versions add SECRET_NAME --data-file=- --project PROJECT_ID\n\n# Disable old version\ngcloud secrets versions disable VERSION_ID --secret=SECRET_NAME --project PROJECT_ID\n\n# Delete version (permanent!)\ngcloud secrets versions destroy VERSION_ID --secret=SECRET_NAME --project PROJECT_ID"
      },
      {
        "title": "Use in Cloud Run",
        "body": "# Deploy with secret as env var\ngcloud run deploy SERVICE_NAME \\\n  --image IMAGE \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --set-secrets=\"ENV_VAR_NAME=SECRET_NAME:latest\"\n\n# Mount as file\ngcloud run deploy SERVICE_NAME \\\n  --image IMAGE \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --set-secrets=\"/path/to/secret=SECRET_NAME:latest\""
      },
      {
        "title": "Setup",
        "body": "# Enable API\ngcloud services enable artifactregistry.googleapis.com --project PROJECT_ID\n\n# Create Docker repository\ngcloud artifacts repositories create REPO_NAME \\\n  --repository-format=docker \\\n  --location=REGION \\\n  --project PROJECT_ID \\\n  --description=\"Docker images\""
      },
      {
        "title": "Configure Docker Auth",
        "body": "# Configure Docker to use gcloud credentials\ngcloud auth configure-docker REGION-docker.pkg.dev"
      },
      {
        "title": "Build & Push Images",
        "body": "# Build with Cloud Build (no local Docker needed)\ngcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG\n\n# Or with local Docker\ndocker build -t REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG .\ndocker push REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG"
      },
      {
        "title": "List & Manage Images",
        "body": "# List images\ngcloud artifacts docker images list REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME\n\n# List tags for an image\ngcloud artifacts docker tags list REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE\n\n# Delete image\ngcloud artifacts docker images delete REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG"
      },
      {
        "title": "Create Instance",
        "body": "# Enable API\ngcloud services enable sqladmin.googleapis.com --project PROJECT_ID\n\n# Create PostgreSQL instance\ngcloud sql instances create INSTANCE_NAME \\\n  --database-version=POSTGRES_15 \\\n  --tier=db-f1-micro \\\n  --region=REGION \\\n  --project PROJECT_ID\n\n# Create MySQL instance\ngcloud sql instances create INSTANCE_NAME \\\n  --database-version=MYSQL_8_0 \\\n  --tier=db-f1-micro \\\n  --region=REGION \\\n  --project PROJECT_ID"
      },
      {
        "title": "Manage Databases & Users",
        "body": "# Create database\ngcloud sql databases create DB_NAME --instance=INSTANCE_NAME --project PROJECT_ID\n\n# List databases\ngcloud sql databases list --instance=INSTANCE_NAME --project PROJECT_ID\n\n# Create user\ngcloud sql users create USERNAME \\\n  --instance=INSTANCE_NAME \\\n  --password=PASSWORD \\\n  --project PROJECT_ID\n\n# List users\ngcloud sql users list --instance=INSTANCE_NAME --project PROJECT_ID"
      },
      {
        "title": "Connect",
        "body": "# Connect via Cloud SQL Proxy (recommended)\n# First, download proxy: https://cloud.google.com/sql/docs/mysql/sql-proxy\n\n# Direct connection (requires public IP & authorized networks)\ngcloud sql connect INSTANCE_NAME --user=USERNAME --project PROJECT_ID\n\n# Get connection info\ngcloud sql instances describe INSTANCE_NAME --project PROJECT_ID \\\n  --format=\"value(connectionName)\""
      },
      {
        "title": "Backups",
        "body": "# Create on-demand backup\ngcloud sql backups create --instance=INSTANCE_NAME --project PROJECT_ID\n\n# List backups\ngcloud sql backups list --instance=INSTANCE_NAME --project PROJECT_ID\n\n# Restore from backup\ngcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE_NAME --project PROJECT_ID"
      },
      {
        "title": "Connect from Cloud Run",
        "body": "# Deploy with Cloud SQL connection\ngcloud run deploy SERVICE_NAME \\\n  --image IMAGE \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --add-cloudsql-instances=PROJECT_ID:REGION:INSTANCE_NAME \\\n  --set-env-vars=\"DB_HOST=/cloudsql/PROJECT_ID:REGION:INSTANCE_NAME\""
      },
      {
        "title": "\"API not enabled\"",
        "body": "# Enable an API\ngcloud services enable run.googleapis.com --project PROJECT_ID\ngcloud services enable compute.googleapis.com --project PROJECT_ID"
      },
      {
        "title": "\"Permission denied\"",
        "body": "# Check IAM roles\ngcloud projects get-iam-policy PROJECT_ID --flatten=\"bindings[].members\" \\\n  --format=\"table(bindings.role)\" --filter=\"bindings.members:EMAIL\""
      },
      {
        "title": "\"Not authenticated\"",
        "body": "gcloud auth login\ngcloud auth application-default login  # For ADC (used by libraries)"
      },
      {
        "title": "Refresh credentials",
        "body": "gcloud auth login --force"
      }
    ],
    "body": "Google Cloud Platform Skill\n\nManage GCP resources using gcloud, gsutil, and firebase CLIs.\n\nInstallation\ngcloud CLI (one-time setup)\n# Download and extract\ncd ~ && curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-linux-x86_64.tar.gz\ntar -xzf google-cloud-cli-linux-x86_64.tar.gz\n\n# Install (adds to PATH via .bashrc)\n./google-cloud-sdk/install.sh --quiet --path-update true\n\n# Reload shell or source\nsource ~/.bashrc\n\n# Authenticate\ngcloud auth login\n\nFirebase CLI\nnpm install -g firebase-tools\nfirebase login\n\nQuick Reference\nAuthentication & Config\n# List authenticated accounts\ngcloud auth list\n\n# Switch active account\ngcloud config set account EMAIL\n\n# List projects\ngcloud projects list\n\n# Set default project\ngcloud config set project PROJECT_ID\n\n# View current config\ngcloud config list\n\nCompute Engine (VMs)\nList Instances\n# All instances across projects\ngcloud compute instances list --project PROJECT_ID\n\n# With specific fields\ngcloud compute instances list --project PROJECT_ID \\\n  --format=\"table(name,zone,status,networkInterfaces[0].accessConfigs[0].natIP)\"\n\nStart/Stop/Restart\ngcloud compute instances start INSTANCE_NAME --zone ZONE --project PROJECT_ID\ngcloud compute instances stop INSTANCE_NAME --zone ZONE --project PROJECT_ID\ngcloud compute instances reset INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\nSSH Access\n# Interactive SSH\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\n# Run command remotely\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID --command \"uptime\"\n\n# With tunneling (e.g., for local port forwarding)\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID -- -L 8080:localhost:8080\n\nView Logs\n# Serial port output (boot logs)\ngcloud compute instances get-serial-port-output INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\n# Tail logs via SSH\ngcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID --command \"journalctl -f\"\n\nCloud Run\nList Services\n# List all services in a region\ngcloud run services list --region REGION --project PROJECT_ID\n\n# All regions\ngcloud run services list --project PROJECT_ID\n\nDeploy\n# Deploy from source (builds container automatically)\ngcloud run deploy SERVICE_NAME \\\n  --source . \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --allow-unauthenticated\n\n# Deploy existing container image\ngcloud run deploy SERVICE_NAME \\\n  --image gcr.io/PROJECT_ID/IMAGE:TAG \\\n  --region REGION \\\n  --project PROJECT_ID\n\nView Service Details\ngcloud run services describe SERVICE_NAME --region REGION --project PROJECT_ID\n\nView Logs\n# Stream logs\ngcloud run services logs read SERVICE_NAME --region REGION --project PROJECT_ID --limit 50\n\n# Or use Cloud Logging\ngcloud logging read \"resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE_NAME\" \\\n  --project PROJECT_ID --limit 20 --format=\"table(timestamp,textPayload)\"\n\nUpdate Environment Variables\ngcloud run services update SERVICE_NAME \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --set-env-vars \"KEY1=value1,KEY2=value2\"\n\nTraffic Management\n# Route 100% traffic to latest\ngcloud run services update-traffic SERVICE_NAME --to-latest --region REGION --project PROJECT_ID\n\n# Split traffic (canary)\ngcloud run services update-traffic SERVICE_NAME \\\n  --to-revisions=REVISION1=90,REVISION2=10 \\\n  --region REGION --project PROJECT_ID\n\nFirebase Hosting\nList Projects\nfirebase projects:list\n\nDeploy\n# Deploy everything (hosting + functions + rules)\nfirebase deploy --project PROJECT_ID\n\n# Hosting only\nfirebase deploy --only hosting --project PROJECT_ID\n\n# Specific site (multi-site setup)\nfirebase deploy --only hosting:SITE_NAME --project PROJECT_ID\n\nPreview Channels\n# Create preview channel\nfirebase hosting:channel:deploy CHANNEL_NAME --project PROJECT_ID\n\n# List channels\nfirebase hosting:channel:list --project PROJECT_ID\n\n# Delete channel\nfirebase hosting:channel:delete CHANNEL_NAME --project PROJECT_ID\n\nRollback\n# List recent deploys\nfirebase hosting:releases:list --project PROJECT_ID\n\n# Rollback to specific version\nfirebase hosting:rollback --project PROJECT_ID\n\nCloud Storage (gsutil)\n# List buckets\ngsutil ls\n\n# List contents\ngsutil ls gs://BUCKET_NAME/\n\n# Copy file\ngsutil cp LOCAL_FILE gs://BUCKET_NAME/path/\ngsutil cp gs://BUCKET_NAME/path/file LOCAL_PATH\n\n# Sync directory\ngsutil -m rsync -r LOCAL_DIR gs://BUCKET_NAME/path/\n\n# Make public\ngsutil iam ch allUsers:objectViewer gs://BUCKET_NAME\n\nLogs & Monitoring\nCloud Logging\n# Read recent logs\ngcloud logging read \"resource.type=gce_instance\" --project PROJECT_ID --limit 20\n\n# Filter by severity\ngcloud logging read \"severity>=ERROR\" --project PROJECT_ID --limit 20\n\n# Specific resource\ngcloud logging read \"resource.type=cloud_run_revision AND resource.labels.service_name=my-service\" \\\n  --project PROJECT_ID --limit 20\n\nMonitoring Metrics\n# List available metrics\ngcloud monitoring metrics list --project PROJECT_ID | head -50\n\n# Describe metric\ngcloud monitoring metrics-scopes describe projects/PROJECT_ID\n\nBilling & Cost Monitoring\nView Current Costs\n# List billing accounts\ngcloud billing accounts list\n\n# Get billing account linked to project\ngcloud billing projects describe PROJECT_ID\n\n# View cost breakdown (requires billing export to BigQuery or use console)\n# Quick estimate via APIs enabled:\ngcloud services list --enabled --project PROJECT_ID\n\nSet Budget Alerts\n# Create budget (via gcloud beta)\ngcloud billing budgets create \\\n  --billing-account=BILLING_ACCOUNT_ID \\\n  --display-name=\"Monthly Budget\" \\\n  --budget-amount=50EUR \\\n  --threshold-rule=percent=50 \\\n  --threshold-rule=percent=90 \\\n  --threshold-rule=percent=100\n\n# List budgets\ngcloud billing budgets list --billing-account=BILLING_ACCOUNT_ID\n\n# Describe budget\ngcloud billing budgets describe BUDGET_ID --billing-account=BILLING_ACCOUNT_ID\n\nCost-Saving Tips\n# Stop unused VMs (saves $$$)\ngcloud compute instances stop INSTANCE_NAME --zone ZONE --project PROJECT_ID\n\n# Schedule auto-start/stop (use Cloud Scheduler + Cloud Functions or cron)\n\n# Check for idle resources\ngcloud recommender recommendations list \\\n  --project=PROJECT_ID \\\n  --location=global \\\n  --recommender=google.compute.instance.IdleResourceRecommender\n\nSecret Manager\nCreate & Manage Secrets\n# Enable API\ngcloud services enable secretmanager.googleapis.com --project PROJECT_ID\n\n# Create a secret\necho -n \"my-secret-value\" | gcloud secrets create SECRET_NAME \\\n  --data-file=- \\\n  --project PROJECT_ID\n\n# Or from file\ngcloud secrets create SECRET_NAME --data-file=./secret.txt --project PROJECT_ID\n\nAccess Secrets\n# Get latest version\ngcloud secrets versions access latest --secret=SECRET_NAME --project PROJECT_ID\n\n# Get specific version\ngcloud secrets versions access 1 --secret=SECRET_NAME --project PROJECT_ID\n\n# List all secrets\ngcloud secrets list --project PROJECT_ID\n\n# List versions of a secret\ngcloud secrets versions list SECRET_NAME --project PROJECT_ID\n\nUpdate Secrets\n# Add new version\necho -n \"new-value\" | gcloud secrets versions add SECRET_NAME --data-file=- --project PROJECT_ID\n\n# Disable old version\ngcloud secrets versions disable VERSION_ID --secret=SECRET_NAME --project PROJECT_ID\n\n# Delete version (permanent!)\ngcloud secrets versions destroy VERSION_ID --secret=SECRET_NAME --project PROJECT_ID\n\nUse in Cloud Run\n# Deploy with secret as env var\ngcloud run deploy SERVICE_NAME \\\n  --image IMAGE \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --set-secrets=\"ENV_VAR_NAME=SECRET_NAME:latest\"\n\n# Mount as file\ngcloud run deploy SERVICE_NAME \\\n  --image IMAGE \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --set-secrets=\"/path/to/secret=SECRET_NAME:latest\"\n\nArtifact Registry (Container Images)\nSetup\n# Enable API\ngcloud services enable artifactregistry.googleapis.com --project PROJECT_ID\n\n# Create Docker repository\ngcloud artifacts repositories create REPO_NAME \\\n  --repository-format=docker \\\n  --location=REGION \\\n  --project PROJECT_ID \\\n  --description=\"Docker images\"\n\nConfigure Docker Auth\n# Configure Docker to use gcloud credentials\ngcloud auth configure-docker REGION-docker.pkg.dev\n\nBuild & Push Images\n# Build with Cloud Build (no local Docker needed)\ngcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG\n\n# Or with local Docker\ndocker build -t REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG .\ndocker push REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG\n\nList & Manage Images\n# List images\ngcloud artifacts docker images list REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME\n\n# List tags for an image\ngcloud artifacts docker tags list REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE\n\n# Delete image\ngcloud artifacts docker images delete REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG\n\nCloud SQL (Databases)\nCreate Instance\n# Enable API\ngcloud services enable sqladmin.googleapis.com --project PROJECT_ID\n\n# Create PostgreSQL instance\ngcloud sql instances create INSTANCE_NAME \\\n  --database-version=POSTGRES_15 \\\n  --tier=db-f1-micro \\\n  --region=REGION \\\n  --project PROJECT_ID\n\n# Create MySQL instance\ngcloud sql instances create INSTANCE_NAME \\\n  --database-version=MYSQL_8_0 \\\n  --tier=db-f1-micro \\\n  --region=REGION \\\n  --project PROJECT_ID\n\nManage Databases & Users\n# Create database\ngcloud sql databases create DB_NAME --instance=INSTANCE_NAME --project PROJECT_ID\n\n# List databases\ngcloud sql databases list --instance=INSTANCE_NAME --project PROJECT_ID\n\n# Create user\ngcloud sql users create USERNAME \\\n  --instance=INSTANCE_NAME \\\n  --password=PASSWORD \\\n  --project PROJECT_ID\n\n# List users\ngcloud sql users list --instance=INSTANCE_NAME --project PROJECT_ID\n\nConnect\n# Connect via Cloud SQL Proxy (recommended)\n# First, download proxy: https://cloud.google.com/sql/docs/mysql/sql-proxy\n\n# Direct connection (requires public IP & authorized networks)\ngcloud sql connect INSTANCE_NAME --user=USERNAME --project PROJECT_ID\n\n# Get connection info\ngcloud sql instances describe INSTANCE_NAME --project PROJECT_ID \\\n  --format=\"value(connectionName)\"\n\nBackups\n# Create on-demand backup\ngcloud sql backups create --instance=INSTANCE_NAME --project PROJECT_ID\n\n# List backups\ngcloud sql backups list --instance=INSTANCE_NAME --project PROJECT_ID\n\n# Restore from backup\ngcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE_NAME --project PROJECT_ID\n\nConnect from Cloud Run\n# Deploy with Cloud SQL connection\ngcloud run deploy SERVICE_NAME \\\n  --image IMAGE \\\n  --region REGION \\\n  --project PROJECT_ID \\\n  --add-cloudsql-instances=PROJECT_ID:REGION:INSTANCE_NAME \\\n  --set-env-vars=\"DB_HOST=/cloudsql/PROJECT_ID:REGION:INSTANCE_NAME\"\n\nTroubleshooting\n\"API not enabled\"\n# Enable an API\ngcloud services enable run.googleapis.com --project PROJECT_ID\ngcloud services enable compute.googleapis.com --project PROJECT_ID\n\n\"Permission denied\"\n# Check IAM roles\ngcloud projects get-iam-policy PROJECT_ID --flatten=\"bindings[].members\" \\\n  --format=\"table(bindings.role)\" --filter=\"bindings.members:EMAIL\"\n\n\"Not authenticated\"\ngcloud auth login\ngcloud auth application-default login  # For ADC (used by libraries)\n\nRefresh credentials\ngcloud auth login --force"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/jortega0033/gcloud",
    "publisherUrl": "https://clawhub.ai/jortega0033/gcloud",
    "owner": "jortega0033",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/gcloud",
    "downloadUrl": "https://openagent3.xyz/downloads/gcloud",
    "agentUrl": "https://openagent3.xyz/skills/gcloud/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gcloud/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gcloud/agent.md"
  }
}