Azure Cloud Services
MicrosoftDocs/Agent-Skills
Expert knowledge for Azure Cloud Services development including troubleshooting, best practices, decision making, limits & quotas, security, configuration, integrations & coding patterns, and…
Dev/test workflow for tracer engineers working on the Datadog .NET tracer — build a local Datadog.AzureFunctions NuGet package, deploy it to a test Azure Function App, trigger it, and analyze…
$ npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install DataDog/dd-trace-dotnet azure-functions --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/DataDog/dd-trace-dotnet.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/azure-functions .claude/skills/azure-functions && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "azure-functions" agent skill from https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functions into .claude/skills/azure-functions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "azure-functions", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functionsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install DataDog/dd-trace-dotnet azure-functions --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DataDog/dd-trace-dotnet.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/azure-functions .agents/skills/azure-functions && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "azure-functions" agent skill from https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functions into .agents/skills/azure-functions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "azure-functions", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install DataDog/dd-trace-dotnet azure-functions --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DataDog/dd-trace-dotnet.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/azure-functions .cursor/skills/azure-functions && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "azure-functions" agent skill from https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functions into .cursor/skills/azure-functions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "azure-functions", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/DataDog/dd-trace-dotnet.git --path .claude/skills/azure-functions--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install DataDog/dd-trace-dotnet azure-functions --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DataDog/dd-trace-dotnet.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/azure-functions .gemini/skills/azure-functions && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "azure-functions" agent skill from https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functions into .gemini/skills/azure-functions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "azure-functions", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install DataDog/dd-trace-dotnet azure-functionsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/DataDog/dd-trace-dotnet.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/azure-functions .github/skills/azure-functions && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "azure-functions" agent skill from https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functions into .github/skills/azure-functions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "azure-functions", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install DataDog/dd-trace-dotnet azure-functions --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DataDog/dd-trace-dotnet.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/azure-functions .opencode/skills/azure-functions && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "azure-functions" agent skill from https://github.com/DataDog/dd-trace-dotnet/tree/master/.claude/skills/azure-functions into .opencode/skills/azure-functions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "azure-functions", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
azure-functionsDev/test workflow for tracer engineers working on the Datadog .NET tracer — build a local Datadog.AzureFunctions NuGet package, deploy it to a test Azure Function App, trigger it, and analyze…
Azure Functions is an agent skill from DataDog/dd-trace-dotnet, published by the product's own GitHub organization. Dev/test workflow for tracer engineers working on the Datadog .NET tracer — build a local Datadog.AzureFunctions NuGet package, deploy it to a test Azure Function App, trigger it, and analyze traces/logs to verify instrumentation behavior. Use this skill whenever the user is working on Azure Functions instrumentation: building or testing the Datadog.AzureFunctions NuGet package, deploying to a test Function App, analyzing instrumentation logs or spans from an Azure Functions app, or configuring Datadog…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files (for example `environment-variables.md`, `log-analysis-guide.md` and `scripts-reference.md`).
It sits in DevOps & Cloud, covering Secrets management. It works with Azure Functions, Datadog, .NET and Microsoft Azure. The repository describes itself as: .NET Client Library for Datadog APM. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 512b980. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(pwsh *)Bash(az functionapp show *)Bash(az functionapp list *)Bash(az functionapp list-functions *)Bash(az functionapp function list *)Bash(az functionapp function show *)Bash(az functionapp config appsettings list *)Bash(az functionapp config appsettings set *)Bash(az functionapp config appsettings delete *)Bash(az functionapp config show *)…and 23 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (PowerShell), which the agent can run.
Shell commands in SKILL.md call:
azdotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.nuget.orgAlso links to:
learn.microsoft.comdotnet.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
DD_API_KEYDD_APPLICATION_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Azure Functions loads about 4.7k tokens when it runs. Until then it costs about 153 tokens; SKILL.md has 1,369 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from DataDog/dd-trace-dotnet at commit 512b980, republished under its Apache-2.0 licence (© DataDog). 1,369 words, ~4,695 tokens.
.claude/skills/azure-functions/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.This skill helps tracer engineers test changes to the Datadog.AzureFunctions package: build a local dev version, deploy it to a test Azure Function App, trigger the function, and analyze traces/logs to verify instrumentation behavior.
This skill requires the following tools (assume they are installed and only troubleshoot if errors occur):
pwsh (PowerShell 7+) preferred, or powershell.exe (PowerShell 5.1+ on Windows)pwsh over powershell.exe when availableExpand-Archiveaz (must be authenticated)funcOnly if a tool fails, provide installation links:
When invoked with an argument, perform the corresponding workflow:
/azure-functions build-nuget - Build the Datadog.AzureFunctions NuGet package/azure-functions deploy [app-name] - Deploy to Azure Function App/azure-functions configure [app-name] - Configure environment variables for Datadog instrumentation/azure-functions test [app-name] - Trigger and verify function execution/azure-functions logs [app-name] - Download and analyze logsIf no argument is provided, guide the user through the full workflow interactively.
Current repository: This skill assumes you are working from the root of the dd-trace-dotnet repository.
Prerequisites: Users provide their own Azure Function App name (-AppName), resource group (-ResourceGroup), and sample app path (-SampleAppPath). The sample app must:
Datadog.AzureFunctions NuGet packagenuget.config file (in the app directory or a parent directory) that defines a local NuGet feed pointing to a directory on disk, for example:<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="local" value="nuget/local-source" />
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>-CopyTo parameter of Build-AzureFunctionsNuget.ps1 must point to the same directory as the local feed (e.g. if the feed value is nuget/local-source relative to the nuget.config location, then -CopyTo should be the absolute path to that directory).CRITICAL: Before building, verify that tracer/src/Datadog.AzureFunctions/Datadog.AzureFunctions.csproj uses PackageReference (not ProjectReference) for Datadog.Trace and Datadog.Trace.Annotations. This ensures the locally-built package references the latest releases from nuget.org instead of building them from source.
Check the .csproj — it should contain:
<PackageReference Include="Datadog.Trace" Version="*"/>
<PackageReference Include="Datadog.Trace.Annotations" Version="*" />If instead it contains ProjectReference lines like these, replace them with the PackageReference lines above:
<!-- These are the production references — replace for local testing: -->
<ProjectReference Include="$(MSBuildThisFileDirectory)..\Datadog.Trace.Manual\Datadog.Trace.Manual.csproj" />
<ProjectReference Include="$(MSBuildThisFileDirectory)..\Datadog.Trace.Annotations\Datadog.Trace.Annotations.csproj" />IMPORTANT: The PackageReference change is for local testing only. Do NOT commit it. If it's already using PackageReference, no change is needed.
Build the Datadog.AzureFunctions NuGet package with your changes:
./tracer/tools/Build-AzureFunctionsNuget.ps1 -CopyTo <output-dir>What this does:
-BuildId specified and files not already downloaded) Downloads bundle from Azure DevOps build once3.38.0-dev20260209143022)Datadog.Trace (net6.0)Datadog.AzureFunctions.nupkg with the generated version (referencing latest nuget.org releases)-CopyToVersioning: Each build gets a unique version, so NuGet caching is never an issue.
The sample app should use a floating version like 3.38.0-dev.* in its package reference
(or Directory.Packages.props) to always resolve the latest local dev build.
Options:
-CopyTo <output-dir> - Copy the built package to the specified directory (typically your local NuGet feed)-Version '3.38.0-dev.custom' - Use a specific version instead of auto-generating-BuildId 12345 - One-time download of bundle files from Azure DevOps build (only needed once per dd-trace-dotnet release, then reused for subsequent local builds)Examples:
# Typical local build (after bundle files already downloaded)
./tracer/tools/Build-AzureFunctionsNuget.ps1 -CopyTo <output-dir>
# First build after new dd-trace-dotnet release (download bundle files once)
./tracer/tools/Build-AzureFunctionsNuget.ps1 -BuildId 12345 -CopyTo <output-dir>IMPORTANT: Before deploying, verify prerequisites:
Verify nuget.config exists:
$nugetConfig = ./.claude/skills/azure-functions/Find-NuGetConfig.ps1 -StartPath "<path-to-sample-app>"
if (-not $nugetConfig) {
Write-Error "nuget.config not found in sample app directory or parent directories"
exit 1
}
Write-Host "Found nuget.config at: $nugetConfig"Verify environment variables are configured (skip if already done on a previous deploy):
$envCheck = ./.claude/skills/azure-functions/Test-EnvVars.ps1 -AppName "<app-name>" -ResourceGroup "<resource-group>"
if (-not $envCheck.AllRequiredPresent) {
Write-Warning "Required environment variables are missing. Run '/azure-functions configure' first, or proceed if you plan to configure after deploying."
}Use the Deploy-AzureFunction.ps1 script to automate deployment, wait, and trigger:
./tracer/tools/Deploy-AzureFunction.ps1 `
-AppName "<app-name>" `
-ResourceGroup "<resource-group>" `
-SampleAppPath "<path-to-sample-app>"What this does:
dotnet restore in the sample app directoryfunc azure functionapp publishOptions:
-SkipBuild - Skip dotnet restore-SkipWait - Skip 2-minute wait (not recommended)-WaitSeconds 60 - Custom wait duration-SkipTrigger - Skip HTTP trigger-TriggerUrl "https://..." - Custom trigger URLNote: -AppName and -ResourceGroup are required parameters.
Pipeline usage (save output for log analysis):
$deploy = ./tracer/tools/Deploy-AzureFunction.ps1 `
-AppName "<app-name>" `
-ResourceGroup "<resource-group>" `
-SampleAppPath "<path-to-sample-app>"Configure Datadog instrumentation environment variables for an Azure Function App using Set-EnvVars.ps1:
./.claude/skills/azure-functions/Set-EnvVars.ps1 `
-AppName "<app-name>" `
-ResourceGroup "<resource-group>" `
-ApiKey "<api-key>" `
-Tier recommended `
-Env "dev-lucas"What this does:
-SkipRestart)Tiers:
Options:
-Tier required|recommended|debug - Configuration tier (default: required)-Env "dev-lucas" - Set DD_ENV-Service "my-service" - Set DD_SERVICE-Version "1.0.0" - Set DD_VERSION-SamplingRules '<json>' - Set DD_TRACE_SAMPLING_RULES-ExtraSettings @{"KEY"="value"} - Set additional variables-SkipRestart - Don't restart the app after applying-WhatIf - Preview changes without applyingPreview before applying:
./.claude/skills/azure-functions/Set-EnvVars.ps1 `
-AppName "<app-name>" `
-ResourceGroup "<resource-group>" `
-ApiKey "<api-key>" `
-Tier debug `
-WhatIfComplete reference: See environment-variables.md for all available variables.
Trigger an already-deployed function and capture the execution timestamp. Useful for re-testing after a deploy, or testing an app that was deployed earlier.
Discover available triggers:
# List HTTP-triggered functions and their URLs
func azure functionapp list-functions <app-name> --show-keysOr via Azure CLI:
az functionapp function list --name <app-name> --resource-group <resource-group> --query "[].{name:name, href:invokeUrlTemplate}" -o tableTrigger and capture timestamp:
$timestamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss")
$response = Invoke-WebRequest -Uri "<trigger-url>" -UseBasicParsing
Write-Host "HTTP Status: $($response.StatusCode)"
Write-Host "Execution timestamp (UTC): $timestamp"Save the timestamp — you'll need it for log filtering in the next step.
Note: The Deploy script (step 2) already triggers and captures a timestamp. Use this step when you want to re-test without redeploying.
Use the Get-AzureFunctionLogs.ps1 script to download, extract, and analyze logs:
./tracer/tools/Get-AzureFunctionLogs.ps1 `
-AppName "<app-name>" `
-ResourceGroup "<resource-group>" `
-OutputPath $env:TEMP `
-ExecutionTimestamp "<YYYY-MM-DD HH:MM:SS>" `
-AllIMPORTANT: Always specify -OutputPath $env:TEMP to save logs to the system temp folder instead of cluttering the repository directory.
What this does:
Analysis options:
-ShowVersion - Display Datadog tracer version from worker logs-ShowSpans - Count spans at execution timestamp (split by host/worker)-CheckParenting - Validate trace parenting (detect root span duplication)-All - Enable all analysis (recommended)Pipeline usage (with Deploy script):
$deploy = ./tracer/tools/Deploy-AzureFunction.ps1 `
-AppName "<app-name>" `
-ResourceGroup "<resource-group>" `
-SampleAppPath "<path-to-sample-app>"
./tracer/tools/Get-AzureFunctionLogs.ps1 `
-AppName $deploy.AppName `
-ResourceGroup "<resource-group>" `
-OutputPath $env:TEMP `
-ExecutionTimestamp $deploy.ExecutionTimestamp `
-AllLog file patterns:
dotnet-tracer-managed-Microsoft.Azure.WebJobs.Script.WebHost-{pid}.logdotnet-tracer-managed-dotnet-{pid}.logCRITICAL: The script automatically filters logs by execution timestamp. Raw log files are append-only and contain entries from multiple deployments/restarts.
Parenting analysis:
s_id (span ID), p_id (parent ID), t_id (trace ID)t_id as host, p_id matching host span IDst_id or p_id: null (orphaned root)After deployment and testing:
p_id → s_id links)aas.function.process:host or worker)General guidance: For environment variable configuration issues, see environment-variables.md for complete reference on required, recommended, and debugging variables.
First, check if the app is running:
$envCheck = ./.claude/skills/azure-functions/Test-EnvVars.ps1 -AppName "<app-name>" -ResourceGroup "<resource-group>"
if ($envCheck.State -ne "Running") {
Write-Host "App is '$($envCheck.State)' — starting it..."
az functionapp start --name <app-name> --resource-group <resource-group>
}If the app is running but not responding:
# Restart function app
az functionapp restart --name <app-name> --resource-group <resource-group>func azure functionapp publish)If the publish command fails, diagnose with:
# Check recent deployment status
az functionapp deployment list \
--name <app-name> \
--resource-group <resource-group> \
--query "[0].{status:status, message:message, startTime:startTime}" -o table
# Stream live logs to see startup errors
func azure functionapp logstream <app-name>Common causes:
az login and retryaz functionapp start --name <app-name> --resource-group <resource-group>dotnet restore output in the sample app directory# Check all worker initializations
grep "Assembly metadata" LogFiles/datadog/dotnet-tracer-managed-dotnet-*.log
# If old version, rebuild from the dd-trace-dotnet repo root (each build gets a unique version, no cache issues)
./tracer/tools/Build-AzureFunctionsNuget.ps1 -CopyTo <output-dir> -Verbose
# Then restore and redeploy the sample appVerify all required environment variables (including DD_API_KEY, profiler paths, etc.):
./.claude/skills/azure-functions/Test-EnvVars.ps1 -AppName "<app-name>" -ResourceGroup "<resource-group>" -IncludeRecommendedIf all env vars pass, check worker initialization in logs:
grep "Datadog Tracer initialized" LogFiles/datadog/dotnet-tracer-managed-dotnet-*.logComplete reference: See environment-variables.md for all available variables.
p_id: null instead of parent IDs matching host spansaz functionapp config appsettings set --name <app> --resource-group <resource-group> --settings DD_TRACE_DEBUG=1When traces or logs have reached Datadog (e.g., verifying spans look correct, correlating logs with a trace ID), use these scripts. Both require DD_API_KEY and DD_APPLICATION_KEY environment variables.
Retrieve all spans for a trace ID:
# Table view (default)
./tracer/tools/Get-DatadogTrace.ps1 -TraceId "<trace-id>"
# Hierarchy view — shows span parent-child tree with process tags
./tracer/tools/Get-DatadogTrace.ps1 -TraceId "<trace-id>" -OutputFormat hierarchy
# Search further back in time (default: 2h)
./tracer/tools/Get-DatadogTrace.ps1 -TraceId "<trace-id>" -TimeRange "1d"Query logs from Datadog:
./tracer/tools/Get-DatadogLogs.ps1 -Query "service:<app-name>"
./tracer/tools/Get-DatadogLogs.ps1 -Query "service:<app-name> error" -TimeRange "2h" -Limit 100See scripts-reference.md for full parameter reference.
-All analysis isn't sufficient)docs/development/AzureFunctions.mddocs/development/for-ai/AzureFunctions-Architecture.md© DataDog, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files in .claude/skills/azure-functions of DataDog/dd-trace-dotnet.
Open the folder on GitHubat commit 512b980
Azure Functions next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Azure Functions this skillDataDog/dd-trace-dotnet | 573 | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Azure Cloud ServicesMicrosoftDocs/Agent-Skills | 777 | — | ~2.3k | Automated safety check: Pass | CC-BY-4.0 | |
| Nuget Trusted Publishingdotnet/skills | 5.6k | 2 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Azure App Service Securityvinayaklatthe/microsoft-security-skills | 175 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Update Ps SDKAzure/azure-functions-powershell-worker | 216 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Aspiremicrosoft/aspire.dev | 196 | 4 repos | ~1.1k | Automated safety check: Pass | MIT |
MicrosoftDocs/Agent-Skills
Expert knowledge for Azure Cloud Services development including troubleshooting, best practices, decision making, limits & quotas, security, configuration, integrations & coding patterns, and…
dotnet/skills
Set up NuGet trusted publishing (OIDC) on a GitHub Actions repo — replaces long-lived API keys with short-lived tokens.
vinayaklatthe/microsoft-security-skills
Guidance for securing Azure App Service web apps and APIs — managed identity, Easy Auth with Microsoft Entra ID, network isolation via private endpoints + VNet integration, HTTPS / TLS hardening…
Azure/azure-functions-powershell-worker
Upgrade the PowerShell SDK version in the Azure Functions PowerShell language worker.
microsoft/aspire.dev
Orchestrates Aspire distributed applications using the Aspire CLI for running, debugging, and managing distributed apps.
dotnet/dotnet-docker
Manages .NET Docker images including adding images for new .NET versions, new Linux distros (Alpine, Ubuntu, Azure Linux), and new Windows versions.
DataDog/dd-trace-dotnet
Update/bump the libdatadog native library version in dd-trace-dotnet.
DataDog/dd-trace-dotnet
Analyze Azure DevOps CI build failures in dd-trace-dotnet pipeline.
DataDog/dd-trace-dotnet
Error Stack Trace Analysis for dd-trace-dotnet. An agent skill from DataDog/dd-trace-dotnet.
DataDog/dd-trace-dotnet
Stack Trace Crash Analysis for dd-trace-dotnet. An agent skill from DataDog/dd-trace-dotnet.
DataDog/dd-trace-dotnet
Perform a review on a GitHub PR, leaving comments on the PR. An agent skill from DataDog/dd-trace-dotnet.
Categories
Dev/test workflow for tracer engineers working on the Datadog .NET tracer — build a local Datadog.AzureFunctions NuGet package, deploy it to a test Azure Function App, trigger it, and analyze…. Azure Functions is an agent skill from DataDog/dd-trace-dotnet, published by the product's own GitHub organization.AzureFunctions NuGet package, deploy it to a test Azure Function App, trigger it, and analyze traces/logs to verify instrumentation behavior.
Azure Functions fits situations like: analyze traces/logs to verify instrumentation behavior; the user is working on Azure Functions instrumentation: building; testing the Datadog.AzureFunctions NuGet package; deploying to a test Function App.
Run `npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a claude-code`. Or copy the skill folder (.claude/skills/azure-functions in DataDog/dd-trace-dotnet) into .claude/skills/azure-functions in your project. Claude Code loads it when a task matches its description.
Run `npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a codex`. Or copy the skill folder (.claude/skills/azure-functions in DataDog/dd-trace-dotnet) into .agents/skills/azure-functions in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add DataDog/dd-trace-dotnet --skill azure-functions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/azure-functions, .gemini/skills/azure-functions, .github/skills/azure-functions and .opencode/skills/azure-functions in your project.
Going by SKILL.md and its folder, Azure Functions needs PowerShell for the scripts in its folder, the command-line tools its instructions call (az and dotnet) and credentials named DD_API_KEY and DD_APPLICATION_KEY. Our summary lists: PowerShell; A credential in DD_API_KEY. Its frontmatter pre-approves these tools: Bash(pwsh *), Bash(az functionapp show *), Bash(az functionapp list *), Bash(az functionapp list-functions *), Bash(az functionapp function list *), Bash(az functionapp function show *), Bash(az functionapp config appsettings list *), Bash(az functionapp config appsettings set *), Bash(az functionapp config appsettings delete *), Bash(az functionapp config show *), Bash(az functionapp deployment list *), Bash(az functionapp deployment show *), Bash(az functionapp deployment source show *), Bash(az functionapp plan list *), Bash(az functionapp plan show *), Bash(az functionapp restart *), Bash(az functionapp stop *), Bash(az functionapp start *), Bash(az webapp log download *), Bash(az webapp log tail *), Bash(az group list *), Bash(az group show *), Bash(curl *), Bash(func azure functionapp publish *), Bash(func azure functionapp logstream *), Bash(func azure functionapp list-functions *), Bash(func azure functionapp fetch-app-settings *), Bash(func azure functionapp fetch *), Bash(dotnet restore), Bash(dotnet clean), Bash(dotnet build *), Bash(unzip *), Read.
SKILL.md names 3 domains. In commands or code: api.nuget.org; the agent is likely to contact it when it follows the instructions. As links in the text: learn.microsoft.com and dotnet.microsoft.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Azure Functions is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Azure Functions: Azure Cloud Services (MicrosoftDocs/Agent-Skills, 777 stars), Nuget Trusted Publishing (dotnet/skills, 5.6k stars), Azure App Service Security (vinayaklatthe/microsoft-security-skills, 175 stars) and Update Ps SDK (Azure/azure-functions-powershell-worker, 216 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
DataDog (a GitHub organization, an official publisher) maintains it in DataDog/dd-trace-dotnet, which has 573 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.
Source: DataDog/dd-trace-dotnet on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.