.claude/skills/azure-devops/SKILL.md
Azure DevOps integration covering pipelines, boards, repos, artifacts, and work item management via Azure CLI and REST API
npx skillsauth add oimiragieo/agent-studio azure-devopsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides comprehensive integration with Azure DevOps including Pipelines, Boards, Repos, Artifacts, and Test Plans. Use it for CI/CD automation, work item tracking, and repository management.
# Install Azure CLI
# Windows: winget install Microsoft.AzureCLI
# macOS: brew install azure-cli
# Linux: curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Install Azure DevOps extension
az extension add --name azure-devops
# Verify installation
az --version
az devops --version
# Login to Azure
az login
# Set default organization and project
az devops configure --defaults organization=https://dev.azure.com/YOUR_ORG project=YOUR_PROJECT
# Verify configuration
az devops configure --list
# Environment variable (recommended for CI)
export AZURE_DEVOPS_EXT_PAT="your-personal-access-token"
# Or use az login with service principal
az login --service-principal \
--username "$AZURE_CLIENT_ID" \
--password "$AZURE_CLIENT_SECRET" \
--tenant "$AZURE_TENANT_ID"
| Scope | Operations |
| --------------------- | -------------------------- |
| vso.work_write | Create/update work items |
| vso.build_execute | Queue and manage pipelines |
| vso.code_write | Read/write repositories |
| vso.packaging_write | Publish artifacts |
| vso.release_execute | Manage release pipelines |
# List pipelines
az pipelines list --output table
# Run a pipeline
az pipelines run --name "CI Pipeline" --branch main
# Run with parameters
az pipelines run \
--name "Deploy Pipeline" \
--branch main \
--parameters environment=staging version=1.2.3
# Get pipeline run status
az pipelines runs show --id RUN_ID
# List recent runs
az pipelines runs list --pipeline-name "CI Pipeline" --status completed --top 10 --output table
# Get pipeline logs
az pipelines runs logs download --run-id RUN_ID --output logs/
# List variables
az pipelines variable list --pipeline-name "CI Pipeline"
# Create/update variable
az pipelines variable create \
--name DEPLOY_TARGET \
--value production \
--pipeline-name "CI Pipeline"
# Create secret variable
az pipelines variable create \
--name API_SECRET \
--value "secret-value" \
--secret true \
--pipeline-name "CI Pipeline"
# Delete variable
az pipelines variable delete --name DEPLOY_TARGET --pipeline-name "CI Pipeline"
# azure-pipelines.yml
trigger:
branches:
include:
- main
- feature/*
paths:
exclude:
- docs/*
pr:
branches:
include:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
buildConfiguration: 'Release'
NODE_VERSION: '20.x'
stages:
- stage: Build
displayName: 'Build and Test'
jobs:
- job: BuildJob
steps:
- task: NodeTool@0
inputs:
versionSpec: $(NODE_VERSION)
- script: |
npm ci
npm run build
npm test
displayName: 'Install, Build, Test'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-results.xml'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
- stage: Deploy
displayName: 'Deploy to Production'
dependsOn: Build
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: DeployJob
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- script: echo "Deploying to production"
# List release definitions
az pipelines release definition list --output table
# Create release
az pipelines release create \
--definition-name "Release Pipeline" \
--artifact-metadata-list "build=CI Pipeline:1.2.3"
# List releases
az pipelines release list --definition-name "Release Pipeline" --output table
# Create work item
az boards work-item create \
--type "User Story" \
--title "As a user, I can reset my password" \
--description "Implement password reset flow" \
--assigned-to "[email protected]" \
--area "MyProject\Frontend"
# Show work item
az boards work-item show --id 123
# Update work item
az boards work-item update \
--id 123 \
--state "Active" \
--assigned-to "[email protected]"
# Delete work item
az boards work-item delete --id 123 --yes
# Query work items with WIQL
az boards query \
--wiql "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.TeamProject] = 'MyProject' AND [System.State] = 'Active' ORDER BY [System.CreatedDate] DESC"
# Query by iteration (sprint)
az boards query \
--wiql "SELECT * FROM WorkItems WHERE [System.IterationPath] = 'MyProject\\Sprint 10' AND [System.WorkItemType] = 'Task'"
# Add child work item
az boards work-item relation add \
--id 100 \
--relation-type "Child" \
--target-id 101
# List relations
az boards work-item relation list-type
# List repositories
az repos list --output table
# Show repo details
az repos show --repository MyRepo
# Create repository
az repos create --name "new-service"
# List PRs
az repos pr list --status active --output table
# Create PR
az repos pr create \
--title "Feature: Add authentication" \
--description "Implements JWT auth with refresh tokens" \
--source-branch feature/auth \
--target-branch main \
--reviewers "[email protected]" \
--work-items 123 456
# Show PR details
az repos pr show --id PR_ID
# Approve PR
az repos pr set-vote --id PR_ID --vote approve
# Complete (merge) PR
az repos pr update \
--id PR_ID \
--status completed \
--merge-strategy merge
# Add PR comment
az repos pr policy list --id PR_ID
# List branch policies
az repos policy list --branch main --output table
# Enable required reviewer policy
az repos policy required-reviewer create \
--branch main \
--is-blocking true \
--is-enabled true \
--minimum-approver-count 2 \
--repository-id REPO_ID
# Enable build validation policy
az repos policy build create \
--branch main \
--is-blocking true \
--is-enabled true \
--build-definition-id BUILD_DEF_ID \
--repository-id REPO_ID
# Base URL pattern
BASE_URL="https://dev.azure.com/$ORG/$PROJECT/_apis"
# Get commits
curl -u ":$AZURE_DEVOPS_EXT_PAT" \
"$BASE_URL/git/repositories/REPO_ID/commits?api-version=7.1&searchCriteria.itemVersion.version=main&searchCriteria.\$top=10"
# Get file content
curl -u ":$AZURE_DEVOPS_EXT_PAT" \
"$BASE_URL/git/repositories/REPO_ID/items?path=/src/app.ts&api-version=7.1"
# List feeds
az artifacts feed list --output table
# Create feed
az artifacts feed create --name my-packages
# Show feed
az artifacts feed show --name my-packages
# Authenticate for npm
az artifacts feeds authenticate --feed my-packages
# Configure .npmrc for Azure Artifacts
FEED_URL="https://pkgs.dev.azure.com/ORG/_packaging/my-packages/npm/registry/"
cat > .npmrc << EOF
registry=${FEED_URL}
always-auth=true
; ${FEED_URL}:username=PAT
; ${FEED_URL}:_password=$(echo -n "$AZURE_DEVOPS_EXT_PAT" | base64)
EOF
# Publish package
npm publish
# Add Azure Artifacts as NuGet source
az artifacts feeds show --name my-packages --query nugetInfo.url --output tsv
dotnet nuget add source \
"https://pkgs.dev.azure.com/ORG/_packaging/my-packages/nuget/v3/index.json" \
--name azure-artifacts \
--username PAT \
--password "$AZURE_DEVOPS_EXT_PAT"
# Push package
dotnet nuget push "*.nupkg" --source azure-artifacts
{
"mcpServers": {
"azure-devops": {
"command": "npx",
"args": ["-y", "@tiberriver256/mcp-server-azure-devops"],
"env": {
"AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/YOUR_ORG",
"AZURE_DEVOPS_PAT": "your-personal-access-token",
"AZURE_DEVOPS_DEFAULT_PROJECT": "YOUR_PROJECT"
}
}
}
}
Add to .claude/settings.json under mcpServers for agent-studio integration.
azure_devops_get_work_item — Retrieve work item by IDazure_devops_create_work_item — Create new work itemazure_devops_update_work_item — Update work item fieldsazure_devops_list_work_items — Query work itemsazure_devops_get_pipeline — Get pipeline definitionazure_devops_run_pipeline — Trigger pipeline runazure_devops_get_pipeline_run — Get run status and logsazure_devops_list_repos — List repositoriesazure_devops_create_pr — Create pull requestazure_devops_get_pr — Get PR details# Helper function for Azure DevOps REST API
ado_api() {
local method="$1"
local path="$2"
local data="$3"
local org="${AZURE_DEVOPS_ORG:-your-org}"
local project="${AZURE_DEVOPS_PROJECT:-your-project}"
local url="https://dev.azure.com/$org/$project/_apis/$path"
curl -s \
-u ":$AZURE_DEVOPS_EXT_PAT" \
-X "$method" \
-H "Content-Type: application/json" \
${data:+-d "$data"} \
"$url"
}
# Get project info
ado_api GET "projects?api-version=7.1" | jq '.value[] | {name, state}'
# Queue build
ado_api POST "build/builds?api-version=7.1" '{
"definition": {"id": 1},
"sourceBranch": "refs/heads/main"
}' | jq '{id, status, buildNumber}'
# On pipeline trigger: automatically transition work item to "In Progress"
update_work_items_on_build_start() {
local build_source_branch="$1"
# Extract work item IDs from branch name (e.g., feature/AB#123-my-feature)
local item_ids
item_ids=$(echo "$build_source_branch" | grep -oP 'AB#\K[0-9]+')
for item_id in $item_ids; do
az boards work-item update \
--id "$item_id" \
--state "Active" \
--discussion "Build started for $(git log -1 --format='%H %s')"
echo "Updated work item $item_id to Active"
done
}
# On deployment success: close work items and notify
close_work_items_on_deploy() {
local work_item_ids=("$@")
for item_id in "${work_item_ids[@]}"; do
az boards work-item update \
--id "$item_id" \
--state "Closed" \
--discussion "Deployed to production successfully"
done
}
# Generate sprint summary
generate_sprint_report() {
local iteration="${1:-@CurrentIteration}"
echo "# Sprint Report: $(date +%Y-%m-%d)"
echo ""
# Completed stories
echo "## Completed"
az boards query \
--wiql "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.IterationPath] = '$iteration' AND [System.State] = 'Closed'" \
--query "workItems[].fields.[\"System.Title\"]" \
--output tsv | while read -r title; do
echo "- $title"
done
# In progress
echo ""
echo "## In Progress"
az boards query \
--wiql "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.IterationPath] = '$iteration' AND [System.State] = 'Active'" \
--query "workItems[].fields.[\"System.Title\"]" \
--output tsv | while read -r title; do
echo "- $title"
done
}
| Variable | Description | Required |
| ---------------------- | ------------------------ | ----------- |
| AZURE_DEVOPS_EXT_PAT | Personal Access Token | Yes |
| AZURE_DEVOPS_ORG | Organization name | Yes |
| AZURE_DEVOPS_PROJECT | Default project | Recommended |
| AZURE_CLIENT_ID | Service principal app ID | For SP auth |
| AZURE_CLIENT_SECRET | Service principal secret | For SP auth |
| AZURE_TENANT_ID | Azure AD tenant ID | For SP auth |
# Check Azure CLI authentication status
az account show
# Validate DevOps extension
az devops configure --list
# Debug API calls with verbose output
az pipelines run --name "CI" --debug 2>&1 | grep -A3 "Request"
# Common errors:
# TF401019: Project not found → check --project flag
# TF20012: Invalid PAT → regenerate token with correct scopes
# VS402371: Rate limit → implement exponential backoff
devops — General DevOps patterns and CI/CD workflowsatlassian-integration — Jira/Confluence alternative for project managementgithub-ops — GitHub alternative for source control and CI/CDterraform-infra — Infrastructure as Code for Azure resourcestools
Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
tools
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
data-ai
Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
development
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.