![]() |
VOOZH | about |
dotnet add package AgentSkillsDotNet --version 1.10.0
NuGet\Install-Package AgentSkillsDotNet -Version 1.10.0
<PackageReference Include="AgentSkillsDotNet" Version="1.10.0" />
<PackageVersion Include="AgentSkillsDotNet" Version="1.10.0" />Directory.Packages.props
<PackageReference Include="AgentSkillsDotNet" />Project file
paket add AgentSkillsDotNet --version 1.10.0
#r "nuget: AgentSkillsDotNet, 1.10.0"
#:package AgentSkillsDotNet@1.10.0
#addin nuget:?package=AgentSkillsDotNet&version=1.10.0Install as a Cake Addin
#tool nuget:?package=AgentSkillsDotNet&version=1.10.0Install as a Cake Tool
This is a C# Implementation of the AgentSkills Format
This is part of AgentFrameworkToolkit but can also be used on its own.
dotnet add package AgentSkillsDotNet)AgentSkillsFactory instance (or use the .AddAgentSkillsFactory Dependency Injection)AgentSkillsFactory agentSkillsFactory = new AgentSkillsFactory();
AgentSkills agentSkills = agentSkillsFactory.GetAgentSkills("<FolderWithSkillsAsSubFolders>");
//The Raw Skills
IList<AgentSkill> skills = agentSkills.Skills;
//Get the Skills as AI Tools (to use in Microsoft Agent Framework or Microsoft.Extensions.AI)
IList<AITool> tools = agentSkills.GetAsTools();
//Get instructions of available skills
string instructions = agentSkills.GetInstructions();
//Log of skills that were excluded (due to being invalid or filtered away by advanced filtering)
IList<string> log = agentSkills.ExcludedSkillsLog;
AgentSkillsFactory agentSkillsFactory = new AgentSkillsFactory();
AgentSkills agentSkills = agentSkillsFactory.GetAgentSkills("<FolderWithSkillsAsSubFolders>", new AgentSkillsOptions
{
ValidationRules = AgentSkillsOptionsValidationRule.Loose, //Allow tools that don't follow Agent Skills spec 100% or use .None to turn off validation off entirely
Filter = skill =>
{
//Filter what skills to include (in this example we only allow Skills that do not have any script-files)
//But you have a full skill data available for evaluation (name, description, license, metadata, etc.)
return skill.ScriptFiles.Length == 0;
}
});
AgentSkillsFactory agentSkillsFactory = new AgentSkillsFactory();
AgentSkills agentSkills = agentSkillsFactory.GetAgentSkills("<FolderWithSkillsAsSubFolders>");
//Expose Skills as 3 tools ('get-available-skills', 'get-skill-by-name' and 'read-skill-file-content')
IList<AITool> tools1 = agentSkills.GetAsTools(AgentSkillsAsToolsStrategy.AvailableSkillsAndLookupTools);
//Expose each skill as its own tool (+ 'read-skill-file-content' tool)
IList<AITool> tools2 = agentSkills.GetAsTools(AgentSkillsAsToolsStrategy.EachSkillAsATool);
//Control every option in the tools creation
IList<AITool> tools3 = agentSkills.GetAsTools(AgentSkillsAsToolsStrategy.AvailableSkillsAndLookupTools, new AgentSkillsAsToolsOptions
{
IncludeToolForFileContentRead = false, //Exclude a 'read-skill-file-content' tool
//Override default tool names/descriptions
GetAvailableSkillToolName = "get-skills",
GetAvailableSkillToolDescription = "Get all the skills",
GetSpecificSkillToolName = "get-skill",
GetSpecificSkillToolDescription = "Get a specific tool",
ReadSkillFileContentToolName = "read-file",
ReadSkillFileContentToolDescription = "Read a skill file",
//Control how each Skill report it's content back (XML Structure)
AgentSkillAsToolOptions = new AgentSkillAsToolOptions
{
IncludeDescription = true,
IncludeAllowedTools = true,
IncludeMetadata = true,
IncludeLicenseInformation = true,
IncludeCompatibilityInformation = true,
IncludeScriptFilesIfAny = true,
IncludeReferenceFilesIfAny = true,
IncludeAssetFilesIfAny = true,
IncludeOtherFilesIfAny = true,
}
/* Default Definition Example ()
<skill name="speak-like-a-pirate" description="Let the LLM take the persona of a pirate">
<instructions>
# Speak Like a pirate## ObjectiveSpeak Like a pirate called 'Seadog John' ...
He has a parrot called 'Squawkbeard'
## Context
This is a persona aimed at kids that like pirates
## Rules
- Use as many emojis as possible
- As this need to be kid-friendly, do not mention alcohol and smoking
</instructions>
<otherFiles>
<file>TestData\AgentSkills\speak-like-a-pirate\License.txt</file>
</otherFiles>
</skill>
*/
});
AgentSkillsFactory agentSkillsFactory = new AgentSkillsFactory();
AgentSkills agentSkills = agentSkillsFactory.GetAgentSkills("<FolderWithSkillsAsSubFolders>");
string instructions = agentSkills.GetInstructions();
/* Instructions will return in the Anthropic preferred format
<available_skills>
<skill>
<name>pdf-processing</name>
<description>Extracts text and tables from PDF files, fills forms, merges documents.</description>
<location>/path/to/skills/pdf-processing/SKILL.md</location>
</skill>
<skill>
<name>data-analysis</name>
<description>Analyzes datasets, generates charts, and creates summary reports.</description>
<location>/path/to/skills/data-analysis/SKILL.md</location>
</skill>
</available_skills>
*/
AgentSkillsFactory agentSkillsFactory = new AgentSkillsFactory();
AgentSkills agentSkills = agentSkillsFactory.GetAgentSkills("<FolderWithSkillsAsSubFolders>");
foreach (AgentSkill skill in agentSkills.Skills)
{
//Validate the skill against the official spec
AgentSkillValidationResult validationResult = skill.GetValidationResult();
//Get Skill definition
string definition = skill.GenerateDefinition(new AgentSkillAsToolOptions
{
//add your optional options for how the definition is generated
});
//Get as AI Tool
AITool tool = skill.AsAITool(new AgentSkillAsToolOptions
{
//add your optional options for how the definition is generated
});
/* Default Definition Example
<skill name="speak-like-a-pirate" description="Let the LLM take the persona of a pirate">
<instructions>
# Speak Like a pirate## ObjectiveSpeak Like a pirate called 'Seadog John' ...
He has a parrot called 'Squawkbeard'
## Context
This is a persona aimed at kids that like pirates
## Rules
- Use as many emojis as possible
- As this need to be kid-friendly, do not mention alcohol and smoking
</instructions>
</skill>
*/
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on AgentSkillsDotNet:
| Package | Downloads |
|---|---|
|
AgentFrameworkToolkit.Tools
An opinionated C# Toolkit targeting AITools |
|
|
Peak.Abp.Silver.AI
Package Description |
Showing the top 1 popular GitHub repositories that depend on AgentSkillsDotNet:
| Repository | Stars |
|---|---|
|
rwjdk/MicrosoftAgentFrameworkSamples
Samples demonstrating the Microsoft Agent Framework in C#
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.10.0 | 364 | 6/10/2026 |
| 1.9.0 | 649 | 6/4/2026 |
| 1.8.0 | 511 | 5/28/2026 |
| 1.7.0 | 305 | 5/27/2026 |
| 1.6.2 | 332 | 5/20/2026 |
| 1.6.1 | 387 | 5/14/2026 |
| 1.5.0 | 292 | 5/14/2026 |
| 1.4.0 | 612 | 5/5/2026 |
| 1.3.0 | 1,757 | 4/24/2026 |
| 1.2.0 | 360 | 4/22/2026 |
| 1.1.0 | 969 | 4/10/2026 |
| 1.0.0 | 1,062 | 4/2/2026 |
| 1.0.0-rc5 | 364 | 3/31/2026 |
| 1.0.0-rc4.2 | 91 | 3/31/2026 |
| 1.0.0-rc4.1 | 73 | 3/31/2026 |
| 1.0.0-rc4 | 1,347 | 3/12/2026 |
| 1.0.0-rc3.1 | 509 | 3/8/2026 |
| 1.0.0-rc3 | 340 | 3/4/2026 |
| 1.0.0-rc2 | 974 | 2/26/2026 |
| 1.0.0-rc1 | 611 | 2/21/2026 |