☁️ Azure Devops OpenClaw Plugin & Skill | ClawHub
Looking to integrate Azure Devops into your AI workflows? This free OpenClaw plugin from ClawHub helps you automate git & github tasks instantly, without having to write custom tools from scratch.
What this skill does
List Azure DevOps projects, repositories, and branches; create pull requests; manage work items; check build status. Use when working with Azure DevOps resources, checking PR status, querying project structure, or automating DevOps workflows.
Install
npx clawhub@latest install azure-devopsFull SKILL.md
Open original| name | description |
|---|---|
| azure-devops | List Azure DevOps projects, repositories, and branches; create pull requests; manage work items; check build status. Use when working with Azure DevOps resources, checking PR status, querying project structure, or automating DevOps workflows. |
SKILL.md content below is scrollable.
Azure DevOps Skill
List projects, repositories, branches. Create pull requests. Manage work items. Check build status.
Check before running for valid Configuration, if values missing ask the user!
Required:
AZURE_DEVOPS_PAT: Personal Access TokenAZURE_DEVOPS_ORG: Organization name
If values are missing from ~/.openclaw/openclaw.json, the agent should:
- ASK the user for the missing PAT and/or organization name
- Store them in
~/.openclaw/openclaw.jsonunderskills.entries["azure-devops"]
Example Config
{
skills: {
entries: {
"azure-devops": {
apiKey: "YOUR_PERSONAL_ACCESS_TOKEN", // AZURE_DEVOPS_PAT
env: {
AZURE_DEVOPS_ORG: "YourOrganizationName"
}
}
}
}
}
Commands
List Projects
curl -s -u ":${AZURE_DEVOPS_PAT}" \
"https://dev.azure.com/${AZURE_DEVOPS_ORG}/_apis/projects?api-version=7.1" \
| jq -r '.value[] | "\(.name) - \(.description // "No description")"'
List Repositories in a Project
PROJECT="YourProject"
curl -s -u ":${AZURE_DEVOPS_PAT}" \
"https://dev.azure.com/${AZURE_DEVOPS_ORG}/${PROJECT}/_apis/git/repositories?api-version=7.1" \
| jq -r '.value[] | "\(.name) - \(.webUrl)"'
List Branches in a Repository
PROJECT="YourProject"
REPO="YourRepo"
curl -s -u ":${AZURE_DEVOPS_PAT}" \
"https://dev.azure.com/${AZURE_DEVOPS_ORG}/${PROJECT}/_apis/git/repositories/${REPO}/refs?filter=heads/&api-version=7.1" \
| jq -r '.value[] | .name | sub("refs/heads/"; "")'
Create a Pull Request
PROJECT="YourProject"
REPO_ID="repo-id-here"
SOURCE_BRANCH="feature/my-branch"
TARGET_BRANCH="main"
TITLE="PR Title"
DESCRIPTION="PR Description"
curl -s -u ":${AZURE_DEVOPS_PAT}" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"sourceRefName": "refs/heads/'"${SOURCE_BRANCH}"'",
"targetRefName": "refs/heads/'"${TARGET_BRANCH}"'",
"title": "'"${TITLE}"'",
"description": "'"${DESCRIPTION}"'"
}' \
"https://dev.azure.com/${AZURE_DEVOPS_ORG}/${PROJECT}/_apis/git/repositories/${REPO_ID}/pullrequests?api-version=7.1"
Get Repository ID
PROJECT="YourProject"
REPO_NAME="YourRepo"
curl -s -u ":${AZURE_DEVOPS_PAT}" \
"https://dev.azure.com/${AZURE_DEVOPS_ORG}/${PROJECT}/_apis/git/repositories/${REPO_NAME}?api-version=7.1" \
| jq -r '.id'
List Pull Requests
PROJECT="YourProject"
REPO_ID="repo-id"
curl -s -u ":${AZURE_DEVOPS_PAT}" \
"https://dev.azure.com/${AZURE_DEVOPS_ORG}/${PROJECT}/_apis/git/repositories/${REPO_ID}/pullrequests?api-version=7.1" \
| jq -r '.value[] | "#\(.pullRequestId): \(.title) [\(.sourceRefName | sub("refs/heads/"; ""))] -> [\(.targetRefName | sub("refs/heads/"; ""))] - \(.createdBy.displayName)"'
Notes
- Base URL:
https://dev.azure.com/${AZURE_DEVOPS_ORG} - API Version:
7.1 - Auth: Basic Auth with empty username and PAT as password
- Never log or expose the PAT in responses
- Documentation: https://learn.microsoft.com/en-us/rest/api/azure/devops/