google/api-reference-audit
Audits whether ADK API reference docs and version-pinned strings are up to date across all language SDKs. Compares in-repo versions against upstream releases and package registries, then reports what needs bumping and which process to follow, and emits an executable plan only when asked. Triggers on "audit API reference", "check API ref docs", "are API docs up to date", "bump API doc versions", "check SDK doc versions".
npx skills add https://github.com/google/adk-docs --skill api-reference-audit
This skill audits the API reference documentation in the
adk-docs repository across every language
SDK and reports what is out of date. It is a reporting and guidance skill:
it detects drift, recommends the correct per-surface release process, and emits
an executable plan only when the user explicitly asks. It does not edit
files, run generators, or open PRs by default.
The audit covers three kinds of drift:
docs/api-reference/ that lag behindthe latest SDK release.
pom.xml versions) that must be bumped with each Java/Kotlin release.
versions or obviously deprecated APIs. Deep sample verification is out of
scope of this skill.
> [!IMPORTANT]
> The maps below are hints, not ground truth. File layouts, script paths,
> and team processes change. At each step, verify the path or marker exists and
> re-derive it if a lookup fails, rather than trusting the table blindly.
Each surface is one API reference output this repo ships: Python API, Python
CLI, Python REST API, Python Agent Config, TypeScript, Go, Java, and Kotlin.
For each surface, read the in-repo version from the file listed, then compare it
against the latest upstream release and package registry.
| Surface | In-repo version marker | Upstream repo | Package registry |
| --- | --- | --- | --- |
| Python API | docs/api-reference/python/_static/documentation_options.js (VERSION:) | google/adk-python | PyPI google-adk |
| Python CLI | docs/api-reference/cli/_static/documentation_options.js (VERSION:) and docs/api-reference/cli/index.html ("ADK X.Y.Z") | google/adk-python | PyPI google-adk |
| Python REST API | docs/api-reference/rest/openapi.json (info.version) | google/adk-python | PyPI google-adk |
| Python Agent Config | no version marker; diff the type set in agentconfig/index.html against upstream AgentConfig.json | google/adk-python (same release as Python API/CLI/REST) | n/a |
| TypeScript | docs/api-reference/typescript/variables/version.html (the version const); cross-check docs/api-reference/typescript/index.html (<title> "... - vX.Y.Z") | google/adk-js (monorepo; see note) | npm @google/adk (authoritative) |
| Go | external, hosted on pkg.go.dev; verify links in docs/api-reference/index.md | google/adk-go | pkg.go.dev |
| Java | docs/api-reference/java/index.html (<title> "Maven Parent POM X.Y.Z API") | google/adk-java (authoritative) | Maven Central com.google.adk:google-adk (lags; cross-check only) |
| Kotlin | docs/api-reference/kotlin/index.html (version string near the header) | google/adk-kotlin (authoritative) | Maven Central com.google.adk:google-adk-kotlin-core (lags; cross-check only) |
Notes:
adk-python release, so theyusually move together. Flag it when they diverge.
$defsobject** (plus top-level oneOf variants) from the upstream
AgentConfig.json at the target tag, e.g. jq '."$defs" | keys'. Do not
substring-grep for *Config: that mixes property names (camelCase, e.g.
imageConfig) with type names (PascalCase, e.g. ImageConfig) and produces
false drift. Check each $defs key as a whole word against
agentconfig/index.html; a key present upstream but missing in the page (or
vice versa) is drift.
@google/adk dist-tags.latest as the authoritativeversion. adk-js is a monorepo with package-prefixed tags (e.g. main-v1.4.0,
integrations-v1.4.0), so gh ... releases/latest can return a release for a
different package instead of @google/adk. The in-repo version const tracks
the same @google/adk package npm publishes and releases together with it, so
compare the two directly: any version difference means the docs are behind.
The generate script clones the adk-v<version> tag (the core @google/adk
package tag).
index.md links point at the correct major versions (e.g. v2.x and v1.x). Go
versions are also pinned in examples/go/go.mod / go.sum and appear as
/adk/v2 import paths in prose (e.g. docs/events/index.md, docs/2.0/), so
check those too.
These version-pinned strings are intentional and useful: they show developers
the exact dependency versions to use. The audit's job is to keep them current,
not remove them. They drift with each Java/Kotlin release and are bumped in a
separate PR (see the process map). Discover current occurrences by grep; do not
trust the file list alone, as new pages might appear over time.
com.google.adk:google-adk and com.google.adk:google-adk-kotlin acrossdocs/**/*.md
<google-adk.version> across docs//*.md and examples/java//pom.xmlgoogle-adk>=X.Y.Z pins in integration pages (report only; these areminimum-version pins, not doc-version bumps)
docs/get-started/installation.mddocs/get-started/java.mddocs/get-started/kotlin.mddocs/get-started/streaming/quickstart-streaming-java.mddocs/deploy/cloud-run.mddocs/agents/models/litert-lm.mddocs/integrations/firestore-session-service.mdexamples/java/**/pom.xmllanguage-support-tag spans (e.g. `<span class="lst-python">Python
v1.32.0</span>`) mark the release a feature was *introduced* in, not the
latest published version. Leave them untouched; bumping them misrepresents
when the feature became available.
Treat each entry as a starting hint. Before recommending it, confirm the script
still exists and inspect the most recent matching bump PR to confirm the current
process.
<version>`, then open a PR (the script injects the Google Analytics tag via
Sphinx).
<version>`, then open a PR. The GA tag is injected via a Sphinx layout
template in the script.
tools/python-rest-api-docs/generate.sh <version>`, then open a PR. GA tag is
baked into the generated index.html.
json-schema-for-humans; no tools/ generate script exists yet, so treat the
update as manual.
tools/typescript-api-docs/generate.sh <version> (where <version>` is the npm
@google/adk version from the audit), then open a PR. The script clones the
adk-js adk-v<version> tag, adds the version to the page title via TypeDoc's
--includeVersion, and injects the Google Analytics tag into every HTML file
(awk post-processing).
Javadoc assets (title chore: update ADK Java doc to version <X>); the docs
maintainer bumps the hardcoded dependency versions and pom.xml values (title
Update ADK Java dependency versions to <X>). The two can lag each other; the
assets PR is not self-serve, the dependency bump is.
<version>`, then open a PR that bundles the generated assets and the hardcoded
Kotlin refs (installation.md, get-started/kotlin.md, litert-lm.md). The
GA tag is auto-injected into every HTML file.
tools/ before recommending it.files it touched, for example:
gh pr list --repo google/adk-docs --state merged --search "Kotlin"gh pr list --repo google/adk-docs --state merged --search "CLI reference"gh pr list --repo google/adk-docs --state merged --search "Java"gh pr list --repo google/adk-docs --state merged --search "TypeScript"For every surface in the version map, read the marker file and record the
current version. Use grep/Read for the JS and HTML markers and parse
info.version from rest/openapi.json. If a marker path does not resolve,
re-derive it (search the generated output) and note the discrepancy.
For each SDK, get the latest release and the latest published package:
gh api repos/google/adk-python/releases/latest --jq .tag_nameadk-go, adk-kotlin, adk-java.adk-js, do not use releases/latest (monorepo tags arepackage-prefixed, e.g. main-v1.4.0); use npm @google/adk as the source
of truth.
https://pypi.org/pypi/google-adk/json and read info.version.https://registry.npmjs.org/@google/adk and readdist-tags.latest.
https://search.maven.org/solrsearch/select?q=g:com.google.adk+AND+a:google-adk&rows=1&wt=json
and read latestVersion (use a:google-adk-kotlin-core for Kotlin).
Maven Central search index frequently lags real releases (it has returned
versions older than what is already shipped in this repo). Use the registry
only as a cross-check, and when it disagrees with the GitHub tag, trust the
tag and note the lag.
tagged but not yet published, or vice versa); report both.
Mark each surface as one of:
e.g. 2.3.0 -> 2.4.1).
check. Agent Config is not "unknown"; classify it via the type-set diff
(Behind if types were added or removed upstream).
Call out the common case where Python API, CLI, and REST should share the same
adk-python version but do not.
For Agent Config, run the type-set diff described in the version map Notes to
decide Up to date vs. Behind.
Grep the targets in "Hardcoded version references" and compare each pinned
version to the latest Java and Kotlin releases. List every file and line that
needs a bump. Keep minimum-version pins (google-adk>=X.Y.Z) separate; only
flag them if they reference a version newer than what is released or are clearly
stale.
Do a quick scan (not a deep audit): note samples with hardcoded model or package
versions, obviously deprecated imports, or patterns superseded by a new
release's changelog. Report these as hints and recommend a dedicated
sample-audit pass for deep verification. Do not attempt to rewrite samples here.
Confirm docs/api-reference/index.md links point at the correct Go major
versions on pkg.go.dev and that the latest adk-go release is represented.
Also check the pinned versions in examples/go/go.mod / go.sum and the
/adk/v2 import paths in prose (e.g. docs/events/index.md, docs/2.0/).
Produce a Markdown report. Lead with a status table, then prioritized findings.
Status table (one row per surface):
| Surface | In-repo | Latest upstream | Status | Recommended action |
| --- | --- | --- | --- | --- |
Prioritized findings after the table. List only items that require action; do
not emit "no action" or "confirmed correct" lines anywhere, including inside an
otherwise-actionable finding. If a surface needs nothing, its table row already
says so.
broken/incorrect API-reference link, or version markers that disagree with
each other (e.g. Python API/CLI/REST on different versions).
file:line list of dependency coordinates andpom.xml values to bump, with old -> new.
deep sample-audit pass.
For each stale surface, name the recommended process from the process map
(self-serve script, wait on team, or manual) so the user knows how to proceed.
After the report, stop. Do not modify files, run generators, or open PRs
unless the user explicitly asks.
When the user asks you to proceed, output concrete next actions per stale
surface:
bash tools/python-cli-docs/generate.sh <new-version>bash tools/python-rest-api-docs/generate.sh <new-version>bash tools/kotlin-api-docs/generate.sh <new-version>bash tools/typescript-api-docs/generate.sh <new-version>team's asset PR and what to request or wait for.
file:line edits (old -> new), includingexamples/java/**/pom.xml.
adk-pythonversion) so they ship as separate PRs, one per surface, bumped in the same
sitting.
Rendered page: <preview link, where applicable>the owning team, or have the agent execute the plan.
Match the established titles so history stays searchable:
Update API reference docs for ADK Python <X.Y.Z>Update CLI reference docs for ADK Python <X.Y.Z>Update REST API reference docs for ADK Python <X.Y.Z>Update API reference docs for ADK TypeScript <X.Y.Z>Update ADK Java dependency versions to <X.Y.Z>Update ADK Kotlin to <X.Y.Z>old -> new; never guess a version you did notread from a marker or fetch from upstream.
docs/community/contributing-guide.md.
Take google/api-reference-audit from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.