Skip to content

Commit d3900df

Browse files
committed
feat: add monitoring + governance skills, strengthen debug + build
New skills: - flowstudio-power-automate-monitoring: flow health, failure rates, maker inventory, Power Apps, cached store tools - flowstudio-power-automate-governance: 10 CoE-aligned workflows — compliance review, orphan detection, archive scoring, connector audit, notification management, tagging, offboarding, security review, environment governance, dashboard Updated skills: - flowstudio-power-automate-debug: mandatory action output inspection (not just error codes), resubmit works for ALL trigger types - flowstudio-power-automate-build: resubmit promoted as first testing option, trigger_live_flow demoted to custom-payload only - flowstudio-power-automate-mcp: trigger_live_flow content-type note, branch URLs updated to main All response shapes verified against real API calls. All 10 governance workflows validated by agent simulation (10/10 PASS).
1 parent 0c3c5bb commit d3900df

File tree

5 files changed

+1031
-47
lines changed
  • skills
    • flowstudio-power-automate-build
    • flowstudio-power-automate-debug
    • flowstudio-power-automate-governance
    • flowstudio-power-automate-mcp
    • flowstudio-power-automate-monitoring

5 files changed

+1031
-47
lines changed

skills/flowstudio-power-automate-build/SKILL.md

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,20 @@
22
name: flowstudio-power-automate-build
33
description: >-
44
Build, scaffold, and deploy Power Automate cloud flows using the FlowStudio
5-
MCP server. Load this skill when asked to: create a flow, build a new flow,
5+
MCP server. Your agent constructs flow definitions, wires connections, deploys,
6+
and tests — all via MCP without opening the portal.
7+
Load this skill when asked to: create a flow, build a new flow,
68
deploy a flow definition, scaffold a Power Automate workflow, construct a flow
79
JSON, update an existing flow's actions, patch a flow definition, add actions
810
to a flow, wire up connections, or generate a workflow definition from scratch.
911
Requires a FlowStudio MCP subscription — see https://mcp.flowstudio.app
12+
metadata:
13+
openclaw:
14+
requires:
15+
env:
16+
- FLOWSTUDIO_MCP_TOKEN
17+
primaryEnv: FLOWSTUDIO_MCP_TOKEN
18+
homepage: https://mcp.flowstudio.app
1019
---
1120

1221
# Build & Deploy Power Automate Flows with FlowStudio MCP
@@ -15,7 +24,7 @@ Step-by-step guide for constructing and deploying Power Automate cloud flows
1524
programmatically through the FlowStudio MCP server.
1625

1726
**Prerequisite**: A FlowStudio MCP server must be reachable with a valid JWT.
18-
See the `flowstudio-power-automate-mcp` skill for connection setup.
27+
See the `power-automate-mcp` skill for connection setup.
1928
Subscribe at https://mcp.flowstudio.app
2029

2130
---
@@ -278,6 +287,8 @@ check = mcp("get_live_flow", environmentName=ENV, flowName=FLOW_ID)
278287
279288
# Confirm state
280289
print("State:", check["properties"]["state"]) # Should be "Started"
290+
# If state is "Stopped", use set_live_flow_state — NOT update_live_flow
291+
# mcp("set_live_flow_state", environmentName=ENV, flowName=FLOW_ID, state="Started")
281292
282293
# Confirm the action we added is there
283294
acts = check["properties"]["definition"]["actions"]
@@ -294,38 +305,45 @@ print("Actions:", list(acts.keys()))
294305
> flow will do and wait for explicit approval before calling `trigger_live_flow`
295306
> or `resubmit_live_flow_run`.
296307
297-
### Updated flows (have prior runs)
308+
### Updated flows (have prior runs) — ANY trigger type
298309
299-
The fastest path — resubmit the most recent run:
310+
> **Use `resubmit_live_flow_run` first.** It works for EVERY trigger type
311+
> Recurrence, SharePoint, connector webhooks, Button, and HTTP. It replays
312+
> the original trigger payload. Do NOT ask the user to manually trigger the
313+
> flow or wait for the next scheduled run.
300314
301315
```python
302316
runs = mcp("get_live_flow_runs", environmentName=ENV, flowName=FLOW_ID, top=1)
303317
if runs:
318+
# Works for Recurrence, SharePoint, connector triggers — not just HTTP
304319
result = mcp("resubmit_live_flow_run",
305320
environmentName=ENV, flowName=FLOW_ID, runName=runs[0]["name"])
306-
print(result)
321+
print(result) # {"resubmitted": true, "triggerName": "..."}
307322
```
308323
309-
### Flows already using an HTTP trigger
324+
### HTTP-triggered flows — custom test payload
310325
311-
Fire directly with a test payload:
326+
Only use `trigger_live_flow` when you need to send a **different** payload
327+
than the original run. For verifying a fix, `resubmit_live_flow_run` is
328+
better because it uses the exact data that caused the failure.
312329
313330
```python
314331
schema = mcp("get_live_flow_http_schema",
315332
environmentName=ENV, flowName=FLOW_ID)
316-
print("Expected body:", schema.get("triggerSchema"))
333+
print("Expected body:", schema.get("requestSchema"))
317334
318335
result = mcp("trigger_live_flow",
319336
environmentName=ENV, flowName=FLOW_ID,
320337
body={"name": "Test", "value": 1})
321-
print(f"Status: {result['status']}")
338+
print(f"Status: {result['responseStatus']}")
322339
```
323340
324341
### Brand-new non-HTTP flows (Recurrence, connector triggers, etc.)
325342
326-
A brand-new Recurrence or connector-triggered flow has no runs to resubmit
327-
and no HTTP endpoint to call. **Deploy with a temporary HTTP trigger first,
328-
test the actions, then swap to the production trigger.**
343+
A brand-new Recurrence or connector-triggered flow has **no prior runs** to
344+
resubmit and no HTTP endpoint to call. This is the ONLY scenario where you
345+
need the temporary HTTP trigger approach below. **Deploy with a temporary
346+
HTTP trigger first, test the actions, then swap to the production trigger.**
329347
330348
#### 7a — Save the real trigger, deploy with a temporary HTTP trigger
331349
@@ -428,7 +446,7 @@ else:
428446
| `union(old_data, new_data)` | Old values override new (first-wins) | Use `union(new_data, old_data)` |
429447
| `split()` on potentially-null string | `InvalidTemplate` crash | Wrap with `coalesce(field, '')` |
430448
| Checking `result["error"]` exists | Always present; true error is `!= null` | Use `result.get("error") is not None` |
431-
| Flow deployed but state is "Stopped" | Flow won't run on schedule | Check connection auth; re-enable |
449+
| Flow deployed but state is "Stopped" | Flow won't run on schedule | Call `set_live_flow_state` with `state: "Started"` — do **not** use `update_live_flow` for state changes |
432450
| Teams "Chat with Flow bot" recipient as object | 400 `GraphUserDetailNotFound` | Use plain string with trailing semicolon (see below) |
433451
434452
### Teams `PostMessageToConversation` — Recipient Formats
@@ -456,5 +474,5 @@ The `body/recipient` parameter format depends on the `location` value:
456474
457475
## Related Skills
458476
459-
- `flowstudio-power-automate-mcp` — Core connection setup and tool reference
460-
- `flowstudio-power-automate-debug` — Debug failing flows after deployment
477+
- `power-automate-mcp` — Core connection setup and tool reference
478+
- `power-automate-debug` — Debug failing flows after deployment

0 commit comments

Comments
 (0)