Google ADK Skills¶
Google ADK implements the Agent Skills standard through the
SkillToolsetclass, loadingSKILL.mddirectories via three auto-generated tools mapped to the L1/L2/L3 progressive disclosure levels.
Also known as
ADK SkillToolset, Google ADK agent skills. For the portable format, see Agent Skills Standard; for authoring rules, see Skill Authoring Patterns.
ADK Skills is marked Experimental in ADK Python v1.25.0+ (ADK Skills docs).
How ADK Maps the Spec¶
ADK conforms to the agentskills.io specification directory format: a SKILL.md entrypoint with YAML frontmatter and body, plus optional references/, assets/, and scripts/ subdirectories (ADK Skills docs). A directory authored for Claude Code, Cursor, or Gemini CLI loads in ADK unchanged via load_skill_from_dir(...) (Google Developers Blog).
The SkillToolset auto-generates three tools that map to progressive disclosure levels:
| Tool | Level | Payload | Loaded |
|---|---|---|---|
list_skills |
L1 | Frontmatter name + description |
Every turn |
load_skill |
L2 | SKILL.md body |
When agent selects the skill |
load_skill_resource |
L3 | One file from references/, assets/, or scripts/ |
When L2 instructions reference it |
Google reports ~90% baseline context reduction for an agent with 10 skills: ~1k tokens of L1 metadata instead of ~10k tokens of monolithic instructions (Google Developers Blog).
Inline Skills — ADK-Specific¶
ADK adds a second authoring mode beyond file-based SKILL.md: inline skills defined in Python via models.Skill(frontmatter=..., instructions=..., resources=...) (ADK Skills docs). Inline skills embed references as in-memory strings rather than files, enabling runtime skill mutation — including agents that generate new skills at runtime (Google Developers Blog). Portable SKILL.md directories remain the only format that travels to non-ADK tools.
Skills vs. A2A Multi-Agent Composition¶
Skills scope to the agent that owns the SkillToolset. In an ADK multi-agent team using the A2A protocol, each agent carries its own skill registry; A2A routes tasks between agents but does not share skills across them. Sharing happens at the filesystem layer — multiple agents can load_skill_from_dir the same directory independently.
When Skills Earn Their Cost¶
Skills add overhead: L1 metadata injects into every turn, and load_skill costs an extra LLM round-trip before the agent acts. For a single-purpose agent that activates the same skill every turn, a plain instruction= block on the agent is strictly faster — skills are designed for agents with many capabilities that activate one or two per conversation (MindStudio: progressive disclosure tradeoffs).
Counter-evidence on activation reliability: Vercel's agent evals reported the skill was never invoked in 56% of test cases with default configuration, producing zero improvement over baseline; a compressed docs index placed in AGENTS.md instead reached a higher pass rate than the equivalent skill (Vercel: AGENTS.md outperforms skills in our agent evals). Skills only earn their cost when activation triggers are reliable — pair SkillToolset with explicit trigger phrases in the agent's base instructions, and treat invocation rate as a metric to evaluate, not assume.
Cross-language status: skill support is documented for ADK Python; parity with ADK Go and ADK Java is not confirmed in the skills documentation — verify against the target SDK's release notes before authoring skills for a non-Python runtime.
Example¶
A file-based skill loaded into an ADK agent (ADK Skills docs):
import pathlib
from google.adk import Agent
from google.adk.skills import load_skill_from_dir
from google.adk.tools import skill_toolset
weather_skill = load_skill_from_dir(
pathlib.Path(__file__).parent / "skills" / "weather_skill"
)
root_agent = Agent(
model="gemini-flash-latest",
name="skill_user_agent",
tools=[skill_toolset.SkillToolset(skills=[weather_skill])],
)
The weather_skill/ directory follows the agentskills.io layout — SKILL.md at root, optional references/, assets/, scripts/ — and loads in Claude Code or Gemini CLI without changes.
Key Takeaways¶
- ADK conforms to the agentskills.io directory spec; file-based skills are portable across Claude Code, Cursor, Gemini CLI, and ADK
SkillToolsetexposes three tools —list_skills(L1),load_skill(L2),load_skill_resource(L3) — mirroring progressive disclosure levels- Inline
models.Skillis ADK-specific and enables runtime skill generation; onlySKILL.mddirectories travel to other tools - Skills scope to a single agent in A2A teams; share via filesystem, not the A2A protocol
- Skip Skills for single-purpose agents where
instruction=is equivalent and faster