This sample demonstrates how to use Anthropic-managed Skills with AI agents. Skills are pre-built capabilities provided by Anthropic that can be used with the Claude API.
- Listing available Anthropic-managed skills
- Creating an AI agent with Anthropic Claude Skills support using the simplified
AsAITool()approach - Using the pptx skill to create PowerPoint presentations
- Downloading and saving generated files to disk
- Handling agent responses with generated content
Before you begin, ensure you have the following prerequisites:
- .NET 10.0 SDK or later
- Anthropic API key configured
- Access to Anthropic Claude models with Skills support
Note: This sample uses Anthropic Claude models with Skills. Skills are a beta feature. For more information, see Anthropic documentation.
Set the following environment variables:
$env:ANTHROPIC_API_KEY="your-anthropic-api-key" # Replace with your Anthropic API key
$env:ANTHROPIC_CHAT_MODEL_NAME="your-anthropic-model" # Replace with your Anthropic model (e.g., claude-sonnet-4-5-20250929)Navigate to the Anthropic sample directory and run:
cd dotnet\samples\02-agents\AgentProviders\anthropic
dotnet run --project .\Agent_Anthropic_Step04_UsingSkillsAnthropic provides several managed skills that can be used with the Claude API:
pptx- Create PowerPoint presentationsxlsx- Create Excel spreadsheetsdocx- Create Word documentspdf- Create and analyze PDF documents
You can list available skills using the Anthropic SDK:
SkillListPage skills = await anthropicClient.Beta.Skills.List(
new SkillListParams { Source = "anthropic", Betas = [AnthropicBeta.Skills2025_10_02] });
foreach (var skill in skills.Items)
{
Console.WriteLine($"{skill.Source}: {skill.ID} (version: {skill.LatestVersion})");
}The sample will:
- List all available Anthropic-managed skills
- Create an agent with the pptx skill enabled
- Run the agent with a request to create a presentation
- Display the agent's response text
- Download any generated files and save them to disk
- Display token usage statistics
The Anthropic SDK handles all beta flags and container configuration automatically when using AsAITool():
// Define the pptx skill
BetaSkillParams pptxSkill = new()
{
Type = BetaSkillParamsType.Anthropic,
SkillID = "pptx",
Version = "latest"
};
// Create an agent - the SDK handles beta flags automatically!
ChatClientAgent agent = anthropicClient.Beta.AsAIAgent(
model: model,
instructions: "You are a helpful agent for creating PowerPoint presentations.",
tools: [pptxSkill.AsAITool()]);Note: No manual RawRepresentationFactory, Betas, or Container configuration is needed. The SDK automatically adds the required beta headers (skills-2025-10-02, code-execution-2025-08-25) and configures the container with the skill.
Generated files are returned as HostedFileContent within CodeInterpreterToolResultContent:
// Collect generated files from response
List<HostedFileContent> hostedFiles = response.Messages
.SelectMany(m => m.Contents.OfType<CodeInterpreterToolResultContent>())
.Where(c => c.Outputs is not null)
.SelectMany(c => c.Outputs!.OfType<HostedFileContent>())
.ToList();
// Download and save each file
foreach (HostedFileContent file in hostedFiles)
{
using HttpResponse fileResponse = await anthropicClient.Beta.Files.Download(
file.FileId,
new FileDownloadParams { Betas = ["files-api-2025-04-14"] });
string fileName = $"presentation_{file.FileId.Substring(0, 8)}.pptx";
await using FileStream fileStream = File.Create(fileName);
Stream contentStream = await fileResponse.ReadAsStream();
await contentStream.CopyToAsync(fileStream);
}