.claude/skills/time-tracking-report/SKILL.md
Generación de informes de imputación de horas a Excel/Word
npx skillsauth add gonzalezpazmonica/pm-workspace time-tracking-reportInstall 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.
Generación de informes de imputación de horas: extracción de datos, agrupación y exportación a Excel/Word.
Prerequisito: Leer primero .claude/skills/azure-devops-queries/SKILL.md
OUTPUT_DIR="./output/reports"
ACTIVITIES=("Development" "Testing" "Documentation" "Meeting" "Design" "DevOps")
WIQL='{"query": "SELECT [System.Id],[System.Title],[System.WorkItemType],[System.State],[System.AssignedTo],[Microsoft.VSTS.Scheduling.OriginalEstimate],[Microsoft.VSTS.Scheduling.CompletedWork],[Microsoft.VSTS.Scheduling.RemainingWork],[Microsoft.VSTS.Common.Activity],[System.IterationPath] FROM WorkItems WHERE [System.IterationPath] UNDER @CurrentIteration AND [System.TeamProject] = @Project AND [System.WorkItemType] IN ('"'"'Task'"'"','"'"'Bug'"'"') ORDER BY [System.AssignedTo] ASC"}'
PAT=$(cat $AZURE_DEVOPS_PAT_FILE)
curl -s -X POST "$ORG_URL/$PROJECT/_apis/wit/wiql?api-version=7.1" \
-H "Authorization: Basic $(echo -n ":$PAT" | base64)" \
-d "$WIQL" | jq '.workItems[].id' > /tmp/task-ids.json
# Obtener detalles en batch (máx 200)
IDS=$(cat /tmp/task-ids.json | tr '\n' ',' | sed 's/,$//')
curl -s "$ORG_URL/$PROJECT/_apis/wit/workitems?ids=$IDS&fields=System.Id,System.Title,System.WorkItemType,System.State,System.AssignedTo,Microsoft.VSTS.Scheduling.OriginalEstimate,Microsoft.VSTS.Scheduling.CompletedWork,Microsoft.VSTS.Scheduling.RemainingWork,Microsoft.VSTS.Common.Activity&api-version=7.1" \
-H "Authorization: Basic $(echo -n ":$PAT" | base64)" > /tmp/task-details.json
Detalle: @references/aggregation-logic.md
Agrupación por: persona → actividad → (estimado, completado, restante, items)
Detalle: @references/deviation-formula.md
desviacion_h = (completado + restante) - estimado
desviacion_pct = (desviacion_h / estimado) * 100
Positivo = excede estimación (🔴)
Negativo = va mejor (🟢)
node scripts/report-generator.js \
--type hours --input /tmp/task-details.json \
--project "$PROJECT_NAME" --sprint "$SPRINT_NAME" \
--output "$OUTPUT_DIR/$(date +%Y%m%d)-hours-$PROJECT_NAME.xlsx"
Detalle: @references/excel-structure.md
Pestañas: Resumen | Detalle | Por Actividad | Comparativa
FILENAME="$(date +%Y%m%d)-hours-${PROJECT_NAME}-${SPRINT_NAME}.xlsx"
OUTPUT_PATH="$OUTPUT_DIR/$FILENAME"
echo "Informe guardado: $OUTPUT_PATH"
TOKEN=$(curl -s -X POST "https://login.microsoftonline.com/$GRAPH_TENANT_ID/oauth2/v2.0/token" \
-d "client_id=$GRAPH_CLIENT_ID&client_secret=$(cat $GRAPH_CLIENT_SECRET_FILE)&scope=https://graph.microsoft.com/.default&grant_type=client_credentials" \
| jq -r '.access_token')
curl -s -X PUT "https://graph.microsoft.com/v1.0/sites/$SITE_ID/drives/$DRIVE_ID/root:/$SHAREPOINT_REPORTS_PATH/$FILENAME:/content" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" \
--data-binary @"$OUTPUT_PATH"
⚠️ Confirmar con usuario antes de subir.
node scripts/report-generator.js \
--type hours --format docx --input /tmp/task-details.json \
--output "$OUTPUT_DIR/$(date +%Y%m%d)-hours-$PROJECT_NAME.docx"
Contenido: Portada | Resumen por persona | Detalle items | Análisis desviaciones
references/aggregation-logic.md — Lógica agrupaciónreferences/deviation-formula.md — Fórmula desviacionesreferences/excel-structure.md — Estructura Excel/report-hourstesting
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.