Thanks for considering a contribution. This plugin installs a Google Cloud delivery team into other people's coding agents, so the bar is the same as any production dependency: if a skill gives bad GCP advice, someone deploys it.
Open an issue first for anything beyond a typo. A new skill in particular is worth discussing — the plugin is GCP-only and opinionated by design, and not every service warrants one.
git clone https://github.com/jpantsjoha/googlecloud-plugin.git
cd googlecloud-plugin
pip install pyyaml pytest
make hooks # installs the pre-commit hook that runs `make gate`Everything must pass before a PR can merge. CI runs the same checks.
make gate| Target | What it checks |
|---|---|
make spec |
Agent Plugins 1.0.0 conformance — plugin.json, mcp.json, skills/ layout |
make validate |
Every SKILL.md against the Agent Skills specification |
make manifest |
The four per-harness manifests parse and agree |
make mermaid |
Diagrams render safely on GitHub |
make lint |
Every reference URL resolves (HTTP 200) |
make test |
Smoke tests |
make lint hits ~100 live URLs. If you get HTTP 429 you have been rate-limited —
wait, don't "fix" the links. CI runs from a different address.
Two open, vendor-neutral specifications, both enforced in CI:
Verify against the upstream tooling rather than trusting our scripts:
uvx --from "git+https://github.com/agentskills/agentskills.git#subdirectory=skills-ref" \
skills-ref validate skills/cloud-run
uvx check-jsonschema \
--schemafile https://agent-plugins.org/schemas/1.0.0/plugin.schema.json plugin.jsonEach skill is skills/<name>/SKILL.md plus a references/ directory.
The frontmatter field set is closed. Only name, description, license,
compatibility, allowed-tools and metadata are permitted. Add anything else
at the top level and a conformant client must skip your skill entirely — it
will not error, it will silently not load. Everything specific to this plugin is
namespaced under metadata as string values:
---
name: cloud-run
description: "Deploy and manage containerized workloads on Cloud Run. … Use when the user mentions: deploy to cloud run, serverless container, …"
license: MIT
metadata:
"googlecloud-plugin/version": "0.1"
"googlecloud-plugin/triggers": "deploy to cloud run, serverless container"
"googlecloud-plugin/required-scopes": "run.services.create, run.services.get"
"googlecloud-plugin/mcp-servers": "google-cloud-run"
---Three rules the validator enforces, each of which exists because it broke once:
descriptionis the only thing a conformant client routes on. It must say what the skill does and when to use it, ending withUse when the user mentions: ….- Every trigger in
metadatamust appear indescription. A trigger recorded only in metadata is unroutable — nothing reads metadata — so it rots silently while looking like coverage. - Where two skills overlap, each must name the other and draw the line.
Use this to author or change IAM; use gcp-security instead to audit an existing posture.Without it, both match and routing is a coin flip.
Keep SKILL.md under 500 lines. Move detail into references/, which agents
load on demand.
These are why the plugin exists. A PR that breaks one will be rejected.
- No credential values anywhere. Reference the location, never the secret.
- Every billable action carries a cost warning before the command.
- No
roles/ownerorroles/editorin any example. Least privilege, always. - No public Cloud Storage buckets without explicit, stated design intent.
- No
--allow-unauthenticatedCloud Run without a security rationale.
Every technical claim needs a live Google Cloud reference. No invented flags, no
half-remembered API shapes — check the docs and cite them. make check detects
when a cited page has drifted since it was captured.
- Branch from
main:feat/descriptionorfix/description.mainis protected; PRs are required. - One logical change per PR.
- Explain why, not just what. The diff shows what.
- Update
CHANGELOG.mdunder[Unreleased]for anything user-facing. - Add an ADR in
architecture/decisions/for a significant decision. - Update
research/coverage-matrix.mdwhen a skill's status changes.
- Wrong GCP guidance — please open an issue. Incorrect advice is the worst failure mode this plugin has, more serious than any crash.
- Security issue — see SECURITY.md. Don't open a public issue.
Participation is governed by the Code of Conduct.
Contributions are MIT, matching the project.