Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2cc62f5
refactor(plugins)!: convert Plugin from Protocol to ABC
Unshure Feb 20, 2026
6669482
Add missing docstring updated
Unshure Feb 20, 2026
0eb1a41
feat(plugins): add SkillsPlugin for AgentSkills.io integration
Feb 20, 2026
17ecfbd
Merge branch 'main' into feat/skills-plugin
mkmeral Feb 20, 2026
35bff69
feat(plugins): add @hook decorator and convert Plugin to base class
strands-agent Feb 19, 2026
f2f74e4
Have decorator not wrap funciton, but just attach hook events
Unshure Feb 20, 2026
8fb7244
Update steering to use hook decorator
Unshure Feb 20, 2026
2e8a268
Update typing
Unshure Feb 20, 2026
6cf7bac
fix: add skills to agents.md
mkmeral Feb 20, 2026
c92f8e0
feat(skills): simplify skills tool API and require pyyaml dependency
mkmeral Feb 20, 2026
63251d5
chore: merge plugin decorator support from agent-tasks/1739
mkmeral Feb 20, 2026
899fe9c
refactor(skills): use @hook and @tool decorators from Plugin base class
mkmeral Feb 20, 2026
e075d86
fix: use dict for skills for easy name based access
mkmeral Feb 23, 2026
9252908
feat(skills): add integ test
mkmeral Feb 23, 2026
539eb47
feat(skills): extend tool result
mkmeral Feb 23, 2026
29f9bf4
fix: empty commit
mkmeral Feb 23, 2026
8023cce
Revert "fix: empty commit"
mkmeral Feb 23, 2026
f769d5f
fix: improve skills plugin prompt injection and loader robustness
mkmeral Feb 25, 2026
408ccf4
merge: resolve conflicts after merging main into feat/skills-plugin
mkmeral Mar 3, 2026
eabed28
fix(skills): address PR review feedback
mkmeral Mar 3, 2026
19f9383
fix: add unit test for load skills
mkmeral Mar 3, 2026
8f2f5a7
refactor: make SkillsPlugin multi-agent safe with per-agent state
mkmeral Mar 4, 2026
0acf968
chore: revert unrelated handler and tracer formatting changes
mkmeral Mar 4, 2026
2627d92
refactor: remove unused active skill tracking from SkillsPlugin
mkmeral Mar 5, 2026
fb70ed1
refactor: rename SkillsPlugin to AgentSkills, add lenient validation …
mkmeral Mar 6, 2026
e8e77d4
fix(skills): update name
mkmeral Mar 6, 2026
d797b17
feat: track activated skills in agent state
mkmeral Mar 6, 2026
afac330
refactor: move loader into skills and small pr comment changes
mkmeral Mar 10, 2026
362d0ef
fix: consolidate skill loading
mkmeral Mar 10, 2026
8b1ee0c
Merge branch 'main' into feat/skills-plugin
mkmeral Mar 10, 2026
651e270
fix: allow single skill
mkmeral Mar 10, 2026
1b83d0b
fix: make skill source into type alias
mkmeral Mar 10, 2026
a7200ca
Update AGENTS.md
mkmeral Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,11 @@ strands-agents/
│ ├── plugins/ # Plugin system
│ │ ├── plugin.py # Plugin base class
│ │ ├── decorator.py # @hook decorator
│ │ └── registry.py # PluginRegistry for tracking plugins
│ │ ├── registry.py # PluginRegistry for tracking plugins
│ │ └── skills/ # Agent Skills integration
│ │ ├── __init__.py # Skills package exports
│ │ ├── skill.py # Skill dataclass
│ │ └── agent_skills.py # AgentSkills plugin implementation
│ │
│ ├── handlers/ # Event handlers
│ │ └── callback_handler.py # Callback handling
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ dependencies = [
"mcp>=1.23.0,<2.0.0",
"pydantic>=2.4.0,<3.0.0",
"typing-extensions>=4.13.2,<5.0.0",
"pyyaml>=6.0.0,<7.0.0",
"watchdog>=6.0.0,<7.0.0",
"opentelemetry-api>=1.30.0,<2.0.0",
"opentelemetry-sdk>=1.30.0,<2.0.0",
Expand Down
4 changes: 3 additions & 1 deletion src/strands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@
from .agent.agent import Agent
from .agent.base import AgentBase
from .event_loop._retry import ModelRetryStrategy
from .plugins import Plugin
from .plugins import AgentSkills, Plugin, Skill
from .tools.decorator import tool
from .types.tools import ToolContext

__all__ = [
"Agent",
"AgentBase",
"AgentSkills",
"agent",
"models",
"ModelRetryStrategy",
"Plugin",
"Skill",
"tool",
"ToolContext",
"types",
Expand Down
3 changes: 3 additions & 0 deletions src/strands/plugins/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@

from .decorator import hook
from .plugin import Plugin
from .skills import AgentSkills, Skill

__all__ = [
"AgentSkills",
"Plugin",
"Skill",
"hook",
]
31 changes: 31 additions & 0 deletions src/strands/plugins/skills/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""AgentSkills.io integration for Strands Agents.
This module provides the AgentSkills plugin for integrating AgentSkills.io skills
into Strands agents. Skills enable progressive disclosure of instructions:
metadata is injected into the system prompt upfront, and full instructions
are loaded on demand via a tool.
Example Usage:
```python
from strands import Agent
from strands.plugins.skills import Skill, AgentSkills
# Load from filesystem via classmethods
skill = Skill.from_file("./skills/pdf-processing")
skills = Skill.from_directory("./skills/")
# Or let the plugin resolve paths automatically
plugin = AgentSkills(skills=["./skills/pdf-processing"])
agent = Agent(plugins=[plugin])
```
"""

from .agent_skills import AgentSkills, SkillSource, SkillSources
from .skill import Skill

__all__ = [
"AgentSkills",
"Skill",
"SkillSource",
"SkillSources",
]
Loading
Loading