Skip to content
Back to skills

Azure Devops Changelog Generator

ASecurity

Generate release notes and cards from Azure DevOps TFVC changesets or Git commits. Trigger this skill whenever the user mentions TFVC changesets, Git commits, Azure DevOps work items, 'generate changelog', 'cards.md', or 'release notes'. The skill asks for the Azure DevOps organization name, fetches work items via Azure DevOps APIs (requires $DEVOPS_PAT), analyzes descriptions and discussion, and produces cards.md and changelog.md grouped by Azure DevOps project name.

  • 17 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 31, 2026
documentationshellazuretestinggitapidevopsdocumentation

Works with

  • api

Security analysis

A100/100

Scanned May 31, 2026

npx -y skills add gabrielmoreira/agent-skills-mirror --skill azure-devops-changelog-generator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Azure Devops Changelog Generator?

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

Security grade badge for Azure Devops Changelog Generator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gabrielmoreira-azure-devops-changelog-generator/badge)](https://www.skillsdirectory.com/skills/gabrielmoreira-azure-devops-changelog-generator)

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: azure-devops-changelog-generator
title: "Azure DevOps Release Changelog Generator"
description: "Generate release notes and cards from Azure DevOps TFVC changesets or Git commits. Trigger this skill whenever the user mentions TFVC changesets, Git commits, Azure DevOps work items, 'generate changelog', 'cards.md', or 'release notes'. The skill asks for the Azure DevOps organization name, fetches work items via Azure DevOps APIs (requires $DEVOPS_PAT), analyzes descriptions and discussion, and produces cards.md and changelog.md grouped by Azure DevOps project name."
author: "Christian Fleishmann Silva (Oglaf)"
version: "2.0.0"
tags:
  - azure-devops
  - tfvc
  - git
  - changelog
  - release-notes
inputs:
  - name: version_control_type
    type: string
    description: "Type of version control: 'TFVC' for changesets or 'Git' for commits"
  - name: commits_changesets
    type: string
    description: "Text list of TFVC changesets or Git commits with messages referencing work items"
  - name: devops_pat
    type: string
    description: "Azure DevOps Personal Access Token (obtained from PowerShell variable $DEVOPS_PAT)"
outputs:
  - cards.md
  - changelog.md
---

# Skill: Azure DevOps Release Changelog Generator

## Priority Ordering

PRIORITY 1: Always retrieve and analyze work item discussion/comments — they contain the real implementation context. PRIORITY 2: Group output by Azure DevOps project (`System.Project`). PRIORITY 3: Write one-sentence, functional summaries derived from comments and changeset/commit messages. When these conflict, prefer comment-driven accuracy over title-based brevity.

---

## Purpose

Generate structured release documentation from **TFVC changesets** or **Git commits** by retrieving associated **Azure DevOps work items**, analyzing their full context, and producing:

1. A **complete card list**
2. A **release-style changelog grouped by Azure DevOps project**

The system must analyze the **work item description and discussion history** to produce accurate summaries.

---

# Inputs

### 1. Organization (Prompt First)

**Ask the user**: "Enter your Azure DevOps organization name (e.g., 'mycompany' from dev.azure.com/mycompany)"

Store this as `${organization}` variable.

---

### 2. Version Control Type (Prompt Second)

**Ask the user**: "Are these TFVC changesets or Git commits? (type 'TFVC' or 'Git')"

---

### 3. TFVC Changesets

A text list containing TFVC changesets with comments referencing work items.

Example:

```
4575 Developer Name 11490 - Description of changes
4565 Developer Name BUGS 9761, 11118, 11149
4567 Developer Name User Story 9975: Feature description
```

Changesets may reference **multiple cards**.

---

### 4. Git Commits

A text list containing Git commits with messages referencing work items.

Example:

```
abc1234 Fixes bug 11490 - JSON parsing error in Salesforce integration
def5678 Implements User Story 9975: Configuration maintenance
```

Commit messages follow the same patterns as changeset comments for work item references.

---

### 5. Azure DevOps Configuration

Personal Access Token (must be provided via PowerShell variable $DEVOPS_PAT)

The skill reads the Personal Access Token from the PowerShell variable $DEVOPS_PAT (process scope). Set it in PowerShell using:

```powershell
# For the current PowerShell session
$DEVOPS_PAT = 'your-personal-access-token'

# Or as an environment variable for child processes
$env:DEVOPS_PAT = 'your-personal-access-token'
```

API endpoints (replace `{organization}` with actual org name):

Work item API
```
https://dev.azure.com/{organization}/_apis/wit/workitems/{id}?api-version=7.0
```

Work item comments API
```
https://dev.azure.com/{organization}/_apis/wit/workItems/{id}/comments?api-version=7.0-preview
```

---

### Reusable Scripts

This skill includes reusable PowerShell scripts in the `scripts/` folder:

1. **fetch-workitems.ps1** - Fetches work items from Azure DevOps
2. **generate-cards.ps1** - Generates cards.md from workitems.json
3. **generate-changelog.ps1** - Generates changelog.md from workitems.json

**Usage:**

```powershell
# Set the PAT token
$env:DEVOPS_PAT = 'your-personal-access-token'

# Set the organization
$Organization = 'your-org-name'

# Step 1: Fetch work items
& "path/to/scripts/fetch-workitems.ps1" -WorkItemIds "10828, 11075, 10137, 11130, 11087" -Organization $Organization -OutputDir "C:\Temp"

# Step 2: Generate cards.md
& "path/to/scripts/generate-cards.ps1" -InputFile "C:\Temp\workitems.json" -Organization $Organization -OutputFile "C:\Temp\cards.md"

# Step 3: Generate changelog.md
& "path/to/scripts/generate-changelog.ps1" -InputFile "C:\Temp\workitems.json" -Organization $Organization -OutputFile "C:\Temp\changelog.md"
```

The scripts output:
- `workitems.json` - Raw work item data
- `cards.md` - Card list with details
- `changelog.md` - Release changelog grouped by project

---

# Processing Steps

## 1 Ask for Organization

Prompt the user: "Enter your Azure DevOps organization name (e.g., 'mycompany' from dev.azure.com/mycompany)"

Validate by checking the organization is non-empty.

---

## 2 Ask for Version Control Type

Prompt the user: "Are these TFVC changesets or Git commits? (type 'TFVC' or 'Git')"

Accept either "TFVC" or "Git" (case-insensitive).

---

## 3 Extract Work Item IDs

Parse the input (changeset comments or commit messages) and extract all numeric work item IDs.

Recognize patterns such as:

```
User Story 8413
Bug 11490
BUGS 9761, 11118
10086:
Fixes bug 12345
Implements User Story 9876
```

Rules:

* IDs are numeric
* Multiple IDs may appear in one changeset/commit
* Remove duplicates

---

# 4 Retrieve Work Item Data

For each ID retrieve:

### Core fields

* ID
* Title
* Work Item Type
* State
* Assigned To
* Description
* **Project** (System.Project) - used for team grouping

### Extended context

Also retrieve:

* Work item **discussion/comments**
* Work item **history notes**

---

# 5 Context Analysis

**IMPORTANT**: You MUST read and analyze the discussion/comments for each work item. This is the key value of using AI - the comments contain crucial context that is not in the title or description.

To generate precise changelog descriptions, analyze (in order of importance):

1. **Discussion / comments** - Read through all comments. They often contain:
   - Implementation details discussed during development
   - Testing results and validations
   - Specific requirements clarified in conversations
   - Links to specs and documentation
2. **Title**
3. **Description**
4. **Acceptance criteria if present**
5. **Changeset/Commit comment** - The original TFVC changeset or Git commit message that references the work item often contains specific change details (e.g., "Correções da integração", "Remoção do filtro", "Fixes bug 12345"). This is a primary source for understanding what specifically changed.

Use the full context to understand:

* What behavior changed
* What bug was fixed
* What functionality was added
* What integration or data change occurred

**Critical**: Do NOT just copy the title or description. Use the comments to understand the REAL change that was made. The comments often reveal what was discussed, tested, and validated.

---

# 6 Track Changeset/Commit-to-WorkItem Mapping

For each work item, track which changeset(s) or commit(s) contributed to it and what change details were mentioned:

```
Changeset/Commit abc1234: "Correções da integração com Salesforce" → Work Item 11490
Changeset/Commit def5678: "Remoção do filtro da query" → Work Item 11490
```

When generating descriptions, combine:
- The work item details (title, description)
- The specific change details from the changeset/commit comment

This is especially important when the same work item has multiple changesets/commits with different change descriptions.

---

# 7 Determine Responsible Team (by Project)

Team ownership is determined by the **Azure DevOps project name** from the work item's `System.Project` field.

Group work items by their project name:

```
## ProjectName1

## ProjectName2
```

Rules:

* Use the exact project name from Azure DevOps
* Each unique project becomes a section in the changelog
* Preserve original language in card titles and descriptions

---

# Outputs

Two files must be generated.

Save them to:

```
C:\temp\
```

---

# File 1: cards.md

Complete list of cards with metadata.

Format:

```
## {ID} – {Title} ({Work Item Type})

State: {State}
Assigned to: {AssignedTo}
Project: {ProjectName}
Link: https://dev.azure.com/{organization}/_workitems/edit/{ID}

{Short context-aware summary extracted from description + discussion}
```

Example:

```
## 11490 – Bug Title or Feature Title (Bug)

State: Resolved
Assigned to: Assignee Name
Project: ProjectName
Link: https://dev.azure.com/{organization}/_workitems/edit/11490

Fixes a bug or implements a feature described here.
```

---

# File 2: changelog.md

Must follow the **Release-Style Changelog Format** grouped by project.

Structure:

```
# Release Changelog

This release includes changes from the following Azure DevOps projects:

- ProjectName1
- ProjectName2
```

---

## {ProjectName}

Sections:

```
## New Features
## Bug Fixes
## Improvements
## Data / Scripts
```

---

# Changelog Item Format

```
- **{ID}** – {Title}
  {One concise sentence describing the change}
```

Example:

```
- **11490** – Erro Integração - Error reading JObject from JsonReader
  Fixes JSON parsing error when processing Salesforce integration responses.
```

---

# Summary Generation Rules

The changelog description must:

* Be **one sentence**
* Reflect the **actual functional impact** - what did this change DO for the user/system?
* **MUST be derived from discussion/comments** - read the comments to understand what was actually done
* Incorporate the specific change details mentioned in the changeset/commit message
* Avoid internal technical noise
* Avoid copying large blocks of text
* Focus on **what changed for the system or user**

**Key**: If a work item has comments, READ THEM. They contain the real context about what was implemented, tested, and validated. Use this to write a meaningful summary.

---

# Additional Rules

1. Deduplicate work items referenced by multiple changesets/commits.
2. Preserve original language of each card.
3. Group by project name (System.Project field) - not language.
4. Changelog must remain concise and readable for release documentation.
5. Use card discussion history to resolve ambiguous titles or incomplete descriptions.
6. Always reference the changeset/commit message to understand the specific change details that were made.

---

# Result

Transforms:

```
TFVC Changesets OR Git Commits
```

into

```
cards.md
changelog.md
```

with:

* automatic card discovery
* organization-agnostic (user provides org name)
* DevOps API enrichment
* discussion-aware summaries
* project-based grouping (instead of language-based)
* support for both TFVC and Git
* structured release notes.

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.