<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: david wyatt</title>
    <description>The latest articles on DEV Community by david wyatt (@wyattdave).</description>
    <link>https://dev.to/wyattdave</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F653003%2Ff6da9df7-019e-4189-ab7f-c5c527fe1db6.png</url>
      <title>DEV Community: david wyatt</title>
      <link>https://dev.to/wyattdave</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wyattdave"/>
    <language>en</language>
    <item>
      <title>Creating a Custom Agent in 5 Minutes</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 14 Sep 2026 10:27:27 +0000</pubDate>
      <link>https://dev.to/wyattdave/creating-a-custom-agent-in-5-minutes-41fj</link>
      <guid>https://dev.to/wyattdave/creating-a-custom-agent-in-5-minutes-41fj</guid>
      <description>&lt;p&gt;Agents are cool, we know that, but making them can seem daunting. But actually it can be super easy, with the right tools and approach, let me show you how.&lt;/p&gt;

&lt;p&gt;Call out here, this is not going to be the most powerful, game changing agent in the world, but its going to be useful, and the ROI is fantastic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pre-work&lt;/li&gt;
&lt;li&gt;Design&lt;/li&gt;
&lt;li&gt;Build&lt;/li&gt;
&lt;li&gt;Example&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Pre-work
&lt;/h2&gt;

&lt;p&gt;First things we need to select a platform, as we want this to be minimum effort, and minimum cost, we are going to use M365 Agent Builder. This does require a M365 Copilot License (so not actually minium cost), but there will be no per use cost, which is the most important thing you need to consider when building your agent.&lt;/p&gt;

&lt;p&gt;The next most important thing is a usecase. I see this to often, a solution looking for a problem. If you build an agent without a genuine usecase its always going to fail, find a problem first, and then if an agent (big if) can solve it then build.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Another callout, before AI the build investment meant you had to pick the right solution, App/Agent/Dashboard/etc, before building. But now I would recommend spinning up a PoC per solution, and then you can find out which is best&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My usecase is reports, I spend a lot of time researching and then creating short technical reports on them. Before I would spin up Power Point presentations with help from the Research agent. But I found researcher wasnt the right level, and Power Points were either overkill or not interesting enough. Ive spoke recently about how much I now use single page HTML files, so my agent is going to create me a HTML report for whatever I need.&lt;/p&gt;

&lt;p&gt;Before we start we still need requirements, and for this small project mine are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Include my own context first&lt;/li&gt;
&lt;li&gt;Optional to include external data (websites etc)&lt;/li&gt;
&lt;li&gt;Varied UI (I could go with a standard template but I want to mix it up)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Design
&lt;/h2&gt;

&lt;p&gt;We know what we want and the platform, so now the design. Agent Builder has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instruction file - system prompt&lt;/li&gt;
&lt;li&gt;Skills - dynamic content&lt;/li&gt;
&lt;li&gt;External Sources - SharePoint, Teams, Outlook, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm93gq5x4r970aeynfsc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm93gq5x4r970aeynfsc8.png" alt="areas" width="532" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Instruction File
&lt;/h3&gt;

&lt;p&gt;This needs to cover&lt;br&gt;
&lt;strong&gt;Logic/Branching -&lt;/strong&gt; in this case does the user want to use external resources, themes, mockups&lt;br&gt;
&lt;strong&gt;Process -&lt;/strong&gt; steps to take, decide on external resources, then theme, then if mockup, create mockups if needed, refine mockup, create end report&lt;br&gt;
Error Handling - what to do if cant find valid resources, size constraints, file access, etc&lt;br&gt;
&lt;strong&gt;Gotchas -&lt;/strong&gt; callouts, NFR's, things to avoid, like in this case don't use separate CSS/JS files, no external sources, and no local/sessionStorage&lt;/p&gt;
&lt;h3&gt;
  
  
  Skills
&lt;/h3&gt;

&lt;p&gt;Skills had capability to your agent, either context (.md file), scripts (.py file), or template files (.pptx/.docx/.xlsx/etc). To keep things simple I'm just going to use a context skill, and that is the frontedn-design skill from Anthropic. This is still one of my favourite skills and it can massively improve the UI of your app/report.&lt;/p&gt;

&lt;p&gt;Skills can also be branching, so you can have 2 skills with contradictory information, and either the instruction or upstream skill can decide which to use. They are super powerful and something you should leverage.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Skills are everywhere, and it can feel safe just to copy paste them into your agent, but be careful. Skills are a prime surface for prompt injection, make sure you read them fully, and not in a markdown viewer, as they can have hidden html comments in them. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  External Sources
&lt;/h3&gt;

&lt;p&gt;There are 4 external sources:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge -&lt;/strong&gt; this is specific external data, like OneDrive files, SharePoint sites, and even Teams chats/meetings. The key thing about these is they are live, so they are constantly updated. This brings benefits of being up to date, with the risk of performance impact by incorrect data/context overload&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Work content -&lt;/strong&gt; this is pretty much Work IQ, it brings in the logged in users data from the same external data as Knowledge, but this is not targeted, its the users data. It good if you need to tailor responses to the logged in user, like their chats or their emails (e.g you could have an agent that helps organise your week, that would need access to just logged in users accounts). There is also Copilot Connectors which are external systems linked to your graph, they currently are only read only in Agent Builder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faualxol9af800z0amn26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faualxol9af800z0amn26.png" alt="connectors" width="799" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;All of Agent Builder is 'on-behalf of' connections, so that means not just Work Content, but Knowledge sources as well require the agent user to have access to the data. This is checked at runtime, so if a user loses access the agent does as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Web search -&lt;/strong&gt; does exactly what it says on the tin, allows the agent to search for external content&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attachments -&lt;/strong&gt; these are documents that you want all users to be able to access for context (example if you had a word doc as a knowledge source then the user would need access to it, if you attach it then every user has access to it).&lt;/p&gt;

&lt;p&gt;As my agent is relatively simple and I want tight control Im only using Web search functionality, with the instruction deciding if the agent should use it.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Build
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr15xwbvav1aq9viwvbbm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr15xwbvav1aq9viwvbbm.png" alt="design path" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have your design and resources the key build is the instruction file. This is what makes your agent do what you want it to do.&lt;/p&gt;

&lt;p&gt;My workflow is normally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get Copilot to create me a instruction file&lt;/li&gt;
&lt;li&gt;Go over the result, removing unnecessary parts and trying to make the language more deterministic/consistent. The first line describing what the agent does is really important, I generally write that myself&lt;/li&gt;
&lt;li&gt;Test, learn, update, repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that's it, you can now publish and share your agent.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxmt4kdw2k8uxfhvu02bq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxmt4kdw2k8uxfhvu02bq.png" alt="report agent" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to see my Report Builder agent, this is the instruction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You are a report builder that creates interactive and powerful HTML files to share information provided by the user.

&lt;span class="gu"&gt;## Purpose&lt;/span&gt;
Create polished, single-page HTML reports from user-provided information.

&lt;span class="gu"&gt;## General Guidelines&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Always return a single-page HTML file with CSS and JavaScript embedded in the same file, do not create a power point or word document.
&lt;span class="p"&gt;-&lt;/span&gt; Do not use localStorage or sessionStorage
&lt;span class="p"&gt;-&lt;/span&gt; Check whether the user has uploaded a file before deciding how to handle external research.
&lt;span class="p"&gt;-&lt;/span&gt; When a file is attached, use external sources or APIs only after the user explicitly approves internet research.
&lt;span class="p"&gt;-&lt;/span&gt; When no file is attached, presume the user wants external internet research and treat permission as approved.
&lt;span class="p"&gt;-&lt;/span&gt; Keep the report accessible, responsive, and easy to share.
&lt;span class="p"&gt;-&lt;/span&gt; Mockups need to be varied, unique, and importantly different; use genuinely different layouts and styles, including one strong alternative that intentionally departs from the user's requested theme.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Whenever the user approves mockups, deliver one downloadable HTML file containing all five fully rendered mockups. Never return mockups as prose, Markdown, ASCII wireframes, or design descriptions.**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; The mockup HTML must begin with a clear introduction that explains the design-selection purpose and any important context.
&lt;span class="p"&gt;-&lt;/span&gt; Place persistent or sticky navigation at the top, with links that jump to each of the five mockups.
&lt;span class="p"&gt;-&lt;/span&gt; Present each mockup as a substantial, visually complete page section with its own layout, typography, colour treatment, representative content, and responsive styling.
&lt;span class="p"&gt;-&lt;/span&gt; Keep all five mockups, the introduction, navigation, CSS, and JavaScript together in the same self-contained &lt;span class="sb"&gt;`.html`&lt;/span&gt; file.
&lt;span class="p"&gt;-&lt;/span&gt; After attaching the mockup HTML file, briefly ask the user which numbered direction should be used for the final report.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="gu"&gt;## Required Preflight&lt;/span&gt;
Before researching or creating the HTML, check whether the user uploaded a file.

If a file is attached, ask all three questions together:
&lt;span class="p"&gt;1.&lt;/span&gt; May I search the internet for supporting information? If approved, review no more than two sites and include them in a Sources section at the bottom of the report.
&lt;span class="p"&gt;2.&lt;/span&gt; What colour theme and visual style should I use?
&lt;span class="p"&gt;3.&lt;/span&gt; Would you like five design mockups before I build the final report?

If no file is attached, presume internet research is approved and ask only:
&lt;span class="p"&gt;1.&lt;/span&gt; What colour theme and visual style should I use?
&lt;span class="p"&gt;2.&lt;/span&gt; Would you like five design mockups before I build the final report?

Wait for the user's response to any required questions before continuing. Do not infer internet approval when a file is attached.

Use defaults or proceed directly to the final HTML only when the user explicitly says “choose for me,” explicitly declines internet research when a file is attached, or explicitly declines mockups. If the user answers only some required questions, ask only for the missing choices.

&lt;span class="gu"&gt;## Step-by-Step Instructions&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Read the provided documentation and identify the report's purpose, audience, and required content.
&lt;span class="p"&gt;2.&lt;/span&gt; Check for an uploaded file and run the appropriate preflight questions.
&lt;span class="p"&gt;3.&lt;/span&gt; If a file is attached, search the internet only after explicit approval. If no file is attached, treat internet research as approved. In either case, review no more than two relevant sites and retain their links for the Sources section.
&lt;span class="p"&gt;4.&lt;/span&gt; If mockups are approved, run the &lt;span class="sb"&gt;`frontend-design`&lt;/span&gt; skill and create one self-contained HTML selection page with an introduction, top navigation, and five fully rendered, distinctly styled mockups.
&lt;span class="p"&gt;5.&lt;/span&gt; Attach that HTML file and ask the user to select a numbered direction before producing the final report.
&lt;span class="p"&gt;6.&lt;/span&gt; Apply the selected or explicitly delegated colour theme and style.
&lt;span class="p"&gt;7.&lt;/span&gt; Create the final single-page HTML file.
&lt;span class="p"&gt;8.&lt;/span&gt; Check that all content, styling, scripts, navigation, and approved sources are included in the file.

&lt;span class="gu"&gt;## Skills&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; When the user approves design mockups, run the &lt;span class="sb"&gt;`frontend-design`&lt;/span&gt; skill to create the single HTML selection page containing all five visual options, the results need to be unique and varied, be creative, don't just follow the skill, be inspired by the skill.

&lt;span class="gu"&gt;## Error Handling&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; If required source material is missing, ask for it before building the report.
&lt;span class="p"&gt;-&lt;/span&gt; If approved web research does not yield useful sources, say so and continue using the user's content.
&lt;span class="p"&gt;-&lt;/span&gt; If a requested design cannot be represented accessibly, provide the closest accessible alternative and explain the adjustment briefly.
&lt;span class="p"&gt;-&lt;/span&gt; If the five mockups cannot be packaged into one HTML file, do not substitute text descriptions; explain that the file could not be produced and ask the user to retry.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mockups:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdzv83ywbh7sta6n88vwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdzv83ywbh7sta6n88vwz.png" alt="mockups" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final report: &lt;a href="https://github.com/wyattdave/Power-Platform/blob/main/HTML%20Reports/gpt6_astra_report%201.html" rel="noopener noreferrer"&gt;https://github.com/wyattdave/Power-Platform/blob/main/HTML Reports/gpt6_astra_report 1.htm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fit9by7qhdvvj88opij1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fit9by7qhdvvj88opij1u.png" alt="report" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;And that's it, within an hour (yep the 5 minutes was total click bait) you can have an agent that helps you, I use the HTML Report Agent most days, and it saves me so much time.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=agent5mins" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>agentbuilder</category>
      <category>copilotstudio</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Copilot Studio and the 5 Different Agent Builders</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 07 Sep 2026 07:47:42 +0000</pubDate>
      <link>https://dev.to/wyattdave/copilot-studio-and-the-5-different-agent-builders-nbe</link>
      <guid>https://dev.to/wyattdave/copilot-studio-and-the-5-different-agent-builders-nbe</guid>
      <description>&lt;p&gt;We all know Microsoft has been moving at full speed when it comes to AI and agents, and with pace comes changes (and re-naming 😎), but it also brings duplication and overlap. And thats how we have some how arrived at 5 different agent builders available in M365/Power Platform. Note I havent included Foundry/Azure builders because they are more in proc-code world, and the M365/Power Platform have so much overlap with governance, admin, and infra it made sense to group them.&lt;/p&gt;

&lt;p&gt;So what are the 5 different agent builders, well they are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent Files (SharePoint)&lt;/li&gt;
&lt;li&gt;Agent Builder&lt;/li&gt;
&lt;li&gt;Microsoft Copilots&lt;/li&gt;
&lt;li&gt;Copilot Studio&lt;/li&gt;
&lt;li&gt;Copilot Studio GitHub Harness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lets take a look at each, and then give a big picture on when to use what&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent File / SharePoint
&lt;/h2&gt;

&lt;p&gt;This was the first agent builder that was available with the M365 Copilot licesne (or whatever is called now). These agents were really just a manifest file, containing a json object, that would be executed by a central engine. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjdija7dd38cn7pb2dfse.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjdija7dd38cn7pb2dfse.png" alt="Agent File" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They were stored locally as .agent files, and were most prevelent in SharePoint. When you open Copilot in a SharePoint site you would see a list of agents in that site (they were simply .agent files in Documents/Site Assets/Agents, and were published by simply moving the file to the published sub folder), and you could also create a new agent from that screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsva5ni3wbwklhxlrfzux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsva5ni3wbwklhxlrfzux.png" alt="create agent file" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They were limited to just SharePoint knowledge sources, had an upgrate to Copilot Studio button (that was always coming soon).&lt;/p&gt;

&lt;p&gt;The actual .agent files could do more though, with external websites as knowledge sources and a proposed way to call autonamous agents/flows, but I never saw if that came to fruiation. They were planned as they way to create custom agents for M365 Copilot, with the idea you could spin them up for projects and other focused activities.&lt;/p&gt;

&lt;p&gt;The agent files could be ran from 3 locations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SharePoint&lt;/li&gt;
&lt;li&gt;Teams (simply add to a chat)&lt;/li&gt;
&lt;li&gt;M365 Copilot (open the .agent file while in OneDrive)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq6or8mrww91x532nstr6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq6or8mrww91x532nstr6.png" alt="agent file" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Callouts
&lt;/h3&gt;

&lt;p&gt;As of now it looks like they have been deprecated, you can no longer make them in SharePoint, and I haven't see any updates for a while. Though the .agent file still works in Teams and M365 Copilot.&lt;/p&gt;

&lt;p&gt;Governance is interesting as its just a file, so there is little control you can do through MAC (Microsoft Admin Center), its not impacted by PPAC (Power Platform Admin Center).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost - free with M365 Copilot&lt;/li&gt;
&lt;li&gt;Location - SharePoint/OneDrive &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Agent Builder
&lt;/h2&gt;

&lt;p&gt;This is what replace .agent files, they are no longer stored locally (I believe in a Cosmo DB database somewhere).&lt;/p&gt;

&lt;p&gt;Until recently they were similar to .agent files, with knowledge sources only, but they just got updated to enable skills.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj5jy1gs4gbb65jirz80a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj5jy1gs4gbb65jirz80a.png" alt="agent builder" width="799" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Skills are awesome tools that enable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Branching logic - as the skill contains custom context that the agent can chose to use&lt;/li&gt;
&lt;li&gt;Compute - has Python interpreter so can run Python scripts&lt;/li&gt;
&lt;li&gt;Reference/templates - like Power Point templates or layouts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Microsoft also calls these plug-ins, so if you see that name know its the same. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To create a Skill/plugin you just need to have a folder with your skill name, a file names Skill.md (which contains your context/prompt/knowledge/etc), and optional script.py file and/or template file (.pptx/.docx/.xlsx/txt/etc).You then zip the folder and you have your plug-in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Callouts
&lt;/h3&gt;

&lt;p&gt;The model being used its definitely not the best (Im 99% certain its a GPT model, probably Tera), I found it can be a little inconsistent, though that can be fixed with a good instruction.&lt;/p&gt;

&lt;p&gt;There are also some attachment limits - max 20 files, no zip files.&lt;/p&gt;

&lt;p&gt;These are fully governed in MAC and Agent 365, I haven't seen how to limit sharing but you can control publishing to M365 Copilot for others to find.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost - free with M365 Copilot&lt;/li&gt;
&lt;li&gt;Location - Cosmo DB under M365 &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Copilot Studio Light
&lt;/h2&gt;

&lt;p&gt;This is the hidden agent I found that motivated this blog, I've named it Copilot Studio Light, which has been used before but feels right for me (it could also be called Copilots for Microsoft 365).&lt;/p&gt;

&lt;p&gt;To get to them you have 2 routes, first in Copilot Studio scroll to the bottom and click on &lt;strong&gt;Copilot for Microsoft 365&lt;/strong&gt; (now you know where I got the name from 😏).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pdrysppx5nv4okanju0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pdrysppx5nv4okanju0.png" alt="copilot studio light" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you will see a list of the hidden Copilots. You can also get there by using this link: &lt;strong&gt;&lt;a href="https://copilotstudio.microsoft.com/environments/%7B%7BenvironmentID%7D%7D/bots/fp/msft_Microsoft365Copilot/agents" rel="noopener noreferrer"&gt;https://copilotstudio.microsoft.com/environments/{{environmentID}}/bots/fp/msft_Microsoft365Copilot/agents&lt;/a&gt;&lt;/strong&gt;, just add in your environmentID.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixo7hed14lrvyji3kweh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixo7hed14lrvyji3kweh.png" alt="copilot studio light" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click create add/create agent you see the normal looking Agent Builder inputs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdczjb7hkdf91xi5o0ol3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdczjb7hkdf91xi5o0ol3.png" alt="create agent" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But that's just a trick, as once its completed you can now add tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw75qt53uxpwlatzbtbl1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw75qt53uxpwlatzbtbl1.png" alt="build copilot studio light" width="799" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So in the Copilot Studio light you have full tools, you can call connectors, MCP, and Agent Flows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7q27rzyhdf9wznieho8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7q27rzyhdf9wznieho8y.png" alt="workflow" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Its pretty much Copilot Studio but with out Topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Callouts
&lt;/h3&gt;

&lt;p&gt;There are a few features like evaluation, sub agents, monitor, activity missing, and you are limited to publishing just with Teams and M365 Copilot.&lt;/p&gt;

&lt;p&gt;It is fully governed by PPAC, with DLP controlling it, though they do not appear in all reports. It is also consumption based if you don't have a M365 Copilot license, so will need Copilot Studio credits for some users (though not for development).&lt;/p&gt;

&lt;p&gt;I haven't been able to add them to a solution either, so it doesn't appear to be solution aware.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost - free with M365 Copilot or Copilot Studio Tokens without&lt;/li&gt;
&lt;li&gt;Location - selected Power Platform environment&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Copilot Studio
&lt;/h2&gt;

&lt;p&gt;The OG, everyone knows this agent builder, so I wont go into too much detail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixb5ev81f5fp7gagei9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixb5ev81f5fp7gagei9w.png" alt="copilot studio" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is still possible to turn off all of the AI capabilities and make this a "Classic" agent, purely using the topic workflows. But the mix of deterministic topics and generative answers gives it its real power.&lt;/p&gt;

&lt;p&gt;Add in the ability to call child agents and run them as autonomous agents (triggered by non-chat interactions like emails) means it has significant advantages over Copilot Studio Light.&lt;/p&gt;

&lt;h3&gt;
  
  
  Callouts
&lt;/h3&gt;

&lt;p&gt;The pricing is a lot more complex, with costs depending on specific combination of AI events.&lt;/p&gt;

&lt;p&gt;Topic creation, although LowCode, still requires development time compared to all previous (and the next) builders. &lt;/p&gt;

&lt;p&gt;Its fully within the Power Platform, so under DLP and managed environment sharing controls. It is also solution aware (in fact it can only be unlike Flows and Apps), meaning it is fully ALM compliant. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost - free with M365 Copilot or Copilot Studio Tokens without&lt;/li&gt;
&lt;li&gt;Location - selected Power Platform environment&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Copilot Studio GitHub Harness
&lt;/h2&gt;

&lt;p&gt;The Copilot Studio GitHub Harness is the latest and most modern agent builder. It follows other agentic tooling like Claude Code, Codex, and of course GitHub Copilot. This means all of the legacy bot builder design is removed, so no topics, instead it is all about skills. I went into more detail about skills/plug-ins in Agent Builder, so this is the same only more powerful (more skill uploads, accepts zip files, and can run longer more complex sessions). &lt;/p&gt;

&lt;p&gt;In my experience I have also found generally better results/user experience when compared to other agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more accurate,&lt;/li&gt;
&lt;li&gt;more consistent&lt;/li&gt;
&lt;li&gt;more natural language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also has memory (which allows the agent to store key information between chats) and deep WorkIQ integration. WorkIQ is Microsoft's "Intelligence Layer", which means it can quickly pull all of your Microsoft information (emails, teams chats, etc), and can use that "big data" to answer/predict more accurately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fufxz5ukr600im6a9e2zo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fufxz5ukr600im6a9e2zo.png" alt="github harness" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Callouts
&lt;/h3&gt;

&lt;p&gt;The big callout here is costs, unlike in all other builders you are charged while developing. So all tests runs, skill building, etc costs real tokens. I suspect this is because its using GitHub Copilots infra, and they are charging the Power Platform team full price.&lt;/p&gt;

&lt;p&gt;That also means there is no free access to M365 Copilot license holders, and because the models are better/reason more, I have also seen slightly per interaction costs. Yep this version will cost you more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost - Copilot Studio Tokens&lt;/li&gt;
&lt;li&gt;Location - selected Power Platform environment&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;So with that in mind which agent builder should you use, well I would say nearly all have a particular main use case:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent files&lt;/strong&gt; - don't use them&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent Builder&lt;/strong&gt; - for projects I think this is ideal, as it can only pull data its great for research and project updates. It can also be used for team/department information, but that really should be a SharePoint site with sharepoint.md/skill files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot Studio Light&lt;/strong&gt; - again for projects, but where the use case is beyond just reading. So if you need to create tickets, update trackers, etc, then the this version maybe right&lt;/p&gt;

&lt;p&gt;All of the above are in my opinion driven to be more tactical, i.e. they have a specific use case which has a fixed lifespan. The short use time is why you wouldn't invest development time in full Copilot Studio&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot Studio&lt;/strong&gt; - for now this should be your default choice when builder scaled, business imported agents. Its a great choice for a new UI for different software, and can be an awesome orchestrator for complex workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot Studio GitHub Harness&lt;/strong&gt; - this is the future, it delivers the best results and quickest development, but with costs this should be used for high value, business critical solutions. There is a lot of overlap with Copilot Studio, you just have to look at the users (if they M365 Copilot License) and the ROI on each user interaction.&lt;/p&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=agentBuilders" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>githubcopilot</category>
      <category>copilotstudio</category>
      <category>ai</category>
    </item>
    <item>
      <title>AI, Fairy's, and Agile</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 24 Aug 2026 06:07:45 +0000</pubDate>
      <link>https://dev.to/wyattdave/ai-fairys-and-agile-44cc</link>
      <guid>https://dev.to/wyattdave/ai-fairys-and-agile-44cc</guid>
      <description>&lt;p&gt;Now hose 3 words don't generally go together, but trust me its not just clickbait (well just a little).&lt;/p&gt;

&lt;p&gt;I had an epiphany recently, and I want to take you on that journey.&lt;/p&gt;

&lt;p&gt;Vibe coding has become a key part of nearly all my workflows for a while now, and most of the time its not to create an end product, but to enable me to do something else.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Converting SharePoint pages to markdown, create an app to do that&lt;/li&gt;
&lt;li&gt;Transforming data, chuck it into GitHub Copilot and ask it to create an interactive HTML file with the data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But now its even starting to part of my personal life (not like that 😉), and that's why I'm writing this blog.&lt;/p&gt;

&lt;p&gt;One Sunday morning my 6 year daughter was showing me the &lt;a href="https://orchardseriesbooks.co.uk/rainbow-magic/books/" rel="noopener noreferrer"&gt;Rainbow Magic Fairy Books&lt;/a&gt; she had read. She was super proud of the books she had read and also took great pleasure in telling me her favourite and the ones she wanted to read next. As there are over 300 books to read she was asking me to search for them so she could write a list, and that's when I thought how cool it would be if she could have an app to do it.&lt;/p&gt;




&lt;p&gt;A great place to start when vibe coding is Chrome Extensions or Progressive Web Apps. They have some key benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome Ext can be shared as zip files or published for free in Edge store (and a small one off fee in Chrome Store), &lt;/li&gt;
&lt;li&gt;PWA's can be hosted for free in GitHub and other hosting sites&lt;/li&gt;
&lt;li&gt;Both can get away without a server/backend &lt;/li&gt;
&lt;li&gt;Chrome Ext can get around cors for external api'&lt;/li&gt;
&lt;li&gt;Both can be tested easily locally (no build steps)&lt;/li&gt;
&lt;li&gt;Both use standard web tech so LLM's are very good with them&lt;/li&gt;
&lt;li&gt;PWA can also be installed, so they can act just like a full application on a laptop, Android and IOS (with no need to deal with different versions and the painful App/Play stores).&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;So the idea was to create her a PWA with all of the books that she could review and track. I could then install it on her tablet for her to use.&lt;/p&gt;

&lt;p&gt;I sat down with her for a couple of minutes to discuss what she wanted.&lt;/p&gt;

&lt;p&gt;She wanted to be able to see all the books, track the ones she had read, and have her favourite list.&lt;/p&gt;

&lt;p&gt;I also thought of a couple of NFR's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A way to export/import saved data, so she can move between devices, and avoid complexity of a backend and api&lt;/li&gt;
&lt;li&gt;To fully work offline, including all book covers etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And thought about a little gamification, adding in badges for milestones.&lt;/p&gt;

&lt;p&gt;This was my initial prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;i want to create a mobile/tablet app to track my daughters reading. I want to use a progressive web abb (simple html/css/js) that saves locally what she has read, but that data can be exported/imported between devices. the web app should be themed like the rainbow princess books. it should have every book (ideally every book cover) and if possible grab a small bio on each book. my daughter should be able to search for books, add to favourites and mark as read. When she reads certain mile stones she would get a badge/fairy achievement. these achievements should be shown in a screen/section. the books can be stored local or grabbed from api. some references are: &lt;a href="https://rainbowmagic.fandom.com/wiki/List_of_Fairies" rel="noopener noreferrer"&gt;https://rainbowmagic.fandom.com/wiki/List_of_Fairies&lt;/a&gt;  &lt;a href="https://en.wikipedia.org/wiki/List_of_books_written_by_Daisy_Meadows" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/List_of_books_written_by_Daisy_Meadows&lt;/a&gt;  &lt;a href="https://rainbowmagic.fandom.com/wiki/Princess_Fairies" rel="noopener noreferrer"&gt;https://rainbowmagic.fandom.com/wiki/Princess_Fairies&lt;/a&gt;  though you may need more data&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm26w4nohy5z20b4lfe9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxm26w4nohy5z20b4lfe9.png" alt="prompt result" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The prompt took a few mins to run and it crashed and burned with the book covers, all of theme were just emoji's, so I did a bit of research and found an api with all of the bio's and covers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;i need all of the book covers for this web app (the generated ones are not very good). i found this site with them &lt;a href="https://openlibrary.org/authors/OL1452170A/Daisy_Meadows" rel="noopener noreferrer"&gt;https://openlibrary.org/authors/OL1452170A/Daisy_Meadows&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After that it was pretty much perfect. I sat down with my daughter and she had a quick go on it, she quickly told me she wanted to order the favourites, and wanted a way to track what she owned.&lt;/p&gt;

&lt;p&gt;A quick update and now the favourites could be ordered.&lt;/p&gt;

&lt;p&gt;Next she spotted that she wanted the read books in order she read them.&lt;/p&gt;

&lt;p&gt;After that she realised that scrolling down 300 books could take a long time to scroll back up. So a scroll to top was added.&lt;/p&gt;

&lt;p&gt;Finally she spotted that some of the book covers were missing, so I prompted to load in chunks, with the first 20 on load, and then each next block of 20 until all cached locally. This stopped the images from only loading when scrolled to and api throttling when she swiped like crazy down to book 300!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2uetdbwpfi5umfsexwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc2uetdbwpfi5umfsexwc.png" alt="ui bug" width="619" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chuck in some small updates around misaligned elements and poor UX (the close popup icon would scroll out off screen when reading bio) that I added and it was done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpz5b06p5emgemwhu6jo0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpz5b06p5emgemwhu6jo0.png" alt="fairy app" width="731" height="1065"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what was my epiphany, was in under and hour I had managed to create exactly what a very picky 6 year old wanted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It had feature creep&lt;/li&gt;
&lt;li&gt;Poor testing&lt;/li&gt;
&lt;li&gt;Changing requirements&lt;/li&gt;
&lt;li&gt;Tight high pressure delivery time (she gets angry 😉)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sound familiar, sound like every software delivery you had done. And this was easy, and the simple reason is I didn't follow agile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No detailed requirements&lt;/li&gt;
&lt;li&gt;No product demos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With AI we now are able to pivot so quickly, that the effort that use to go into making sure we get it right first time isn't necessary. We can just do it again. We simply get in a feedback loop, of build, test, build, test. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq6s49i83xq746kclmjcz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq6s49i83xq746kclmjcz.png" alt="testing cycle" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is so much easier for a end user to tell you "What they don't like" rather then "What they do like", because 9 times out of 10 they simply don't know.&lt;/p&gt;

&lt;p&gt;So I'm now thinking that my process should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get the Simple Design Goal, i.e. what problem are they trying to solve and why.&lt;/li&gt;
&lt;li&gt;Get the first description of what they expect, for a change the vaguer the better&lt;/li&gt;
&lt;li&gt;Design NFR's&lt;/li&gt;
&lt;li&gt;Build&lt;/li&gt;
&lt;li&gt;Put it in the users hands and get feedback&lt;/li&gt;
&lt;li&gt;Build, feedback, Loop until complete&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo8zznsh1rdhdqf8xoaq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo8zznsh1rdhdqf8xoaq7.png" alt="new prrocess" width="799" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If there is a complex backend, mock this up so that the user can use it to give feedback, once happy then do everything off client.&lt;/p&gt;

&lt;p&gt;If possible you want the developer with the user when they are testing, you can even do hot updates with them in one session.&lt;/p&gt;

&lt;p&gt;I know this goes against Agile, but the simple truth is Agile was built for a world where development was expensive and a bottle neck. With AI that's not the case, code is cheap and quick. Add in technology moves so much quicker, for example planning more then 3 months in advanced to create a PI on the Power Platform is impossible, new features hit with zero warning. 2 week sprints can feel like a long time when you can build in hours instead of days. Processes need to adapt to the pace of AI development, and if you still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cant do that as wasn't in PI planning&lt;/li&gt;
&lt;li&gt;Need to get that approved by everyone before you can start&lt;/li&gt;
&lt;li&gt;Have Enabler SLA's that run in the days not hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;you wont be able to benefit from the AI fully. Think about it, how can it be right to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wait weeks for requirements&lt;/li&gt;
&lt;li&gt;wait weeks for security &amp;amp; arch reviews&lt;/li&gt;
&lt;li&gt;wait days for UAT sign off&lt;/li&gt;
&lt;li&gt;wait days for change requests and go live approvals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;when the actual building of the solution takes hours.&lt;/p&gt;




&lt;p&gt;If you have children who love Rainbow Fairy Books check out &lt;a href="https://wyattdave.github.io/Lottie-the-Fairy/" rel="noopener noreferrer"&gt;https://wyattdave.github.io/Lottie-the-Fairy/&lt;/a&gt;, and if they don't like them what do they like, what could you cool thing could you make just for them.&lt;/p&gt;

&lt;p&gt;As always the code is open source and can be found on &lt;a href="https://github.com/wyattdave/Lottie-the-Fairy" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=5-skillsCPS" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agile</category>
      <category>powerplatform</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>What Went Wrong For Copilot</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 17 Aug 2026 05:55:20 +0000</pubDate>
      <link>https://dev.to/wyattdave/what-went-wrong-for-copilot-19f2</link>
      <guid>https://dev.to/wyattdave/what-went-wrong-for-copilot-19f2</guid>
      <description>&lt;p&gt;There have been 3 amazing tools launched by Microsoft recently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code Apps&lt;/li&gt;
&lt;li&gt;Cowork&lt;/li&gt;
&lt;li&gt;New Copilot Studio (aka GitHub Copilot Harness)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tools had me incredibly excited, as they not only allowed me to do my job better and quicker, but also enabled me to do things that weren't possible.&lt;/p&gt;

&lt;p&gt;But then things started to go a little wrong:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe.powerapp.com&lt;/strong&gt; (the user friendly version of Code Apps) which I was expecting to allow citizen dev's to use it is still half finished and in preview (launched almost a year ago 18th November 2025). Things like this either get traction and hit GA, or they die in preview (often never fully deprecated).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cowork&lt;/strong&gt; moved to an expensive pay as you go model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faws7tdykq8a29zbhapc1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faws7tdykq8a29zbhapc1.png" alt="cowork cost" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New Copilot Studio&lt;/strong&gt; moved to charging for development and removing free usage of M365 Copilot users (this was such a big impact that the older version of Copilot Studio looks to be staying now instead of being replaced).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdimsts62evm11sz0uyxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdimsts62evm11sz0uyxc.png" alt="new copilot studio" width="799" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although these changes haven't killed them, they have massively changed the likely adoption of these amazing tools, as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most developers wont want to use VS Code etc, &lt;/li&gt;
&lt;li&gt;The price of usage will drive a "Prove ROI before trying" philosophy, which kills innovation and citizen developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Strategies
&lt;/h2&gt;

&lt;p&gt;So where did it go wrong, well I think it goes back to the original Copilot Strategy, if you look at 3 different approaches to the AI boom.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft / Copilot
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fomwzpfdcuxfss0dyuuyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fomwzpfdcuxfss0dyuuyc.png" alt="copilot milestones" width="800" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft's approach was to leverage their existing user interaction layer and add Copilot everywhere. The expectation was similar to Teams/Internet Explorer, having it everywhere for free/discounted would drive adoption, enabling them to corner the market. Every employee would use Copilot and once the value was established they would be able to start charging more and generating a profit.&lt;/p&gt;

&lt;p&gt;With the initial launch disjointed and fragmented, often what felt like independently by each team. This was not helped by the fact that the models were not good enough and the surrounding technology like MCP did not exist yet. &lt;/p&gt;

&lt;p&gt;Copilot in Office is a good example. The architecture has pivoted repeatedly—from the original Graph-grounded Copilot experiences, through to an agentic application-specific experience named Agent Mode 2 years later, and then 6 months later moved to a tool and context architecture built around things like MCP and Work IQ.&lt;/p&gt;

&lt;p&gt;There were also constant pivots, with Copilot in Office a great example, first started off as one LLM with specific training, this then pivoted to what they called Agent Mode 2 years later, which was more of a specific Agents per application, before finally changing again to a MCP approach 6 months later. The end result is a much improved experience, but the initial offering was not good (and that's being polite).&lt;/p&gt;

&lt;h3&gt;
  
  
  Open AI
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhn5t0zc3rgg5zxh66ar6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhn5t0zc3rgg5zxh66ar6.png" alt="open ai milestones" width="800" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open AIs approach was to become the brand of AI, like Jacuzzi, Cello tape, Kleenex, and Google. They were happy to offer a free/discounted licenses and wanted Chat GPT to be used by everyone, from Coders to Doctors to Lawyers.&lt;/p&gt;

&lt;p&gt;Along with a broad audience they tried many different AI tools and standards. The Sora app is a great example, focusing very little on their core AI business, trying to expand into social networks.&lt;/p&gt;

&lt;p&gt;Their initial lead allowed them to gain incredible market share, but in a similar vain to Android, they were never able to get the market share in profit (with Anthropic making more profit/less losses). After seeing Google approach from the free side and Anthropic taking the higher value enterprise customers, they have pivoted, now investing heavily in the Coding approach Anthropic did, with the same tools and performance, but currently undercutting them. This can be seen with the recent defocusing on Codex, and the coding side rolled back into the main Chat GPT brand, making Coding key to the original brand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anthropic
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8kl9dg7sn9h5pohg0gz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8kl9dg7sn9h5pohg0gz.png" alt="anthropic milestones" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After being generally focused like Open AI, they decided early on to focus on a niche, they targeted coding as there area. Not only that the started with just the model (with simple chat and API). They were happy to give up the user interaction layer (Cursor was arguably the main winner here, gaining traction with the developer and enterprises early on).&lt;/p&gt;

&lt;p&gt;This allowed them to focus all of their resources, they created a quality product, and then were able to create a "brand", allowing them to charge considerably more then every other provider. They could also invest in expanding the models capabilities, with things like MCP and Skills, all enhancing their product and establishing them as a market trend setter (pains me to say it but a bit like Apple). This meant they could influence and drive the wider market, with others following their lead.&lt;/p&gt;

&lt;p&gt;Once the model were established and they felt that they were good enough they then moved down the supply chain, launching Claude Code. Investing here allowed them to improve their models even more, build user lock in, and start the expansion.&lt;/p&gt;

&lt;p&gt;After this came Claude Claude Code Desktop (their version of Orchestrator/Codex/T3 Code), Claude Cowork and Claude Design. All expanding the userbase, now not just coders, but everyone using computers.&lt;/p&gt;

&lt;p&gt;You can see this path leading to something like Microsoft, with a suite of tools and capabilities, making a Claude Enterprise license a key tool for every employee. &lt;/p&gt;

&lt;h2&gt;
  
  
  What these Approaches mean
&lt;/h2&gt;

&lt;p&gt;Well we can all agree, currently it looks like Anthropic's approach was the best. And although its still very early, and I wouldn't necessarily bet on them, it&lt;br&gt;
I think Microsoft's approach has created 2 issues for them, first most obvious is they have burned through their budget for adoption. Giving away for free/discounted only works if you can get customers hooked on the product. That never quite happened for Copilot, add in the broader financial markets are getting more concerned with never ending AI investment, it feels like everyone is trying to get to profitability quickly.&lt;/p&gt;

&lt;p&gt;This is why they are having to charge full price for Cowork, charge for development of agents, and no "all you can eat vibe coding", you have to pay per token in VS Code.&lt;/p&gt;

&lt;p&gt;The second was they are now behind the competition, and its quite possible those competitors now have strong footholds into Microsoft customers.&lt;/p&gt;

&lt;p&gt;Cowork is the perfect example, its what I (and I suspect most people) imagined Copilot would be when first announced by Microsoft. It can do complex work across my files, pull together business and external data, and can be scheduled into a workflow. &lt;/p&gt;

&lt;p&gt;And yet this wasn't created by Microsoft, but built out of Anthropic's Claude Cowork, using the same underlying technology, but built within the Cloud and heavily integrated with Work IQ.&lt;/p&gt;

&lt;p&gt;And because of Anthropic's involvement it means that not only is it designed to work better with Anthropic models, it has completion out of the box, and there may well be licensing costs to Anthropic. Meaning it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More expensive to subsidise&lt;/li&gt;
&lt;li&gt;By paying it they are giving money to the competition, which defies the point of undercutting the competition&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Can They Turn It Around
&lt;/h2&gt;

&lt;p&gt;This is Microsoft, so the answer is obviously yes. They have the talent, resources, network effect, and unique tools like Work IQ (man I've been so impressed with the better results since it launched), to still win the AI race, but I think a few things need to happen.&lt;/p&gt;
&lt;h3&gt;
  
  
  Model
&lt;/h3&gt;

&lt;p&gt;Microsoft needs its own frontier level model. They could even get a Open weight model and build off that (like Cursor did with Composer 2 being built on top of Kimi K2.5). Having these in house models allows them to be cheaper and more finally tuned to Microsoft customers. They have so much user data (both user and how the users use their apps). I know they have the MAI, but I've not seen much except the flash code (so less powerful and not comparable to something like Opus).&lt;/p&gt;
&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;They need to figure a way to get flat rate licenses. Every license covers an underlying cost, they just figure out the ratio from normal users and heavier users, and slap a healthy margin on it. Business would be happy to pay more to get the security of knowing exactly how much it will cost.&lt;/p&gt;

&lt;p&gt;Figuring this out will take time, an I worry having at as PAYGO now will make the data inaccurate. So somehow they need to figure a way to get the price to a position people will act like its a license.&lt;/p&gt;
&lt;h3&gt;
  
  
  Lead Not Follow
&lt;/h3&gt;

&lt;p&gt;Work IQ is the best example of this, something powerful, unique, and new. Microsoft can't just follow others (Copilot Chat, MCP, Cowork, Scout), it needs to be an innovator, then using its market share to drive the agenda of the wider market. If Microsoft created a new standard, and rolled it out to all of their products, I can't imagine a single other vendor not following (well maybe except for Anthropic and Apple 😏).&lt;/p&gt;
&lt;h3&gt;
  
  
  Perfect The Managed Host (aka Power Platform)
&lt;/h3&gt;

&lt;p&gt;A big part of AI is not just the exciting stuff, its the infrastructure it runs on. Azure, and more importantly the Power Platform, is perfect. Its a walled garden then can mitigate a lot of the risks from AI generated code. But the Power Platform still has issues it needs to fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Legacy unused Dynamics features&lt;/li&gt;
&lt;li&gt;Lacks POLP (Principle of Least Privilege)&lt;/li&gt;
&lt;li&gt;To focused on citizen dev's (a pipeline that requires dev edit permissions in prod 🤦‍♂️)&lt;/li&gt;
&lt;li&gt;Messy administration (Bleeds into M365 Admin Center, poor tenant visibility)&lt;/li&gt;
&lt;li&gt;Messy edge features (Too much roles into Azure, App Insights, Key vaults, VNet, just to name a few)&lt;/li&gt;
&lt;li&gt;The 95% Problem (most features are 95% finished, leaving them unusable)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Wrap Up
&lt;/h2&gt;

&lt;p&gt;Integrating Copilot with Microsoft's products made sense, but unfortunately I think there was far too much haste, and too much speed, leading to wasted investment in poor ideas and ideas that the technology wasn't ready for.&lt;/p&gt;

&lt;p&gt;Anthropic's approach on mastering code, and expanding when ready. At the heart of everything is code, going to that level was always the right approach. Its the most efficient, consistent, approach, and has the most training data so models could master it first.&lt;/p&gt;

&lt;p&gt;Hopefully Microsoft has figured this out, and things like the MAI models and Work IQ show they maybe have. But then I hear a lot about the super app, and I worry maybe not. Expecting developers, citizen developers, and business users all to use the same app doesn't make sense to me, unified admin center, hell yeah, please do that, but one user app no.&lt;/p&gt;

&lt;p&gt;I always think of a smart phone, you have an app for every task, that way they are easy to use, easy to find, and targeted to particular user groups. And then any settings that work cross apps go in the settings app, which controls everything.&lt;/p&gt;

&lt;p&gt;We will have to wait and see, I have my fingers crossed they do figure it out (and I'm wrong about the super app).&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=5-wrongCopilot" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>powerapps</category>
      <category>githubcopilot</category>
      <category>ai</category>
    </item>
    <item>
      <title>Using the New Copilot Studio Skills</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 03 Aug 2026 06:15:33 +0000</pubDate>
      <link>https://dev.to/wyattdave/using-the-new-copilot-studio-skills-in7</link>
      <guid>https://dev.to/wyattdave/using-the-new-copilot-studio-skills-in7</guid>
      <description>&lt;p&gt;One thing Microsoft is not good at is naming things, and sadly it's happened again. But let's go back to the beginning: what are Skills?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Skills are targeted prompts/context that are modular, so they are not always included in the LLM session. They are Markdown files with selected metadata in YAML, all in a file normally named &lt;code&gt;skill.md&lt;/code&gt; (the parent folder and YAML metadata identify it).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They were created by Anthropic (Claude) and were designed for both the user to add in a prompt (&lt;code&gt;/Skill&lt;/code&gt;), or for the LLM to decide.&lt;/p&gt;

&lt;p&gt;Similar to Skills are Plug-ins. These can (and often do) include &lt;code&gt;skill.md&lt;/code&gt; files, but can also have scripts, MCP servers, and other tools.&lt;/p&gt;

&lt;p&gt;So back to Microsoft naming things badly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot Studio (Azure Bot Framework version) had skills, but they were not skills.&lt;/li&gt;
&lt;li&gt;The new Copilot Studio has Skills, but they are not Skills, they are actually Plug-ins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plug-ins include Skills, so why does it matter? Well, it doesn't really, but I like to moan, and it means sometimes cool functionality can be left on the table because we presume Microsoft names things accurately.&lt;/p&gt;

&lt;p&gt;Anyway I digress (I like to do that), now we understand what Skills/Plug-ins are I wanted to dive into them within Copilot Studio and cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why Are They Cool&lt;/li&gt;
&lt;li&gt;Building Powerful Skills&lt;/li&gt;
&lt;li&gt;Adding Scripts/Templates&lt;/li&gt;
&lt;li&gt;Using Skills&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Why Are They Cool
&lt;/h2&gt;

&lt;p&gt;I often go on about skills being cool, but why? There are a few reasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context Management
&lt;/h3&gt;

&lt;p&gt;Before skills, the standard approach was to give the LLM everything and let it figure out what it needed. The problem with this is twofold. First, more context equals more tokens, which equals more cost. Second—and more importantly—too much unrelated context can have a detrimental impact on the LLM response.&lt;/p&gt;

&lt;p&gt;LLMs work by using input tokens to predict the next token, so polluted input tokens can make the LLM predict the wrong next token (this is a huge simplification, but you get what I mean).&lt;/p&gt;

&lt;h3&gt;
  
  
  Transferable
&lt;/h3&gt;

&lt;p&gt;As skills are simple Markdown files, they can easily be transferred between different agents (and even platforms—I use some skills in both GitHub Copilot and Copilot Studio).&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexible
&lt;/h3&gt;

&lt;p&gt;As skills are just natural language, you can literally use them for anything. They can be used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add specific context/knowledge&lt;/li&gt;
&lt;li&gt;Add learnings or nudge responses&lt;/li&gt;
&lt;li&gt;Create distinct topics that might have overlap&lt;/li&gt;
&lt;li&gt;Create workflows through chaining&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just to name a few.&lt;/p&gt;

&lt;p&gt;But that's real skills. What about Copilot Studio Skills? They have all of the above (because Plug-ins have skills included), but they also have two more big benefits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scripts
&lt;/h3&gt;

&lt;p&gt;This, to me, was a game changer when I learned about it. Copilot Studio has a built-in Python compiler, so Copilot Skills can include Python scripts that the LLM can use.&lt;/p&gt;

&lt;p&gt;Imagine this: you include an Excel file, and instead of trying to get the LLM to return consistent analytics through natural language, you can build a Python script to do it. You now get deterministic outcomes with LLM flair.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My favourite implementation so far is a Power Automate Code Review Agent that uses Python to structure the definition consistently for the LLM to review.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Templates
&lt;/h3&gt;

&lt;p&gt;Again, this is about consistency. When we want our data output to be the same (for example, a PowerPoint template or Word form), LLMs are not our friends. They will try to deliver what you want, but there will always be small variances. If you include a template file in your Skill, the LLM will always return the data in that format.&lt;/p&gt;

&lt;p&gt;So we can now agree Skills are cool, but how do we use them correctly?&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Building Powerful Skills
&lt;/h2&gt;

&lt;p&gt;Knowing what type of skill you need is the first step. I think there are three types of skills: behavioural, action, and knowledgeable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Behavioural
&lt;/h3&gt;

&lt;p&gt;These are skills that influence how the agent acts.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Always review your work with a 3 stage approach:
- validate the goal has been complete
- consider any broader impacts to the development workflow or infrastructure
- check for any potential security issues

If you identify any issues complete an update and repeat. **DO NOT Repeat more then 3 times**, at this point create a md file named `review-comments` with any issues you have identified
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Actions
&lt;/h3&gt;

&lt;p&gt;These are when you want the agent to do a specific thing, it could be deploying or running GitHub Actions. But it is not limited to tools, one of my favourite is grilling / grill-me my Matt Pocock (if you have no seen his skills you really need to). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mattpocock/skills/blob/main/skills/productivity/grill-me/SKILL.md" rel="noopener noreferrer"&gt;Matt Pocock Skills GitHub: grill-me&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Interview me relentlessly about every aspect of this until we reach a shared understanding. Walk down each branch of the decision tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.

Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.

If a fact can be found by exploring the environment (filesystem, tools, etc.), look it up rather than asking me. The decisions, though, are mine — put each one to me and wait for my answer.

Do not act on it until I confirm we have reached a shared understanding.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Adding Scripts/Templates
&lt;/h2&gt;

&lt;p&gt;As I said, in Copilot Studio these are actually plugins, which give you the incredible power of scripts.&lt;/p&gt;

&lt;p&gt;To use the script there are a couple of ways. You can provide them with references so that the agent reads them and decides when to use them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr89qy7kfniym34wlepdj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr89qy7kfniym34wlepdj.png" alt="resources" width="800" height="701"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are ideal for knowledgeable skills where the script adds data.&lt;/p&gt;

&lt;p&gt;The second approach is to explicitly tell the agent to call a specific function with specific input.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7gxvlp45kxg1v91djjmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7gxvlp45kxg1v91djjmg.png" alt="call a function" width="800" height="682"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are great for action skills.&lt;/p&gt;

&lt;p&gt;To pass information into the script add imports, along with explanations of what they are in the actual skill file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mdvoucfzvlrg4mvuz88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mdvoucfzvlrg4mvuz88.png" alt="import values" width="800" height="695"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get the values returned we can either pass them straight into the context using &lt;code&gt;print&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkfq96h9is365mlsmfp8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkfq96h9is365mlsmfp8f.png" alt="print to llm" width="800" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or we can create a temporary file and save data to that.&lt;/p&gt;

&lt;p&gt;Set output parameters for the function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_argument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-o&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--output&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Output JSON path&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Skill sets the output to &lt;code&gt;model.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python scripts/extract.py &amp;lt;solution.zip&amp;gt; &lt;span class="nt"&gt;-o&lt;/span&gt; model.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we just write what we want to the output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8ssmvdlm2vhi7hfhcbb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8ssmvdlm2vhi7hfhcbb8.png" alt="outputs" width="800" height="706"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can then use that file in other skills by using Python to read it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python scripts/review.py model.json &lt;span class="nt"&gt;--area&lt;/span&gt; Connections &lt;span class="nt"&gt;-o&lt;/span&gt; findings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see its relatively easy to pass data to and from python scripts, but what if you can't write python, well that's when a little vibe coding can come in useful.&lt;/p&gt;

&lt;p&gt;In my experience LLM's are pretty good at writing python, but I've found them even better at converting between languages. In the above example everything was converted from some JavaScript I had written, and I had zero issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Using Skills
&lt;/h2&gt;

&lt;p&gt;Once you have Skills you need to understand how to use them within your agent. There are three main ways for a skill to be called.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instruction
&lt;/h3&gt;

&lt;p&gt;The instruction file will state which skills should be used and when. This is the most simplest and consistent way to use Skills. You set out what conditions to use them and why.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4v5uqxat461jv4h0d4o0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4v5uqxat461jv4h0d4o0.png" alt="skill run" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;

&lt;p&gt;The top of every skill in YAML contains the name and description, the LLM will be passed these and it can then makes its own decision when to use them. This gives the best flexibility and empowers the agent, but with the loss of consistency/deterministic outcomes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh2h88ogs8o0xqy2wddlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh2h88ogs8o0xqy2wddlg.png" alt="skill description" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  From a Skill
&lt;/h3&gt;

&lt;p&gt;Just like an instruction, Skills can call other Skills. The main benefit of this approach is enforcing chains/processes. As because its not in the instruction file the LLM will not be passed it unless there is a need, keeping the context clean and focused.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjgq3w242telvsf8e48ph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjgq3w242telvsf8e48ph.png" alt="skills" width="800" height="711"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;As you can see, Skills(Plug-ins) bring so much power to your agent, they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve performance through better context management&lt;/li&gt;
&lt;li&gt;Allow branching/paths, removing the need for topics&lt;/li&gt;
&lt;li&gt;Create complex workflows&lt;/li&gt;
&lt;li&gt;Bring the power of custom code to your agent&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=5-skillsCPS" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>powerplatform</category>
      <category>copilotstudio</category>
      <category>promptengineering</category>
    </item>
    <item>
      <title>The GitHub Copilot Harness Copilot Studio</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 20 Jul 2026 06:25:28 +0000</pubDate>
      <link>https://dev.to/wyattdave/the-all-new-copilot-studio-734</link>
      <guid>https://dev.to/wyattdave/the-all-new-copilot-studio-734</guid>
      <description>&lt;p&gt;Copilot Studio has been around for a while now, originally Power Virtual Agent before the Copilot Revolution, and as chatbot builders went, it was ok. &lt;/p&gt;

&lt;p&gt;But it never really felt right for me, it topics felt cumbersome (and this is from a Power Automate guy), and I never got the results I expected, and some how it felt super complicated. The simple truth was it was an old fashioned chatbot builder with generative AI bolted on, and it could never deliver compared to GitHub Copilot, ChatGPT, Claude, or Gemini.&lt;/p&gt;

&lt;p&gt;The thing is it wasn't just the UI or design, it was built on a different engine (check out this great article explaining more &lt;a href="https://www.perspectives.plus/p/the-two-engine-options-of-copilot-agentsMicrosoft%20knew%20this" rel="noopener noreferrer"&gt;perspectives.plus&lt;/a&gt;), and Microsoft knew it was on the path, so migrated the backend and created a new front end, and that's what I want to talk about today.&lt;/p&gt;

&lt;p&gt;Hopefully you have seen the new Copilot Studio, if you haven't go to your  preview environment, or slapped .preview in your Copilot Studio url (&lt;a href="https://copilotstudio.preview.microsoft.com" rel="noopener noreferrer"&gt;copilotstudio.preview.microsoft.com&lt;/a&gt;)you would have seen the new Copilot experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5qo71xc1txs8f1x2tsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5qo71xc1txs8f1x2tsg.png" alt="new copilot" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How its different&lt;/li&gt;
&lt;li&gt;What's New&lt;/li&gt;
&lt;li&gt;What's missing&lt;/li&gt;
&lt;li&gt;Is it any good&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. How its different
&lt;/h2&gt;

&lt;p&gt;Apart from the engine, the main difference is the removal of topics. Topics were the old way of building out predefined responses from your agent. It included question/answers and actions like API calls. Topics have been around since Power Virtual Agents, before the LLM era. Copilot Studio bolted on some AI to help channel requests to topics, but they were more like Power Automate then GitHub Copilot. They have been replaced with Skills, which I will go into more detail about later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60t2tk0ytfcilk5rjktl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60t2tk0ytfcilk5rjktl.png" alt="topic" width="799" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also some new features but this is main different, as it represents a fundamental change, from: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The maker trying to decide on actions and AI deciphering the user to find right topic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent decide on the right actions to take&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There has also been a change in the deterministic side, with Agent Flows been replaced with Workflows (a new UI with some new AI features), but I will go into that in another blog. Additionally both the UI and UX are much improved, options are easier to find and the preview/test is much better, being with not only full screen but showing the steps/reasoning the agent is making.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What's New
&lt;/h2&gt;

&lt;p&gt;The new builder focuses around 6 main areas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fegjeharasbzxl9ilcvar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fegjeharasbzxl9ilcvar.png" alt="new areas" width="657" height="913"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The models are the same, the instruction the same, but the UI is now simpler and feels more like a modern LLM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft IQ
&lt;/h3&gt;

&lt;p&gt;If you see IQ, it means Microsoft's way of grounding data for your agent. And by that I mean the agent gets access to your organisations data, currently that covers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Work IQ&lt;/strong&gt; - All of your data across Office etc, your emails, chats, OneDrive files, the agent will have access to it all to add to its context when you ask it anything&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fabric IQ&lt;/strong&gt; - All of your business key data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foundry IQ&lt;/strong&gt; - Knowledge sources created in Foundry.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgi2wata8ox0sc021rddf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgi2wata8ox0sc021rddf.png" alt="microsoft iq" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Work IQ in particular is very cool, you don't need to set anything up and your agent instantly has on-behalf access to the current users data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/use-microsoft-iq" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/use-microsoft-iq&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Skills
&lt;/h3&gt;

&lt;p&gt;If you don't know about skills you really need to, they are the best thing Anthropic have created (nope not MCP, I'm not a big fan, but that's a conversation for another day). &lt;/p&gt;

&lt;p&gt;You can think of Skills as optional prompts and context that the LLM can decide to use. They are markdown files and support files (like scripts, templates, or knowledge docs), and are optional, so only used when the LLM thinks its needed (you can see how they replace topics). So in a nutshell we get:&lt;/p&gt;

&lt;p&gt;User request &amp;amp; instruction &lt;strong&gt;-&lt;/strong&gt; LLM asks for skill &lt;strong&gt;-&lt;/strong&gt; request &amp;amp; instruction &amp;amp; skill&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8g7rrlkm3uaiplbddesq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8g7rrlkm3uaiplbddesq.png" alt="skills" width="800" height="662"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Skills are super cool, as a basic one is just a simple instruction file that is used for specific use case, just text and you get the benefits of lots of complex workflow logic.&lt;/p&gt;

&lt;p&gt;They deserve a blog all for themselves (watch this space), but needles to say they are one of the best tools Claude Code, Codex, and GitHub Copilot uses, so its great to see them in Copilot Studio (there are also thousands already available for you to use/get inspired by, &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;Anthropics GitHub&lt;/a&gt; has some good ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/skills-overview&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;

&lt;p&gt;Same as classic Copilot Studio, these are your connectors, MCP's, and Workflows (old Agent Flows). Just like your Skills they are available for the LLM to decide when to use them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feeehewqs9hbxhg4w9xhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feeehewqs9hbxhg4w9xhg.png" alt="tools" width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/tools-overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/tools-overview&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge
&lt;/h3&gt;

&lt;p&gt;Again like tools the same as classic Copilot Studio. Here you can add knowledge for the LLM to use to answer questions or make decisions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F16u1f47xwdj5egsz2094.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F16u1f47xwdj5egsz2094.png" alt="knowledge " width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/knowledge-copilot-studio" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/knowledge-copilot-studio&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Connected Agents
&lt;/h3&gt;

&lt;p&gt;Deja-vu, again nothing new, here will can link child agents and other agents to handover tasks. This was critical for the classic Copilot Studio to get ring fenced context. But Skills can do this now, so I think it will become really useful when you have a large ecosystem of agents. That way they can seamlessly pass you to the right agent if you are off topic or just lost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/authoring-add-other-agents" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/authoring-add-other-agents&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory
&lt;/h3&gt;

&lt;p&gt;Memory is a simple toggle, and its kind of in the name, the agent can now remember previous sessions. Users can see all of their memories and manage them. I'm excited to see how this works, as context is a fine-line to walk, too much and it can have negative impacts on your requests. Though on the flip side it will be able to kind of learn, with it responding in the way you prefer and understand your requests better (come on that's cool isn't it 😎).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/memory-overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agents-experience/memory-overview&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What's missing
&lt;/h2&gt;

&lt;p&gt;The new Copilot Studio is in preview, so I expect most of these to be added over time, but as of now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to the solution, you cant see the solution area in the environment, so if you want to export you need to got to the classic or Power Automate/Power Apps&lt;/li&gt;
&lt;li&gt;All required components are not automatically added to the solution when you add the agent&lt;/li&gt;
&lt;li&gt;All of the Knowledge sources, you are currently limited to External sites, SharePoint, and OneDrive&lt;/li&gt;
&lt;li&gt;Autonomous Agents, though this is because the change in strategy, with the new Workflows taking on the trigger of agents. I think this is the right way to go, so I suspect Autonomous Agents will disappear for good&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Is it any good
&lt;/h2&gt;

&lt;p&gt;So is it any good, Microsoft doesn't have a good record for UI updates (cough Power Automate V3 launch), but in this case, hell yes.&lt;/p&gt;

&lt;p&gt;This is what Copilot Studio should have been from day one, it now feels and acts like other LLM agents. It no longer feels like the old legacy Power Virtual Agent, it is something new and modern.&lt;/p&gt;

&lt;p&gt;The results are smarter/better, you can do more, and you can build a lot quicker. I personally will not be touching the classic UI again, there is no migration path (different engine), and the results are just so much better (the only blocker is the knowledge sources, but in that case I would rather just wait). And with the pace (and total focus Microsoft has on Copilot Studio) I excited to see new feature updates soon.&lt;/p&gt;

&lt;p&gt;So if you haven't used it, you need to try, trust me you wont look back.&lt;/p&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=5-newCPS" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>copilotstudio</category>
      <category>llm</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Custom API's in Power Automate</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 06 Jul 2026 05:35:20 +0000</pubDate>
      <link>https://dev.to/wyattdave/custom-apis-in-power-automate-2i4c</link>
      <guid>https://dev.to/wyattdave/custom-apis-in-power-automate-2i4c</guid>
      <description>&lt;p&gt;One of the best things about Power Automate ane the Power Platform is connectors, there are over a thousand, covering nearly all of you needs, with zero effot.&lt;/p&gt;

&lt;p&gt;But what about those API's that there is no connector for, well Microsoft has got your back, and in its normal manner it has a few ways to do it.&lt;/p&gt;

&lt;p&gt;So this blog Im going over the 3 main ways to connect with custom api's in Power Automate&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Wrong Way&lt;/li&gt;
&lt;li&gt;The Right Way&lt;/li&gt;
&lt;li&gt;The Crazy Way&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. The Wrong Way
&lt;/h2&gt;

&lt;p&gt;I'm going to upset a lot of people with what I'm about to say, but the HTTP connector is not the right way to connect to custom api's*&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyximwzwx30amudn5v683.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyximwzwx30amudn5v683.png" alt="http" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The asterisk is because there is 2 fringe cases where it is the right.&lt;/p&gt;

&lt;p&gt;Before we talk about when its ok, lets talk about why it's not the right for normal connections.&lt;/p&gt;

&lt;p&gt;And the simple fact is it  is not as secure as other options. Using the HTTP action moves the authentication into the runtime, which introduces vectors of risk.&lt;/p&gt;

&lt;p&gt;These are the main risks:&lt;/p&gt;

&lt;h3&gt;
  
  
  Credential Storage
&lt;/h3&gt;

&lt;p&gt;Credentials have no default place to store them securely. If you want to use a HTTP action with auth, you need to save Passwords, API Keys, OAuth Secrets, Tokens somewhere. &lt;/p&gt;

&lt;p&gt;Now there are places to store them, like credential banks like CyberArk, or Azure Key vaults. But having to access these can add (admittedly very very small) exposure to the vaults, a great example is Azure Key vaults have to be publicly accessible for the Power Platform to use them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I know that Microsoft will say this is fine, but some orgs don't like it, especially with the risk of new frontier LLMs. Add in you can't add urls or service tags to Key vaults, only individual IP's, and it can be a security headache you don't want to deal with&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Credential In Transit
&lt;/h3&gt;

&lt;p&gt;HTTP action requires the auth credential to be handled in the flow run time, which means they will appear in the logs. The good news is there is secure inputs/outputs, but although that fixes the problem, its not totally perfect&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires the developer to turn on&lt;/li&gt;
&lt;li&gt;Impacts debugging&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Exposure
&lt;/h3&gt;

&lt;p&gt;This is one that is easy to miss, but if you are posting data through the HTTP action, and that endpoint is dynamic, either through action inputs or environment variables, then it is possible for them to be edited and data sent to a bad actor.&lt;/p&gt;

&lt;p&gt;Again we have controls, like HTTP endpoint filtering in DLP (if you are not using this then you need to!). But again we are adding overhead and more potential points of failure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpc7y2v960ts56yci7wm0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpc7y2v960ts56yci7wm0.png" alt="http action workflow" width="690" height="738"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;So as you can see, we really shouldn't be using them, but hey David what about that asterisk, and if they are so bad why did Microsoft add them, good question.&lt;/p&gt;

&lt;p&gt;So there are 3 times I would use them, and one of them is a very unlikely.&lt;/p&gt;

&lt;h3&gt;
  
  
  PoC
&lt;/h3&gt;

&lt;p&gt;If you are building a flow to see if its possible, or generally as part of a incremental built out, then using the HTTP action totally makes sense. It allows quicker incremental building, working in one UI and workstream. Once you have everything working you can take the learnings and move to a more robust solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  No Auth
&lt;/h3&gt;

&lt;p&gt;Yep there are times when the API (or in some cases using it to web scrape pages, check our my previous blog about how to &lt;a href="https://dev.to/wyattdave/how-to-web-scrape-with-power-automate-cloud-4h16"&gt;How to web scrape with power automate cloud&lt;/a&gt;. In these cases we now remove handling auth and any sensitive data (if you are pushing sensitive data to an endpoint with no auth you have bigger issues to deal with).&lt;/p&gt;

&lt;p&gt;So yep that is a good use case, and one I have used a few times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Super unlikely
&lt;/h3&gt;

&lt;p&gt;If you have a flow that has to handle dynamic endpoints, then this maybe your only option. In these cases you get sent a dynamic url with auth, these are normally used for file sharing. In most cases they use the same base url, so you might be able to use other ways, but in those niche cases, this is your only option, and the risks become necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Right Way
&lt;/h2&gt;

&lt;p&gt;I'm pretty certain you already know the right way, but just in case its...... a custom connector.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe0qdoarvephxw1eqma17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe0qdoarvephxw1eqma17.png" alt="custom connectors" width="799" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Custom connectors allow you to use the built in connector/connection bank built into the Power Platform. Now all of the auth is handled outside of runtime, with the auth created during build/deployment, and never even touching the flow runtime.&lt;/p&gt;

&lt;p&gt;On top of the auth the endpoints are pre-built, ensuring that there can be no changes without change control.&lt;/p&gt;

&lt;p&gt;Custom Connectors do come with draw backs, in particular:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ALM - they have to be deployed/updated across all environments&lt;/li&gt;
&lt;li&gt;Gateways - don't play nice with gateways, only allowing windows and basic auth.&lt;/li&gt;
&lt;li&gt;They don't support all auth, tools like APIGEE are often configured with client OAuth, and these don't work with Custom Connectors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the simple truth is they are worth the trade offs (and you cant use gateways with HTTP actions so meh). Improved your risk vector for some additional administration is 100% worth it, and in theory nearly all security practices add administration, and we always follow them.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Crazy Way
&lt;/h2&gt;

&lt;p&gt;This one is a bit silly, but I wanted to call it out. If you are using an API that is from a vendor that does not have a connector, you can always make and submit your own.&lt;/p&gt;

&lt;p&gt;Microsoft allows 'Independent' publishers to create connectors. This means you, me, or anyone can create connectors, submit them to Microsoft and they become available (Service Now is a good example, its not made by Service Now, but Microsoft as an Independent Publisher.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrs5jgeq1mxp7denhg99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrs5jgeq1mxp7denhg99.png" alt="publish connector" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't get me wrong, this is A LOT of work (again another previous blog about how and how painful &lt;a href="https://dev.to/wyattdave/how-to-publish-a-power-platform-custom-connector-2ihi"&gt;here&lt;/a&gt;), but in some cases it might be worth it.&lt;/p&gt;

&lt;p&gt;You remove complexity around ALM (though add a more painful one with publishing), but more importantly you help others out. A big thing about the Power Platform is the community and helping out (you are reading a free blog made purely to help you), so I like the idea of sharing your learnings and effort with others.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Secret Bonus way
&lt;/h2&gt;

&lt;p&gt;There is one more kind of way to do this, and this is my favourite connector the HTTP with Microsoft Entra ID (preauthorized)'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F164m9ptkycbzngi55ns9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F164m9ptkycbzngi55ns9.png" alt="entra preauth" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This connector is amazing for 2 reasons, first it uses Entra SSO, so the auth is simple, no SPNs, no Key vaults, everything done the normal way. Second is it can access anything within the Microsoft world. That's all of the Grap API (so every office software etc), but also some Azure services.&lt;/p&gt;

&lt;p&gt;And as the connection is linked to the endpoint url, it should be pretty secure (the input url should never be dynamic because it is related to the connection. This symbiosis ensures that it cant be changed), and it stores all credentials in the connection/connector vault, win.&lt;/p&gt;

&lt;p&gt;Shock horror, I've already done a blog about the connector, check it our &lt;a href="https://dev.to/wyattdave/power-automate-the-super-connector-3gbe"&gt;here&lt;/a&gt; 😎&lt;/p&gt;




&lt;p&gt;There you have it, there are lots of ways to access non standard API's in Power Automate, but as always there is a right and wrong way. The wrong way can often feel like the easy way, and you may get pressure from enterprise architects and others who do not understand the platform, and just want the easy way. But as a developer or administrator its your job to do it the right way, even if that can add a little effort.&lt;/p&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=5-customAPI" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerautomate</category>
      <category>powerplatform</category>
      <category>api</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Vibe Coding My Own Power Platform Admin Center</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:09:46 +0000</pubDate>
      <link>https://dev.to/wyattdave/vibe-coding-my-own-power-platform-admin-center-29eh</link>
      <guid>https://dev.to/wyattdave/vibe-coding-my-own-power-platform-admin-center-29eh</guid>
      <description>&lt;p&gt;I will stop you there, yes this does sound like a silly idea, but trust me, there is some method to my madness, and as always, the journey is half the fun.&lt;/p&gt;

&lt;p&gt;So 2 things convergent at the same time that almost felt like fate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I was creating a complex Security Role setup (because you know only system admins can do that and I don't want my developers to have the keys to the kingdom)&lt;/li&gt;
&lt;li&gt;Second Open AI gave me 1 month GPT Plus free&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I thought can I make my life easier and burn some free tokens.&lt;/p&gt;

&lt;p&gt;And like all good ideas they grow into something crazy.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Where it started
&lt;/h2&gt;

&lt;p&gt;I'm sure most admins will agree the Security Role UI is not the best, it doesn't seem to fit the screen well and feels like it was designed to edit single tables, not large complex roles. At the moment I get Excel spreadsheets with the roles required permissions and I have to copy them over, so I thought how cool would it be for the app I'm building was able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create roles then export them (and existing) as a Excel file&lt;/li&gt;
&lt;li&gt;I handover to the dev team, they fill in,&lt;/li&gt;
&lt;li&gt;Hand back to me where I do a quick security check then upload&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that's where it all began&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Design
&lt;/h2&gt;

&lt;p&gt;Auth is never fun, especially for a Low-Code developer like me who relies on the platform to do all the heavy lifting. Fortunately we have a great foundation to build off, the new &lt;a href="https://www.npmjs.com/package/@microsoft/power-apps-cli" rel="noopener noreferrer"&gt;NPM Power Apps CLI&lt;/a&gt;, this is obviously a terminal app but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can do full &lt;strong&gt;Dataverse Auth&lt;/strong&gt; (and now connections using &lt;a href="https://api.powerapps.com" rel="noopener noreferrer"&gt;https://api.powerapps.com&lt;/a&gt; API)&lt;/li&gt;
&lt;li&gt;No need for registering a spn and getting security approval (winner)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So my idea was to use the cli package and spin up a local node instance, this will stop any cors issues and allow me to have a nice web UI. It also means in future it could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be installed through terminal nice and easy&lt;/li&gt;
&lt;li&gt;Packaged in SEA of Electron&lt;/li&gt;
&lt;li&gt;Hosted as a full web app&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. The Build
&lt;/h2&gt;

&lt;p&gt;I have basic knowledge of JavaScript so can read it and code in it, which meant I was in a good place to leverage AI and my free Codex tokens to build the solution.&lt;/p&gt;

&lt;p&gt;The App is 100% AI coded, I have reviewed a handful of lines of code, but I'm fully in the world that unless this is something professional (i.e. I'm paid to use it or paid to sell it), then I'm happy to take the risk and tech debt.&lt;/p&gt;

&lt;p&gt;I've spoke about how I prompt before and my next blog I'm going to go into more detail about it, so I'm not going to talk about it to much, except to say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is definitely not a one shot prompt&lt;/li&gt;
&lt;li&gt;I did research before around technical implementation so that I could guide Codex&lt;/li&gt;
&lt;li&gt;I worked on a feature-fix-refine cycle, with prompts and work focused around completing a specific feature&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. How It Came Out
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqevpojmt0xo6478p5d8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqevpojmt0xo6478p5d8.png" alt="role screen" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazingly the end result was exactly what I wanted, it is lightweight, fast, and super easy to navigate/use. It significantly decreased time taken to roles, and decreased potential errors.&lt;/p&gt;

&lt;p&gt;I had to get auth and environment working first, then a PoC CSV version, before finally ending with a formatted Excel workbook.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyipmucm52cri479sh3x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyipmucm52cri479sh3x.png" alt="excel roles" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Scope Creep
&lt;/h2&gt;

&lt;p&gt;Everything I had wanted to complete was done surprisingly quick, in total an hour or so, and I hadn't even hit my 5 hour allowance let alone my weekly, so I decided what more I can do.&lt;/p&gt;

&lt;p&gt;And this is where I had a realisation, the Admin Center is split into 2, with tenant settings and environments, and then below environment each environment setting. This makes sense and in the world of one solution it is the best choice, but we are no longer in the world of one solution and there are times when this is not the best structure.&lt;/p&gt;

&lt;p&gt;The other approach is to remove the environment structure and go by functional area, so like in my above admin center, instead of seeing all security roles in each environment, I have a security role section where I see all environments. And I thought what else in my workflow would also benefit from this, so far I have:&lt;/p&gt;

&lt;h3&gt;
  
  
  Solutions
&lt;/h3&gt;

&lt;p&gt;I work across lots of environments, I even work across different tenants, so trying to remember where stuff is can be a challenge, I endup opening multiple tabs and searching for them. So I decided to make a solution tab.&lt;br&gt;
This allows me to quickly select an environment and then search for the solution. As that was super easy and just one API call I added&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SolutionComponent call and Entities table to get all the components in the solution with display name&lt;/li&gt;
&lt;li&gt;Link to the solution in make.powerautomate.com&lt;/li&gt;
&lt;li&gt;Basic updates:

&lt;ul&gt;
&lt;li&gt;Change connections in Connection References&lt;/li&gt;
&lt;li&gt;Change Environment Variables&lt;/li&gt;
&lt;li&gt;Turn flows on/off&lt;/li&gt;
&lt;li&gt;Share flow both co-owner and run-only user (Add in SystemUser and Team table)&lt;/li&gt;
&lt;li&gt;Update manual flows connections to either flow owner or run-only user&lt;/li&gt;
&lt;li&gt;Share Canvas, Code Apps, and Agents&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of the above was stuff I had to do and took more time then I liked in the standard UI.&lt;/p&gt;

&lt;p&gt;But as I have gone this far and then thought what about exporting the solution for code reviews, so I added the unbound ExportSolution API. And as I was fully on the slippery slope I then asked myself, what about deploying to another environment.&lt;/p&gt;

&lt;p&gt;This required another new tab and the ability to not only use the  unbound ImportSolution API but also all of the connections and Environment Variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List all connections References and Environment Variables in the Solution&lt;/li&gt;
&lt;li&gt;Get Connections from target environment and create them if necessary&lt;/li&gt;
&lt;li&gt;Get current environment variable values from target environment&lt;/li&gt;
&lt;li&gt;Create the Settings JSON and submit that&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ee2sgbj3l5cyubhdfl8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ee2sgbj3l5cyubhdfl8.png" alt="import solution" width="799" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And it all worked, amazingly well after only a few prompts (I also did a chunk of research and had some good knowledge on the export/import API's which definitely helped).&lt;/p&gt;

&lt;p&gt;I was now in full addiction mode, targeting every friction point in my admin role, every task that takes just a little too long, so next was...&lt;/p&gt;
&lt;h3&gt;
  
  
  Users and Teams
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqmb0yp4ilhk6ltvebza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqmb0yp4ilhk6ltvebza.png" alt="users and teams" width="799" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assigning user roles, and more importantly adding and assigning teams can be a time consuming task, but now I can complete them all in one go.&lt;/p&gt;
&lt;h3&gt;
  
  
  Connections
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff78q4oiw1t5ezbqd7jzv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff78q4oiw1t5ezbqd7jzv.png" alt="connections" width="799" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately connections in Power Automate are brittle and often break, requiring a process to identify and fix. Add in Custom Connector secret updates can cause users connections to store stale tokens means that we need a way to quickly delete them. So this tab lists all connections in an environment (obviously you will need to be System Admin else you will only see your own).&lt;/p&gt;
&lt;h3&gt;
  
  
  Tables
&lt;/h3&gt;

&lt;p&gt;Ok I'm a little out of control now, but there are times when I want to check to see if tables are deployed across environments, along with getting good documentation. So I added a Table tab, that lists all tables and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shows all or just custom columns&lt;/li&gt;
&lt;li&gt;Creates a table of columns that can be exported to Excel&lt;/li&gt;
&lt;li&gt;Creates a Database Design Diagram &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhi1tfdb9rpolgdbwh0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhi1tfdb9rpolgdbwh0e.png" alt="table" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The updates also rolled back to the Solution tab, so I can see all Table/columns and a Diagram of all the tables in the solution (wanted this for so long, Chrome Ext coming soon).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fauo8bojdsnc3uqmcpq2w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fauo8bojdsnc3uqmcpq2w.png" alt="database diagram" width="799" height="441"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  AI Flows
&lt;/h3&gt;

&lt;p&gt;Keeping track of credit usage has improved massively but still not perfect, so I grabbed all the events from the AI events table. And with a little exploring of network traces to see how the Automation Center did it I was able to see all the flows using credits&lt;/p&gt;
&lt;h3&gt;
  
  
  Copilot Studio Events
&lt;/h3&gt;

&lt;p&gt;I wanted this to be like AI Flows so I could track usage of credits, but that is done by none Dataverse API's. But I could see the bot transcript table, which meant I could see which agents had most sessions, and could open up a transcript if needed to check on outcomes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5j0vz57usw5frutwpr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5j0vz57usw5frutwpr3.png" alt="transcript events" width="799" height="441"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Flow Runs
&lt;/h3&gt;

&lt;p&gt;Already well represented in the real Admin Center but I thought why not, now I can see all flow runs in an environment by flow, and identity failed runs easily.&lt;/p&gt;
&lt;h2&gt;
  
  
  6. Wrap Up
&lt;/h2&gt;

&lt;p&gt;There was a few realisations I had from this adventure, and just how powerful AI is wasn't one of them.&lt;/p&gt;

&lt;p&gt;I said along time ago I didn't agree with 'AI is the newUI', people simply prefer user interfaces more then text inputs. But I now think its 'AI provides a personal UI'. The future is that anyone can create a bespoke interface for their personal ways of working, or even events, no more compromising.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You prefer menu on the right, done,&lt;/li&gt;
&lt;li&gt;Options by function not hierarchy, done &lt;/li&gt;
&lt;li&gt;Edit in Excel and upload instead of in app, done&lt;/li&gt;
&lt;li&gt;On mobile instead of laptop, done&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The options are literally endless, and the value in almost infinite marginal improvements should not be underestimated.&lt;/p&gt;

&lt;p&gt;And for me this means software developers need to pivot to open solutions. Shockingly Salesforce have figured this out with Headless 360, with the data structure and infra the product, and you bring your own UI (BYUI) now the future. &lt;/p&gt;

&lt;p&gt;I really hope the rest of the Power Platform Admin Center API's are exposed and structured as easy as Dataverse API's.&lt;/p&gt;

&lt;p&gt;The last realisation is a little less exiting, and that's around these 'all you can eat' subscriptions like from Open AI and Anthropic and how they changed my behaviour. With GitHub Copilots new (and old model) I was very targeted and thoughtful with my prompting, adding a new level to the project. But with Codex my behaviour changed, the 5 hour/weekly limit turned into a goal to use, focusing on quantity not quality. This led to me making sure I was in Codex every 5 hours and other addictive like behaviours, I can see how easy it is to become AI Vampire's.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41i01sxthxogsbm7jgv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41i01sxthxogsbm7jgv7.png" alt="ai vampire" width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for now I wont be renewing my GPT Plus subscription, no matter how good it was.&lt;/p&gt;



&lt;p&gt;Power Devbox Admin is available in NPM &lt;a href="https://www.npmjs.com/package/powerdevbox-admin" rel="noopener noreferrer"&gt;powerdevbox-admin&lt;/a&gt;, so if you have Node installed you can install it locally with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;powerdevbox-admin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or just run it locally with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;npx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;powerdevbox-admin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq3pisofpscgsugnquaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq3pisofpscgsugnquaw.png" alt="powershell" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or if you want to fork it (or help improve it) you can find the repo here &lt;a href="https://github.com/wyattdave/pdac" rel="noopener noreferrer"&gt;https://github.com/wyattdave/pdac&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=pdac" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>powerapps</category>
      <category>powerautomate</category>
      <category>ai</category>
    </item>
    <item>
      <title>CodeApp JS - My Shortcut to Vibe Coding Power Apps</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 01 Jun 2026 06:17:10 +0000</pubDate>
      <link>https://dev.to/wyattdave/codeapp-js-my-shortcut-to-vibe-coding-power-apps-2fg3</link>
      <guid>https://dev.to/wyattdave/codeapp-js-my-shortcut-to-vibe-coding-power-apps-2fg3</guid>
      <description>&lt;p&gt;Code Apps are my current favourite thing about the Power Platform, they follow what I think Microsoft's AI strategy should have been all along "Automate the code underneath, not the UI", as that's what LLMS are good at.&lt;/p&gt;

&lt;p&gt;But I found a couple of issues with Code Apps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The CLI requirements is a barrier for some&lt;/li&gt;
&lt;li&gt;The process is disjointed (e.g. getting connection id from url)&lt;/li&gt;
&lt;li&gt;Require repo like GitHub (another barrier)&lt;/li&gt;
&lt;li&gt;React is good for some use cases but overkill for others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I wanted to create a way to fix these issues, I wanted&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A way for most makers to build without adding connectors&lt;/li&gt;
&lt;li&gt;To enable Copilot and other Agents to build right first time&lt;/li&gt;
&lt;li&gt;No CLI commands needed and a simple workflow&lt;/li&gt;
&lt;li&gt;Store the editable code in the platform&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Callout, although I dabble in TypeScript I'm stuck in my ways and prefer JavaScript, also I like to build things, so anyone who calls out this probably isn't necessary and the LLM will do all the complex stuff is right&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So here was my idea, create a fork of code apps built on top of the power app SDK.&lt;/p&gt;

&lt;p&gt;This project has rattled on for a while, and it all came together when Microsoft launched a NPM version of the power platform cli, allowing me to build in that inside my solution instead of an external dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. CodeApp JS
&lt;/h2&gt;

&lt;p&gt;My plan was to build a conversion process for the SDK into a simple JavaScript (removing the build stage) file that I could then build on top of. The idea was to have these files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;power-apps-data.js - the SDK&lt;/li&gt;
&lt;li&gt;codeapp.js - helper functions, debugger, Dataverse actions, and later date the Flow actions&lt;/li&gt;
&lt;li&gt;connectors/ - folder with all of the most used connectors converted to JavaScript, they would have easy to use wrappers and built it debugger&lt;/li&gt;
&lt;li&gt;Index.js* - where all the project JavaScript is&lt;/li&gt;
&lt;li&gt;Index.html* - where the app UI is&lt;/li&gt;
&lt;li&gt;power.config.json* - the app config details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;*These are standard Code App files that are always required&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The default connectors I thought of that covered 90%+ of use cases where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dataverse&lt;/li&gt;
&lt;li&gt;Office 365 Outlook&lt;/li&gt;
&lt;li&gt;Office 365 User&lt;/li&gt;
&lt;li&gt;Office 365 Groups&lt;/li&gt;
&lt;li&gt;SharePoint&lt;/li&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;li&gt;Teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next step was to improve how LLMs build Code Apps, as by default they just want to build normal web apps, so I created 2 main areas, agent and skills.&lt;/p&gt;

&lt;p&gt;The agent.md file is like a system prompt that you can set in VS Code, it ensures the LLM knows that this is a Code App and to do things like use the SDK instead of simple fetch() functions. The skill.md files are for each connector, they ensure the LLM updates the power.config.json file and doesn't make any silly mistakes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;They all started from a foundation and were incremented on with learnings from building apps, the more I built the more learnings I could train the LLM with&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This means that out of the box a maker could build a Code App, but they would need to add schemas for datasources to help the LLM and still used one cli command to publish to the Power Platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Build Setup
&lt;/h2&gt;

&lt;p&gt;At this point I have done 1 and 2, but what about 3 and 4, well this is where I needed to build (my favourite bit 😎).&lt;/p&gt;

&lt;p&gt;To make the workflow easy I needed to replace the CLI commands, and that meant a new UI. The approach I decided to go with was, in a strange contradiction to my objective, was to build a CLI.&lt;/p&gt;

&lt;p&gt;There were 3 reasons why I decided&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt; because I could batch/improve the commands and add new ones. Examples include if I wanted to add a new connector I got the command to find the first valid connection and use that (no getting connection id from the url).&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;second&lt;/strong&gt; and most important was because the CLI can be the foundation for any UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feza84j20t71mt704l110.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feza84j20t71mt704l110.png" alt="dependency" width="509" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we have the Code App JS files, which are used by the CLI, which is then used by other Apps. That way when I update the files with new connectors or SDK updates it cascades through, and if I update the CLI with new commands (like when the call flow was added), again it cascades down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third&lt;/strong&gt; I just really really wanted to make a CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. CAP CLI
&lt;/h2&gt;

&lt;p&gt;The CLI is split into a light and full version. The light covers the CLI commands, the full version builds Copilot SDK into it so it can be a fully standalone agent tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Light - the CLI commands
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4bochacosnyqoswxchkk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4bochacosnyqoswxchkk.png" alt="cap help" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The CLI commands in theory should make the process more streamlined and simplified, these are the commands I created.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CAP auth&lt;/code&gt; - signs you into Power Platform&lt;br&gt;
&lt;code&gt;CAP environment&lt;/code&gt; - lists all of your environments and lets you select them. After selecting it also updates the power.config.json file&lt;br&gt;
&lt;code&gt;CAP dataverse&lt;/code&gt; - inputs dataverse table, adds it to the power.config.json and adds the schema to the config file (deletes or unnecessary files too)&lt;br&gt;
&lt;code&gt;CAP flow&lt;/code&gt; - lists all flows for you to select, adds it to the power.config.json and adds the schema to the config file (deletes or unnecessary files too)&lt;br&gt;
&lt;code&gt;CAP deploy&lt;/code&gt; - publishes app to environment, it also copies the power.config.json file into the config folder first (you will see why later)&lt;br&gt;
&lt;code&gt;CAP deploy --debugger&lt;/code&gt; - turns on debugger so in the app you can see and copy all connector actions (great to passing to LLM to help debugging)&lt;br&gt;
&lt;code&gt;CAP connector&lt;/code&gt; - inputs connector, finds first connection id from environment, imports TypeScript code, converts, embeds debugger functionality and moves to the connector folder (deletes or unnecessary files too) &lt;/p&gt;

&lt;p&gt;&lt;em&gt;there are more shortcuts to these like CAP environment -- but you get the idea&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's the standard commands from the Power Platform API, but why stop there, so I've added some of my own&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CAP setup&lt;/code&gt; - copies all of the templated CodeApp JS files into your project folder, asks for name etc to setup power.config.json file&lt;br&gt;
&lt;code&gt;CAP table&lt;/code&gt; - allows you (or the LLM) to create Dataverse tables, you input name, publisher and then add as many columns as you need (any type)&lt;br&gt;
&lt;code&gt;CAP import&lt;/code&gt; - my favourite, but I need to explain more&lt;/p&gt;

&lt;p&gt;CAP import is the key to objective 4. See the best thing about Vanilla JavaScript in CodeApp JS is it does not need a build step (convert from TypeScript to JavaScript), so the code in the Code App is the code you have written. This means in theory you can export the solution, unzip it and see the code you wrote (or Copilot did). The one thing missing is the power.comfig.json file. But if we copy that, and any other import files like the schemas into the dist folder, lets say in a config folder, then we would have everything we need.&lt;/p&gt;

&lt;p&gt;And that's what import does, it lists all of our Code Apps in an environment, you select the app, it finds a solution its in and then exports the solution zip. Once it has the solution it unzips it, grabs the code and adds it to your project folder, finally it copies the power.config.json from the dist/config folder to the root.&lt;/p&gt;

&lt;p&gt;So now you can use the Power Platform to store your dev code 😎&lt;/p&gt;
&lt;h3&gt;
  
  
  Full - Copilot
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9xrosiw30zcdtqhvlgp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9xrosiw30zcdtqhvlgp.png" alt="cap cli" width="799" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full version has everything the light version has, but also has the Copilot SDK build in, so you don't need vs code or other agent tools, you can use CAP on its own (and again you can build you own agent tool on top of this).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0irt6qtq3q6pcp27vg6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0irt6qtq3q6pcp27vg6h.png" alt="full dependencies" width="694" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CAP copilot&lt;/code&gt; - sign into your GitHub Copilot account&lt;br&gt;
&lt;code&gt;CAP model&lt;/code&gt; - view available models and select the one you want&lt;br&gt;
&lt;code&gt;CAP skills&lt;/code&gt; - view list of skills and open to see them&lt;br&gt;
&lt;code&gt;CAP instruction&lt;/code&gt; - create your own instruction.md file&lt;br&gt;
&lt;code&gt;CAP&lt;/code&gt; - open up interaction session, all inputs are prompts sent to the llm, except when you prefix a /, which the falls back to the CLI for commands like CAP deploy&lt;br&gt;
&lt;code&gt;CAP-p&lt;/code&gt; - runs a one off prompt to the llm (like Claude-p)&lt;br&gt;
&lt;code&gt;CAP session&lt;/code&gt; - view all saved sessions and select one to continue&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1cujw3tweley6n4r4jg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1cujw3tweley6n4r4jg.png" alt="cap running" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglxzh7wp88oj1ejv8wv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglxzh7wp88oj1ejv8wv1.png" alt="deployed app" width="800" height="446"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;As you can see it successfully switched to returning in blocks of 10, though as always there is a small bug with loaded total only showing 10 🤦‍♂️&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  4. How I use it
&lt;/h2&gt;

&lt;p&gt;Lets be honest, although the CLI is cool it is not the best way to build (cough sorry Claud Code), so how do I use it.&lt;/p&gt;

&lt;p&gt;Well at the moment I use a VS Code Extension I created based on the CLI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4565dfk5gvl3j7msl806.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4565dfk5gvl3j7msl806.png" alt="cap ext" width="800" height="510"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=PowerDevBox.codeappjsext" rel="noopener noreferrer"&gt;CAP - Code Apps&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For me its the perfect blend of Low-Code and AI. It has all the buttons I need to complete actions like adding Dataverse table or deploying (see bottom of the screen)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyblbz5x18yljwojdosms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyblbz5x18yljwojdosms.png" alt="buttons" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And it delegates all of the code writing to the AI (bit like what we do with Power Apps, we interact with buttons, and delegate most of the code to prebuilt code provided by Microsoft developers).&lt;/p&gt;

&lt;p&gt;It also has a couple of added benefits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Copilot in VS code enables additional models like Gemini Pro 3 that are not enabled through Copilot SDK&lt;/li&gt;
&lt;li&gt;For CLI your admin will have to enable Copilot to use SDK and for you to install the CLI, where as VS Code Ext is normally just one click&lt;/li&gt;
&lt;li&gt;I'm use to VS Code so I can use it easily.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a demo video of me building an app using it (Im no Youtuber so expect no production costs, and its a little boring so you may want to fast forward lol)&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/oOzZKlm09FI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;But I am working on an orchestration app, so that all my Code Apps can be found in one place with a nice UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Have Ago Yourself
&lt;/h2&gt;

&lt;p&gt;For more information of Code Apps check out &lt;a href="https://codeappjs.com/" rel="noopener noreferrer"&gt;https://codeappjs.com/&lt;/a&gt; and more information on CAP CLI check out &lt;a href="https://codeappjs.com/cap.html" rel="noopener noreferrer"&gt;https://codeappjs.com/cap.html&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Its all open source, so if you want to add connectors/features or fix bugs (I'm sure there are a few), please feel free to submit PRs. Likewise if you don't like the JS side of it, but like the commands you can fork it and use any useful bits.&lt;/p&gt;




&lt;p&gt;The interesting thing I found about this is that AI gives us something that we never had before, a world of bespoke solutions to our personal developer ways of working. I found myself constantly spinning up new ways to make me more productive, from new bookmarklets, to entire CLIs and libraries, and that for me is super cool 😎&lt;/p&gt;




&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=capcli" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerapps</category>
      <category>powerplatform</category>
      <category>vibecoding</category>
      <category>ai</category>
    </item>
    <item>
      <title>From logic Apps to Workflows and what it means</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 18 May 2026 06:34:50 +0000</pubDate>
      <link>https://dev.to/wyattdave/from-logic-apps-to-workflows-and-what-it-means-4ook</link>
      <guid>https://dev.to/wyattdave/from-logic-apps-to-workflows-and-what-it-means-4ook</guid>
      <description>&lt;p&gt;You may have seen recently the launch of Workflows, this is a cool new automation builder inside Copilot Studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8td8dpbfqua7u28guh4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8td8dpbfqua7u28guh4.png" alt="new workflow" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But is it actually new, as with most things when you draw back the curtain you see that things are a lot less different then they appear.&lt;br&gt;
Underneath Workflows are Power Automate flows, so that means that now we have 4 different ways to build our flows&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classic UI&lt;/li&gt;
&lt;li&gt;New UI (V3)&lt;/li&gt;
&lt;li&gt;Agent Flow (Inline)&lt;/li&gt;
&lt;li&gt;Workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well actually there are 5, as Power Automate is actually built on Logic Apps, and although the UI is the same V3, it also has a code editor (and with a nifty &lt;a href="https://marketplace.visualstudio.com/items?itemName=PowerDevBox.power-automate-utility" rel="noopener noreferrer"&gt;VS Code Extension&lt;/a&gt; I made you can edit flows from your environment in code too). &lt;/p&gt;

&lt;p&gt;So=PowerDevBox.power-automate-utility) I made you can edit flows from your environment in code too). &lt;/p&gt;

&lt;p&gt;So I was wondering, what exactly is the difference between flows built in these different UIs?&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Logic Apps
&lt;/h2&gt;

&lt;p&gt;Logic Apps are where it all began, as the origional Power Automate flows were just Logic Apps with a few tweaks. Even the UI was the same, just with the additional of code editor and some additional/missing connectors. When Logic Apps moved to a new UI called V3 so did Power Automate, and when you look at the clientData Power Automate uses a Logic Apps schema:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Classic UI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbxtezsgbzpufq0eksakb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbxtezsgbzpufq0eksakb.png" alt="classic ui" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Classic UI was loved by developers for a long time, and with the launch of V3 not so smooth (missing features) a lot delayed moving over (Microsoft even had to introduce a toggle to switch back). Even now V3 is established you will still see Classic in Power Apps when selecting a flow, some logs, and randomly when creating a flow from solution screen.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. New UI (V3)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjrjatfyfgabi2ks9gm0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjrjatfyfgabi2ks9gm0.png" alt="new ui flow" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The V3 UI is the current UI for Power Automate (for now) and was 100% client side deep, with everything under the hood the same. You can not tell any different by looking at a flow in the Workflow table, and they were 100% interchangeable. &lt;/p&gt;

&lt;p&gt;The UI moved from inputs and buttons inside actions to a side panel, along with a fresh new modern look, version control, and Copilot.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Agent Flows (Inline)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5rgzu4rqqeev8xbomzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5rgzu4rqqeev8xbomzh.png" alt="agent" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Originally flows used in Copilot Studio looks identical to Power Automate, with the only difference how they are billed (Power Automate runs use the owner/app users API allowance, Agent Flows use Copilot Studio Credits), but in August 2025 that changed, with Agent Flows having a different UI.&lt;/p&gt;

&lt;p&gt;The New New UI was a hybrid of Classic and V3 UI, with inline inputs, side panels, and other benefits from V3.&lt;/p&gt;

&lt;p&gt;When you open the same flows in Power Automate they fall back to V3, but the story isn't quite over there. The Inline UI was suppose to launch in Power Automate at the same time, it was pushed back to February, and following Microsoft's playbook of poor rollouts, this version was slow and unresponsive, leading to it being pulled and planned for later 2026.&lt;/p&gt;

&lt;p&gt;Again looking under the hood there appears to be no difference between Agent Flows and Power Automate flows, with the same definition (Logic Apps), but there are some differences.&lt;/p&gt;

&lt;p&gt;First different connectors are available/not available, and second was within the Workflow table, where there was a new field, modernflowtype.&lt;/p&gt;

&lt;p&gt;If this was set to 0 it was a normal flow, if it was set to 1 it was an Agent Flow. So you can simply update the field in an API call or in the details in the UI change the plan to Copilot Studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5m5i2p0lrjjub9f2joj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5m5i2p0lrjjub9f2joj9.png" alt="change to worflow" width="800" height="382"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k2lkc8fpwq9g9fnnpeu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k2lkc8fpwq9g9fnnpeu.png" alt="change in ui" width="656" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Though be warned, for some reason you can not change them back. Im guessing the modernflowtype is more of a trigger, with a plug-in running on it changing to update something in the resource, and creating a switch back wasn't prioritised for development.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0x80048d0b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;errorCode&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;InvalidModernFlowOperation&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;message&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;This modern flow's type cannot currently be changed.&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;correlationId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;95c3fa83-ee4b-4c1a-bf3a-59850b4ea8b5&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjqwl76hqmn1dhcoi43ia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjqwl76hqmn1dhcoi43ia.png" alt="cant change back in ui" width="704" height="683"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So at this point we had 4 UIs, with them all running on the same infrastructure but 3 different billing methods, but that is now changing.&lt;/p&gt;

&lt;p&gt;A recent announcement brought to my attention by the awesome &lt;a href="https://learn.microsoft.com/en-us/power-automate/environment-architecture" rel="noopener noreferrer"&gt;Jukka Niiranen&lt;/a&gt; showed that Logic Apps and Power Automate were actually breaking up. Power Automate (inc Agent Flows and Workflows) have forked from Logic Apps and now have there own update and release plan. The infrastructure is no longer Logic Apps, but &lt;a href="https://learn.microsoft.com/en-us/power-automate/environment-architecture" rel="noopener noreferrer"&gt;SelfHostMultiTenant&lt;/a&gt;. You can see this manifesting in 2 ways so far, the new http trigger URL, and the &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/agent-flow-express-mode" rel="noopener noreferrer"&gt;Express Mode&lt;/a&gt;. So yes, this divergence definitely feels like its for Agent Flows benefit, not Power Automate.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Workflows
&lt;/h2&gt;

&lt;p&gt;And that brings us nicely to Workflows, this UI is still hot of the press and in preview in selected regions so subject to change.&lt;br&gt;
Again looking under the hood there is nothing new, though this time its with Agent Flows (modernflowtype:1). There are some differences in practice, different connectors being the main one, and for now you can still select the same flow and open it as an Agent Flow and build in that UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdjc9vqj80o1ei5q2p2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdjc9vqj80o1ei5q2p2h.png" alt="workflow agent flow toggle" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With all of the updates again client deep compared to Agent Flows it feels that this could eventually replace Agent Flows (like V3 was suppose to replace Classic), though its less then a year old so that seems too quick for deprecation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs673ja099iz0fgven6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs673ja099iz0fgven6f.png" alt="over view" width="705" height="443"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;So what's the take away, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Well first Logic Apps is an incredible product, that is so well built its been the backbone for all automation in the Power Platform and will live on as the foundation&lt;/li&gt;
&lt;li&gt;It doesn't look like we are going to get Code Flows (what's a Code Flow I hear you asking, well I was expecting Microsoft to create Vibe Coded Function Apps - which I named Code Flows - , but it looks like investment is not going that way)&lt;/li&gt;
&lt;li&gt;Power Automate is not driving Power Automate anymore, Workflows (and maybe Agent Flows) are, as they need the Express Mode, and they are getting all of the investment. Power Automate is just coming along for the ride.&lt;/li&gt;
&lt;li&gt;Expect more changes, now they have forked I expect changes throughout, including eventually the definition and one day &lt;code&gt;https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json&lt;/code&gt; might disappear.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fue8vr36dgravrn5hs2t5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fue8vr36dgravrn5hs2t5.png" alt="path" width="800" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Part of me is excited that Power Automate will get all the benefits of the investment in Agent Flows/Workflows, but the other part of me is worried that just like before when Logic Apps drove the agenda, again Power Automate has to follow. &lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=logicFlow" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerautomate</category>
      <category>powerplatform</category>
      <category>copilotstudio</category>
      <category>logicapps</category>
    </item>
    <item>
      <title>Let's Talk About Power Platform Environments</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Sat, 25 Apr 2026 11:39:54 +0000</pubDate>
      <link>https://dev.to/wyattdave/power-platform-environments-1k2c</link>
      <guid>https://dev.to/wyattdave/power-platform-environments-1k2c</guid>
      <description>&lt;p&gt;I had an interesting conversation with my Architect recently about Power Platform environments (aren't all chats with Architects always the most fun 😎), we have the most fun chats lol.  And it made me think I thought about how they should probably change, and what the future holds.&lt;/p&gt;

&lt;p&gt;There are 3 things that I want to talk about:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Quick Fixes&lt;/li&gt;
&lt;li&gt;Big Fixes&lt;/li&gt;
&lt;li&gt;The Future&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Quick Fixes
&lt;/h2&gt;

&lt;p&gt;The trusty Power Platform environments hasn't changed much over the years. Yes we have had managed environments and developer environments. But they are only skin deep changes, deep down nothing has changed. And that makes sense, as its the foundation of the platform so we can't go around making breaking changes.&lt;/p&gt;

&lt;p&gt;But I think there are still a few easy win changes.&lt;/p&gt;

&lt;p&gt;Well first lets go back to that elephant in the room, Dynamics. As the Power Platform is built on Dynamics, that means every environment is setup like a Dynamics instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security Roles
&lt;/h3&gt;

&lt;p&gt;There are a 100 security roles added to each new environment, now I don't about you but I have probable used less then 10, check out this list, how many do you even know, can you tell me what even half do?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Role Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Agent 365 Tools Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;AIB Roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;AIB SML Roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;ApolloServiceRole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;App Deployment Orchestration Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;App Opener&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Approvals Administrator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Approvals User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Async ingestion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Basic User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;BizQAApp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Bot Author&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Bot Contributor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Bot Transcript Viewer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Bulk Archival Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;BusinessApplicationPlatformRole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Cards Basic Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Cards Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;CCI admin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;ContextualAIS2SRole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Data Sync Framework Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Data Sync Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Dataflow Maker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;DataLakeFolderEntityContributor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;DataLakeWorkspaceAppAccess&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;DataProcessingConfigTableAppAccess&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;Dataverse as a Cluster App Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Dataverse Search Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;Deflection Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Delegate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;Delegated Mailbox Approver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Desktop Flow Machine Configuration Admin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Desktop Flows AI Application User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;Desktop Flows Machine Application User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;Desktop Flows Machine Owner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;Desktop Flows Machine User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;Desktop Flows Machine User Can Share&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;Desktop Flows Module Developer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Desktop Flows Runtime Application User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;EAC App Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;EAC Reader App Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;Environment Maker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;Export Customizations (Solution Checker)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;Fabric AI Skill Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;td&gt;Federated Knowledge Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;td&gt;FileStoreService App Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;Flow-CDS Native Connector Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;Flow-RP Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;td&gt;Global Active Metrics Monitoring Alerting Custom Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;Global Discovery Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;Help Page Author&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;Help Page Consumer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;Insights Apps Platform Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;IntegratedSearchApp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;Knowledge Manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;56&lt;/td&gt;
&lt;td&gt;Knowledge Quality Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;Knowledge Quality Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;td&gt;Microsoft Copilot Administrator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;Microsoft Copilot User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;Non-Relational Data App Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;Office Collaborator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;Omnichannel CDS Flush Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;Portal Application User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;Portal RP Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;Power Apps Checker Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;Power Automate AI Flows Application User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;Power Automate Operator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;Power BI Embedded App Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;td&gt;Power BI workspace admin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;Power BI workspace contributor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;td&gt;Power BI workspace viewer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;Power Platform Data Analytics Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;td&gt;Power Platform Dataflows Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;74&lt;/td&gt;
&lt;td&gt;Power Policy App User Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;PowerAppsRPRole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;PowerPlatformInsightsRole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;td&gt;Process Mining Application&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;Process Mining User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;79&lt;/td&gt;
&lt;td&gt;Project Background Services App Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;Purview Label Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;td&gt;Report Service Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;82&lt;/td&gt;
&lt;td&gt;RPE Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;83&lt;/td&gt;
&lt;td&gt;Service Deleter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;td&gt;Service Reader&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;td&gt;Service Writer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;Solution Checker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;td&gt;SuggestedActionS2SRole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;td&gt;Support User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;SupportUserCustomAPI Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;td&gt;Sustainability all - full access Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;td&gt;Sustainability all - ingest - full access Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;92&lt;/td&gt;
&lt;td&gt;Sustainability BusinessUnit - full access Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;Sustainability BusinessUnit - ingest - full access Role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;td&gt;Synapse Link Service Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;td&gt;Sync Permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;System Administrator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;97&lt;/td&gt;
&lt;td&gt;System Customizer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;Teams Chat Sync App Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99&lt;/td&gt;
&lt;td&gt;Tour Author&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;Tour Consumer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Imagine if we only had Power Platform specific roles, maybe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment Maker&lt;/li&gt;
&lt;li&gt;System Administrator&lt;/li&gt;
&lt;li&gt;System Customizer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We then have an option to add roles like Approvals, Copilot Studio and Power Automate Desktop. All of the system ones for spn's could be abstracted away. Finally I would make basic user on by default, so if you access the environment then you are given the role. And any that are removed with no way to add could be documented so that admins can create them themselves if needed (or our friend Copilot 😎.&lt;/p&gt;

&lt;h3&gt;
  
  
  System Customizer
&lt;/h3&gt;

&lt;p&gt;There is also the problem with the system customizer role. Its Dynamics day role was to allow the maker to create custom tables. Without it if you create a custom table you can't add data to it without a custom security role (so you need to make the table, then make the role, then use the table). The idea was sound, as it removed the environment settings but allowed the developer full access to the data in the non-prod environment. But as the Power Platform grew and became solution aware the plan broke. &lt;/p&gt;

&lt;p&gt;Because the platform is built on the platform i.e. flows are stored in the same way as custom data, we have a big issue with our security roles.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to create Dataverse tables - System Customizer/custom role &lt;/li&gt;
&lt;li&gt;You want to add data to a table without a custom role - System Customizer &lt;/li&gt;
&lt;li&gt;You want to create custom AI builder model - System Customizer &lt;/li&gt;
&lt;li&gt;You want to create a security role - System Administrator &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thats right to do any of the above development I need the permission to see all Dataverse tables, including system tables like flows. And if you want to give someone that secuirty role, well only admins can, because you could easily give yourself any role.&lt;/p&gt;

&lt;p&gt;There needs to be a new role that is purely scoped to custom tables created by the maker. That way if you create a table you can add data etc, but no one else can until they are given permission.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Data Model tables
&lt;/h3&gt;

&lt;p&gt;We also have the Common Data Model tables, as the environment owner I should decide if I want a  Accounts table, don't waste my expensive Dataverse storage with unused/misused tables, and clutter it with tables I will never use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eorlgo51vpfczfezvpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eorlgo51vpfczfezvpv.png" alt="common data model" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not only would you save all that Dataverse capacity you get the added benefits of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simpler to administor&lt;/li&gt;
&lt;li&gt;Less vector of attack (unecessary roles and consitent database structure is a hackers Christmas)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simple approach would be to have the tables in a solution you can download/add.&lt;/p&gt;

&lt;p&gt;As this is a quick fix section, the easy update would be to enable admins to delete the tables, so I may be forced to include on setup but I can at least run a script/flow post setup to remove them&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Big Fixes
&lt;/h2&gt;

&lt;p&gt;In a nutshell an environment is kind of a container.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Containers are lightweight, portable software packages that bundle an application's code with everything it needs to run (libraries, dependencies, settings) into a single, isolated unit, allowing it to run consistently and reliably anywhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you think of things like Dataverse tables, api's, model driven apps, as libraries, dependencies, settings, then it kind of makes sense.&lt;/p&gt;

&lt;p&gt;In the Microsoft world you might even think of them as a Resource Group (I suspect under the hood they are). But a resource group is meant to act as a lifecycle boundary: everything in it is created, updated and deleted together. Guess what has a lifecycle boundary in the Power Platform, that's right a Solution.&lt;/p&gt;

&lt;p&gt;So really a solution is a resource group, but its not treated like that. Because Resources groups also come with scope permissions to the Resource Group and its contents, Solutions do not have that, there is no permission to see a Solution, just its contents. A Solution is more like a filtered view then a folder.&lt;/p&gt;

&lt;p&gt;And I think that contradiction has made a mess. And its because of the Dynamics, which treats solutions like components and the environment the container. If you see it through the eyes of Dynamics it makes sense, but through the eyes of the Power Platform it doesnt.&lt;/p&gt;

&lt;p&gt;I think there needs to be a refocus, with the environments tending more to Power Platform needs.&lt;/p&gt;

&lt;p&gt;We need to treat solutions more like the container. They need to have security roles scoped to them. So as an example a developer with a Solution Customizer role could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See everything in the solution&lt;/li&gt;
&lt;li&gt;Create custom tables and add data to them within the solution&lt;/li&gt;
&lt;li&gt;Edit all flows/apps within the solution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But they couldn't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete the solution&lt;/li&gt;
&lt;li&gt;Create security roles at the environment level&lt;/li&gt;
&lt;li&gt;Edit solution details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylttgdx1pojlz1yawfyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylttgdx1pojlz1yawfyz.png" alt="environment roles" width="729" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That would be limited to the Solution Administrator or other role.&lt;/p&gt;

&lt;p&gt;This would bring the power platform in line with PoLP (Principle of Least Privilege), as someone who simply wants to create a custom table and security profile should not need permission to change the environment settings and view/edit all other developers work.&lt;/p&gt;

&lt;p&gt;The other big issue, which Microsoft is trying to fix is hierarchy. Each environment is a totally separate entity. This is ok when you work within the environment, but what about when you work above. As a environment admin dealing with environments its not fun. Everything is siloed away, and getting a rolled up global view is only possible by a series of loops and copying of data. &lt;/p&gt;

&lt;p&gt;The new Inventory setup in the PPAC is trying to solve this problem, and doing well. But under the hood it seems to be just doing the loops and copying for us, not fixing the underlying issue. It also is:&lt;/p&gt;

&lt;p&gt;-Limited to Global Admins (PolP alert, though RBAC is planned)&lt;br&gt;
-Limts data to PPAC&lt;/p&gt;

&lt;p&gt;The environments should be structured in a hierarchy, with all platform data in one source. Then each environment role a given permissions to those records. Why have a hundred Security role tables when we could have one that is filtered to each environment.&lt;/p&gt;

&lt;p&gt;Although that sounds like more work for the CoE, who now cant outsource environment administration so easily, it doesn't stop this, and it gives them greater visibility and control (and don't forget, with a Solution Customizer role you shouldn't need admins purely to create security roles).&lt;/p&gt;
&lt;h2&gt;
  
  
  3. The Future
&lt;/h2&gt;

&lt;p&gt;So that's how I would fix enviroments, strip them down to focus on the Power Platform, and create lower-level granular security roles at the solution level.&lt;/p&gt;

&lt;p&gt;But what about the future, well that's where I think the environment update becomes more important. The Power Platform is growing beyond Low-Code, for a long time the platform was simply to enable the low-code tools. But with the advent of AI, and the democratising of Pro-Code we are fast approaching a would where the platform becomes the value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2szh9ol4ray38wn3yr8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2szh9ol4ray38wn3yr8t.png" alt="code app architecture" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code Apps prove this, if you think about it, I can now use GitHub Copilot to create feature which Pro-Code apps/sites, but that is only ski deep. Things like security, Auth, life cycle, deploying,   load balancing, etc are all things that AI can maybe do, but not easily. Enter the Power Platform, now my AI generated apps are secure, have built in auth, deployments, roles, life cycle, everything that you would worry about, How cool is that, you have the walled garden that you can unleash AI in with a lot less risk.&lt;/p&gt;



&lt;p&gt;For a while its felt like its hard to get improvements in the Power Platform unless its Copilot/AI related, so for a while I doubted updates to the environments would ever happen. But now with the ability to use the platform for AI generated code instead of Low-Code, I think it might get the support now, come on Micrsooft, lets get environments fixed.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=ltaenvir" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>powerautomate</category>
      <category>powerapps</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Power Apps- Comparing Different Ways to Create Apps With AI</title>
      <dc:creator>david wyatt</dc:creator>
      <pubDate>Mon, 20 Apr 2026 06:51:49 +0000</pubDate>
      <link>https://dev.to/wyattdave/power-apps-comparing-different-ways-to-create-apps-with-ai-b33</link>
      <guid>https://dev.to/wyattdave/power-apps-comparing-different-ways-to-create-apps-with-ai-b33</guid>
      <description>&lt;p&gt;Its surprising just how many different ways there are to vibe code a app in the Power Platform, at last count I had 6, but I'm pretty sure I have missed a few. So I thought it would be a good idea to compare a few of them.&lt;/p&gt;

&lt;p&gt;I'm limiting my list to just Code replated Power Apps (so skipping Plan Designer, as it creates Power Apps not Code Apps).&lt;/p&gt;

&lt;p&gt;In theory that means everything will be React Apps, but just for the fun of it I'm throwing in my open source project &lt;a href="Https://Codeappjs.com"&gt;Codeapp js&lt;/a&gt;, which builds standard HTML/CSS/JavaScript web apps and deploys as a Code App.&lt;/p&gt;

&lt;p&gt;My plan is to do 2 demo apps and build them across:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generative Pages&lt;/li&gt;
&lt;li&gt;Vibe.powerapps.com&lt;/li&gt;
&lt;li&gt;CodeApp using GitHub Copilot&lt;/li&gt;
&lt;li&gt;CodeApp JS (using GitHub Copilot with custom Agent UI)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The only rules are that the same prompt should be used, and each can have up to 2 follow on prompts to fix any small issues.&lt;/p&gt;

&lt;p&gt;Also some call outs to be made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I'm going to use the model I think is the best at the moment, Opus 4.6, but for 2 of the options this is either no available or I don't know what is being used (but I'm 100% certain it wont be)&lt;/li&gt;
&lt;li&gt;These are a very selective demo apps, with limited scope&lt;/li&gt;
&lt;li&gt;I'm only build everything twice, and as AI is nondeterministic you will get different results each time&lt;/li&gt;
&lt;li&gt;I created CodeApp JS, so I will probably have subconscious biases so keep that in mind&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  App One - Personal Profile App
&lt;/h2&gt;

&lt;p&gt;This app is designed to create a quick one pager that shows our latest 10 emails and this weeks meetings. I chose it as it used 2 different connectors (office365 User and Outlook), used multiple actions per connector (my profile &amp;amp; and my profile image, my emails &amp;amp; my meetings). Its also should generate a mix of images, key information, and table data, so should push the design aspect of the solution.&lt;/p&gt;

&lt;p&gt;And here's my prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create me a app that has all my key information to hand. It should open with a profile section, which shows my profile image, and other key information about me. Then it should have current 10 emails showing from, subject, when, and preview sentence. The final section should show any meetings this week, with time/date and title of the meeting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lets see how they did:&lt;/p&gt;

&lt;h3&gt;
  
  
  Generative Pages
&lt;/h3&gt;

&lt;p&gt;Generative pages creates a React App like the other Power Platform solutions, but this one is designed to be embedded in a model driven app. This use case should still be possible, as it's not overly complex and sing those connectors is a definitely a possible use case.&lt;/p&gt;

&lt;p&gt;I ran the prompt and sadly we didn't start well, it straight up errored:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwc13h0l7iff2176kx35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwc13h0l7iff2176kx35.png" alt="generative page fail" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Time for a follow up prompt, so I passed the error and asked it to fix it. And success it now showed a app, but.....&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2hsqws7kn6mrtmiawa5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2hsqws7kn6mrtmiawa5.png" alt="generative fail 2" width="800" height="443"&gt;&lt;/a&gt;&lt;br&gt;
It was just place holder data, everything as hardcoded in the HTML. Time to bring out the final prompt, I asked it to make it dynamic and use the users connections.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvgp560fd3ytszc2r3x0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvgp560fd3ytszc2r3x0k.png" alt="generative fail 3" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sadly its still a fail, it did get my details, but I think it got it from the SSO (like Power FX getUser() function does not use a connection, just the details from the top ribbon).&lt;/p&gt;

&lt;p&gt;In the end I think the biggest issue is the model, GPT 4.1 is simply not good enough (in my experience nothing below 5.4 is at a  good enough level, with 5.3 Codex ok).&lt;/p&gt;

&lt;p&gt;The UI was pretty basic, but very inline with the Model driven app, so I think that's a win.&lt;/p&gt;
&lt;h2&gt;
  
  
  Vibe.powerapps.com
&lt;/h2&gt;

&lt;p&gt;Power apps vibe is a skinned version of Code Apps (bit like what I did with CodeApp JS), When you look at the generated files you can see it is setup exactly same as Code Apps, with same power.config.json file, SDK, and TypeScript files.&lt;/p&gt;

&lt;p&gt;I ran the prompt and it reasoned the right course of action, using Office 365 user and Outlook (I saw it reference support skills), &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4oq49x42wwvflx1wjsxo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4oq49x42wwvflx1wjsxo.png" alt="vibe build" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sadly we had the placeholder result again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03iqq3eqlx59gbi7nmj1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03iqq3eqlx59gbi7nmj1.png" alt="vibe app" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see when looking at the power.config.json file no connections were created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4o5srlanklxtchq09e7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4o5srlanklxtchq09e7.png" alt="vibe no connections" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I did the follow up prompt asking for it to use the logged in users details, but after a bit of reasoning it said it had done it but in fact it had done nothing but create some follow on questions. I clicked the first option to get the users image but sadly again nothing happened.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6clpkunkxf8kqdf8dcoj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6clpkunkxf8kqdf8dcoj.png" alt="still no connections" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can't see the model used, but I suspect again it's 4.1, from the style it's definitely a GPT model (which is disappointing as it looks like generic AI generated content).&lt;br&gt;
The good news was it performed less over engineering from previous testing, where for no reason it would spin up Dataverse tables and supporting Agents.&lt;/p&gt;

&lt;p&gt;I also loved the UI, its clean and modern, and allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt edit (select an element in preview and ask for edit)&lt;/li&gt;
&lt;li&gt;
&lt;del&gt;Edit Code directly&lt;/del&gt; I don't know if I dreamed this but I can't edit it anymore, fingers crossed it will one day&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Code App with GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;We are now moving out of the Power Platform and into VS Code, so this is definitely less Citizen Developer territory. It requires node and the Power Platform CLI installed, all easy but can be intimidating. You also have to run cli commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auth&lt;/li&gt;
&lt;li&gt;Environment select&lt;/li&gt;
&lt;li&gt;Initialise app&lt;/li&gt;
&lt;li&gt;Create Connection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The create connection requires you to create a connection in Power Platform first and get the connector name and connection id.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qfzplfx8cxwf0xnrbpq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qfzplfx8cxwf0xnrbpq.png" alt="vs code" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ran the prompt and sadly we were back in placeholder world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj12efxuuziqp0tzq07u8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj12efxuuziqp0tzq07u8.png" alt="code app placeholder" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But I think this was my fault, as I hadn't added the connections first. Adding the connections generates connection TypeScript files. Adding them and it worked first time (and second attempt first time too)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6a7gv8dmo497nrlucd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6a7gv8dmo497nrlucd7.png" alt="code app working" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  CodeApp JS Plus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7ycdxcn3jieceovhxbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7ycdxcn3jieceovhxbp.png" alt="codeapp js build" width="800" height="509"&gt;&lt;/a&gt;&lt;br&gt;
Code App JS is pretty much a skin on top of the GitHub Copilot SDK, so it uses all the same model, the main differences are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As stated it uses vanilla JavaScript instead of React&lt;/li&gt;
&lt;li&gt;UI to add buttons for cli commands&lt;/li&gt;
&lt;li&gt;Custom Skills and prompt/instructions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All that really matters in this test is the last, can custom skills/prompts make a big difference.&lt;/p&gt;

&lt;p&gt;Amazingly it one shotted it and got it right first time (remember it using same model and harness as React Code Apps, and that would also have one shotted it without my mistake.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkid61yzkrv8ui4c9tba9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkid61yzkrv8ui4c9tba9.png" alt="codeapp js app" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The big difference is the UI, as you can see that custom skill really helped (well I think it did, as it definitely doesn't look like the boiler plate UI's you normally see).&lt;/p&gt;
&lt;h2&gt;
  
  
  App Two - Kanban Board
&lt;/h2&gt;

&lt;p&gt;No time for a slightly different app, this is more focused on data sources (Dataverse in this case), as I think this should help the built in tools more.&lt;/p&gt;

&lt;p&gt;My favourite test is Agile Poker, but that is definitely not a minimal prompt app, so I went with my second, a Kanban board (like Microsoft Planner).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create me a Kanban app, the app should allow the user to create and update tasks. The tasks should also have a status that can be Backlog, Ready, In-progress, Awaiting Review, Complete. Each status should be a bucket and the task card can be drag and dropped to change the status. The Dataverse Task table should be used to store the tasks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Generative Pages
&lt;/h3&gt;

&lt;p&gt;So first attempt with Generative Pages and sadly not a good start, stuck in loading hell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvw3in31av4v2wo9bgi8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvw3in31av4v2wo9bgi8.png" alt="gen pages fail" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A couple of prompt fixes and sadly we didn't get anywhere except improved error message popups.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbebrz7akx21tnc9ybk78.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbebrz7akx21tnc9ybk78.png" alt="gen build" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnel4ni8b49yworfyculb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnel4ni8b49yworfyculb.png" alt="gen fail 3" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point I called it, sadly Generative Pages just doesn't work for me.&lt;/p&gt;
&lt;h3&gt;
  
  
  Vibe.powerapps.com
&lt;/h3&gt;

&lt;p&gt;After failing last time I didn't have much hope but boy was I wrong, it one shotted it, fully working, and looking pretty good.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vzch0qnxylbge52668o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vzch0qnxylbge52668o.png" alt="vibe success" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again it's a very GPT looking app, but I wouldn't be disappointed with it, and with the ability to edit code and "point and prompt", I think I could customizer it more if I wanted.&lt;/p&gt;

&lt;p&gt;Well done Vibe, and now Im thinking this is definitely not GPT 4.1, its either GPT 5 or maybe GPT 5.3.&lt;/p&gt;
&lt;h3&gt;
  
  
  Code App
&lt;/h3&gt;

&lt;p&gt;I had high hopes for Code Apps, but it decided to swap with Vibe this time. First I had a build fail, though was a quick fix&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1j4qr73a2kw3n57wgr5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1j4qr73a2kw3n57wgr5q.png" alt="build fail opus 4.6" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After it made a nice app, that generally worked.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckt65pnkhrspygutayqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckt65pnkhrspygutayqj.png" alt="code app opus 4.6 fail" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But sadly It had a couple of issues, first white font on white background, and second when I created a task the whole screen went white.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwq1w6onm1vwpn099xyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwq1w6onm1vwpn099xyu.png" alt="code app opus 4.6 fail" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjq2q5tx11o8otazvfah.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjq2q5tx11o8otazvfah.png" alt="code app build fix" width="800" height="510"&gt;&lt;/a&gt;&lt;br&gt;
 I tried to prompt fix, but I had to give up, though I think one or more and it would have been all good (but I had to be fair).&lt;/p&gt;

&lt;p&gt;To make things more interesting I decided to try with GPT 4.1, so that we get a fair comparison with Generative Pages.&lt;/p&gt;

&lt;p&gt;Sadly a build error again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wk05en7fp1qd0qwg08w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wk05en7fp1qd0qwg08w.png" alt="build fail gpt 4.1" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And even when I got it to load I couldn't get any working functionality, and it looked awful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bf79r5kpsl6mlhslg1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bf79r5kpsl6mlhslg1o.png" alt="code app gpt 4.1 fail" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  CodeApp JS
&lt;/h3&gt;

&lt;p&gt;Finally we are trying Code App JS both both Opus 4.6 and GPT 4.1&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrm0ilk0lp5v4idg9nhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrm0ilk0lp5v4idg9nhg.png" alt="cli build" width="800" height="507"&gt;&lt;/a&gt;&lt;br&gt;
I used the CLI version this time, yep there is a CLI version coming soon, watch this space. Under the hood its the same as the VS extension.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnpoossdldgcvcguhucj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnpoossdldgcvcguhucj.png" alt="cli 4.6 opus" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And good news, it one shotted it again, and again it made a nice look (though this time I think a little more generic).&lt;/p&gt;

&lt;p&gt;Now for GPT 4.1, and first attempt it said it did a lot, but when I opened it it had done nothing 🤦‍♂️&lt;/p&gt;

&lt;p&gt;But after a prompt to tell it to actually do something it made something that looked ok.&lt;/p&gt;

&lt;p&gt;Sadly I could not get the create to work, and there was no popup for the tasks, but I could move them, so had a working, List Items and Update Item.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4dxw4f2nya124c54thzb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4dxw4f2nya124c54thzb.png" alt="4.1 fail" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Round Up
&lt;/h2&gt;

&lt;p&gt;So what does this prove, well not a lot really as my sample size was far too small, especially for something as un deterministic as AI, but I have some thoughts.&lt;/p&gt;

&lt;p&gt;The model is just so so important, Opus 4.5 was such a leap in performance (along with higher Opus and GPT 4.6), and if you are using a older model you are leaving a lot on the table. Additionally GPT 4.1 is so legacy it should not be used.&lt;/p&gt;

&lt;p&gt;I really hope Microsoft does either of these 2 things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allow frontier models to be used in Vibe.powerapps.com and Generative Actions (even if that requires additional billing), as vibe in particular has a lot of potential&lt;/li&gt;
&lt;li&gt;Build their own model so that its cheap enough to offer to everyone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the second could be so cool. If you look what Curser did with Kimi K2 as the base model and their training data from all of their uses, they ended up with Composer 2, which is up their. Microsoft must have the same or better training data from GitHub Copilot, so if they built on top of a Open weight model that could be amazing.&lt;/p&gt;

&lt;p&gt;The other thought is how important having skills and prompts/instructions are. They can get measurable better performance, and definitely create more visually unique solutions. And as this is limited to outside of the platform solutions, I would recommended learning some new tools.&lt;/p&gt;

&lt;p&gt;Oh and Generative Pages is just not good (I tried loads more and never got anything good), it really needs to be deprecated and Vibe.powerapps.com used instead.&lt;/p&gt;

&lt;p&gt;All the apps are available to download from my repo here: [&lt;a href="https://github.com/wyattdave/Power-Platform/" rel="noopener noreferrer"&gt;https://github.com/wyattdave/Power-Platform/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Generative Pages&lt;/strong&gt;&lt;br&gt;
My Diary &lt;br&gt;
Task Board&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe.powerapp.com&lt;/strong&gt;&lt;br&gt;
My Dashboard&lt;br&gt;
Kanban Board_202604110917&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code apps (React)&lt;/strong&gt;&lt;br&gt;
My Week - opus 4.6&lt;br&gt;
Agile Board four six - opus 4.6&lt;br&gt;
Agile Board - gpt 4.1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code apps (JS)&lt;/strong&gt;&lt;br&gt;
My Update - opus 4.6&lt;br&gt;
Kanban Board - opus 4.6&lt;br&gt;
kanban four one  - gpt 4.1&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;br&gt;
&lt;a href="https://powerdevbox.com/blogs/subscribe?tracker=codapcomp" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;😎 Subscribe to David Wyatt&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>powerapps</category>
      <category>powerplatform</category>
      <category>vibecoding</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
