The retrieving-developer-knowledge skill documented batch document fetch as
POST /v1/documents:batchGet with a JSON body. No such method exists, and the
call returns a 404, so the operation never worked as documented.
The v1 discovery document defines documents.batchGet as a GET with repeated
`names` query parameters and no request body. This corrects the endpoint in
SKILL.md and references/api-fallback.md, documents the optional `view`
parameter, the 20-document ceiling and the response shape, and states plainly
that the endpoint takes no request body.
Also adds the credential guidance the skill was missing. Neither file told a
reader how to obtain a credential when none is present; both now link the
public Developer Knowledge quickstart, which covers enabling the API and
creating a key.
PiperOrigin-RevId: 980133878
Bumps the google-cloud-developer plugin from 1.1.1 to 1.1.2 across plugin.json,
.claude-plugin/plugin.json, .codex-plugin/plugin.json, and
gemini-extension.json.
The release carries one functional fix: mcp_config.json now sets
"authProviderType": "google_credentials" on the Developer Knowledge MCP server.
Without it, clients reading that descriptor sent unauthenticated requests and
received 401 Unauthorized. The field is documented as mandatory in
skills/cloud/gcloud/references/mcp-usage.md, and the sibling
gemini-extension.json already carried it.
PiperOrigin-RevId: 980018211
The google-cloud-developer plugin declares the Developer Knowledge MCP server
in mcp_config.json with only a serverUrl. The repository's own documentation,
in skills/cloud/gcloud/references/mcp-usage.md, states that
"authProviderType": "google_credentials" is mandatory, and that omitting it
causes the client to send unauthenticated requests and receive 401
Unauthorized errors.
The sibling gemini-extension.json already carries the field. This adds it to
mcp_config.json so clients reading that descriptor attach Application Default
Credentials rather than calling the server anonymously.
PiperOrigin-RevId: 979969884
On some clients the Developer Knowledge MCP server does not connect at all, and
the skill did not describe the situation its users are actually in.
The connection failure is structural rather than a misconfiguration. The
Claude-facing manifest declares the server with no auth method, so the client
follows the MCP authorization spec, discovers the protected-resource metadata,
and is pointed at Google as the authorization server. Completing that handshake
without a pre-registered client requires dynamic client registration, and
Google's discovery documents advertise no registration endpoint. The client
cannot mint an identity, the handshake ends, and no answer_query,
search_documents or get_documents tool is ever exposed. The skill previously
said a declared tool might return an error. The tools are not there to return
one.
The REST fallback is therefore the only transport on those clients, and the
skill documented it as needing an API key. It does not. The v1 REST API accepts
an ordinary Google bearer token, so anyone with an authenticated gcloud has a
working path already and needs nothing installed or configured. That form is now
shown first, with the API key kept as the alternative, and the REST fallback
reference is reordered to match so the two do not disagree. Where a bearer token is
refused, the note explains that the application-default credential often
succeeds where the account credential does not, because which one the API
accepts depends on how the environment was authenticated.
A verification step also now sits between retrieval and output. The skill told
an agent to answer immediately upon receiving the documentation response,
without checking that what came back was documentation. PERMISSION_DENIED,
UNAUTHENTICATED, HTTP 401 or 403, an empty result set, or any error payload is a
failed lookup even when the tool reported no error. On a failure the agent tries
the other transport once, and if that also fails it says it could not reach
Developer Knowledge and is answering without it.
PiperOrigin-RevId: 974811356
The Codex manifest for google-cloud-developer showed the plugin to users as
"Google Cloud Core", which is a different plugin. The value was left over from
when this package was derived from that one. Its name field was correct, so
anything checking only the name saw nothing wrong, while the string a Codex user
actually reads named the wrong product.
Auditing the rest of the package turned up two more. The plugin carried two
different descriptions across its four manifests, because three were copies made
before it gained a skill. And every one of those descriptions opened with "Core
Google Cloud guidance", which is again the other plugin's framing. All four now
carry the same text and none of them begins with Core. The string core no longer
appears anywhere in the package.
An audit of the remaining seven plugins found no other manifest text naming a
different plugin, and no other description disagreeing across manifests.
Two conformance cases now hold this ground. The first rejects a manifest string
that contains, as a whole word, a token distinguishing another plugin's name from
its own, which catches both the display name and the prose. URLs are exempt,
because hostnames such as agent-plugins.org legitimately contain such tokens, and
without that exemption the case fires on every plugin. The second requires a
plugin's manifests to agree on their description. Both run for every plugin.
PiperOrigin-RevId: 974750814
Two lists in this repository had drifted from what they describe, for the same
reason. Both are maintained by hand and nothing makes you update them when the
thing they describe changes.
The google-cloud-developer rules file opened with "This plugin installs three
skills" and named three. The plugin ships five. The count was correct when it
was written and went stale the moment the plugin gained a skill, which is a
defect that will recur every time it gains another. Rather than correct the
number, the paragraph no longer states one. It tells the agent to check what is
actually available instead of trusting the file. A count that is not written
down cannot go out of date.
The same file closed by telling the agent to browse GitHub and install through
npx to find more skills. The plugin now bundles finding-google-skills, which
fetches the current index and returns exact entry points, so that advice routed
agents around the better tool. It now prefers the bundled skill and keeps the
browse URL as a fallback.
The two marketplace manifests describe one marketplace and had drifted apart.
The Claude manifest listed seventeen plugins and the agents manifest sixteen,
with db-context-engineering present in the first and missing from the second.
Whoever added it updated one file and missed the other.
Three conformance cases now hold this ground:
A rules file that names two or more bundled skills is treated as enumerating
them and must name all of them. One mention is a reference, not a list, so a
file may point at a single skill by name without triggering the check.
A rules file that states how many skills a plugin installs must state the right
number, whether written as a digit or a word.
The two marketplace manifests must list the same set of plugins.
The first two cases skip when a rules file makes no such claim, so the fix above
costs nothing to keep and the checks only bite if someone writes a hardcoded
list back in.
PiperOrigin-RevId: 972849207
Testing the published skill against the live catalog turned up three problems
that reading the file did not, and checking the plugin that carries it turned up
a fourth.
A certificate failure is now terminal. The skill already classified a TLS error
as a failed retrieval but never forbade working around one, and a test agent
responded to a certificate error by reissuing the request with verification
disabled. It disclosed that afterwards, so it was honest about it, but the next
thing the skill does is follow instructions from whatever came back, which makes
certificate validation the only thing standing between an intercepted catalog
and execution. The rule now names the specific escapes. Not curl -k or --insecure. Not
-SkipCertificateCheck, and on Windows PowerShell 5.1, where that parameter does
not exist, not the ServicePointManager certificate callback.
The repository-tree fallback command is quoted. It was printed unquoted, so the
bare question mark in the query string is a glob. In zsh it aborts before curl
runs and reports "no matches found", which resembles nothing like a network
problem. That command exists to rescue a failed fetch, so it needed to be the
one line that always runs.
The catalog is about 75 KB and does not fit in a single tool result on at least
one runtime, which truncated it to a preview and spilled the rest to a file. A
truncated preview is alphabetical, so it reads as though only the first few
products exist. Step 1 now shows how to narrow the catalog before reading it,
with jq, with Windows PowerShell, and with grep where neither is available, and
offers writing it to a file and reading it in parts as the option that works
everywhere. The rule that forbade copying the catalog into a file said more than
it meant; it now permits a working copy while filtering and still forbids
keeping one or summarizing it back into the conversation.
The skill's front matter is unchanged, so the generated catalog index does not
move.
Separately, the google-cloud-developer plugin manifest pointed its homepage at
the google-cloud-core directory, left over from when the package was derived
from it. It now points at its own. This is the only plugin manifest in the
repository that sets a homepage at all, which is why nothing else needs the same
correction.
PiperOrigin-RevId: 972728486
The google-cloud-developer plugin now ships five bundled skills. Two are new:
finding-google-skills, which lets a coding agent discover which Google-published
skills exist and pick the right one for the task in front of it rather than
guessing from whichever plugin happens to be loaded, and
retrieving-developer-knowledge, which searches official Google developer
documentation through the Developer Knowledge MCP server the plugin already
declares. They join gcloud, google-cloud-recipe-auth, and
google-cloud-recipe-onboarding.
Both new skills live outside skills/cloud/, which the bundling machinery could
not express. Every entry in PLUGIN_SKILLS now carries its category directory,
and both readers of that list resolve skills/<category>/<name>: the copy
transformation in copy.bara.sky and plugin_conformance_test.py. The three
existing entries are rewritten to the qualified form. The exported package still
holds each skill at <plugin-root>/skills/<directory name>, so the category
prefix decides only where the canonical copy is read from and the exported
layout does not change.
Bundling additional components is backwards compatible, so the plugin version
moves from 1.0.0 to 1.1.0 in all four manifests: plugin.json,
gemini-extension.json, .claude-plugin/plugin.json, and
.codex-plugin/plugin.json.
PiperOrigin-RevId: 972698973
Renames google-cloud-core to google-cloud-developer, and removes five
plugin packages: google-cloud-well-architected, google-cloud-run,
google-cloud-gke, google-cloud-gke-workloads, and
gemini-enterprise-agent-platform.
Seven cloud plugins become two: google-cloud-developer and gemini-api.
No skill content is removed. The plugins are packaging over skills that
live in skills/cloud, and every one of those skills stays in the catalog
and remains individually installable. This change removes 5 bundles, not
57 skills. Specifically retained: 6 Well-Architected skills, 31 GKE
skills, 1 Cloud Run skill, 15 Agent Platform skills, and the 4 skills the
renamed developer plugin continues to bundle.
Changed alongside the packages:
* copy.bara.sky, both in PLUGIN_SKILLS and in the exported package list
* .claude-plugin/marketplace.json, 23 entries to 18
* .agents/plugins/marketplace.json, 22 entries to 17
The marketplace entry for the renamed plugin also has its source path
repointed to ./plugins/cloud/google-cloud-developer. A renamed directory
behind a stale source path would leave the marketplace advertising a
plugin that cannot install.
PiperOrigin-RevId: 971948257