add-cloud-flow
Integrates Power Automate cloud flows into a Power Pages site. Lists available flows, suggests relevant ones based on intent, identifies scenarios and web roles, creates metadata files, and generates client-side code to call flows.
Install / Use
npx skills add microsoft/power-platform-skills --skill add-cloud-flowInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Tags
Our assessment of add-cloud-flow
add-cloud-flow scores 85/100 on our quality scale, 1956th of 2,892 Automation skills we index.
Its SKILL.md is 34 KB long, well organised into 48 sections with 8 code examples: 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 12 days ago, so add-cloud-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.
add-cloud-flow compared with similar skills
All 4 of these similar skills score higher than add-cloud-flow; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| add-cloud-flow (this skill)by microsoft | 85 | 919 | 12d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 92.4k | 21d ago | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.9k | today | MCP Server |
| rufloby ruvnet | 100 | 74.0k | today | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 14d ago | SKILL.md |
Frequently asked questions
- How do I install add-cloud-flow?
- Run
npx skills add microsoft/power-platform-skills --skill add-cloud-flow. The install tabs above show the steps for each supported agent. - Which AI agents does add-cloud-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 add-cloud-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 add-cloud-flow still maintained?
- The repository was last updated 12 days ago, so add-cloud-flow is actively maintained.
Skill content
View source on GitHubname: add-cloud-flow description: >- Integrates Power Automate cloud flows into a Power Pages site. Lists available flows, suggests relevant ones based on intent, identifies scenarios and web roles, creates metadata files, and generates client-side code to call flows. Handles both new flow registration and adding already-registered flows to additional pages without re-creating metadata. Use when the user wants to add, connect, register, or link a Power Automate cloud flow to their site. user-invocable: true allowed-tools: Read, Write, Edit, Bash, Grep, Glob, AskUserQuestion, Skill, Task, TaskCreate, TaskUpdate, TaskList model: opus
Plugin check: Run
node "${PLUGIN_ROOT}/scripts/check-version.js"— if it outputs a message, show it to the user before proceeding.
Add Cloud Flow
Connect one or more Power Automate cloud flows to a Power Pages code site, or wire already-registered flows into additional pages/components. For new flows this skill:
- Creates the
adx_cloudflowconsumermetadata YAML in.powerpages-site/cloud-flow-consumer/ - Assigns web roles based on the flow's scenario and target audience
- Generates client-side TypeScript/JavaScript service code to trigger the flow with CSRF authentication
For already-registered flows, the skill skips metadata and role creation and goes straight to client-side integration — wiring the existing flow into new UI locations.
Core Principles
- Multiple flows in one run: The user can add several flows at once. All flows are planned together and implemented together before asking for deployment.
- Ask before acting: Present a full HTML plan (all flows, roles, reasoning) before creating any files.
- Web roles drive access: Every flow must have at least one web role. Anonymous Users role is valid but must be confirmed.
- Scenario determines roles: Understand what each flow does and who triggers it before picking roles.
- Use TaskCreate/TaskUpdate: Track all phases upfront before starting any work.
Prerequisites:
- An existing Power Pages code site with
.powerpages-sitedeployed- PAC CLI authenticated (
pac auth whomust succeed)- Azure CLI authenticated (
az login --allow-no-subscriptionsworks whether or not your account has an Azure subscription — Dataverse and Power Platform tokens are AAD-scoped)
Initial request: $ARGUMENTS
Workflow
- Verify Prerequisites — Locate the project, confirm
.powerpages-siteexists, inventory web roles and existing flows - List Available Flows — Fetch flows from the Power Automate Flow RP API
- Select Flows & Understand Scenarios — User picks one or more flows; determine scenario and audience for each
- Determine Web Roles — Propose minimum roles per flow with reasoning
- Review Plan — Render HTML plan for all flows; get user approval
- Create Metadata — Write
.cloudflowconsumer.ymlfor each flow; create missing web roles first - Client-Side Integration — Generate typed service code to call each flow from the frontend
- Verify & Summarize — Validate all YAMLs, record skill usage, offer deployment
Phase 1: Verify Prerequisites
Goal: Locate the Power Pages project and confirm all prerequisites are met
Actions:
- Create todo list with all 8 phases (see Progress Tracking table)
1.1 Locate Project
Look for powerpages.config.json in the current directory or immediate subdirectories.
If not found: Tell the user to create a site first with /create-site.
1.2 Read Config
Read powerpages.config.json to get the siteName (used for display and plan rendering).
1.3 Check .powerpages-site Exists
Look for the .powerpages-site folder in the project root.
If not found:
<!-- gate: add-cloud-flow:1.3.deploy-first | category=plan | cancel-leaves=nothing -->🚦 Gate (plan · add-cloud-flow:1.3.deploy-first):
.powerpages-sitemissing — cloud flow YAML lives inside it. Deploy first or stop.Trigger: Phase 1.3 found no
.powerpages-sitedirectory. Why we ask: Cloud flow YAML written to a non-existent path will never deploy. Cancel leaves: Nothing — no YAML files written.
Use AskUserQuestion:
| Question | Options |
|----------|---------|
| .powerpages-site is required to add cloud flows. Would you like to deploy the site now? | Yes, deploy now (Required), Cancel |
If "Yes, deploy now": Invoke /deploy-site first, then continue to Phase 2.
If "Cancel": Stop.
1.4 Read Existing Web Roles
Read all .webrole.yml files from .powerpages-site/web-roles/ to inventory available roles. Note each role's id, name, adx_anonymoususersrole, and adx_authenticatedusersrole.
1.5 Check Existing Cloud Flows
Check .powerpages-site/cloud-flow-consumer/ for existing .cloudflowconsumer.yml files. For each file, read:
processid— the flow'sworkflowEntityIdname— the flow's display nameadx_CloudFlowConsumer_adx_webrole— assigned web role UUIDs
Store these as the already-registered flows list. These flows already have metadata and web roles configured but may need additional frontend integration on other pages or components.
1.6 Detect Frontend Framework
Read package.json to detect the framework (React, Vue, Angular, Astro). Note the framework and its conventions for Phase 7. See ${PLUGIN_ROOT}/references/framework-conventions.md for the detection mapping.
Output: Project root, site name, framework, available web roles, already-registered flows (with processid, name, and web roles)
Phase 2: List Available Flows
Goal: Fetch all Power Automate cloud flows that have a PowerPages trigger
Actions:
Run the list-cloud-flows script (reads environment from pac auth who internally):
node "${PLUGIN_ROOT}/skills/add-cloud-flow/scripts/list-cloud-flows.js"
This calls the Power Automate Flow RP API with the filter properties/definitionSummary/triggers/any(t: t/kind eq 'powerpages'). Results include:
| Field | Source | Used for |
|-------|--------|----------|
| id | properties.workflowEntityId | processid in YAML; URL in client-side API call |
| flowRpName | flow.name | Flow RP identifier |
| displayName | properties.displayName | Shown to user; written as name in YAML |
| description | properties.description | Shown to user |
| state | properties.state | Shown to user (Active/Draft) |
Separate into two lists:
- Unregistered flows: Flows whose
iddoes NOT match anyprocessidfrom Phase 1.5 — these need full setup (metadata + roles + client-side) - Already-registered flows: Flows whose
idmatches aprocessidfrom Phase 1.5 — these already have metadata and roles but can be integrated into additional pages/components
Handle errors:
-
Exit code 1 with auth message → prompt the user to run
az login --allow-no-subscriptions -
Zero flows from API (no flows with a PowerPages trigger exist at all) → tell the user that no Power Automate flows with a PowerPages trigger were found in this environment. Guide them to create a flow first:
"No Power Automate cloud flows with a PowerPages trigger were found in this environment. To use this skill, you first need to create a flow in Power Automate with the "When a Power Pages flow step is run" trigger, then run this skill again to connect it to your site."
Stop the workflow — do not continue to Phase 3.
-
Zero unregistered flows but already-registered flows exist → do not stop. Continue to Phase 3 with only the already-registered flows available (for additional frontend integration).
Output: List of unregistered flows and list of already-registered flows
Phase 3: Select Flows & Understand Scenarios
Goal: Understand the user's intent, suggest the most relevant flows (including already-registered ones for additional integration), let the user confirm or adjust, and determine the scenario for each selected flow
Actions:
3.1 Analyze User Intent & Suggest Flows
Before showing the full list, analyze the user's initial request ($ARGUMENTS) against both the unregistered flows and the already-registered flows. Match the user's described need to specific flows using display name, description, and scenario inference.
When matching intent, check already-registered flows first — the user may be asking to wire an existing flow into a new page or component, not register a new one.
-
If the user described a specific need (e.g., "add automation for the contact form", "connect the email notification flow"): Identify flows whose name or description closely match the request and present them as recommended picks, explaining why each is a good match. Also show the remaining flows as additional options in case the suggestion is wrong.
Based on your request, I recommend: ⭐ 1. Contact Form Submission — Sends an email when a contact form is submitted (Active) → Matches your request to add automation for the contact form Other available flows: 2. Support Ticket Handler — Creates a case record from user input (Active) 3. Newsletter Signup — Adds the user's email to a mailing list (Draft) -
If the user's request is generic (e.g., "add a cloud flow", "connect some flows"): Fall back to presenting the full list without recommendations.
Available flows: 1. Contact Form Submission — Sends an email when a contact form is submitted (Active) 2. Support Ticket Handler — Creates a case record from user input (Active) 3. Newsletter Signup — Adds the user's email to a mailing list (Draft)
Present both categories clearly when both exist:
New flows (not yet registered):
1. Newsletter Signup — Adds the user's email to a mailing list (Active)
Already registered (available for additional frontend integration):
2. Contact Form Submission — Already connected, can be wired into more pages
3. Support Ticket Handler — Already connected, can be wired into more pages
<!-- gate: add-cloud-flow:3.1.select-flows | category=plan | cancel-leaves=nothing -->
🚦 Gate (plan · add-cloud-flow:3.1.select-flows): Multi-select over discovered + already-registered flows. Drives the rest of Phases 4–7.
Trigger: Phase 2 list-cloud-flows returned at least one flow. Why we ask: Wrong flows get registered (new
.cloudflowconsumer.ymlfiles written) or wrong existing flows get re-wired into the frontend. Cancel leaves: Nothing — no YAML or client code written yet.
Use AskUserQuestion:
| Question | Options | |----------|---------| | Which flows would you like to add or integrate? You can select from both new and already-registered flows. | (list or multi-select of flow names, with recommended flows pre-highlighted if applicable) |
If more than 10 flows are available, ask the user to type names or numbers (comma-separated for multiple).
3.2 Tag Selected Flows
For each selected flow, tag it based on its source:
| Tag | Meaning | Phases to execute |
|-----|---------|-------------------|
| new | Unregistered flow — needs full setup | Phases 4 → 5 → 6 → 7 (metadata + roles + client-side) |
| integration-only | Already registered — metadata and roles exist | Skip to Phase 7 (client-side integration only) |
3.3 Determine Scenario Per Flow
For each selected flow, identify its scenario from the name and description:
| Scenario type | Examples | Who triggers it | |--------------|----------|-----------------| | Form submission | Contact form, feedback, survey | Authenticated or anonymous visitors | | User self-service | Profile update, request, leave application | Authenticated users only | | Admin action | Bulk processing, content approval, data export | Admins / specific roles only | | Background / system | Scheduled sync, enrichment | Not tr
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
92.4kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
85.9k🕷️ 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
ruflo
74.0k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
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.
