Skip to content

Google ADK Skills

Google ADK implements the Agent Skills standard through the SkillToolset class, loading SKILL.md directories 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
  • SkillToolset exposes three tools — list_skills (L1), load_skill (L2), load_skill_resource (L3) — mirroring progressive disclosure levels
  • Inline models.Skill is ADK-specific and enables runtime skill generation; only SKILL.md directories 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
Feedback