Azure devops changelog generator
This repository is a collection of custom GitHub Copilot skills, each in its own folder with clear specs, evaluation scenarios, and supporting scripts.
npx -y skills add Oglaf/skills --skill azure-devops-changelog-generatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
10.8 KB, as published. Nobody here has run it
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:
- A complete card list
- 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:
# 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:
- fetch-workitems.ps1 - Fetches work items from Azure DevOps
- generate-cards.ps1 - Generates cards.md from workitems.json
- generate-changelog.ps1 - Generates changelog.md from workitems.json
Usage:
# 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 datacards.md- Card list with detailschangelog.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):
- 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
- Title
- Description
- Acceptance criteria if present
- 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
- Deduplicate work items referenced by multiple changesets/commits.
- Preserve original language of each card.
- Group by project name (System.Project field) - not language.
- Changelog must remain concise and readable for release documentation.
- Use card discussion history to resolve ambiguous titles or incomplete descriptions.
- 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.