mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
7432105ebe
Port of .NET PR #5475. Broadens the args type from dict[str, Any] | None to dict[str, Any] | list[str] | None across the skill script API surface, enabling CLI-style argv forwarding to subprocess scripts. Changes: - SkillScript.run(), InlineSkillScript.run(), FileSkillScript.run(): widen args type; InlineSkillScript rejects list with TypeError - FileSkillScript.parameters_schema: returns array-of-strings schema - FileSkill.content: appends <scripts> block with parameters_schema - SkillScriptRunner protocol: widen args type - SkillsProvider._run_skill_script: widen args type - run_skill_script tool schema: accept object, array, or null - subprocess_script_runner sample: accept list[str], reject dict - class_based_skill sample: fix missing SkillFrontmatter wrapper - Standardize 'folder' to 'directory' in docstrings (#5712) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
7432105ebe
·
2026-05-14 17:58:10 +00:00
History
Class-Based Agent Skills
This sample demonstrates how to define Agent Skills as Python classes using ClassSkill.
What's Demonstrated
- Creating skills as classes that extend
ClassSkill - Bundling name, description, instructions, resources, and scripts into a single class
- Using
@ClassSkill.resourcedecorator for automatic resource discovery - Using
@ClassSkill.scriptdecorator for automatic script discovery - Lazy-loading and caching of resources and scripts
- Registering class-based skills with
SkillsProvider
Skills Included
unit-converter (class-based)
A UnitConverterSkill class that converts between common units. Defined in class_based_skill.py:
conversion-table— Static resource with factor tableconvert— Script that performsvalue × factorconversion
Project Structure
class_based_skill/
├── class_based_skill.py
└── README.md
Running the Sample
Prerequisites
- An Azure AI Foundry project with a deployed model (e.g.
gpt-4o-mini)
Environment Variables
Set the required environment variables in a .env file (see python/.env.example):
FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpointFOUNDRY_MODEL: The name of your model deployment (defaults togpt-4o-mini)
Authentication
This sample uses AzureCliCredential for authentication. Run az login in your terminal before running the sample.
Run
cd python
uv run samples/02-agents/skills/class_based_skill/class_based_skill.py
Expected Output
Converting units with class-based skills
------------------------------------------------------------
Agent: Here are your conversions:
1. **26.2 miles → 42.16 km** (a marathon distance)
2. **75 kg → 165.35 lbs**