feat(#1016): Skill.tools(...) accepts typed Tool<*, *> handles#42
Merged
Skobeltsyn merged 1 commit intomainfrom May 5, 2026
Merged
feat(#1016): Skill.tools(...) accepts typed Tool<*, *> handles#42Skobeltsyn merged 1 commit intomainfrom
Skobeltsyn merged 1 commit intomainfrom
Conversation
Add typed overload `Skill.tools(first: Tool<*, *>, vararg rest: Tool<*, *>)` alongside the existing `tools(vararg names: String)`. Skills authored with typed refs catch tool typos at compile time rather than at agent `validate()`. Both forms produce identical `Skill.toolNames` and dispatch identically through the agentic loop — the string overload stays (deprecation deferred to #1017). Disambiguation: typed overload requires at least one ref so `tools()` (empty) still resolves to the legacy string-vararg form. Mixed forms (some strings, some refs) are not supported — pick one per skill. Drop `@JvmInline` from Tool — Kotlin prohibits vararg of value-class types, and `Skill.tools(vararg refs)` is the primary use site. Tool handles are constructed once per agent build, never on the hot path; per-handle allocation is negligible. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add typed overload
Skill.tools(first: Tool<*, *>, vararg rest: Tool<*, *>)alongside the existingtools(vararg names: String). Skills authored with typed refs catch tool typos at compile time rather than at agentvalidate(). Both forms produce identicalSkill.toolNamesand dispatch identically through the agentic loop — the string overload stays (deprecation deferred to #1017).Disambiguation: typed overload requires at least one ref so
tools()(empty) still resolves to the legacy string-vararg form. Mixed forms (some strings, some refs) are not supported — pick one per skill.Drop
@JvmInlinefrom Tool — Kotlin prohibits vararg of value-class types, andSkill.tools(vararg refs)is the primary use site. Tool handles are constructed once per agent build, never on the hot path; per-handle allocation is negligible.