Files
agent-framework/python/samples/02-agents/skills/class_based_skill
T
SergeyMenshykh 7432105ebe Python: Support list[str] arguments for file-based skill scripts (#5850)
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.resource decorator for automatic resource discovery
  • Using @ClassSkill.script decorator 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 table
  • convert — Script that performs value × factor conversion

Project Structure

class_based_skill/
├── class_based_skill.py
└── README.md

Running the Sample

Prerequisites

Environment Variables

Set the required environment variables in a .env file (see python/.env.example):

  • FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL: The name of your model deployment (defaults to gpt-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**

Learn More