agentleFS
srafissrafis/skills/skills/azure-boards/SKILL.md

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

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    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.

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
  1. Distinctive:

    Use the project name defined in AGENTS.md for all Azure Boards commands and paths.

    line 14
  2. Distinctive:

    If the project name is missing in AGENTS.md, ask the user explicitly and do not assume a project name.

    line 15
  3. Distinctive:

    When creating new tickets, always assign them to the latest iteration by default.

    line 17
  4. Distinctive:

    Only use a non-latest iteration when the user explicitly asks for a different one.

    line 18
  5. Very specific:

    If defaults are missing at runtime, ask the user for the missing value(s) and continue with explicit --org / --project flags.

    line 30
  6. Very specific:

    Use Azure CLI commands via az boards.

    line 34
  7. Very specific:

    All arguments are optional except --id.

    line 87
  8. Very specific:

    If you need full details for each result, fetch each returned ID with az boards work-item show --id <id>.

    line 122
  9. Distinctive:

    Remove a relation by relation ID:

    line 151
  10. Distinctive:

    If you pass raw markdown, it displays as literal plain text.

    line 210
  11. Very specific:

    Add a Description: label inside the Description field (it's redundant).

    line 245

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Azure Boards CLI Reference

Required Rules

  • Use the project name defined in AGENTS.md for 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 az CLI and azure-devops extension 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 / --project flags.

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

ArgRequiredNotes
--typeYesTask, Bug, User Story, Issue, Epic, Feature
--titleYesTitle of the work item
--descriptionNoMust be HTML — markdown is NOT rendered (see below)
--assigned-toNoDisplay name or email
--areaNoFull area path via field: System.AreaPath=Project\\Area
--iterationNoIf using this flag in your CLI version, set full path Project\\Sprint 1; otherwise set System.IterationPath via --fields
--stateNoe.g. New, Active, Closed
--reasonNoReason for the state
--tagsNoSemicolon-separated tags
--fieldsNoSpace-separated Key=Value pairs for any field

Common Fields (--fields)

FieldPurposeExample
Microsoft.VSTS.Scheduling.OriginalEstimateEstimate in hours0.5 = 30 min
Microsoft.VSTS.Scheduling.RemainingWorkRemaining hours4
Microsoft.VSTS.Scheduling.CompletedWorkCompleted hours2
Microsoft.VSTS.Common.PriorityPriority (1-4)1 = critical
Microsoft.VSTS.Common.SeverityBug severity2 - 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 12345

Returns 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 --destroy

Query 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 json

If 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 json

Link Work Items (Relations)

az boards work-item relation add \
  --id 100 \
  --relation-type Parent \
  --target-id 200

Relation Types

TypeMeaning
ParentTarget is the parent of --id
ChildTarget is a child of --id
RelatedGeneral related link
PredecessorTarget 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 300

Comments (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 table

Typical 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 5678

CRITICAL: 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:

MarkdownHTML 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.IterationPath in --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".
  • --fields uses full API field names — find them via show on 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.