Broccoli Oss GCP Deploy
besimple-oss/broccoli
Deploy this repository to a new Google Cloud project using the repo's existing Cloud Run, Cloud Run Jobs, Cloud SQL, Secret Manager, and Artifact Registry scripts.
Canary deployment with smoke tests — deploy to a zero-traffic revision, run health checks, and promote on success.
$ npx skills add atelier-fashion/adlc-toolkit --skill canary -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install atelier-fashion/adlc-toolkit canary --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/atelier-fashion/adlc-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/canary .claude/skills/canary && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "canary" agent skill from https://github.com/atelier-fashion/adlc-toolkit/tree/main/canary into .claude/skills/canary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canary", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/atelier-fashion/adlc-toolkit/tree/main/canaryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add atelier-fashion/adlc-toolkit --skill canary -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install atelier-fashion/adlc-toolkit canary --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/atelier-fashion/adlc-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/canary .agents/skills/canary && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "canary" agent skill from https://github.com/atelier-fashion/adlc-toolkit/tree/main/canary into .agents/skills/canary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canary", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add atelier-fashion/adlc-toolkit --skill canary -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install atelier-fashion/adlc-toolkit canary --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/atelier-fashion/adlc-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/canary .cursor/skills/canary && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "canary" agent skill from https://github.com/atelier-fashion/adlc-toolkit/tree/main/canary into .cursor/skills/canary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canary", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/atelier-fashion/adlc-toolkit.git --path canary--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add atelier-fashion/adlc-toolkit --skill canary -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install atelier-fashion/adlc-toolkit canary --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/atelier-fashion/adlc-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/canary .gemini/skills/canary && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "canary" agent skill from https://github.com/atelier-fashion/adlc-toolkit/tree/main/canary into .gemini/skills/canary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canary", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install atelier-fashion/adlc-toolkit canaryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add atelier-fashion/adlc-toolkit --skill canary -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/atelier-fashion/adlc-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/canary .github/skills/canary && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "canary" agent skill from https://github.com/atelier-fashion/adlc-toolkit/tree/main/canary into .github/skills/canary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canary", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add atelier-fashion/adlc-toolkit --skill canary -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install atelier-fashion/adlc-toolkit canary --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/atelier-fashion/adlc-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/canary .opencode/skills/canary && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "canary" agent skill from https://github.com/atelier-fashion/adlc-toolkit/tree/main/canary into .opencode/skills/canary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canary", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
canaryCanary deployment with smoke tests — deploy to a zero-traffic revision, run health checks, and promote on success.
Canary is an agent skill from atelier-fashion/adlc-toolkit. Canary deployment with smoke tests — deploy to a zero-traffic revision, run health checks, and promote on success. Use when the user says "canary deploy", "deploy with canary", "smoke test the deploy", or wants deployment confidence before going live.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering Deployment and QA and bug reports. It works with Google Cloud and Cloud Run. The repository describes itself as: Shared SDLC skills and templates for Claude Code. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3a48c27. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gcloudcurldockergitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gcloud, curl, docker and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Canary loads about 2.2k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 885 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from atelier-fashion/adlc-toolkit at commit 3a48c27, republished under its MIT licence (© atelier-fashion). 885 words, ~2,237 tokens.
.claude/skills/canary/SKILL.md (or your agent's skills folder).You are deploying code through a canary process: deploy a zero-traffic revision, verify it works, then promote to live traffic. This prevents broken deploys from reaching users.
!test -s .adlc/ETHOS.md && cat .adlc/ETHOS.md || echo No ethos found — run /init to vendor .adlc/ETHOS.md
pwdgit branch --show-current || echo Not a git repogcloud config get-value project 2>/dev/null || echo "No GCP project configured"gcloud run services list --format="table(SERVICE,REGION,URL)" 2>/dev/null || echo "gcloud not configured"Target: $ARGUMENTS
gcloud CLI must be authenticated and configured with the correct projectService configuration lives in .adlc/config.yml in the primary repo under a services: block, keyed by repo id. This is the single source of truth — no service names, regions, or image paths should be hardcoded in this skill.
Expected config shape (primary repo .adlc/config.yml):
repos:
api:
path: ../api
web:
path: ../web
services:
api:
cloud_run_service: api
region: us-central1
image_path: us-central1-docker.pkg.dev/<gcp-project>/api/api
web:
cloud_run_service: web
region: us-central1
image_path: us-central1-docker.pkg.dev/<gcp-project>/web/webResolution order:
$ARGUMENTS is a repo id defined under repos: in the primary's config, look up services[<repo-id>] and use that. If the repo id has no services: entry, stop and ask the user to add one.$ARGUMENTS is a Cloud Run service name already (e.g., the user passed api and it matches services.*.cloud_run_service), use that entry.repos[*].path (resolve each to an absolute path first). Then look up its service..adlc/config.yml (single-repo legacy setup) AND the current repo has a top-level Dockerfile and a single Cloud Run service name that matches the repo basename, fall back to auto-detection: service name = repo basename, region = us-central1, image path = $(gcloud config get-value project)/<service>. Surface this fallback in the logs so the user knows it's being inferred.services: block to .adlc/config.yml or pass the service name as an argument."Operating worktree: if the resolved repo has a feature-branch worktree (e.g., .worktrees/REQ-xxx) that matches the current /proceed pipeline, build from inside that worktree. Otherwise build from the repo's main checkout. The caller can also pass the worktree path explicitly.
Note (post-REQ-380, REQ-381): /canary is no longer auto-invoked from /proceed (REQ-380) or /bugfix (REQ-381). Operators run it manually when a production canary is needed.
git rev-parse --short HEAD)docker build -t <IMAGE_PATH>:canary-<SHA> ./<subdir if needed>docker push <IMAGE_PATH>:canary-<SHA>If the user says "use latest" or the image was already built by CI, skip the build and use the :latest tag from Artifact Registry.
Deploy a new revision that receives NO traffic:
gcloud run deploy <SERVICE_NAME> \
--image=<IMAGE_PATH>:canary-<SHA> \
--region=us-central1 \
--no-traffic \
--tag=canary \
--format="json"This creates a tagged revision accessible at https://canary---<SERVICE_NAME>-<hash>.a.run.app without affecting production traffic.
Capture the canary URL from the output.
Run basic health checks against the canary URL:
Liveness: curl -s -o /dev/null -w "%{http_code}" <CANARY_URL>/health
200Readiness: curl -s -o /dev/null -w "%{http_code}" <CANARY_URL>/api/health
200 (or the service's documented readiness endpoint)If health checks fail after 3 retries, go to Step 6 (Rollback).
Run smoke tests against the canary URL. Load test definitions from the primary repo's .adlc/context/smoke-tests.md if it exists, otherwise use defaults. In cross-repo mode the primary's smoke-tests.md is the authoritative source for every service — sibling repos do not need their own copy.
Default smoke tests (API services):
GET /health -> 200
GET /api/health -> 200Custom smoke tests (from .adlc/context/smoke-tests.md):
Each entry should specify: method, path, expected status, optional body pattern.
For each test:
RESPONSE=$(curl -s -w "\n%{http_code}" <CANARY_URL><PATH>)
STATUS=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | head -n -1)Report results:
## Smoke Test Results
| Test | Method | Path | Expected | Actual | Status |
|------|--------|------|----------|--------|--------|
| Health | GET | /health | 200 | 200 | PASS |
| API Health | GET | /api/health | 200 | 200 | PASS |
Result: 2/2 passedIf any test fails, go to Step 6 (Rollback).
All checks passed — promote the canary revision to 100% traffic:
gcloud run services update-traffic <SERVICE_NAME> \
--region=us-central1 \
--to-tags=canary=100Verify promotion:
gcloud run services describe <SERVICE_NAME> \
--region=us-central1 \
--format="table(status.traffic[].percent,status.traffic[].revisionName,status.traffic[].tag)"Confirm canary revision is now serving 100% traffic.
Remove the canary tag (clean up):
gcloud run services update-traffic <SERVICE_NAME> \
--region=us-central1 \
--remove-tags=canaryReport:
Canary promoted to production.
Service: <SERVICE_NAME>
Revision: <REVISION_NAME>
URL: <PRODUCTION_URL>
All smoke tests passed.If health checks or smoke tests fail:
Delete the canary revision tag (so it's not addressable):
gcloud run services update-traffic <SERVICE_NAME> \
--region=us-central1 \
--remove-tags=canaryReport the failure:
CANARY FAILED — rolled back.
Service: <SERVICE_NAME>
Failed revision: canary-<SHA>
Failures:
- [list failed health checks or smoke tests]
Production traffic is unchanged — still serving the previous revision.Suggest next steps:
gcloud run services logs read <SERVICE_NAME> --region=us-central1 --limit=50/canaryIf pipeline-state.json exists for the current REQ:
canary entry to phaseHistory with the result (passed/failed)To customize smoke tests, create .adlc/context/smoke-tests.md with this format:
# Smoke Tests
## api
| Method | Path | Expected Status | Body Pattern |
|--------|------|-----------------|--------------|
| GET | /health | 200 | |
| GET | /api/health | 200 | |
| GET | /api/v1/config | 200 | "version" |
## web
| Method | Path | Expected Status | Body Pattern |
|--------|------|-----------------|--------------|
| GET | / | 200 | |
| GET | /api/health | 200 | |The keys above (api, web) are repo ids — the same ids you used under repos: in .adlc/config.yml. /canary looks up the smoke tests for the service it's deploying by matching repo id.
© atelier-fashion, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in canary of atelier-fashion/adlc-toolkit.
Open the folder on GitHubat commit 3a48c27
Canary next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Canary this skillatelier-fashion/adlc-toolkit | 171 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Broccoli Oss GCP Deploybesimple-oss/broccoli | 285 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Google Agents CLI Publishpifferologo/cloud-agents-cli | 129 | 1 repos | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| DeployingGoogleCloudPlatform/race-condition | 234 | — | ~3k | Automated safety check: Pass | Custom licence | |
| Google Cloud Solution Guided Gke AI Migrationgoogle/skills | 21k | — | ~8.3k | Automated safety check: Pass | Apache-2.0 | |
| Apollo Deploy Integrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.8k | Automated safety check: Pass | MIT |
besimple-oss/broccoli
Deploy this repository to a new Google Cloud project using the repo's existing Cloud Run, Cloud Run Jobs, Cloud SQL, Secret Manager, and Artifact Registry scripts.
pifferologo/cloud-agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini Enterprise", "publish to Gemini Enterprise", or needs guidance on the…
GoogleCloudPlatform/race-condition
Guides deployment of Race Condition to a GCP project. An agent skill from GoogleCloudPlatform/race-condition.
google/skills
Guides the migration of existing AI workloads (Cloud Run, Gemini API, Gemini Enterprise Agent Platform) to self-hosted GKE inference using gcloud and kubectl.
jeremylongshore/tons-of-skills-marketplace
Deploy Apollo.io integrations to production. An agent skill from jeremylongshore/tons-of-skills-marketplace.
jeremylongshore/tons-of-skills-marketplace
Researches infrastructure best practices and generates deployment-ready configurations, Terraform modules, Dockerfiles, and CI/CD pipelines.
atelier-fashion/adlc-toolkit
Parallel pipeline orchestrator — launch multiple /proceed sessions concurrently across REQs, monitor progress, and report status.
atelier-fashion/adlc-toolkit
Detect drift across ALL the sync surfaces /init vendors into a project — .adlc/templates/.md, .adlc/partials/.sh, .adlc/ETHOS.md, and the workflow runtime (.adlc/workflows/adlc-sprint.workflow.js +…
atelier-fashion/adlc-toolkit
End-to-end ADLC pipeline that takes a requirement from spec through to deployed.
atelier-fashion/adlc-toolkit
Bootstrap .adlc/ structure in a new repo or subdirectory. An agent skill from atelier-fashion/adlc-toolkit.
atelier-fashion/adlc-toolkit
Remote-derived view of all in-flight ADLC work — open PRs and pushed feat/REQ- branches across every session — with a coarse component/domain overlap report.
atelier-fashion/adlc-toolkit
Multi-agent code review covering correctness, quality, architecture, test coverage, and security
Works with
Categories
Canary deployment with smoke tests — deploy to a zero-traffic revision, run health checks, and promote on success. Canary is an agent skill from atelier-fashion/adlc-toolkit. Canary deployment with smoke tests — deploy to a zero-traffic revision, run health checks, and promote on success.
Canary fits situations like: the user says canary deploy; deploy with canary; smoke test the deploy; wants deployment confidence before going live.
Run `npx skills add atelier-fashion/adlc-toolkit --skill canary -a claude-code`. Or copy the skill folder (canary in atelier-fashion/adlc-toolkit) into .claude/skills/canary in your project. Claude Code loads it when a task matches its description.
Run `npx skills add atelier-fashion/adlc-toolkit --skill canary -a codex`. Or copy the skill folder (canary in atelier-fashion/adlc-toolkit) into .agents/skills/canary in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add atelier-fashion/adlc-toolkit --skill canary -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/canary, .gemini/skills/canary, .github/skills/canary and .opencode/skills/canary in your project.
Going by SKILL.md and its folder, Canary needs the command-line tools its instructions call (gcloud, curl, docker and git). Our summary lists: Docker.
SKILL.md contains no URLs. Its commands use curl, docker and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Canary is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Canary: Broccoli Oss GCP Deploy (besimple-oss/broccoli, 285 stars), Google Agents CLI Publish (pifferologo/cloud-agents-cli, 129 stars), Deploying (GoogleCloudPlatform/race-condition, 234 stars) and Google Cloud Solution Guided Gke AI Migration (google/skills, 21k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
atelier-fashion (a GitHub organization) maintains it in atelier-fashion/adlc-toolkit, which has 171 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on September 28, 2026.
Source: atelier-fashion/adlc-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.