.claude/skills/azure-devops-queries/SKILL.md
Skill transversal para operaciones con Azure DevOps
npx skillsauth add gonzalezpazmonica/pm-workspace azure-devops-queriesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Skill transversal. Léela SIEMPRE antes de cualquier operación con Azure DevOps.
# Leer siempre desde el entorno (configuradas en .claude/.env y CLAUDE.md raíz)
ORG_URL="${AZURE_DEVOPS_ORG_URL}" # https://dev.azure.com/MI-ORGANIZACION
ORG_NAME="${AZURE_DEVOPS_ORG_NAME}" # MI-ORGANIZACION
PAT_FILE="${AZURE_DEVOPS_PAT_FILE}" # $HOME/.azure/devops-pat
API_VERSION="${AZURE_DEVOPS_API_VERSION}" # 7.1
az devops configure --defaults organization=$ORG_URL project=$PROJECT_NAME
export AZURE_DEVOPS_EXT_PAT=$(cat $PAT_FILE)
az devops project list --output table
PAT=$(cat $PAT_FILE)
B64_PAT=$(echo -n ":$PAT" | base64)
curl -H "Authorization: Basic $B64_PAT" \
-H "Content-Type: application/json" \
"$ORG_URL/$PROJECT/_apis/..."
⚠️ SIEMPRE incluir filtro
[System.IterationPath] UNDER @CurrentIterationen las queries WIQL, salvo que se pida explícitamente una query cross-sprint.
Sin este filtro, las queries devuelven TODOS los work items del proyecto desde el inicio, lo que satura el contexto y degrada la calidad de las respuestas.
Detalle: @references/wiql-queries.md
Cinco queries básicas para la mayoría de casos:
Ejecutar con CLI:
az boards query --wiql "SELECT..." --project "$PROJECT_NAME" --output json | jq '.workItems[].id'
# Listar sprints del equipo
az boards iteration team list --project "$PROJECT_NAME" --team "$TEAM_NAME" --output table
# Obtener work item por ID
az boards work-item show --id XXXX --output json
# Actualizar horas
az boards work-item update --id XXXX \
--fields "Microsoft.VSTS.Scheduling.CompletedWork=8"
BASE="$ORG_URL/$PROJECT/_apis"
BASE_TEAM="$ORG_URL/$PROJECT/$TEAM/_apis"
# Capacidades, días off, board, iteración actual
GET $BASE_TEAM/work/teamsettings/iterations/{iterationId}/capacities?api-version=$API_VERSION
GET $BASE_TEAM/work/teamsettings/iterations/{iterationId}/teamdaysoff?api-version=$API_VERSION
GET $ORG_URL/$PROJECT/_odata/v4.0-preview/WorkItemSnapshot?\$filter=...
GET $BASE_TEAM/work/teamsettings/iterations?\$timeframe=current&api-version=$API_VERSION
Detalle: @references/wiql-fields.md
Campos principales: System.Id, System.Title, System.State, System.AssignedTo, System.WorkItemType, System.IterationPath, Microsoft.VSTS.Scheduling.StoryPoints, Microsoft.VSTS.Scheduling.RemainingWork, Microsoft.VSTS.Common.Activity, Microsoft.VSTS.Common.Priority, Microsoft.VSTS.Common.Severity
| Error | Solución |
|-------|----------|
| TF400813: The user is not authorized | Regenerar PAT con scopes correctos |
| VS403501: The query returned too many results | Añadir filtro UNDER @CurrentIteration |
| TF26027: Iteration not found | Verificar con az boards iteration team list |
| 400 Bad Request en capacities API | Usar team ID en lugar de nombre |
| Resultados vacíos en @CurrentIteration | Configurar sprint activo en AzDevOps |
→ Patrones WIQL: references/wiql-patterns.md
→ Campos detallados: references/wiql-fields.md
→ Analytics OData: references/odata-patterns.md
testing
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
tools
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
tools
Sistema proactivo de bienestar individual
development
Search the web to resolve context gaps — documentation, versions, CVEs, best practices. Auto-starts SearxNG Docker if available, falls back to WebSearch.