Skip to content

feat(skills): expose additional tools after skill activation#94

Open
wangjl1993 wants to merge 1 commit into
google:mainfrom
wangjl1993:feat/skill-activation-tools
Open

feat(skills): expose additional tools after skill activation#94
wangjl1993 wants to merge 1 commit into
google:mainfrom
wangjl1993:feat/skill-activation-tools

Conversation

@wangjl1993

Copy link
Copy Markdown

Aligns Kotlin SkillToolset with adk-python's "load_skill activates additional tools" behavior.

Skills can declare additional tool names in frontmatter via metadata.adk_additional_tools. These tools remain hidden from the LLM until the model calls load_skill for that skill.
Activation state is recorded per-agent under _adk_activated_skill_{agent} and re-read on each LLM step, so subsequent requests expose the expanded toolset.

This also:

  • Preserves metadata.adk_additional_tools in loaded/listed frontmatter responses.
  • Validates metadata.adk_additional_tools as a list of non-blank strings.
  • Supports resolving activated tools from both provided tools and provided toolsets.
  • Adds parser and toolset tests for the activation flow.

Validation:

  • ./gradlew -Pkotlin.daemon.jvmargs="-Xmx4g" --no-daemon --stacktrace build

@google-cla

google-cla Bot commented Jun 18, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@wangjl1993 wangjl1993 force-pushed the feat/skill-activation-tools branch 3 times, most recently from 64a95df to f4dac0a Compare June 22, 2026 02:58
@damianmomotgoogle

Copy link
Copy Markdown
Contributor

Thx for contribution! We need a bit of time to verify how it will co-work with just introduced context compaction.

In the mean time can you sync it to HEAD revision? Thx!

Aligns Kotlin SkillToolset with adk-python's "load_skill activates additional tools" mechanism. Skills declare tool names in their frontmatter via `metadata.adk_additional_tools`; those tools stay hidden from the LLM until the model calls `load_skill` for that skill. The activation state is recorded per-agent under `_adk_activated_skill_{agent}` and re-read on every LLM step, so each subsequent request sees the expanded toolset.
@wangjl1993 wangjl1993 force-pushed the feat/skill-activation-tools branch from f4dac0a to e0695bd Compare June 24, 2026 06:01
@wangjl1993

Copy link
Copy Markdown
Author

Thx for contribution! We need a bit of time to verify how it will co-work with just introduced context compaction.

In the mean time can you sync it to HEAD revision? Thx!

Synced the PR to latest main HEAD and verified with full build:

GRADLE_OPTS="-Xmx4g -XX:MaxMetaspaceSize=1g -Dorg.gradle.daemon=false" JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 ./gradlew -Pkotlin.daemon.jvmargs="-Xmx4g"
--no-daemon --stacktrace build

BUILD SUCCESSFUL in 2m 18s

The skill activation state is stored in session state and re-read when toolsets build tools for each LLM step, so it should survive context compaction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants