google-agents-cli-scaffold
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
Guide users through designing application architectures from scratch for SaaS deployment on Omnistrate. Focuses on technology selection, domain-specific architecture patterns, compliance and SLA requirements, and iterative compose spec development. The output is a production-ready compose spec th...
Full skill instructions
Use this skill when:
build: contexts that only runs locallyDo NOT use this skill when:
image: references (no build: contexts) AND images are accessible in registries → Use FDE skill insteadSA Skill FDE Skill SRE Skill
┌─────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Design app from │ → │ Transform compose│ → │ Debug failed │
│ scratch │ │ to Omnistrate │ │ deployments │
│ │ │ native │ │ │
│ • Tech choices │ │ • x-omnistrate-* │ │ • Workflows │
│ • Architecture │ │ extensions │ │ • Logs │
│ • Compose spec │ │ • API params │ │ • kubectl │
│ • Domain needs │ │ • Service plans │ │ │
└─────────────────┘ └──────────────────┘ └──────────────┘
This skill Handoff to FDE If issues arise
Output: A vanilla Docker Compose spec optimized for Omnistrate's capabilities (tenancy, deployment models, scaling) but WITHOUT x-omnistrate-* extensions yet.
As a Solutions Architect, you will:
Ask clarifying questions to understand the user's needs:
Based on requirements, recommend appropriate technology stack.
API/Web Services:
Considerations:
Relational (ACID, structured data):
Document/NoSQL:
Time-Series:
Graph:
Selection criteria:
In-Memory Cache:
Use cases:
Message Queues:
Use cases:
Object Storage:
File Storage:
Use cases:
Design the service architecture based on domain patterns.
Domain: REST APIs, microservices, webhooks
Internet → API Server → Database
↓
Cache (optional)
Components:
Tenancy considerations:
Domain: SaaS apps, dashboards, admin panels
Internet → Load Balancer → Web Tier (static) → App Tier (API) → Database
↓
Cache
Components:
Tenancy considerations:
Domain: ETL, analytics, data warehousing
Data Sources → Ingestion API → Message Queue → Workers → Database/Data Warehouse
↓
Object Storage
Components:
Tenancy considerations:
Domain: Model serving, inference APIs, ML platforms
Internet → API Gateway → Inference Service (GPU) → Model Storage (S3)
↓
Result Database
Components:
Tenancy considerations:
Domain: Dashboards, metrics, monitoring
Events → Stream Processor → Time-Series DB → Query API → Visualization
↓
Object Storage (archives)
Components:
Tenancy considerations:
Design for Omnistrate's deployment models from the start.
Architecture:
Design decisions:
Best for: Startups, mid-market, most B2B SaaS
Architecture:
Design decisions:
Best for: Enterprise customers, data sovereignty, regulated industries
Architecture:
Design decisions:
Best for: Government, defense, ultra-secure environments
Architecture:
Design decisions:
Best for: Legacy enterprises, air-gapped environments
Support multiple deployment models in same architecture:
# Same compose spec, different plans
services:
app:
image: myapp:latest
# Works for SaaS, BYOC, On-Premise
Design principles:
Omnistrate supports multiple tenancy models - design for flexibility.
Architecture: Single infrastructure, logical isolation
Customer A ─┐
Customer B ─┤→ Shared App → Shared DB (tenant_id partitioning)
Customer C ─┘
Pros:
Cons:
Best for: Freemium, small/medium customers, standardized offerings
Compose design:
Architecture: Dedicated infrastructure per tenant
Customer A → App A → DB A
Customer B → App B → DB B
Customer C → App C → DB C
Pros:
Cons:
Best for: Enterprise, regulated industries, high-value customers
Compose design:
Architecture: Shared app tier, isolated data tier
Customer A ─┐
Customer B ─┤→ Shared App → DB A, DB B, DB C (dedicated)
Customer C ─┘
Pros:
Cons:
Best for: Mixed customer base (SMB + Enterprise)
Compose design:
Design for compliance requirements from the start.
Requirements:
Compose decisions:
Requirements:
Compose decisions:
Requirements:
Compose decisions:
Requirements:
Compose decisions:
Design for target SLA from the start.
Architecture:
Compose design:
Architecture:
Compose design:
Architecture:
Compose design:
Architecture:
Compose design:
Build the Docker Compose spec iteratively - start simple, validate, add complexity.
Goal: Get basic architecture working
version: '3.8'
services:
app:
image: mycompany/api:latest
ports:
- "8080:8080"
environment:
- DATABASE_URL=postgresql://postgres:password@database:5432/app
depends_on:
- database
database:
image: postgres:15
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_DB=app
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Validate:
docker-compose up locallyGoal: Add performance and reliability layers
services:
app:
image: mycompany/api:latest
environment:
- DATABASE_URL=postgresql://postgres:password@database:5432/app
- REDIS_URL=redis://cache:6379
depends_on:
- database
- cache
cache:
image: redis:7-alpine
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
database:
image: postgres:15
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_DB=app
volumes:
- db_data:/var/lib/postgresql/data
Validate:
Goal: Production-grade reliability
services:
app:
image: mycompany/api:latest
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
- DATABASE_URL=postgresql://postgres:password@database:5432/app
- REDIS_URL=redis://cache:6379
depends_on:
database:
condition: service_healthy
cache:
condition: service_started
database:
image: postgres:15
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
Validate:
Goal: Microservices architecture
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- api
api:
image: mycompany/api:latest
environment:
- DATABASE_URL=postgresql://postgres:password@database:5432/app
- REDIS_URL=redis://cache:6379
- WORKER_URL=http://worker:8081
depends_on:
- database
- cache
worker:
image: mycompany/worker:latest
environment:
- DATABASE_URL=postgresql://postgres:password@database:5432/app
- REDIS_URL=redis://cache:6379
depends_on:
- database
- cache
database:
image: postgres:15
volumes:
- db_data:/var/lib/postgresql/data
cache:
image: redis:7-alpine
Validate:
Goal: Prepare for Omnistrate's multi-tenancy
services:
app:
image: mycompany/api:${APP_VERSION:-latest}
environment:
- DATABASE_URL=postgresql://${DB_USER:-postgres}:${DB_PASSWORD}@database:5432/${DB_NAME:-app}
- REDIS_URL=redis://cache:6379
- LOG_LEVEL=${LOG_LEVEL:-info}
- MAX_CONNECTIONS=${MAX_CONNECTIONS:-100}
depends_on:
- database
- cache
database:
image: postgres:${POSTGRES_VERSION:-15}
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME:-app}
- POSTGRES_USER=${DB_USER:-postgres}
volumes:
- db_data:/var/lib/postgresql/data
cache:
image: redis:7-alpine
command: redis-server --maxmemory ${CACHE_SIZE:-256mb} --maxmemory-policy allkeys-lru
Validate:
.env file supportGoal: Ensure all services have image references (not build contexts)
Check for build contexts:
services:
app:
build: ./app # ❌ Won't work on Omnistrate
# OR
build:
context: ./backend
dockerfile: Dockerfile # ❌ Won't work on Omnistrate
If build contexts exist, you MUST work with customer to convert them:
Build and push images to a registry:
# Option 1: Docker Hub
docker build -t mycompany/api:v1.0.0 ./app
docker push mycompany/api:v1.0.0
# Option 2: GitHub Container Registry
docker build -t ghcr.io/mycompany/api:v1.0.0 ./app
docker push ghcr.io/mycompany/api:v1.0.0
# Option 3: Private registry
docker build -t registry.company.com/api:v1.0.0 ./app
docker push registry.company.com/api:v1.0.0
Replace build context with image reference:
services:
app:
image: mycompany/api:v1.0.0 # ✅ Now cloud-deployable
# build: ./app # Remove this
Add registry authentication (if using private registry):
Work with customer to create Omnistrate secrets in Dev and Prod environments, then add to compose:
# Add at top level of compose file
x-omnistrate-image-registry-attributes:
docker.io:
auth:
username: mycompany
password: {{ $secret.DOCKERHUB_PASSWORD }}
ghcr.io:
auth:
username: {{ $secret.GITHUB_USERNAME }}
password: {{ $secret.GITHUB_TOKEN }}
registry.company.com:
auth:
username: {{ $secret.PRIVATE_REGISTRY_USERNAME }}
password: {{ $secret.PRIVATE_REGISTRY_PASSWORD }}
Customer must create secrets in Omnistrate:
DOCKERHUB_PASSWORD, GITHUB_TOKEN, etc.Validate: All services have image: field with registry reference
Goal: Guide Omnistrate resource allocation
services:
app:
image: mycompany/api:v1.0.0 # Must have image reference
deploy:
replicas: ${APP_REPLICAS:-2}
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G
environment:
- DATABASE_URL=postgresql://postgres:password@database:5432/app
database:
image: postgres:15
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
cpus: '2'
memory: 4G
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
driver: local
driver_opts:
type: none
device: /data/postgres
o: bind
Note: These are hints for FDE transformation, not strict Omnistrate syntax yet.
Critical: Omnistrate cannot build images from source. All services must have image: references to pre-built container images.
Check for build contexts:
grep -r "build:" docker-compose.yaml
If any service uses build: instead of image::
Identify all services with build contexts:
services:
api:
build: ./backend # ❌ Not supported by Omnistrate
worker:
build:
context: ./worker
dockerfile: Dockerfile # ❌ Not supported
Ask customer where to host images:
Question: "I see these services need container images: [list services with build contexts]. Where would you like to host these images?"
Options to present:
Guide customer to build and push images:
# Example: Docker Hub
docker build -t mycompany/api:v1.0.0 ./backend
docker push mycompany/api:v1.0.0
# Example: GitHub Container Registry
docker build -t ghcr.io/mycompany/worker:v1.0.0 ./worker
docker push ghcr.io/mycompany/worker:v1.0.0
Replace build contexts with image references in compose:
services:
api:
image: mycompany/api:v1.0.0 # ✅ Now has registry reference
# build: ./backend # ❌ Remove build context entirely
worker:
image: ghcr.io/mycompany/worker:v1.0.0 # ✅ Registry reference
# build: # ❌ Remove build section
# context: ./worker
# dockerfile: Dockerfile
Document registry information for FDE handoff:
Create a list for FDE skill:
mycompany/api:v1.0.0 (docker.io), ghcr.io/mycompany/worker:v1.0.0 (ghcr.io)nginx:alpine, postgres:15, redis:7-alpineDo NOT add x-omnistrate-image-registry-attributes - FDE skill will:
x-omnistrate-image-registry-attributes section to the compose fileValidate before moving to next phase:
image: field with valid registry referencebuild: contexts remain in compose fileWhile building the compose spec, consider Omnistrate features (even though you won't add x-omnistrate-* extensions yet).
Compose consideration: Make app tier stateless
services:
app:
# Stateless - no local file storage
# Session in Redis, not in-memory
image: mycompany/api:latest
depends_on:
- cache # For session storage
Compose consideration: Multiple replicas, load balancer ready
services:
app:
deploy:
replicas: 3 # Spread across zones later
Compose consideration: Clear volume paths
services:
database:
volumes:
- db_data:/var/lib/postgresql/data # FDE will add backup config here
Compose consideration: Metrics endpoints, structured logging
services:
app:
environment:
- METRICS_PORT=9090 # Prometheus endpoint
- LOG_FORMAT=json # Structured logs
Compose consideration: Tenant ID in requests
services:
app:
environment:
- TENANT_HEADER=X-Tenant-ID # Header-based routing
Once the compose spec is validated and working, prepare for FDE handoff.
docker-compose upimage: references (no build: contexts remain)Provide to FDE skill:
x-omnistrate-image-registry-attributes - FDE will add if needed)mycompany/api:v1.0.0, ghcr.io/myorg/worker:v1.0.0)Ready for Omnistrate onboarding. Here's the summary:
Architecture: Three-tier web app (NGINX → API → PostgreSQL + Redis)
Tenancy: Hybrid (shared API, isolated databases for enterprise)
Deployment models: SaaS (starter/pro), BYOC (enterprise)
Compliance: SOC2, GDPR data residency
SLA: 99.95% (multi-zone)
Container Images:
Custom images (customer pushed):
- API: company/api:v1.0.0 (docker.io registry)
- Worker: company/worker:v1.0.0 (docker.io registry)
Public images (no auth needed):
- NGINX: nginx:alpine
- PostgreSQL: postgres:15
- Redis: redis:7-alpine
Registry Info:
- docker.io used for custom images (FDE will test if authentication needed)
Service plans:
- Starter: 1 API replica, 20GB DB, no backups
- Pro: 3 API replicas, 100GB DB, daily backups, autoscaling
- Enterprise: Custom sizing, BYOC option, multi-region
Compose spec attached with x-omnistrate-image-registry-attributes configured.
Ready for FDE transformation.
Key decisions:
Compose architecture:
services:
api:
image: fastapi-app
inference:
image: pytorch-gpu:latest
# FDE will map to GPU instance types
model-storage:
# S3 bucket (external, not in compose)
Key decisions:
Compose architecture:
services:
query-api:
image: query-engine
workers:
image: spark-workers
metadata-db:
image: postgres
Key decisions:
Compose architecture:
services:
gateway:
image: kong
api-v1:
image: api:v1
api-v2:
image: api:v2
Key decisions:
Compose architecture:
services:
primary:
image: postgres:15
replica:
image: postgres:15
pooler:
image: pgbouncer
1. Discovery → 2. Tech Selection → 3. Simple Compose → 4. Validate
↓
Issues? → Refine
↓
No issues
↓
5. Add Complexity → 6. Validate → 7. Image Registry Setup → 8. Omnistrate-Aware Adjustments
↓
Issues? → Refine
↓
No issues
↓
9. Document → 10. Handoff to FDE
Key principle: Validate at each step before adding complexity.
docker-compose up works)image: references (no build: contexts)See SOLUTIONS_ARCHITECT_REFERENCE.md for:
Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.
Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.
Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.
Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.
Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.
Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.
Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.
Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.
Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.
Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.
Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".
Opus.ai: Revolutionize Your Web Experience
Build a no-code AI app in minutes.
An IDE for code migration from legacy to modern frameworks through coding agents.
Automate CGI animation in live-action scenes
Branded artistic QR-code concepts
Launch a website in seconds with AI.
Streamline Your Coding Experience with AI Code Helper
Convert any screenshot or design to clean code.