DE

Provides end-to-end triage and diagnostic support for CI/CD failures or customer issues.

Install

mkdir -p .claude/skills/debug-agent && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12196" && unzip -o skill.zip -d .claude/skills/debug-agent && rm skill.zip

Installs to .claude/skills/debug-agent

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Diagnose a pipeline failure or customer issue end-to-end. Accepts a log path, error text, ADO work item ID, or GitHub issue URL.
128 charsno explicit “when” trigger
Advanced

Key capabilities

  • Ingest log files, error text, ADO work item IDs, or GitHub issue URLs
  • Identify PPBT (Power Platform Build Tools) involvement in failures
  • Classify the failure layer (e.g., pac CLI, service connection)
  • Provide quick-reference error-to-fix mappings
  • Produce a precise triage package for engineering teams

How it works

The skill ingests various inputs, determines the input type, checks for PPBT involvement, classifies the failure, and provides a triage package or resolution.

Inputs & outputs

You give it
Log file path, error text, ADO work item ID, or GitHub issue URL
You get back
A diagnosis of the pipeline failure or customer issue, including ownership and triage package

When to use debug-agent

  • Debug pipeline failure
  • Analyze error log
  • Triage customer issue
  • Verify deployment results

About this skill

Debug Agent

Diagnose a pipeline failure or customer issue end-to-end. Accepts a log file path, pasted error text, ADO work item ID, or GitHub issue URL. Determines ownership, resolves if PPBT-owned, or produces a precise triage package for the right team.

Invoke as: /debug-agent <log-file-path | error-text | issue-url | ado-id>

Works autonomously through all steps. One exception: pauses to request pipeline logs if they are referenced in an ICM/work item but not yet provided — log evidence is required before classifying the failure layer.


Step 0 — Ingest the input

Determine input type:

  • File path (.txt, .log, or similar): read it with the Read tool
  • ADO work item (dev.azure.com/... URL or bare integer): az boards work-item show --id <id> 2>&1
  • GitHub issue (github.com/.../issues/<n>): gh issue view <n> --comments 2>&1
  • Pasted text: use as-is

Extract and print:

Input summary:
- Type: <file | ado | github | text>
- Task/tool identified: <name from log header, or "unknown">
- Error snippet: <first clear error line, or "none found">
- Timestamp range: <start → end>
- Deployment result: <SUCCESS | FAILED | unknown>

Step 0b — Check for missing logs

If input is an ICM or ADO work item AND any of the following are true:

  • Custom field LogsAttached = "Yes"
  • Description mentions "logs attached" or "see attachment"
  • Issue cannot be diagnosed from text alone (no error snippet, no pac CLI output visible)

AND no log file path or log content was provided by the user:

STOP. Prompt the user:

Pipeline logs are attached to this ICM/work item but aren't accessible via API.
Please download the logs from the portal and provide the folder path.
Example: C:\Users\<you>\Downloads\

Once you share the path, I'll read the logs and continue the analysis from Step 1.

Do not proceed to Step 1 until log content is available. Do NOT classify the failure layer, assign ownership, or draw conclusions based solely on the ICM title or description — log evidence is mandatory. If the user confirms no logs exist or they are unavailable, continue with Confidence: low noted throughout.


Step 1 — Verify PPBT is involved

ADO (Azure DevOps) — PPBT task identifiers

Every PPBT v2 task follows the pattern: microsoft-IsvExpTools.PowerPlatform-BuildTools.<task-id>.<TaskClass>@2

Display NameTask ID (in YAML/log)Task Class
Power Platform Tool Installertool-installerPowerPlatformToolInstaller@2
Power Platform WhoAmIwhoamiPowerPlatformWhoAmi@2
Power Platform CheckercheckerPowerPlatformChecker@2
Power Platform Import Solutionimport-solutionPowerPlatformImportSolution@2
Power Platform Export Solutionexport-solutionPowerPlatformExportSolution@2
Power Platform Unpack Solutionunpack-solutionPowerPlatformUnpackSolution@2
Power Platform Pack Solutionpack-solutionPowerPlatformPackSolution@2
Power Platform Delete Solutiondelete-solutionPowerPlatformDeleteSolution@2
Power Platform Add Solution Componentadd-solution-componentPowerPlatformAddSolutionComponent@2
Power Platform Apply Solution Upgradeapply-solution-upgradePowerPlatformApplySolutionUpgrade@2
Power Platform Publish Customizationspublish-customizationsPowerPlatformPublishCustomizations@2
Power Platform Set Solution Versionset-solution-versionPowerPlatformSetSolutionVersion@2
Power Platform Set Connection Variablesset-connection-variablesPowerPlatformSetConnectionVariables@2
Power Platform Deploy Packagedeploy-packagePowerPlatformDeployPackage@2
Power Platform Create Environmentcreate-environmentPowerPlatformCreateEnvironment@2
Power Platform Delete Environmentdelete-environmentPowerPlatformDeleteEnvironment@2
Power Platform Assign Userassign-userPowerPlatformAssignUser@2
Power Platform Reset Environmentreset-environmentPowerPlatformResetEnvironment@2
Power Platform Backup Environmentbackup-environmentPowerPlatformBackupEnvironment@2
Power Platform Copy Environmentcopy-environmentPowerPlatformCopyEnvironment@2
Power Platform Restore Environmentrestore-environmentPowerPlatformRestoreEnvironment@2
Export Dataverse Dataexport-dataPowerPlatformExportData@2
Import Dataverse Dataimport-dataPowerPlatformImportData@2
Power Platform Download PAPortaldownload-paportalPowerPlatformDownloadPaportal@2
Power Platform Upload PAPortalupload-paportalPowerPlatformUploadPaportal@2

PPBT signals (any one is sufficient):

  • Task class matches any entry in the table above
  • Author is Microsoft (not Wael Hamze or other community authors)
  • Log contains POWERPLATFORMTOOLS_PACCLIPATH or PP_TOOLS_AUTOMATION_AGENT
  • pac CLI invoked: lines containing pac solution, pac auth, pac env, pac admin, pac package
  • BuildTools.EnvironmentUrl pipeline variable present

GitHub Actions — PPBT action identifiers

All PPBT GitHub Actions use: microsoft/powerplatform-actions/<action-name>@v1

Actionuses: value
Install Power Platform Toolsmicrosoft/powerplatform-actions/actions-install@v1
WhoAmImicrosoft/powerplatform-actions/whoAmI@v1
Import Solutionmicrosoft/powerplatform-actions/import-solution@v1
Export Solutionmicrosoft/powerplatform-actions/export-solution@v1
Unpack Solutionmicrosoft/powerplatform-actions/unpack-solution@v1
Pack Solutionmicrosoft/powerplatform-actions/pack-solution@v1
Publish Customizationsmicrosoft/powerplatform-actions/publish-solution@v1
Clone Solutionmicrosoft/powerplatform-actions/clone-solution@v1
Check Solutionmicrosoft/powerplatform-actions/check-solution@v1
Upgrade Solutionmicrosoft/powerplatform-actions/upgrade-solution@v1
Deploy Packagemicrosoft/powerplatform-actions/deploy-package@v1
Upload PAPortalmicrosoft/powerplatform-actions/upload-paportal@v1
Catalog Installmicrosoft/powerplatform-actions/install@v1
Catalog Submitmicrosoft/powerplatform-actions/submit@v1
Catalog Statusmicrosoft/powerplatform-actions/status@v1

Not-PPBT signals — deflect immediately:

  • Author: Wael Hamze → CRM Build Tools (community)
  • Microsoft.Xrm.Tooling.* PowerShell → old XRM Tooling
  • PackageDeployer PowerShell task (v12.x) → Wael Hamze legacy tooling
  • Task version @v1 and no microsoft/powerplatform-actions prefix → unrelated action

If not PPBT: skip to Step 5 (non-PPBT triage) immediately.


Step 2 — Identify the failing task and classify the layer

2a — Map the failing task to its inputs

Use the tables below to check whether required inputs are present in the log or YAML.

Helper tasks

Tool Installer (tool-installer) — must be FIRST task in every pipeline/workflow

  • No required inputs beyond defaults
  • Critical: if missing → all other tasks fail with "pac.exe not found" or POWERPLATFORMTOOLS_PACCLIPATH not set
  • Optional: AddToolsToPath: true (adds pac to PATH for script tasks)

WhoAmI (whoami / whoAmI)

  • Required: authenticationType + one of PowerPlatformEnvironment or PowerPlatformSPN
  • GitHub: environment-url + auth credentials (user-name/password-secret OR app-id/client-secret/tenant-id)
  • Use: connectivity check early in pipeline — failure here = auth or network issue, not solution issue

Quality check

Checker (checker / check-solution)

  • Required: PowerPlatformSPN (SPN only — username/password NOT supported for checker)
  • Required: RuleSet GUID
  • Optional: UseDefaultPACheckerEndpoint (default true) — if false, must set CustomPACheckerEndpoint
  • Output: SARIF file as pipeline artifact (ArtifactDestinationName)
  • Common issue: checker fails for username/password connections — SPN required

Solution tasks

Import Solution (import-solution)

  • Required: service connection + SolutionInputFile
  • Key options: AsyncOperation: true (recommended for large solutions — avoids 4-min timeout), HoldingSolution (for upgrade pattern), UseDeploymentSettingsFile (for connection references + env vars)
  • Common issue: sync import times out on large solutions → set AsyncOperation: true, MaxAsyncWaitTime: 60
  • Common issue: connection references not set → use DeploymentSettingsFile

Export Solution (export-solution)

  • Required: service connection + SolutionName + SolutionOutputFile
  • Note: use solution Name not Display Name
  • Managed: true exports as managed

Apply Solution Upgrade (apply-solution-upgrade)

  • Required: service connection + SolutionName
  • Use after Import with HoldingSolution: true

Pack / Unpack Solution — local operations, no service connection needed

  • SolutionType: Managed | Unmanaged | Both

Set Solution Version (set-solution-version)

  • Required: service connection + SolutionName + SolutionVersionNumber
  • Tip: use $(Build.BuildId) as version number

Set Connection Variables (set-connection-variables)

  • Sets pipeline variables: BuildTools.TenantId, BuildTools.ApplicationId, BuildTools.ClientSecret, BuildTools.DataverseConnectionString
  • Username/password auth also requires ApplicationId and RedirectUri

Deploy Package (deploy-package)

  • Required: service connection + PackageFile (.dll)
  • GitHub Actions: Windows runner only (runs-on: windows-latest)

Environment management tasks

Create Environment (create-environment)

  • Required: DisplayName, LocationName, EnvironmentSku, CurrencyName, LanguageName, DomainName
  • Side effect: sets BuildTools.EnvironmentUrl pipeline variable — subsequent tasks use this automatically
  • Note: BuildTools.EnvironmentUrl overrides

Content truncated.

When not to use it

  • When log evidence is not available or cannot be provided
  • When diagnosing issues unrelated to pipeline failures or customer issues
  • When the user explicitly states not to perform diagnosis

Limitations

  • Requires log evidence before classifying the failure layer
  • Cannot proceed if logs are referenced but not accessible
  • Diagnosis based solely on ICM title or description will have low confidence

How it compares

This skill automates the end-to-end diagnosis of pipeline failures and customer issues, providing precise failure analysis and triage, unlike manual log review.

Compared to similar skills

debug-agent side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
debug-agent (this skill)04moReviewAdvanced
analyzing-logs1427dReviewBeginner
sentry104moCautionBeginner
obsidian-incident-runbook327dReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by microsoft

View all by microsoft

You might also like

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

sentry

openai

Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry API; perform read-only queries with the bundled script and require `SENTRY_AUTH_TOKEN`.

1048

obsidian-incident-runbook

jeremylongshore

Troubleshoot Obsidian plugin failures with systematic incident response. Use when plugins crash, data is corrupted, or users report critical issues with your Obsidian plugin. Trigger with phrases like "obsidian crash", "obsidian plugin broken", "obsidian incident", "debug obsidian failure", "obsidian emergency".

346

obsidian-observability

jeremylongshore

Set up comprehensive logging and monitoring for Obsidian plugins. Use when implementing debug logging, tracking plugin performance, or setting up error reporting for your Obsidian plugin. Trigger with phrases like "obsidian logging", "obsidian monitoring", "obsidian debug", "track obsidian plugin".

534

langsmith-observability

davila7

LLM observability platform for tracing, evaluation, and monitoring. Use when debugging LLM applications, evaluating model outputs against datasets, monitoring production systems, or building systematic testing pipelines for AI applications.

430

network-info

UKGovernmentBEIS

Gather network configuration and connectivity information including interfaces, routes, and DNS

329

Search skills

Search the agent skills registry