Borrowing it
Nothing to install: this file belongs to OwnOptic/power-automate-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/OwnOptic/power-automate-mcp/main/.claude/skills/debug-flow/SKILL.mdgit clone --depth 1 https://github.com/OwnOptic/power-automate-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ownoptic/power-automate-mcp/debug-flow)<a href="https://agentmods.dev/skills/ownoptic/power-automate-mcp/debug-flow"><img src="https://agentmods.dev/badge/skills/ownoptic/power-automate-mcp/debug-flow/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ownoptic/power-automate-mcp/debug-flow"><img src="https://agentmods.dev/badge/skills/ownoptic/power-automate-mcp/debug-flow.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00068 | $0.00706 |
| Opus 5.5 | $0.00027 | $0.00282 |
| Sonnet 5.5 | $0.00014 | $0.00141 |
| Haiku 4.5 | $0.00007 | $0.00071 |
Grade A, and why
debug-flow scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 48 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Debug a Power Automate flow
Work the loop in order. Skip a step only when you already hold its output.
- Resolve the flow.
list_flows, match ondisplay_name, keep theflow_id. - Find the failure.
list_runs(flow_id, status="Failed"). Newest first. - Diagnose one run.
explain_run(flow_id, run_id)on the newest failed run.failed_actions[].erroris the real error text, already resolved from the SAS-signed blob. Do not go fetch it yourself.failed_actionsempty while status is Failed means the TRIGGER failed.get_flowand inspect the trigger's condition and inputs.- The cause is usually upstream: read the
succeededoutputs for the value that fed the failing action.
- Error clear but cause not ("it worked yesterday", intermittent,
data-dependent):
compare_runs(flow_id, failed_run_id). It auto-picks the most recent Succeeded run as baseline. Readdiverged_atfirst, thenoutput_changes- an action that succeeded in both runs with different output is usually the real cause.only_in_failed/only_in_baselinemeans a condition or branch evaluated differently. - Recurring or flaky:
analyze_flow_health(flow_id). Trust theverdict:- broken (near-100% failure) - fix the definition, stop rerunning it
- flaky, concentrated in one action - targeted fix on that action
- flaky, spread across actions - suspect trigger data or a connection, not logic
- Fix and verify.
get_flow-> edit the returneddefinition->update_flow_definitionwith the COMPLETE definition (there is no partial update). Re-run withrun_flow, thenexplain_runagain to confirm.
Rules learned the hard way
- SAS URLs on old runs expire. If
explain_runreports the error blob unavailable, re-run the flow and diagnose the fresh run instead of digging. run_flowdoes not forward a body:@triggerBody()is null when triggered through the management API. If the failure only reproduces with a real payload, call the flow's actual HTTP trigger URL.- Deterministic vs data-dependent: the same action failing in both compared runs
with empty
output_changesmeans the definition is wrong. Different upstream outputs mean the data is. - When the error points at the action's shape rather than its data (a missing
or unknown parameter, an operation that no longer exists), check the connector
reference with the Microsoft Learn MCP server before editing the definition.
Fetch
https://learn.microsoft.com/connectors/<connector>/and confirm the operationId, its keys, and whether it is marked[DEPRECATED].
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +5 lines f5327f6cff24
- 1mo ago First seen · 43 lines · 68 tokens per session scan A 34558b8308b4
debug-flow is a skill published in the GitHub repository OwnOptic/power-automate-mcp (0 stars, last pushed 1mo ago), licensed MIT. It adds 68 tokens to every session and 706 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
ssh-incident
A diagnosis order for "the server is down", "the site is slow", "something broke". Use when investigating a problem on a remote server through the ssh tools, before changing anything.
broken-link-auditor
Audits SharePoint pages, news posts, and hyperlink fields for broken or risky links and saves a self-contained HTML link-health report to the site. It is strictly read-only for content and only writes the final report file. Use when the user says: "broken link audit" "find broken links" "check dead links on this site"…
ralphctl-debugging-and-error-recovery
Systematic root-cause debugging. Use when tests fail, builds break, something that worked before broke, or behaviour does not match expectations — when you need to figure out what broke and why. Follow stop-the-line → reproduce → localize → reduce → root-cause → guard-with-regression-test → verify, not guessing; the…
ralphctl-code-simplification
Behaviour-preserving simplification of existing code — understand why the code exists before changing it, then reduce nesting, unclear names, duplication, dead code, and needless indirection one step at a time with the existing tests unchanged and green after each. Use when a task asks to refactor or clean up working…
code
Use BEFORE generating, refactoring, reviewing, or debugging code. Trigger phrases include "write a function/script/class for X", "review this code/diff/PR", "refactor this", "debug this error", "is this implementation correct", "what's wrong with this code", "improve this code", "translate from X to Y", or any prompt…
opengrok
Use this skill whenever the user wants to search, navigate, or understand source code in a large codebase — even when they don't say "OpenGrok". Trigger for: finding where a function or class is defined, tracking where something is called or referenced, reading a remote source file, checking who last changed a line…