google/integration-create
Creates a new ADK integration documentation page (a Markdown file under docs/integrations/) for a third-party tool, plugin, observability platform, data store, MCP server, or connector. Gathers details, picks the right category template, and drafts a page that follows adk-docs conventions. Triggers on "integration-create", "create integration page", "new integration", "add an integration", "write an integration page".
npx skills add https://github.com/google/adk-docs --skill integration-create
This skill creates a new integration page for the
adk-docs repository. Integration pages
live under docs/integrations/ and are auto-discovered into a card catalog. The
output of this skill is a strong starting point, not a finished page: when done,
run the integration-review skill on it and test with mkdocs serve.
The real template is the set of existing shipping pages. Before drafting,
open the exemplar(s) for the chosen category and match their structure and
conventions:
docs/integrations/github.md, docs/integrations/notion.mddocs/integrations/phoenix.md, docs/integrations/arize-ax.mddocs/integrations/daytona.md, docs/integrations/goodmem.mdTo find more similar pages, scan catalog_tags in one pass (`grep catalog_tags
docs/integrations/*.md`) and read the ones sharing the category's tag (e.g.
mcp, observability) or product domain in full. Match live pages and repo
conventions rather than inferring everything from the templates below.
See CONTRIBUTING.md (the "Integrations" section) for the human-facing
contract. For the full rulebook applied during review, see the
integration-review skill.
Ask the user for whatever is not already provided:
catalog_title and the H1).docs/integrations/assets/<slug>.png.
name.
adk- or other prefixes that would float the card to the top of thealphabetically sorted catalog.
docs/integrations/<slug>.md.Use the frontmatter and the category skeleton below. Fill each section by
reading the exemplar page(s) for the same category and adapting their prose and
code.
Do not add a mkdocs.yml nav entry; pages are auto-discovered by
render_catalog('integrations/*.md'). Add a redirect only if this page replaces
an existing URL, and never chain redirects.
Tell the user this is a draft, then:
docs/integrations/assets/<slug>.png(square, reasonably sized) and any screenshots.
integration-review skill on the new page.mkdocs serve to confirm the card renders and the icon loads.---
catalog_title: <Display Name>
catalog_description: <short verb-led phrase>
catalog_icon: /integrations/assets/<slug>.png
catalog_tags: ["<tag>", "<tag>"]
---
catalog_description: short and verb-led, roughly 45 to 75 characters (about6 to 11 words); keep it under ~80 so it does not wrap awkwardly on a card. Do
not repeat the product name (the title shows it). No verbose lists, no
overclaims.
catalog_tags: use only tags that already exist in the catalog; never inventone. Enumerate the valid tags in one pass with
grep catalog_tags docs/integrations/*.md. Tags combine. Any page that uses
MCP must include mcp.
catalog_icon: /integrations/assets/<slug>.png (or .svg or .jpg). No/adk-docs/ prefix.
# <Product> <type> for ADK
<type> is MCP tool, observability, or plugin per category. Immediately
after the H1, add the language support div (spans must be on a single line; drop
the TypeScript span if Python-only):
<div class="language-support-tag">
<span class="lst-supported">Supported in ADK</span><span class="lst-python">Python</span><span class="lst-typescript">TypeScript</span>
</div>
## Use cases
- **<Use case>**: <what the user accomplishes>
- **<Use case>**: <...>
## Prerequisites
- <account, API key, or token, with a link to where to get it>
## Use with agent
=== "Python"
=== "Remote MCP Server"
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
root_agent = Agent(
model="gemini-flash-latest",
name="<slug>_agent",
instruction="Help users get information from <Product>",
tools=[
McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="<server url>",
headers={"Authorization": "Bearer YOUR_TOKEN"},
),
)
],
)
=== "TypeScript"
=== "Remote MCP Server"
import { LlmAgent, MCPToolset } from "@google/adk";
const rootAgent = new LlmAgent({
model: "gemini-flash-latest",
name: "<slug>_agent",
instruction: "Help users get information from <Product>",
tools: [
new MCPToolset({
type: "StreamableHTTPConnectionParams",
url: "<server url>",
}),
],
});
export { rootAgent };
## Available tools
Tool | Description
---- | -----------
`<tool>` | <what it does>
## Additional resources
- [<Product> Documentation](<url>)
- [<Product> Repository](<url>)
Include both Local MCP Server (stdio) and Remote MCP Server sub-tabs when
the server supports both. Add a ## Configuration section for optional headers
or environment variables.
<one-paragraph intro of what the platform provides for ADK>
## Overview
- **<Capability>**: <...>
- **<Capability>**: <...>
## Installation
pip install <package>
## Setup
<API keys, environment variables, and instrumentor initialization>
## Observe
<a complete, runnable ADK agent example that is traced end-to-end>
## Support and Resources
- [<Platform> Documentation](<url>)
- [<Platform> Repository](<url>)
A single copy-pasteable end-to-end code block is acceptable and often better
than splitting Setup and Observe.
## Use cases
- **<Use case>**: <...>
## Prerequisites
- <account / API key with link>
## Installation
pip install <package>
## Use with agent
from <package> import <Plugin>
from google.adk.agents import Agent
root_agent = Agent(
model="gemini-flash-latest",
name="<slug>_agent",
instruction="<what the agent does>",
tools=<plugin>.get_tools(),
)
## Available tools
Tool | Description
---- | -----------
`<tool>` | <what it does>
## Additional resources
- [<Product> Documentation](<url>)
- [<Product> on PyPI](<url>)
- [<Product> on GitHub](<url>)
Add a ## Configuration section for environment variables when relevant.
gemini-flash-latest, gemini-pro-latest, or othervalid *-latest aliases in sample code rather than specific versioned model
strings, which increase the maintenance burden when new model versions are
released.
from google.adk.agents import Agent; MCP usesfrom google.adk.tools.mcp_tool import McpToolset. Agent variable is
root_agent (Python) / rootAgent (TypeScript, with export { rootAgent };).
definition` bullets; split prose into sentences otherwise.
/sessions/memory/); externallinks must resolve. Do not invent links.
source repositories are listed in docs/community/contributing-guide.md.
Take google/integration-create 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.
The instructions reference pip.
Without those the skill loads but fails at the first command.