azure-boards
Skill2 starsChanged 6 months agoMITView on GitHub
Use when the user asks to manage Azure Boards work items with Azure CLI (`az boards`), including creating, updating, deleting, linking, querying tasks, bugs, user stories, sprints, Azure DevOps boards, or other Azure Boards operations.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- MicrosoftDocs/Agent-Skillstheir own version, first seen Jun 16, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- MicrosoftDocs/Agent-Skills★ 808same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- skills/humanizer/AGENTS.mdAGENTS.md
- azure-ticket-draftingSkill
- clockifySkill
- costSkill
- humanizerSkill
- meeting-momSkill
- quickSkill
- ship-workSkill
- ui-ux-pro-maxSkill
- video-to-transcriptSkill
- workSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 6 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Use the project name defined in AGENTS.md for all Azure Boards commands and paths.
- Distinctive: line 15
If the project name is missing in AGENTS.md, ask the user explicitly and do not assume a project name.
- Distinctive: line 17
When creating new tickets, always assign them to the latest iteration by default.
- Distinctive: line 18
Only use a non-latest iteration when the user explicitly asks for a different one.
- Very specific: line 30
If defaults are missing at runtime, ask the user for the missing value(s) and continue with explicit --org / --project flags.
- Very specific: line 34
Use Azure CLI commands via az boards.
- Very specific: line 87
All arguments are optional except --id.
- Very specific: line 122
If you need full details for each result, fetch each returned ID with az boards work-item show --id <id>.
- Distinctive: line 151
Remove a relation by relation ID:
- Distinctive: line 210
If you pass raw markdown, it displays as literal plain text.
- Very specific: line 245
Add a Description: label inside the Description field (it's redundant).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Azure Boards CLI Reference
Required Rules
- Use the project name defined in
AGENTS.mdfor all Azure Boards commands and paths. - If the project name is missing in
AGENTS.md, ask the user explicitly and do not assume a project name. - For "assigned to me" lookups or assigning tickets to the user, use the value from
AZURE_DEVOPS_USERNAME. - When creating new tickets, always assign them to the latest iteration by default.
- Only use a non-latest iteration when the user explicitly asks for a different one.
Configuration
Required environment variable:
AZURE_DEVOPS_USERNAME— used for "assigned to me" lookups and assignments to the current user.
Rules:
- Assume
azCLI andazure-devopsextension are already installed and authenticated. - Assume Azure DevOps defaults (
organization,project) are already configured in the environment. - If defaults are missing at runtime, ask the user for the missing value(s) and continue with explicit
--org/--projectflags.
Execution Model
Use Azure CLI commands via az boards.
Create Work Item
az boards work-item create \
--type "Task" \
--title "My Task" \
--description "<p>HTML description here</p>" \
--assigned-to "user@example.com" \
--fields "System.IterationPath=Project\\Sprint 1" "Microsoft.VSTS.Scheduling.OriginalEstimate=2" \
--tags "frontend;urgent"Key Arguments
| Arg | Required | Notes |
--type | Yes | Task, Bug, User Story, Issue, Epic, Feature |
--title | Yes | Title of the work item |
--description | No | Must be HTML — markdown is NOT rendered (see below) |
--assigned-to | No | Display name or email |
--area | No | Full area path via field: System.AreaPath=Project\\Area |
--iteration | No | If using this flag in your CLI version, set full path Project\\Sprint 1; otherwise set System.IterationPath via --fields |
--state | No | e.g. New, Active, Closed |
--reason | No | Reason for the state |
--tags | No | Semicolon-separated tags |
--fields | No | Space-separated Key=Value pairs for any field |
Common Fields (--fields)
| Field | Purpose | Example |
Microsoft.VSTS.Scheduling.OriginalEstimate | Estimate in hours | 0.5 = 30 min |
Microsoft.VSTS.Scheduling.RemainingWork | Remaining hours | 4 |
Microsoft.VSTS.Scheduling.CompletedWork | Completed hours | 2 |
Microsoft.VSTS.Common.Priority | Priority (1-4) | 1 = critical |
Microsoft.VSTS.Common.Severity | Bug severity | 2 - High |
Update Work Item
az boards work-item update \
--id 12345 \
--state "Active" \
--assigned-to "user@example.com" \
--fields "Microsoft.VSTS.Scheduling.RemainingWork=2"All arguments are optional except --id. Only provided fields are updated.
Get / Show Work Item
az boards work-item show --id 12345Returns work item JSON including core fields and links.
Delete Work Item
# Soft delete (recycle bin)
az boards work-item delete --id 12345 --yes
# Permanent delete
az boards work-item delete --id 12345 --yes --destroyQuery Work Items (WIQL)
az boards query \
--wiql "SELECT [System.Id] FROM WorkItems WHERE [System.IterationPath] = 'Project\Sprint 1' AND [System.WorkItemType] = 'Task'" \
--top 50 \
--output jsonIf you need full details for each result, fetch each returned ID with az boards work-item show --id <id>.
az boards query \
--wiql "SELECT [System.Id] FROM WorkItems WHERE [System.AssignedTo] = 'Kamaljot Singh' AND [System.State] = 'Active'" \
--output jsonLink Work Items (Relations)
az boards work-item relation add \
--id 100 \
--relation-type Parent \
--target-id 200Relation Types
| Type | Meaning |
Parent | Target is the parent of --id |
Child | Target is a child of --id |
Related | General related link |
Predecessor | Target must complete before --id |
Successor | --id must complete before target |
Remove a relation by relation ID:
az boards work-item relation remove \
--id 100 \
--relation-id 300Comments (Discussion)
# Add a comment
az boards work-item update \
--id 12345 \
--discussion "<p>Investigation complete — root cause is X.</p>"Iteration / Sprint Management
# List all iterations
az boards iteration project list
# Filter by timeframe
az boards iteration team list --timeframe current
# Show the current (or latest) iteration
az boards iteration team list --timeframe current --output tableTypical Workflow: Create Task Under User Story
Two-step workflow with direct CLI:
az boards work-item create \
--type "Task" \
--title "Implement feature X" \
--description "<p>Details here</p>" \
--assigned-to "user@example.com" \
--fields "Microsoft.VSTS.Scheduling.OriginalEstimate=4"
az boards work-item relation add \
--id <new-task-id> \
--relation-type Parent \
--target-id 5678CRITICAL: Description and comment fields require HTML, NOT markdown
The --description and --discussion (comment) fields are rendered by Azure DevOps as HTML.
If you pass raw markdown, it displays as literal plain text.
Always use HTML tags:
<h2>Summary</h2>
<p>Explanation with <code>inline code</code> and <b>bold</b>.</p>
<h2>Steps to reproduce</h2>
<ol>
<li>First step.</li>
<li>Second step.</li>
</ol>
<h2>Acceptance criteria</h2>
<ul>
<li>Endpoint returns <b>200</b> for valid input.</li>
</ul>Quick mapping:
| Markdown | HTML equivalent |
## Heading | <h2>Heading</h2> |
**bold** | <b>bold</b> |
`code` | <code>code</code> |
- item | <ul><li>item</li></ul> |
1. item | <ol><li>item</li></ol> |
| paragraph break | <p>text</p> or <br> |
Do NOT:
- Pass raw markdown to
--description— it will render as a single blob of text. - Repeat the work item title inside Description (it's already in
System.Title). - Add a
**Description:**label inside the Description field (it's redundant).
Gotchas
- Description is HTML, not markdown — see section above. This is the #1 mistake.
- Parent link is a separate step — create the work item first, then link parent/child with
relation add. - Set iteration explicitly when creating — use
System.IterationPathin--fields(latest/current iteration by default unless user asks otherwise). - Estimate fields are in hours —
0.5= 30 minutes,8= one day. - Work item types are case-sensitive —
"User Story"not"user story". --fieldsuses full API field names — find them viashowon an existing item.- Sprint board visibility — tickets won't appear on a sprint taskboard if unassigned and the board is filtered by person. Always set
--assigned-to.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

