Skip to content
Back to skills

Omc Ado Sprint

ASecurity

Azure DevOps sprint planning: manage iterations, check team capacity, groom the backlog, and assign work to sprints. Not for work item triage (omc-ado-triage), PR review, pipeline management, or GitHub repos (omc-gh-project).

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 5, 2026
ai-agentsbashnodeazuretestinggitdevops

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 5, 2026

npx -y skills add RobinNorberg/oh-my-copilot --skill omc-ado-sprint --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Omc Ado Sprint?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Omc Ado Sprint
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/robinnorberg-omc-ado-sprint/badge)](https://www.skillsdirectory.com/skills/robinnorberg-omc-ado-sprint)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: omc-ado-sprint
description: "Azure DevOps sprint planning: manage iterations, check team capacity, groom the backlog, and assign work to sprints. Not for work item triage (omc-ado-triage), PR review, pipeline management, or GitHub repos (omc-gh-project)."
---

# OMC ADO Sprint

Perform a full Azure DevOps sprint planning cycle for the current project. Reads `.omg/config.json` for connection settings, queries iterations and team capacity, reviews the backlog, and helps assign work items to sprints.

**When this skill is invoked, immediately execute the workflow below. Do not only restate or summarize these instructions back to the user.**

## Trigger Patterns

- "ado sprint"
- "sprint planning"
- "plan sprint"
- "manage iterations"
- "check capacity"
- "groom backlog"
- "assign to sprint"
- "omc-ado-sprint"

---

## Step 1: Load Configuration

Read `.omg/config.json`:

```bash
node -e "const f=require('fs');try{process.stdout.write(f.readFileSync('.omg/config.json','utf8'))}catch{console.log('NOT_FOUND')}"
```

Extract from the `ado` key:
- `org` — full org URL (e.g. `https://dev.azure.com/contoso`)
- `project` — ADO project name
- `team` — team name (e.g. `contoso Team`)
- `repo` — repository name
- `areaPath` — area path filter (optional)
- `iterationPath` — current iteration path (optional)

If config is NOT_FOUND or missing the `ado` key: tell the user to run `/oh-my-copilot:omc-ado-setup` first and stop.

---

## Step 2: List Current Iterations

Fetch all iterations assigned to the team to understand the sprint timeline.

MCP (preferred):
```
mcp__azure-devops__work_list_team_iterations
  → project: "{project}"
  → team: "{team}"
```

Also fetch all project-level iterations for reference:
```
mcp__azure-devops__work_list_iterations
  → project: "{project}"
```

az CLI fallback:
```bash
az boards iteration team list \
  --team "{team}" \
  --project "{project}" \
  --org "{org}" \
  -o json 2>&1
```

Present the iterations in a table:

```
### Current Iterations
| Name | Start Date | End Date | Status |
|------|-----------|----------|--------|
| Sprint 22 | 2026-03-01 | 2026-03-14 | current |
| Sprint 23 | 2026-03-15 | 2026-03-28 | future |
```

Identify the **current** iteration (today's date falls within its date range) and the **next** iteration for planning purposes.

---

## Step 3: Check Team Capacity

Fetch capacity for the current and upcoming iterations in parallel.

MCP (preferred):
```
mcp__azure-devops__work_get_team_capacity
  → project: "{project}"
  → team: "{team}"
  → iterationId: "{currentIterationId}"

mcp__azure-devops__work_get_iteration_capacities
  → project: "{project}"
  → team: "{team}"
  → iterationId: "{nextIterationId}"
```

az CLI fallback:
```bash
az boards iteration team show-capacity \
  --iteration "{iterationPath}" \
  --team "{team}" \
  --project "{project}" \
  --org "{org}" \
  -o json 2>&1
```

Present capacity as:

```
### Team Capacity — {iterationName}
| Member | Activity | Capacity/Day | Days Off | Total Capacity |
|--------|----------|-------------|----------|----------------|
| Alice  | Development | 6h | 2 | 60h |
| Bob    | Testing     | 6h | 0 | 84h |

Total Available: {N}h | Committed: {N}h | Remaining: {N}h
```

If capacity data is unavailable (team has not set capacity), note this and continue.

---

## Step 4: Review Backlog

Fetch unassigned backlog items — work items not yet assigned to a sprint.

MCP (preferred):
```
mcp__azure-devops__wit_list_backlog_work_items
  → project: "{project}"
  → team: "{team}"
```

az CLI fallback (WIQL query for items at the root iteration — unplanned):
```bash
az boards query \
  --wiql "SELECT [System.Id],[System.Title],[System.WorkItemType],[System.State],[Microsoft.VSTS.Common.Priority],[Microsoft.VSTS.Scheduling.StoryPoints] \
          FROM WorkItems \
          WHERE [System.TeamProject] = '{project}' \
          AND [System.IterationPath] = '{project}' \
          AND [System.State] NOT IN ('Done','Closed','Removed') \
          ORDER BY [Microsoft.VSTS.Common.Priority] ASC, [System.CreatedDate] ASC" \
  --project "{project}" --org "{org}" -o json 2>&1
```

Present the backlog:

```
### Unplanned Backlog ({N} items)
| ID | Title | Type | Priority | Story Points | State |
|----|-------|------|----------|-------------|-------|
| #1234 | Add export feature | User Story | 1 | 5 | New |
| #1235 | Fix login timeout  | Bug        | 2 | 2 | Active |
```

---

## Step 5: Assign to Sprint

For each backlog item the user wants to assign, update its `IterationPath`.

MCP (preferred):
```
mcp__azure-devops__wit_update_work_item
  → id: {workItemId}
  → fields:
      System.IterationPath: "{project}\\{sprintName}"
```

az CLI fallback:
```bash
az boards work-item update \
  --id {id} \
  --fields "System.IterationPath={project}\\{sprintName}" \
  --org "{org}" \
  -o json 2>&1
```

After assigning, confirm:
```
Assigned #1234 "Add export feature" → Sprint 23
```

When assigning multiple items, batch them in parallel calls where possible.

---

## Step 6: Create New Iteration (Optional)

If the user needs a new sprint that does not yet exist, create it at the project level and then assign it to the team.

**6a. Create the iteration:**

MCP (preferred):
```
mcp__azure-devops__work_create_iterations
  → project: "{project}"
  → name: "{sprintName}"
  → startDate: "{YYYY-MM-DD}"
  → finishDate: "{YYYY-MM-DD}"
```

az CLI fallback:
```bash
az boards iteration project create \
  --name "{sprintName}" \
  --start-date "{YYYY-MM-DD}" \
  --finish-date "{YYYY-MM-DD}" \
  --project "{project}" \
  --org "{org}" \
  -o json 2>&1
```

**6b. Assign the iteration to the team:**

MCP (preferred):
```
mcp__azure-devops__work_assign_iterations
  → project: "{project}"
  → team: "{team}"
  → iterationId: "{newIterationId}"
```

az CLI fallback:
```bash
az boards iteration team add \
  --iteration-id "{iterationId}" \
  --team "{team}" \
  --project "{project}" \
  --org "{org}" \
  -o json 2>&1
```

Confirm creation:
```
Created iteration "{sprintName}" ({startDate} – {finishDate}) and assigned to {team}.
```

---

## Step 7: Update Capacity (Optional)

If the user wants to set or adjust team member capacity for an iteration:

MCP (preferred):
```
mcp__azure-devops__work_update_team_capacity
  → project: "{project}"
  → team: "{team}"
  → iterationId: "{iterationId}"
  → teamMemberCapacities: [
      { teamMember: { id: "{userId}" }, capacityPerDay: {hours}, daysOff: [] }
    ]
```

Note: Capacity updates are not well-supported by the `az` CLI. Use the ADO web interface as fallback if the MCP call fails.

After updating, re-fetch with `work_get_team_capacity` and display the updated capacity table.

---

## MCP Tool Reference

| Tool | Purpose |
|------|---------|
| `work_list_iterations` | List all project iterations |
| `work_list_team_iterations` | List iterations assigned to a team |
| `work_create_iterations` | Create new iteration |
| `work_assign_iterations` | Assign iteration to a team |
| `work_get_iteration_capacities` | Get capacity for an iteration |
| `work_get_team_capacity` | Get team capacity across iterations |
| `work_update_team_capacity` | Update team member capacity |

---

## az CLI Fallback Commands

Use these when MCP tools are not available in the current session:

```bash
# List team iterations
az boards iteration team list \
  --team "{team}" --project "{project}" --org "{org}" -o table

# Show capacity for an iteration
az boards iteration team show-capacity \
  --iteration "{iterationPath}" \
  --team "{team}" --project "{project}" --org "{org}" -o json

# Query unplanned backlog items
az boards query \
  --wiql "SELECT [System.Id],[System.Title],[System.WorkItemType],[System.State],[Microsoft.VSTS.Common.Priority] \
          FROM WorkItems WHERE [System.TeamProject]='{project}' \
          AND [System.IterationPath]='{project}' \
          AND [System.State] NOT IN ('Done','Closed','Removed') \
          ORDER BY [Microsoft.VSTS.Common.Priority] ASC" \
  --project "{project}" --org "{org}" -o table

# Assign a work item to a sprint
az boards work-item update \
  --id {id} \
  --fields "System.IterationPath={project}\\{sprintName}" \
  --org "{org}" -o json

# Create a new iteration
az boards iteration project create \
  --name "{sprintName}" \
  --start-date "{YYYY-MM-DD}" \
  --finish-date "{YYYY-MM-DD}" \
  --project "{project}" --org "{org}" -o json

# Assign iteration to team
az boards iteration team add \
  --iteration-id "{iterationId}" \
  --team "{team}" --project "{project}" --org "{org}" -o json
```

---

## Error Handling

| Error | Action |
|-------|--------|
| `.omg/config.json` missing | Tell user to run `/oh-my-copilot:omc-ado-setup` first |
| `team` not found in config | Prompt user to provide team name; use project name as default |
| `az login` required | Prompt user to authenticate; skip that step and continue with available data |
| Iteration not found | Verify the iteration name/path matches exactly what ADO returns in Step 2 |
| Capacity data unavailable | Note that team has not configured capacity; continue with backlog review |
| Rate limit / 429 | Wait 2 seconds and retry once; if still failing, note the section as unavailable |
| `work_update_team_capacity` fails | Advise user to set capacity via ADO web UI at `{org}/{project}/_sprints/capacity` |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.