feat(skills): add library-skills, an agentskills.io implementation with 3 swappable engines - #49
Merged
Merged
Conversation
jordanauge
force-pushed
the
feat/skills-plugin-library
branch
2 times, most recently
from
September 4, 2026 12:09
9ea7333 to
466d1b9
Compare
…th 3 swappable engines
New library-skills package implements the agentskills.io spec (discovery,
frontmatter, tiered catalog/tools/scripts) and exposes it to agents via two
plugins (ContextContract catalog injection, ToolContract activate/read/list).
Script execution runs through a small sandboxed shell.
Underneath, three interchangeable engines do the actual work. Swapping engines
is a manifest/overlay change, not a code change: set `impl: native|adk|langchain`
on the skills tool entries (see the library-skills/overlays/skill-impl-*.yaml
presets) and bootstrap wires the selection to both catalog injection and skill
tool execution.
- native (default): wraps two new standalone packages, `agentskills` (spec
implementation) and `skill-sandbox` (POSIX rlimit sandboxing), vendored
as library-skills/agentskills and library-skills/skill-sandbox workspace
members; zero glue code, the recommended default.
- adk: delegates to google-adk's native skills support; richest built-in
behavior but no sandboxing and eager in-memory loading.
- langchain: delegates to deepagents (LangGraph); needs ~70 lines of adapter
glue since deepagents exposes a tool-call-oriented API rather than direct
skill content access; no sandboxing.
Also improve CI stability/perf: run install/install-dev once per task
invocation, and remove avoidable test skips/warnings by installing OTEL and
httpx2 dev deps.
Also included:
- spec.context_sources: a plugin-list binding (mirrors observability/
governance) for selecting the skills engine per deployment; skill-access
(read-only catalog/activation) tools are auto-injected whenever
spec.skills is non-empty
- run-skill-script stays opt-in: it's never auto-granted alongside
skill-access, so script execution requires either an explicit tool ref
or a deployment-wide context_sources: [{native: {auto_inject: true}}] --
trusted environments only, by design
- Filesystem-ref validation recognizes any `<scheme>:<rest>` value as a
library/package ref via generic scheme detection, so skill tool refs
(and any future library prefix) are never misclassified as filesystem
paths
- skill-impl-{native,adk,langchain} overlays let an agent select its
skills engine and base directory purely through manifest/overlay
composition, with schemas that accept the params these overlays set
- activate_skill's "name" parameter carries a real enum-constrained JSON
schema, built by threading ctx through the tool-schema pipeline
(ManifestToolProvider, openai_tools, ToolContract.on_collect_tools) --
the model is constrained to actually-registered skill names, and the
enum excludes skills already activated in the session, so a forced
tool_choice can't get the model stuck re-selecting the same one
- The quickstart integration tests (library-skills/tests/test_quickstart.py)
build their runtime instance with explicit standard:mock-llm infra and
spec.execution.mocking enabled, so they never require a live model or
OPENAI_API_KEY -- they only inspect prompt assembly and plugin wiring
Signed-off-by: Jordan Augé <augjorda@cisco.com>
jordanauge
force-pushed
the
feat/skills-plugin-library
branch
from
September 4, 2026 12:20
466d1b9 to
4606902
Compare
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.
New library-skills package implements the agentskills.io spec (discovery,
frontmatter, tiered catalog/tools/scripts) and exposes it to agents via two
plugins (ContextContract catalog injection, ToolContract activate/read/list).
Script execution runs through a small sandboxed shell.
Underneath, three interchangeable engines do the actual work. Swapping engines
is a manifest/overlay change, not a code change: set
impl: native|adk|langchainon the skills tool entries (see the library-skills/overlays/skill-impl-*.yaml
presets) and bootstrap wires the selection to both catalog injection and skill
tool execution.
agentskills(specimplementation) and
skill-sandbox(POSIX rlimit sandboxing); zero gluecode, the recommended default.
behavior but no sandboxing and eager in-memory loading.
glue since deepagents exposes a tool-call-oriented API rather than direct
skill content access; no sandboxing.
Also improve CI stability/perf: run install/install-dev once per task
invocation, and remove avoidable test skips/warnings by installing OTEL and
httpx2 dev deps.
Signed-off-by: Jordan Augé augjorda@cisco.com