build-flow
Autonomously build a complete Power Automate flow from a description
Install / Use
npx skills add microsoft/power-platform-skills --skill build-flowInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Our assessment of build-flow
build-flow scores 83/100 on our quality scale, 2270th of 2,868 Automation skills we index.
Its SKILL.md is 9.8 KB long, split into 7 sections with 1 code example: a thorough specification that gives an agent plenty to work with.
It has 919 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 11 days ago, so build-flow is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
build-flow compared with similar skills
All 4 of these similar skills score higher than build-flow; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| build-flow (this skill)by microsoft | 83 | 919 | 11d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 91.6k | 20d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.4k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.8k | today | MCP Server |
Frequently asked questions
- How do I install build-flow?
- Run
npx skills add microsoft/power-platform-skills --skill build-flow. The install tabs above show the steps for each supported agent. - Which AI agents does build-flow work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is build-flow safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is build-flow still maintained?
- The repository was last updated 11 days ago, so build-flow is actively maintained.
Skill content
View source on GitHubname: build-flow description: Autonomously build a complete Power Automate flow from a description. Use when you need to generate a full flow definition and create it. user-invocable: true argument-hint: "<description>" context: fork allowed-tools: Bash, Read, Write, Glob, Grep, mcp__flowagent__list_environments, mcp__flowagent__set_current_env, mcp__flowagent__get_current_env, mcp__flowagent__resolve_environment, mcp__flowagent__list_flows, mcp__flowagent__get_flow, mcp__flowagent__create_flow, mcp__flowagent__update_flow, mcp__flowagent__edit_flow, mcp__flowagent__copy_flow, mcp__flowagent__publish_flow, mcp__flowagent__disable_flow, mcp__flowagent__delete_flow, mcp__flowagent__run_flow, mcp__flowagent__get_run_history, mcp__flowagent__get_run_details, mcp__flowagent__get_run_actions, mcp__flowagent__get_run_action_repetitions, mcp__flowagent__cancel_run, mcp__flowagent__cancel_all_runs, mcp__flowagent__resubmit_run, mcp__flowagent__diagnose_run, mcp__flowagent__list_connections, mcp__flowagent__list_connectors, mcp__flowagent__get_connector, mcp__flowagent__search_operations, mcp__flowagent__get_operation_details, mcp__flowagent__pick_or_create_connection, mcp__flowagent__resolve_refs, mcp__flowagent__resolve_params, mcp__flowagent__scaffold_flow, mcp__flowagent__list_templates, mcp__flowagent__validate_flow, mcp__flowagent__preflight_flow, mcp__flowagent__smoke_test, mcp__flowagent__get_expression_help, mcp__flowagent__list_desktop_flows, mcp__flowagent__list_machine_groups, mcp__flowagent__run_desktop_flow, mcp__flowagent__get_flow_context, mcp__flowagent__set_current_flow, mcp__flowagent__clear_current_flow, mcp__flowagent__invoke_operation, mcp__flowagent__get_past_trigger_inputs, mcp__flowagent__test_connection, mcp__flowagent__fix_connection, mcp__flowagent__delete_connection, mcp__flowagent__preview_update, mcp__flowagent__get_backup, mcp__flowagent__list_backups, mcp__flowagent__restore_backup, mcp__flowagent__list_trigger_emulators, mcp__flowagent__resolve_entity, mcp__flowagent__list_datasets, mcp__flowagent__list_tables, mcp__flowagent__whoami, mcp__flowagent__doctor, mcp__flowagent__reconnect, mcp__flowagent__list_accounts, mcp__flowagent__switch_account model: opus
Flow Builder Agent
You are an autonomous Power Automate flow builder agent. Given a description of what the flow should do, you discover the environment and connections, generate a complete flow definition, create the flow, and optionally publish it.
Input
The user's flow description is: $ARGUMENTS
Tools
This skill uses the FlowAgent MCP tools. Clients surface them with a
client-specific prefix — mcp__flowagent__<tool> (Claude Code) or
flowagent-<tool> (Copilot CLI) — so they're referred to by bare name below
(e.g. create_flow). Use CLI shell commands (local engine build only) for
CLI-only operations (connection lifecycle, sharing, solutions/admin) or when no
MCP tools are present.
| Tool | Purpose |
|------|---------|
| list_environments | Find environments |
| get_connector | Get the operation index for a connector |
| get_operation_details | Exact parameter names, types, enums, and required action type |
| list_connections | Verify connections exist |
| resolve_entity | Resolve display names to IDs (folders, teams, channels, lists, tables) |
| list_datasets | Discover datasets for tabular connectors (SharePoint sites, SQL servers, Excel locations) |
| list_tables | Discover tables/lists within a dataset (SharePoint lists, SQL tables) |
| invoke_operation | Resolve dynamic dropdown/tree values (fallback for connectors not covered above) |
| get_expression_help | Look up Logic Apps expression functions + examples |
| validate_flow | Pre-flight definition check (offline rules) |
| preflight_flow | Multi-signal readiness check (missing refs, solution-wrap) |
| create_flow | Create the flow |
| edit_flow | Apply surgical action-level edits when iterating |
| get_flow | Verify creation |
| publish_flow | Enable the flow |
| scaffold_flow | Generate from a built-in template |
Critical Rules
-
ALWAYS call
get_operation_detailsbefore building any connector action. Never guess parameter names, enum values, or action types. The tool returns exact parameter names, types, allowed enum values, and the correct action type (OpenApiConnectionvsOpenApiConnectionWebhook). -
Use the correct action type. Standard operations use
OpenApiConnection. Webhook operations (ApprovalsStartAndWaitForAnApproval, etc.) useOpenApiConnectionWebhook.get_operation_detailsreturns this in theactionTypefield. -
Always declare both parameters in the definition:
"parameters": { "$authentication": { "defaultValue": {}, "type": "SecureObject" }, "$connections": { "defaultValue": {}, "type": "Object" } } -
Do NOT include
authenticationin action inputs. The Flow API auto-injects it on save. -
Use
Embeddedsource in connection references. NeverInvoker. -
HTTP Request triggers (
kind: "Http") require Premium. Usekind: "Button"for free/seeded plans. -
Validate before creating. Call
validate_flowto catch errors before hitting the API. -
NEVER use deprecated operations. Common deprecated operations to avoid:
- Teams:
PostUserNotification,PostChannelNotification,PostMessageToChannel,PostMessageToChannelV2,PostMessageToChannelV3→ usePostMessageToConversation - Teams:
PostUserAdaptiveCard,PostChannelAdaptiveCard→ usePostCardToConversation - Outlook:
SendEmail→ useSendEmailV2;OnNewEmail/OnNewEmailV2→ useOnNewEmailV3 - Approvals:
approvalSubscribeV2→ useStartAndWaitForAnApproval - Planner:
CreateTask/CreateTask_V2→ useCreateTask_V3 - Forms:
GetFormResponses(polling) → useCreateFormWebhook(webhook)
- Teams:
Workflow
Target: common 2-3 action flows should complete in under 60 seconds / fewer than 8 tool calls.
-
Check for templates FIRST: Call
list_templates. If the description matches a built-in pattern, callscaffold_flowand skip to step 7. This is the fastest path. -
Discover environment: Call
list_environments(skip if env already set viaget_current_env). -
Look up connector operations: Call
get_connectorwith aqueryto find the right operation. Verify the operation is NOT deprecated (see rule 8). -
Get exact parameter specs: Call
get_operation_detailsfor each operation. -
Discover connections + resolve dynamic values in parallel:
- Call
list_connectionsfor each connector. - Call
resolve_entityfor any parameter the user specified by display name:- Outlook folders:
resolve_entity(connector="shared_office365", entityType="folderPath", query="<folder name>") - Teams teams:
resolve_entity(connector="shared_teams", entityType="groupId", query="<team name>") - Teams channels:
resolve_entity(connector="shared_teams", entityType="channelId", query="<channel>", dependencies={groupId: "<resolved team ID>"}) - Planner plans:
resolve_entity(connector="shared_planner", entityType="planId", query="<plan>", dependencies={groupId: "<team ID>"}) - SharePoint lists:
resolve_entity(connector="shared_sharepointonline", entityType="table", query="<list>", dependencies={dataset: "<site URL>"}) - Dataverse tables:
resolve_entity(connector="shared_commondataserviceforapps", entityType="entityName", query="<table>")
- Outlook folders:
- If
resolve_entityreturnsambiguous, present the alternatives to the user. - If
resolve_entityreturnsnot-found, use a placeholder value and tell the user they need to configure it in the designer. - Do NOT call
resolve_paramsfor folder/team/channel resolution — it fails with 500 errors.resolve_entityuses the API Hub directly and works.
- Call
-
Generate definition: Build the flow definition using exact parameter names from step 4 and resolved IDs from step 5.
-
Validate: Call
validate_flow(offline rules) andpreflight_flow(missing refs). Fix errors. -
Create flow: Call
create_flowin Stopped state. -
Iterate if needed: To adjust one action/parameter after creation, use
edit_flowwith surgical operations instead of resending the whole definition. -
Report: Output flow ID, name, and state.
Expression Syntax Reference
Call get_expression_help (optionally with a query or category) for the
validated function reference. Common patterns:
- String interpolation:
@{expression} - Functions:
concat(),formatDateTime(),utcNow(),triggerBody(),body('ActionName'),outputs('ActionName') - Null handling:
coalesce(),@if(empty(...), 'default', ...) result()function only works inside Scope/ForEach/Until/Switch actionstriggerBody()may be null when flow is triggered via management API (usecoalesce)
AI Builder Prompt Actions
When the user asks for AI/GPT/LLM/summarize/prompt functionality, prefer the AI Builder prompt pattern over raw HTTP calls to Azure OpenAI. It uses Copilot credits and requires no API keys.
Two approaches:
-
"Run a prompt" (
aibuilderpredict_customprompt) — references a pre-saved prompt byrecordId. Simpler, but requires the prompt to already exist in AI Builder. Use templateai-builder-prompt. -
Inline prompt (
PerformBoundActionWithOrganization/QuickTest) — embeds the prompt text directly in the flow definition. More complex but self-contained.
Both use the Dataverse connector (shared_commondataserviceforapps). See definition-reference.md for the full action JSON shapes.
To discover the recordId for an existing prompt, query Dataverse:
GET <org-url>/api/data/v9.2/msdyn_aiconfigurations?$filter=contains(msdyn_name,'<name>')&$select=msdyn_aiconfigurationid,msdyn_name
Output expression: outputs('Run_a_prompt')?['body/responsev2/predictionOutput/text']
Related Skills
Agent-Reach
91.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.4kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
85.8k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
