Observed since 20 Oct, 19:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Automated progressive skill discovery and agent patching for ADK
Automate skill discovery and dynamically inject them into your ADK (Agent Development Kit) agents without manual loading or codebase bloat.
When building agentic applications using Google’s Agent Development Kit, agents often require specialized knowledge and workflows (skills). Traditionally, skills have to be explicitly loaded and mounted on the agent’s tool list, leading to several drawbacks:
adk-progressive-skills solves this by introducing Progressive Skill Discovery. By simply importing this library at the top of your agent script, skills are automatically scanned, prioritized by precedence, and seamlessly injected into your agent’s tools on instantiation.
This library automatically hooks (monkeypatches) the ADK agent constructors (google.adk.agents.llm_agent.LlmAgent and google.adk.agents.Agent). When an agent is initialized:
~/.gemini/config/skills (Global User configuration skills)~/.agents/skills (User home directory skills).agents/skills (Local workspace directory skills - highest precedence)warnings.warn instead of crashing your agent.SkillToolset and appends it to the agent’s tools parameter, preventing duplicate toolset additions.graph TD
A[import adk_progressive_skills] --> B(apply_patch)
B --> C[Monkeypatch LlmAgent.__init__]
C --> D[LlmAgent Instantiated]
D --> E[discover_skills]
E --> F[Scan paths in precedence order]
F --> H[~/.gemini/config/skills]
F --> I[~/.agents/skills]
F --> J[.agents/skills]
H --> K(skills_by_name)
I --> K
J --> K
K --> L[Filter Duplicate Names]
L --> M[Create SkillToolset]
M --> N["Safe Inject into kwargs['tools']"]
N --> O[Call Original LlmAgent.__init__]
sequenceDiagram
actor Developer
participant FS as Local Filesystem
participant Agent as ADK Agent
Developer->>FS: Create skill in .agents/skills/my-skill/SKILL.md
Developer->>Agent: Write agent script importing adk_progressive_skills
Developer->>Agent: Run agent script
Agent->>FS: Automatically scans paths
FS-->>Agent: Discovers my-skill
Agent->>Agent: Injects SkillToolset containing my-skill
Agent-->>Developer: Agent starts with skill dynamically loaded!
For ADK 1.x style agents, import the progressive skills library at the very top of your entrypoint file:
# 1. Import library first to apply the patches
import adk_progressive_skills
# 2. Import ADK agent classes
from google.adk.agents import Agent
# 3. Instantiate your Agent (skills in .agents/skills/ are automatically loaded)
agent = Agent(
name="my_helper_agent",
instruction="Help user with tasks.",
model="gemini-3.5-flash",
tools=[], # Injected automatically with SkillToolset
)
print(agent.tools)
For ADK 2.0 style agents, import the library first and use LlmAgent:
# 1. Import library first to apply the patches
import adk_progressive_skills
# 2. Import ADK 2.0 agent classes
from google.adk.agents.llm_agent import LlmAgent
# 3. Instantiate your LlmAgent
agent = LlmAgent(
name="my_helper_agent_v2",
instruction="Help user with tasks.",
model="gemini-3.5-flash",
tools=[], # Injected automatically with SkillToolset
)
print(agent.tools)
To prevent context window bloat and reduce token overhead, the library leverages ADK's native execution-time lazy-loading mechanisms:
SKILL.md body) of discovered skills are withheld from the initial system instructions. Only the skill names and descriptions are exposed to the model (either summarized in the system prompt or made queryable via a core list_skills tool).load_skill(skill_name="...") to fetch the full markdown body of a skill and append it to the conversation history dynamically.adk_additional_tools in the YAML frontmatter) are only registered and exposed to the model after the skill has been dynamically activated in that session.scripts/, references/, and resources/ are accessed progressively using load_skill_resource() and run_skill_script() only when invoked.Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 7 Jul 2026 | 3 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d5fae842b0d0804730fcbee7124ffafc2442dd0b86186df7382a8d125749e399