Skip to content

[Agent Skill] Rename to analyze-azdo-build, add retry support, and more#8247

Merged
lucaspimentel merged 8 commits into
masterfrom
lpimentel/ci-skill-3
Mar 13, 2026
Merged

[Agent Skill] Rename to analyze-azdo-build, add retry support, and more#8247
lucaspimentel merged 8 commits into
masterfrom
lpimentel/ci-skill-3

Conversation

@lucaspimentel

@lucaspimentel lucaspimentel commented Feb 26, 2026

Copy link
Copy Markdown
Member

Summary of changes

  • ⭐ Rename skill from troubleshoot-ci-build to analyze-azdo-build
  • ⭐ Add support for retrying failed/canceled stages
  • Show Stage > Job > Task failures as a hierarchy (visual change only)
  • Add prerequisite install docs for gh, az CLI, and azure-devops extension

Reason for change

The CI build analysis skill needed several improvements:

  • The name troubleshoot-ci-build was generic; analyze-azdo-build is more specific
  • Failed stages/jobs/tasks were shown as flat lists, making it hard to trace failures through the pipeline hierarchy
  • API helper functions were duplicated and not reusable by other scripts
  • There was no way to retry failed stages without navigating the Azure DevOps UI
  • Prerequisites lacked install instructions, leaving users to figure it out themselves

Implementation details

  • Skill rename: Moved .claude/skills/troubleshoot-ci-build/ to .claude/skills/analyze-azdo-build/ and updated the skill name/description
  • Failure hierarchy: Added Get-FailureHierarchy function that walks parentId chains in timeline records to build a Stage > Job > Task tree view
  • Shared module (AzureDevOpsHelpers.psm1): Extracted Invoke-AzDevOpsApi, Get-BuildIdFromPR, and new Resolve-BuildId into a reusable PowerShell module
  • Retry script (Retry-AzureDevOpsFailedStages.ps1): Retries failed/canceled stages via the Azure DevOps stages API; supports -All, -Stage, -ForceRetryAllJobs, -WhatIf, and interactive selection
  • Prerequisite docs: Added verify commands, one-liner installs (winget/brew), and official docs links for all CLI tools
  • Tighten allowed-tools: Replaced broad Bash(pwsh:*) permission with specific patterns for the three pwsh commands the skill uses (pwsh -Version, Get-AzureDevOpsBuildAnalysis.ps1, Retry-AzureDevOpsFailedStages.ps1)
  • Updated SKILL.md and scripts-reference.md documentation throughout

Test coverage

Tested against real Azure DevOps builds (196471, 196475) with different failure patterns.

Other details

"I tried to retry my own failed stages once, but my therapist said that's called 'rumination'." — Claude 🤖

@pr-commenter

pr-commenter Bot commented Feb 26, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-03-13 20:54:09

Comparing candidate commit afd30db in PR branch lpimentel/ci-skill-3 with baseline commit 7c5b809 in branch master.

Found 10 performance improvements and 6 performance regressions! Performance is the same for 164 metrics, 12 unstable metrics.

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody net6.0

  • 🟩 execution_time [-15.874ms; -12.245ms] or [-7.607%; -5.868%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody net6.0

  • 🟩 execution_time [-29.296ms; -23.429ms] or [-13.438%; -10.747%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorMoreComplexBody netcoreapp3.1

  • 🟩 execution_time [-17.170ms; -11.364ms] or [-8.220%; -5.441%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody netcoreapp3.1

  • 🟥 execution_time [+13.014ms; +17.738ms] or [+6.514%; +8.878%]
  • 🟥 throughput [-240383.843op/s; -186175.280op/s] or [-9.720%; -7.528%]

scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs net6.0

  • 🟩 execution_time [-19.986ms; -19.536ms] or [-9.979%; -9.754%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟥 execution_time [+39.414ms; +47.945ms] or [+23.236%; +28.265%]
  • 🟩 throughput [+132.159op/s; +192.079op/s] or [+9.339%; +13.574%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net472

  • 🟩 execution_time [-141.580µs; -136.887µs] or [-6.886%; -6.658%]
  • 🟩 throughput [+34.751op/s; +35.910op/s] or [+7.145%; +7.383%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net6.0

  • 🟥 execution_time [+134.755µs; +138.805µs] or [+9.424%; +9.707%]
  • 🟥 throughput [-61.920op/s; -60.193op/s] or [-8.854%; -8.607%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net6.0

  • 🟥 execution_time [+12.745ms; +17.455ms] or [+6.625%; +9.073%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog net6.0

  • 🟩 execution_time [-52.868ms; -51.399ms] or [-27.352%; -26.592%]

scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore net6.0

  • 🟩 execution_time [-14.919ms; -8.347ms] or [-15.266%; -8.542%]

scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore netcoreapp3.1

  • 🟩 throughput [+15136067.732op/s; +16450445.130op/s] or [+6.710%; +7.293%]

@lucaspimentel lucaspimentel changed the title Add failure hierarchy to CI build analysis skill [CI Skill] Revamp analyze-azdo-build with shared module, retry, and hierarchy Mar 12, 2026
@lucaspimentel
lucaspimentel marked this pull request as ready for review March 12, 2026 19:09
@lucaspimentel
lucaspimentel requested review from a team as code owners March 12, 2026 19:09
@lucaspimentel lucaspimentel added AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos for-ai-agents 🤖 files used by AI agents, not humans labels Mar 12, 2026
@lucaspimentel lucaspimentel changed the title [CI Skill] Revamp analyze-azdo-build with shared module, retry, and hierarchy [Claude Skill] Revamp analyze-azdo-build with shared module, retry, and hierarchy Mar 12, 2026
@lucaspimentel lucaspimentel changed the title [Claude Skill] Revamp analyze-azdo-build with shared module, retry, and hierarchy [Claude Skill] Rename and revamp analyze-azdo-build with retry support and more Mar 12, 2026
@lucaspimentel lucaspimentel changed the title [Claude Skill] Rename and revamp analyze-azdo-build with retry support and more [Claude Skill] Rename analyze-azdo-build, add retry support, and more Mar 12, 2026
@dd-trace-dotnet-ci-bot

dd-trace-dotnet-ci-bot Bot commented Mar 12, 2026

Copy link
Copy Markdown

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (8247) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration76.31 ± (76.21 - 76.56) ms75.14 ± (75.12 - 75.39) ms-1.5%
.NET Framework 4.8 - Bailout
duration80.63 ± (80.48 - 80.88) ms79.60 ± (79.49 - 79.86) ms-1.3%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1112.97 ± (1111.38 - 1117.18) ms1100.12 ± (1100.88 - 1106.72) ms-1.2%
.NET Core 3.1 - Baseline
process.internal_duration_ms23.51 ± (23.45 - 23.57) ms23.34 ± (23.30 - 23.39) ms-0.7%
process.time_to_main_ms89.34 ± (89.15 - 89.52) ms88.34 ± (88.15 - 88.53) ms-1.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.91 ± (10.91 - 10.92) MB10.91 ± (10.90 - 10.91) MB-0.0%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms23.69 ± (23.63 - 23.76) ms23.20 ± (23.15 - 23.26) ms-2.1%
process.time_to_main_ms91.31 ± (91.09 - 91.54) ms89.86 ± (89.62 - 90.10) ms-1.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.95 ± (10.95 - 10.96) MB10.94 ± (10.94 - 10.95) MB-0.1%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms226.72 ± (225.25 - 228.19) ms225.22 ± (223.95 - 226.49) ms-0.7%
process.time_to_main_ms512.74 ± (511.73 - 513.75) ms504.88 ± (504.04 - 505.72) ms-1.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.22 ± (47.20 - 47.25) MB47.27 ± (47.24 - 47.29) MB+0.1%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms22.23 ± (22.18 - 22.28) ms21.85 ± (21.81 - 21.90) ms-1.7%
process.time_to_main_ms77.41 ± (77.24 - 77.58) ms75.88 ± (75.71 - 76.06) ms-2.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.63 ± (10.63 - 10.63) MB10.64 ± (10.64 - 10.65) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms22.28 ± (22.23 - 22.33) ms21.76 ± (21.71 - 21.80) ms-2.3%
process.time_to_main_ms79.63 ± (79.43 - 79.83) ms77.09 ± (76.90 - 77.28) ms-3.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.74 ± (10.74 - 10.75) MB10.77 ± (10.76 - 10.77) MB+0.2%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms219.89 ± (218.61 - 221.16) ms218.25 ± (217.02 - 219.48) ms-0.7%
process.time_to_main_ms486.17 ± (485.49 - 486.85) ms479.54 ± (478.87 - 480.21) ms-1.4%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.08 ± (48.06 - 48.10) MB48.66 ± (48.64 - 48.68) MB+1.2%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms20.50 ± (20.41 - 20.59) ms20.05 ± (20.01 - 20.09) ms-2.2%
process.time_to_main_ms77.77 ± (77.43 - 78.11) ms75.36 ± (75.22 - 75.50) ms-3.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.66 - 7.67) MB7.67 ± (7.67 - 7.68) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms20.44 ± (20.39 - 20.49) ms20.16 ± (20.10 - 20.21) ms-1.4%
process.time_to_main_ms78.18 ± (77.98 - 78.37) ms77.20 ± (77.03 - 77.37) ms-1.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.68 ± (7.68 - 7.69) MB7.72 ± (7.71 - 7.73) MB+0.5%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms171.06 ± (170.20 - 171.92) ms169.15 ± (168.43 - 169.87) ms-1.1%
process.time_to_main_ms472.18 ± (471.35 - 473.01) ms467.74 ± (467.06 - 468.43) ms-0.9%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed35.77 ± (35.74 - 35.79) MB36.34 ± (36.33 - 36.36) MB+1.6%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)26 ± (26 - 26)-0.4%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration198.54 ± (198.51 - 199.88) ms194.53 ± (194.41 - 195.28) ms-2.0%
.NET Framework 4.8 - Bailout
duration201.64 ± (201.62 - 202.60) ms197.09 ± (196.97 - 197.65) ms-2.3%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1159.58 ± (1161.78 - 1170.43) ms1152.19 ± (1153.19 - 1161.66) ms-0.6%
.NET Core 3.1 - Baseline
process.internal_duration_ms191.04 ± (190.60 - 191.48) ms188.57 ± (188.14 - 188.99) ms-1.3%
process.time_to_main_ms81.87 ± (81.66 - 82.09) ms80.69 ± (80.52 - 80.86) ms-1.4%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.09 - 16.13) MB16.09 ± (16.06 - 16.12) MB-0.1%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)+0.2%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms191.11 ± (190.65 - 191.58) ms187.61 ± (187.30 - 187.91) ms-1.8%
process.time_to_main_ms83.57 ± (83.33 - 83.81) ms82.09 ± (81.94 - 82.24) ms-1.8%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.14 ± (16.12 - 16.17) MB16.17 ± (16.14 - 16.19) MB+0.2%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)+0.1%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms400.29 ± (398.74 - 401.83) ms398.11 ± (396.37 - 399.85) ms-0.5%
process.time_to_main_ms480.89 ± (480.20 - 481.59) ms476.18 ± (475.40 - 476.96) ms-1.0%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.34 ± (58.30 - 58.38) MB58.11 ± (57.98 - 58.25) MB-0.4%
runtime.dotnet.threads.count30 ± (30 - 30)30 ± (30 - 30)-0.1%
.NET 6 - Baseline
process.internal_duration_ms194.34 ± (193.87 - 194.82) ms194.72 ± (194.26 - 195.18) ms+0.2%✅⬆️
process.time_to_main_ms70.70 ± (70.49 - 70.90) ms70.75 ± (70.57 - 70.93) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.31 ± (16.27 - 16.36) MB16.37 ± (16.34 - 16.39) MB+0.3%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+1.3%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms194.35 ± (193.84 - 194.86) ms193.20 ± (192.82 - 193.59) ms-0.6%
process.time_to_main_ms71.71 ± (71.52 - 71.90) ms71.63 ± (71.48 - 71.78) ms-0.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.37 ± (16.34 - 16.40) MB16.35 ± (16.27 - 16.43) MB-0.1%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-1.5%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms431.15 ± (429.55 - 432.74) ms434.98 ± (433.33 - 436.62) ms+0.9%✅⬆️
process.time_to_main_ms459.16 ± (458.39 - 459.93) ms459.33 ± (458.49 - 460.16) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.35 ± (59.27 - 59.42) MB59.70 ± (59.61 - 59.79) MB+0.6%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 30)29 ± (29 - 29)-0.1%
.NET 8 - Baseline
process.internal_duration_ms197.09 ± (196.64 - 197.54) ms192.57 ± (192.15 - 192.99) ms-2.3%
process.time_to_main_ms71.53 ± (71.29 - 71.77) ms70.44 ± (70.24 - 70.64) ms-1.5%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.72 ± (11.70 - 11.74) MB11.73 ± (11.72 - 11.75) MB+0.1%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.5%
.NET 8 - Bailout
process.internal_duration_ms196.44 ± (195.96 - 196.93) ms191.67 ± (191.20 - 192.14) ms-2.4%
process.time_to_main_ms73.32 ± (73.12 - 73.52) ms71.30 ± (71.12 - 71.47) ms-2.8%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.74 ± (11.72 - 11.76) MB11.76 ± (11.74 - 11.79) MB+0.2%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 20)19 ± (19 - 19)-1.3%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms356.99 ± (355.81 - 358.16) ms359.70 ± (358.33 - 361.07) ms+0.8%✅⬆️
process.time_to_main_ms443.14 ± (442.25 - 444.02) ms443.19 ± (442.45 - 443.92) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.83 ± (47.80 - 47.87) MB48.38 ± (48.34 - 48.42) MB+1.1%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.0%✅⬆️
Comparison explanation

Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (75ms)  : 73, 77
    master - mean (76ms)  : 74, 79

    section Bailout
    This PR (8247) - mean (80ms)  : 78, 82
    master - mean (81ms)  : 78, 83

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (1,104ms)  : 1062, 1145
    master - mean (1,114ms)  : 1073, 1155

Loading
FakeDbCommand (.NET Core 3.1)
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (119ms)  : 115, 123
    master - mean (120ms)  : 116, 124

    section Bailout
    This PR (8247) - mean (120ms)  : 118, 123
    master - mean (122ms)  : 119, 126

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (767ms)  : 744, 791
    master - mean (775ms)  : 751, 800

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (104ms)  : 101, 107
    master - mean (107ms)  : 103, 110

    section Bailout
    This PR (8247) - mean (105ms)  : 103, 108
    master - mean (109ms)  : 106, 111

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (727ms)  : 689, 765
    master - mean (732ms)  : 704, 760

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (103ms)  : 101, 106
    master - mean (107ms)  : 96, 118

    section Bailout
    This PR (8247) - mean (105ms)  : 103, 108
    master - mean (107ms)  : 104, 109

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (667ms)  : 648, 686
    master - mean (673ms)  : 654, 693

Loading
HttpMessageHandler (.NET Framework 4.8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (195ms)  : 190, 200
    master - mean (199ms)  : 189, 210

    section Bailout
    This PR (8247) - mean (197ms)  : 194, 201
    master - mean (202ms)  : 196, 208

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (1,157ms)  : 1095, 1219
    master - mean (1,166ms)  : 1102, 1231

Loading
HttpMessageHandler (.NET Core 3.1)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (278ms)  : 272, 283
    master - mean (281ms)  : 273, 290

    section Bailout
    This PR (8247) - mean (278ms)  : 273, 283
    master - mean (283ms)  : 273, 293

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (905ms)  : 879, 932
    master - mean (913ms)  : 882, 943

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (274ms)  : 266, 282
    master - mean (273ms)  : 267, 279

    section Bailout
    This PR (8247) - mean (273ms)  : 267, 278
    master - mean (274ms)  : 268, 281

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (926ms)  : 882, 970
    master - mean (921ms)  : 895, 948

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8247) - mean (273ms)  : 263, 283
    master - mean (279ms)  : 271, 286

    section Bailout
    This PR (8247) - mean (272ms)  : 266, 279
    master - mean (280ms)  : 272, 288

    section CallTarget+Inlining+NGEN
    This PR (8247) - mean (832ms)  : 802, 862
    master - mean (833ms)  : 810, 856

Loading

@bouwkast bouwkast left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested it out and it walked me through all of the setup and works good 👍

@lucaspimentel lucaspimentel changed the title [Claude Skill] Rename analyze-azdo-build, add retry support, and more [Claude Skill] Rename to analyze-azdo-build, add retry support, and more Mar 12, 2026
Show Stage > Job > Task tree in build analysis output
instead of flat lists, making it easier to understand
which tasks failed within which jobs and stages.

🤖 Co-Authored-By: Claude Code <[email protected]>
Document gh, az CLI, and azure-devops extension with verify
commands, one-liner installs (winget/brew), and official docs
links. Matches existing PowerShell prerequisite style.

🤖 Co-Authored-By: Claude Code <[email protected]>
Move Invoke-AzDevOpsApi, Get-BuildIdFromPR, and new Resolve-BuildId
into AzureDevOpsHelpers.psm1. Update Get-AzureDevOpsBuildAnalysis.ps1
to import the module instead of duplicating these functions.

🤖 Co-Authored-By: Claude Code <[email protected]>
Retry-AzureDevOpsFailedStages.ps1 uses the shared AzureDevOpsHelpers
module to retry failed/canceled stages via PATCH to the stages API.
Supports -All, -Stage, -ForceRetryAllJobs, -WhatIf, and interactive
selection.

🤖 Co-Authored-By: Claude Code <[email protected]>
Add AzureDevOpsHelpers.psm1 and Retry-AzureDevOpsFailedStages.ps1
sections to scripts-reference.md. Add retry failed stages option to
the investigation menu in SKILL.md.

🤖 Co-Authored-By: Claude Code <[email protected]>
Use *.ps*1 glob to cover .ps1, .psm1, and .psd1 in a single pattern.

🤖 Co-Authored-By: Claude Code <[email protected]>
Restrict the broad `Bash(pwsh:*)` permission to only the three
specific pwsh commands the skill actually uses: version check,
Get-AzureDevOpsBuildAnalysis.ps1, and Retry-AzureDevOpsFailedStages.ps1.

🤖 Co-Authored-By: Claude Code <[email protected]>
@lucaspimentel lucaspimentel changed the title [Claude Skill] Rename to analyze-azdo-build, add retry support, and more [Agent Skill] Rename to analyze-azdo-build, add retry support, and more Mar 13, 2026
@lucaspimentel
lucaspimentel enabled auto-merge (squash) March 13, 2026 20:12
@lucaspimentel
lucaspimentel merged commit 3cc65f9 into master Mar 13, 2026
139 checks passed
@lucaspimentel
lucaspimentel deleted the lpimentel/ci-skill-3 branch March 13, 2026 21:44
@github-actions github-actions Bot added this to the vNext-v3 milestone Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos for-ai-agents 🤖 files used by AI agents, not humans

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants