references/IAM.md
# GCloud IAM & Security Reference
## Table of Contents
- [Service Accounts](#service-accounts)
- [IAM Bindings](#iam-bindings)
- [Auth Commands](#auth-commands)
- [Project Configuration](#project-configuration)
---
## Service Accounts
```bash
# List service accounts
gcloud iam service-accounts list
# Create service account
gcloud iam service-accounts create my-sa \
--display-name="My Service Account"
# Create key
gcloud iam service-accounts keys create key.json \
--iam-account=my-sa@PROJECT.iam.gserviceaccount.com
# List keys
gcloud iam service-accounts keys list \
--iam-account=my-sa@PROJECT.iam.gserviceaccount.com
# Delete key
gcloud iam service-accounts keys delete KEY_ID \
--iam-account=my-sa@PROJECT.iam.gserviceaccount.com
```
---
## IAM Bindings
```bash
# Add IAM binding
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:my-sa@PROJECT.iam.gserviceaccount.com" \
--role="roles/storage.admin"
# Remove IAM binding
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:my-sa@PROJECT.iam.gserviceaccount.com" \
--role="roles/storage.admin"
# Get IAM policy
gcloud projects get-iam-policy PROJECT_ID
# Set IAM policy from file
gcloud projects set-iam-policy PROJECT_ID policy.json
```
---
## Auth Commands
```bash
# Check current auth
gcloud auth list
# Login interactively
gcloud auth login
# Login with service account
gcloud auth activate-service-account --key-file=key.json
# Application default credentials
gcloud auth application-default login
# Print access token
gcloud auth print-access-token
# Revoke credentials
gcloud auth revoke
```
---
## Project Configuration
```bash
# List projects
gcloud projects list
# Set default project
gcloud config set project PROJECT_ID
# Show current config
gcloud config list
# Create named configuration
gcloud config configurations create my-config
gcloud config configurations activate my-config
# Set default region/zone
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
# List configurations
gcloud config configurations list
```
---
## Common Roles
| Role | Description |
|------|-------------|
| `roles/owner` | Full access |
| `roles/editor` | Edit access |
| `roles/viewer` | Read-only access |
| `roles/storage.admin` | Storage admin |
| `roles/storage.objectViewer` | Read storage objects |
| `roles/cloudsql.admin` | Cloud SQL admin |
| `roles/run.admin` | Cloud Run admin |
| `roles/container.admin` | GKE admin |
references/SERVICES.md
# GCloud Services Reference
## Table of Contents
- [Cloud Functions](#cloud-functions)
- [GKE](#gke)
- [Cloud SQL](#cloud-sql)
- [BigQuery](#bigquery)
- [Pub/Sub](#pubsub)
- [Secret Manager](#secret-manager)
- [Cloud Build](#cloud-build)
- [Artifact Registry](#artifact-registry)
- [Logging](#logging)
- [App Engine](#app-engine)
---
## Cloud Functions
```bash
# List functions
gcloud functions list
# Deploy function (2nd gen)
gcloud functions deploy my-function \
--gen2 \
--runtime=nodejs20 \
--region=us-central1 \
--trigger-http \
--entry-point=handler \
--source=.
# View logs
gcloud functions logs read my-function --region=us-central1
# Delete function
gcloud functions delete my-function --region=us-central1
```
---
## GKE
```bash
# List clusters
gcloud container clusters list
# Get credentials for kubectl
gcloud container clusters get-credentials my-cluster \
--zone=us-central1-a
# Create cluster
gcloud container clusters create my-cluster \
--zone=us-central1-a \
--num-nodes=3
# Resize node pool
gcloud container clusters resize my-cluster \
--node-pool=default-pool \
--num-nodes=5 \
--zone=us-central1-a
```
---
## Cloud SQL
```bash
# List instances
gcloud sql instances list
# Create instance
gcloud sql instances create my-instance \
--database-version=POSTGRES_15 \
--tier=db-f1-micro \
--region=us-central1
# Connect via proxy
gcloud sql connect my-instance --user=postgres
# Create database
gcloud sql databases create mydb --instance=my-instance
```
---
## BigQuery
```bash
# List datasets
bq ls
# Run query
bq query --use_legacy_sql=false 'SELECT * FROM dataset.table LIMIT 10'
# Create dataset
bq mk --dataset my_dataset
# Load data
bq load --source_format=CSV my_dataset.my_table gs://bucket/data.csv
```
---
## Pub/Sub
```bash
# List topics
gcloud pubsub topics list
# Create topic
gcloud pubsub topics create my-topic
# Publish message
gcloud pubsub topics publish my-topic --message="Hello"
# Create subscription
gcloud pubsub subscriptions create my-sub --topic=my-topic
# Pull messages
gcloud pubsub subscriptions pull my-sub --auto-ack
```
---
## Secret Manager
```bash
# List secrets
gcloud secrets list
# Create secret
echo -n "my-secret-value" | gcloud secrets create my-secret --data-file=-
# Access secret
gcloud secrets versions access latest --secret=my-secret
# Add new version
echo -n "new-value" | gcloud secrets versions add my-secret --data-file=-
```
---
## Cloud Build
```bash
# Submit build
gcloud builds submit --tag gcr.io/PROJECT/IMAGE
# List builds
gcloud builds list
# View build logs
gcloud builds log BUILD_ID
```
---
## Artifact Registry
```bash
# List repositories
gcloud artifacts repositories list
# Configure Docker
gcloud auth configure-docker us-central1-docker.pkg.dev
```
---
## Logging
```bash
# Read logs
gcloud logging read "resource.type=cloud_run_revision" --limit=50
# Tail logs
gcloud logging tail "resource.type=gce_instance"
```
---
## App Engine
```bash
# Deploy app
gcloud app deploy
# View logs
gcloud app logs tail
# Browse app
gcloud app browse
```
SKILL.md
---
name: gcloud
description: >-
Google Cloud Platform CLI - manage GCP resources. Use when working with Compute
Engine, Cloud Run, GKE, Cloud Functions, Storage, BigQuery, or other GCP services.
---
<!-- TOC: Quick Start | THE EXACT PROMPT | Services | Output Formatting | AGENTS.md Blurb | When to Use | References -->
# GCloud CLI
> **Core Capability:** Manage Google Cloud Platform resources and services from the command line.
## Quick Start
```bash
# Install
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
# Verify
gcloud version
# Check auth
gcloud auth list
# Set project
gcloud config set project PROJECT_ID
# Show current config
gcloud config list
```
---
## THE EXACT PROMPT — Auth & Config
```
# Login interactively
gcloud auth login
# Service account auth
gcloud auth activate-service-account --key-file=key.json
# Application default credentials
gcloud auth application-default login
# Set project
gcloud config set project PROJECT_ID
# Set region/zone
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
# Named configurations
gcloud config configurations create my-config
gcloud config configurations activate my-config
```
---
## THE EXACT PROMPT — Compute Engine
```
# List VMs
gcloud compute instances list
# Create VM
gcloud compute instances create my-vm \
--zone=us-central1-a \
--machine-type=e2-medium \
--image-family=debian-12 \
--image-project=debian-cloud
# SSH to VM
gcloud compute ssh my-vm --zone=us-central1-a
# Stop/start
gcloud compute instances stop my-vm --zone=us-central1-a
gcloud compute instances start my-vm --zone=us-central1-a
```
---
## THE EXACT PROMPT — Cloud Run
```
# List services
gcloud run services list
# Deploy from source
gcloud run deploy my-service --source . --region=us-central1
# Deploy container
gcloud run deploy my-service \
--image=gcr.io/PROJECT/IMAGE \
--region=us-central1 \
--allow-unauthenticated
# View logs
gcloud run services logs read my-service --region=us-central1
```
---
## THE EXACT PROMPT — Cloud Storage
```
# List buckets
gcloud storage buckets list
# Create bucket
gcloud storage buckets create gs://my-bucket --location=us-central1
# Upload/download
gcloud storage cp local-file.txt gs://my-bucket/
gcloud storage cp gs://my-bucket/file.txt ./
# Sync directory
gcloud storage rsync -r ./local-dir gs://my-bucket/remote-dir
```
---
## Essential Commands
| Service | List | Create | Delete |
|---------|------|--------|--------|
| Compute | `gcloud compute instances list` | `gcloud compute instances create` | `gcloud compute instances delete` |
| Cloud Run | `gcloud run services list` | `gcloud run deploy` | `gcloud run services delete` |
| Functions | `gcloud functions list` | `gcloud functions deploy` | `gcloud functions delete` |
| GKE | `gcloud container clusters list` | `gcloud container clusters create` | `gcloud container clusters delete` |
| Storage | `gcloud storage buckets list` | `gcloud storage buckets create` | `gcloud storage rm` |
---
## Output Formatting
```bash
# JSON output
gcloud compute instances list --format=json
# Table with specific columns
gcloud compute instances list --format="table(name,zone,status)"
# Filter results
gcloud compute instances list --filter="status=RUNNING"
# Quiet mode (no prompts)
gcloud compute instances delete my-vm --quiet
```
---
## Quick Reference
```bash
gcloud cheat-sheet # Built-in cheat sheet
gcloud interactive # Interactive shell
gcloud --help # General help
gcloud compute --help # Service-specific help
```
---
## AGENTS.md Blurb
Copy this to your project's AGENTS.md:
```markdown
### Google Cloud CLI (gcloud)
`gcloud` is installed and authenticated.
Auth:
\`\`\`bash
gcloud auth login
gcloud auth application-default login # For API libraries
\`\`\`
Project:
\`\`\`bash
gcloud config set project <PROJECT_ID>
\`\`\`
Enable APIs:
\`\`\`bash
gcloud services enable aiplatform.googleapis.com
gcloud services enable analyticsdata.googleapis.com
\`\`\`
Useful commands:
\`\`\`bash
gcloud projects list
gcloud services list --enabled
gcloud beta billing accounts list
\`\`\`
```
---
## When to Use
- Enabling APIs for Gemini, Vertex AI, or other Google services
- Managing billing and cost alerts
- Creating service accounts for CI/CD
- Deploying containers to Cloud Run
- Managing GKE clusters
---
## References
| Topic | Reference |
|-------|-----------|
| All services | [SERVICES.md](references/SERVICES.md) |
| IAM & Security | [IAM.md](references/IAM.md) |