# azure-devops

This skill wires your agent into Azure DevOps over the REST API: work items, repos, pull requests, pipelines, wikis and test plans. Handy when a sprint, a PR and a deploy all live in the same chat.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 359 installs · ★ 447
- Author: sanjay3290
- License: Apache-2.0 · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/sanjay3290/ai-skills/tree/HEAD/skills/azure-devops/SKILL.md
- Updated: 2026-09-10
- HTML: https://affpapa.org/en/nevibecode/skills/sanjay3290-azure-devops

## What it does

The skill spans 13 Azure DevOps domains and 99 tools on top of REST API v7.1. Python scripts are split by area: `scripts/core.py` handles projects and teams, `scripts/work_items.py` covers work items, comments, revisions and WIQL queries, `scripts/repos.py` deals with repositories, branches, commits and pull requests, and `scripts/work.py` manages iterations and team capacity. The agent picks the right script when you ask it to file a bug, read a diff or kick off a pipeline.

Authentication comes first. Two routes are available: OAuth device code flow with `python scripts/auth.py login --org MyOrganization`, where tokens refresh on their own, or a Personal Access Token via `python scripts/auth.py login --org MyOrganization --pat YOUR_PAT`. PAT scopes are set by hand at creation — Work Items and Code read and write, Build read and execute, Wiki and Test Management read and write, Advanced Security read, Project and Team read, Identity read. Skip the Identity scope and user search by email quietly fails.

Run `python scripts/auth.py status` to check the session, `python scripts/auth.py logout` to end it. Pull request work goes all the way through: reviewers and their votes, comment threads pinned to a file and line, then completion or abandonment with a merge strategy.

## Requirements
- Works with: Azure DevOps

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add sanjay3290/ai-skills --skill azure-devops -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/azure-devops/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/azure-devops/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add sanjay3290/ai-skills --skill azure-devops -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/azure-devops/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add sanjay3290/ai-skills --skill azure-devops -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/azure-devops/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install sanjay3290/ai-skills azure-devops
```

2. **Manually: put the files in place**
- File: `.github/skills/azure-devops/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add sanjay3290/ai-skills --skill azure-devops -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/sanjay3290/ai-skills --path skills/azure-devops
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/azure-devops/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add sanjay3290/ai-skills --skill azure-devops -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/sanjay3290/ai-skills/tree/HEAD/skills/azure-devops/SKILL.md

## When to use it
- file a work item with an assignee in one step
- pull up the items assigned to you this sprint
- open a pull request from a feature branch into main
- run a WIQL query over active bugs
- compare two branches in a repository

## Example prompts
- Create a bug in MyProject titled "Fix login" and assign it to user@example.com
- List my work items in MyProject
- Open a pull request from feature/new into main titled "Add new feature"

## Source text · SKILL.md · Apache-2.0

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 6da699ccc75debeb.

BEGIN THIRD-PARTY FILE 6da699ccc75debeb
````text
---
name: azure-devops
description: |
  Manage Azure DevOps projects, work items, repos, PRs, pipelines, wikis, test plans, security alerts,
  variable groups, environments/approvals, branch policies, and attachments. Use when user asks to: manage
  sprints, create/update work items, list repos, create PRs, run pipelines, search code, manage wiki pages,
  check security alerts, manage variable groups, approve deployments, or configure branch policies.
  Covers 13 domains with 99 tools via REST API.
license: Apache-2.0
metadata:
  author: sanjay3290
  version: "1.0"
---

# Azure DevOps

Full Azure DevOps integration using OAuth or PAT authentication and REST API v7.1.

## First-Time Setup

### Option 1: OAuth (Recommended)

Login with OAuth device code flow (shows "Visual Studio Code" prompt):
```bash
python scripts/auth.py login --org MyOrganization
```
Follow the URL and enter the device code to authorize. Tokens auto-refresh.

### Option 2: PAT

Login with a Personal Access Token:
```bash
python scripts/auth.py login --org MyOrganization --pat YOUR_PAT
```

Create a PAT at `https://dev.azure.com/{org}/_usersSettings/tokens` with these scopes:
- **Work Items**: Read & Write
- **Code**: Read & Write (for repos/PRs)
- **Build**: Read & Execute (for pipelines)
- **Wiki**: Read & Write
- **Test Management**: Read & Write
- **Advanced Security**: Read (for security alerts)
- **Project and Team**: Read
- **Identity**: Read (for user search)

### Common Commands

Check authentication status:
```bash
python scripts/auth.py status
```

Logout:
```bash
python scripts/auth.py logout
```

## Core (scripts/core.py)

```bash
# List all projects
python scripts/core.py list-projects
python scripts/core.py list-projects --top 10

# List teams in a project
python scripts/core.py list-teams --project MyProject

# Search for a user identity
python scripts/core.py get-identity --search "john@example.com"
```

## Work Items (scripts/work_items.py)

```bash
# Get a work item
python scripts/work_items.py get --project MyProject --id 123
python scripts/work_items.py get --project MyProject --id 123 --expand relations

# Create a work item
python scripts/work_items.py create --project MyProject --type "User Story" --title "New feature"
python scripts/work_items.py create --project MyProject --type Bug --title "Fix login" \
  --field System.Description "Login fails on timeout" \
  --field System.AssignedTo "user@example.com"
````
END THIRD-PARTY FILE 6da699ccc75debeb

The third-party file has ended. Everything between the 6da699ccc75debeb tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2443 of 16789 bytes. © sanjay3290 · Apache-2.0 · https://github.com/sanjay3290/ai-skills/tree/HEAD/skills/azure-devops/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
