Efficiently update multiple Azure DevOps work items at once. Use when the user wants to update many work items, bulk state changes, mass updates, batch operations, or update work items in a loop. Use when user mentions "bulk", "batch", "multiple items", "all tasks", "update several", or "mass update".
View on GitHubJoshuaRamirez/ms-ado-az-claude-code-plugin
ado-work-items
skills/bulk-operations/SKILL.md
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/JoshuaRamirez/ms-ado-az-claude-code-plugin/blob/main/skills/bulk-operations/SKILL.md -a claude-code --skill bulk-operationsInstallation paths:
.claude/skills/bulk-operations/# Bulk Operations Reference (Verified) ## Performance Insight **Direct bash for loops are approximately 10x faster than sub-agents for bulk operations.** This is because: 1. No agent spawning overhead 2. Direct CLI execution 3. Can use `-o none` to skip JSON parsing ## Recommended Patterns ### Fast Bulk State Update ```bash # Update multiple work items to same state for id in 1858 1859 1860; do az boards work-item update --id $id --state "Done" -o none && echo "Updated $id" done ``` ### Update from Query Results ```bash # Query IDs then update each ids=$(az boards query --wiql "SELECT [System.Id] FROM WorkItems WHERE [System.State] = 'Active' AND [System.TeamProject] = 'ProjectName'" -o tsv | cut -f1) for id in $ids; do az boards work-item update --id $id --state "Resolved" -o none && echo "Updated $id" done ``` ### Bulk Assignment ```bash for id in 1001 1002 1003; do az boards work-item update --id $id --assigned-to "user@domain.com" -o none && echo "Assigned $id" done ``` ### Bulk Field Update ```bash for id in 1001 1002 1003; do az boards work-item update --id $id --fields "Microsoft.VSTS.Common.Priority=1" -o none && echo "Updated priority for $id" done ``` ### Bulk Add Discussion Comment ```bash for id in 1001 1002 1003; do az boards work-item update --id $id --discussion "Reviewed in sprint planning" -o none && echo "Commented on $id" done ``` ## Output Optimization Use `-o none` to suppress JSON output when you don't need the response: ```bash # With output (slower) az boards work-item update --id 1234 --state "Done" -o json # Without output (faster) az boards work-item update --id 1234 --state "Done" -o none ``` ## Error Handling ### Continue on Error ```bash for id in 1001 1002 1003; do az boards work-item update --id $id --state "Done" -o none 2>/dev/null && echo "OK: $id" || echo "FAIL: $id" done ``` ### Stop on First Error ```bash for id in 1001 1002 1003; do az boards work-item update --id $id --state "Done" -o none