{"id":1671,"date":"2026-09-15T09:40:05","date_gmt":"2026-09-15T14:40:05","guid":{"rendered":"https:\/\/automatethemundane.com\/index.php\/2026\/09\/15\/working-on-power-platform-projects-with-github-copilot-part-2\/"},"modified":"2026-09-15T09:42:20","modified_gmt":"2026-09-15T14:42:20","slug":"working-on-power-platform-projects-with-github-copilot-part-2","status":"publish","type":"post","link":"https:\/\/automatethemundane.com\/index.php\/2026\/09\/15\/working-on-power-platform-projects-with-github-copilot-part-2\/","title":{"rendered":"Working on Power Platform projects with GitHub Copilot &#8211; Part 2"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Part 1, I explained why GitHub Copilot matters for Power Platform professionals. Copilot can accelerate development, but we still need to provide context, define standards, and validate its work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before using Copilot to build anything, I prepare the repository where it will work. This post covers that foundation:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creating a reusable GitHub template<\/li>\n\n\n\n<li>Organizing it by Power Platform component<\/li>\n\n\n\n<li>Adding root and component-level instructions<\/li>\n\n\n\n<li>Adding compatibility files for Claude Code<\/li>\n\n\n\n<li>Creating a living reference for PAC CLI commands<\/li>\n\n\n\n<li>Creating a new project from the template<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">There is no application development in this post. The outcome is a reusable starting point for the rest of the series.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating the Repository Structure<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most Power Platform projects need a place for requirements, solution files, architecture decisions, tests, and deployment information. Creating that structure for every project is repetitive, so I use a GitHub template repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My starting structure reflects the components I commonly use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>power-platform-project\/\n\u251c\u2500\u2500 AGENTS.md\n\u251c\u2500\u2500 CLAUDE.md\n\u251c\u2500\u2500 PAC_COMMANDS.md\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 plugins\/\n\u2502   \u251c\u2500\u2500 AGENTS.md\n\u2502   \u251c\u2500\u2500 CLAUDE.md\n\u2502   \u2514\u2500\u2500 README.md\n\u251c\u2500\u2500 copilot-studio-agents\/\n\u2502   \u251c\u2500\u2500 AGENTS.md\n\u2502   \u251c\u2500\u2500 CLAUDE.md\n\u2502   \u2514\u2500\u2500 README.md\n\u251c\u2500\u2500 reports\/\n\u2502   \u251c\u2500\u2500 AGENTS.md\n\u2502   \u251c\u2500\u2500 CLAUDE.md\n\u2502   \u2514\u2500\u2500 README.md\n\u251c\u2500\u2500 power-pages\/\n\u2502   \u251c\u2500\u2500 AGENTS.md\n\u2502   \u251c\u2500\u2500 CLAUDE.md\n\u2502   \u2514\u2500\u2500 README.md\n\u251c\u2500\u2500 azure\/\n\u2502   \u251c\u2500\u2500 AGENTS.md\n\u2502   \u251c\u2500\u2500 CLAUDE.md\n\u2502   \u2514\u2500\u2500 README.md\n\u251c\u2500\u2500 solutions\/\n\u251c\u2500\u2500 docs\/\n\u2502   \u251c\u2500\u2500 requirements\/\n\u2502   \u251c\u2500\u2500 architecture\/\n\u2502   \u251c\u2500\u2500 testing\/\n\u2502   \u2514\u2500\u2500 deployment\/\n\u2514\u2500\u2500 .gitignore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The component folders provide starting locations for Dataverse plug-ins, Copilot Studio agents, Power BI reports, Power Pages, and Azure resources. I normally call the Power BI folder <code>reports<\/code> because a project may contain more than one report or semantic model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A project may not use every folder. The goal is consistency, not forcing every project into the same architecture.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/6f6c80ab-7117-4b38-98c8-0666a3e3cf78\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB4665TKBZP3S%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144001Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJHMEUCIQDMW6fjWqj2q9ZJ1GQR%2BWeguUPTfxNO17Uf8tZ%2BHQ5wDQIgLrqy1s8J88c0BgxkME5xgrWQ%2BL781s5shbAafUK8yzsqiAQI%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDIOo15DhNzA%2FxzNRQircA18wU8%2FKK0a90D2Q80uZyZDUrPuO4uLTSoAxLhJHvsBkfBqbK2woG003m8%2F26CbgrdRIrh8fVuXFKXcDu1Pp0A4d5g2tINtQporDncbUfFkThfxsIaTgZIuMRNoB3fXhA8hXoBljM3rJY7jBtq1g7shI4l3WD13hrrH6IEVGFBcC8IrNqwgUtcWU5djYLe%2Fg7Asx6H5OA4yaXUJw7pDnE3fWNnTaciXX0y9l808EOZNnPqpfzFYPzZc4CtJISIysgfXgNQGQkaPAbEb1AUOFFzInUgQnrF6tWd5Bg1zmGMNYZ%2Fq34v5M8cwljKMnlo2i6Ew08HhZfKwS3jxFRWXToghFOawWCGm4FW0vW9uMdTSC5dgvLqWLD7azOsPKmTfO%2FitOxjcHZD5wYEm8dhdcLzcyksqSKdZ%2BhCEjZBO4h5gnSpw8%2F4%2BRaDH6QMUrHYVIvQE0Hi%2BVwz7yzfOY6JzT%2B4Xs%2BMVp0KJU7UfH%2FhEgRQdc7tvsut6A0wVLIcsoij0WOpLbF%2FVztfcfq193%2BdlB0NHHM%2BA8V0y1Zec1COipdEDmbk0%2B%2FHOXJTajNiFE2mJARI9j2l%2FRwMvxmRmRF4AhBbWCjP5lLA34M%2F%2B7rT9KDMwARAaO66ls9Y7IdtwSMOKZpdUGOqUBY2tSuZKTiqDBO3Fgk0HQnf01%2FEaelKV0eckrcPZZdT4TVD0D1FyGXUfleqdL5HXP5Cp%2FlwOSSPTZD%2BjVfTZRmA2YJMVp%2BpLzpDZmjHPFTFFeFZon0Sq7CmgJjFNzjm7XXHx6TtHFk%2BBNlRYjluSqg8%2B2pmyeG9uNC52IRmP0sSzSG6nTgQlJ9BquhpcmJvJimyBJUdk3UsI8oTfEuZPbKrP06K0Q&amp;X-Amz-Signature=14e3acde039da51fc33eb5ba16d23ce7cb1f9ee1ef93b32c43a02290f6d43855&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">What Goes in the Template<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The template contains reusable structure and guidance, not customer-specific information.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A root <code>README.md<\/code> explaining the repository and how to begin<\/li>\n\n\n\n<li>Root and component-level agent instructions<\/li>\n\n\n\n<li>A root <code>PAC_COMMANDS.md<\/code> for the PAC CLI commands used by the project<\/li>\n\n\n\n<li>A <code>README.md<\/code> inside each component folder<\/li>\n\n\n\n<li>Folders for requirements, architecture, testing, and deployment<\/li>\n\n\n\n<li>A location for unpacked Power Platform solution files<\/li>\n\n\n\n<li>A <code>.gitignore<\/code> for generated and local-only files<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I do not include tenant IDs, environment URLs, connection information, credentials, or customer data. Every file in the template should have a clear purpose.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Layering the Agent Instructions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Putting every rule into one root <code>AGENTS.md<\/code> becomes difficult to maintain. A Power BI report does not use the same development process as a Dataverse plug-in, Copilot Studio agent, Power Pages site, or Azure Function.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub supports multiple <code>AGENTS.md<\/code> files within a repository. When an agent works within the directory tree, the nearest file takes precedence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I use the root file for rules that apply across the project:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Solution purpose and boundaries<\/li>\n\n\n\n<li>Repository layout<\/li>\n\n\n\n<li>Shared naming standards<\/li>\n\n\n\n<li>Security and source-control rules<\/li>\n\n\n\n<li>ALM expectations<\/li>\n\n\n\n<li>Documentation requirements<\/li>\n\n\n\n<li>Validation and approval gates<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Each component folder has its own <code>AGENTS.md<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>plugins<\/code>: .NET version, plug-in structure, testing, registration, and packaging<\/li>\n\n\n\n<li><code>copilot-studio-agents<\/code>: topics, tools, connections, testing, and solution packaging<\/li>\n\n\n\n<li><code>reports<\/code>: Power BI project format, semantic models, DAX, naming, and accessibility<\/li>\n\n\n\n<li><code>power-pages<\/code>: site model, Liquid or SPA conventions, Web API, web roles, table permissions, and deployment<\/li>\n\n\n\n<li><code>azure<\/code>: supported services, Infrastructure as Code, identity, runtime versions, testing, and deployment<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>README.md<\/code> explains the component to a developer. The <code>AGENTS.md<\/code> tells an AI agent how work in that folder must be performed and validated.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/da3dffb2-4daa-4856-814e-fad875ab1a85\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB4665TKBZP3S%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144001Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJHMEUCIQDMW6fjWqj2q9ZJ1GQR%2BWeguUPTfxNO17Uf8tZ%2BHQ5wDQIgLrqy1s8J88c0BgxkME5xgrWQ%2BL781s5shbAafUK8yzsqiAQI%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDIOo15DhNzA%2FxzNRQircA18wU8%2FKK0a90D2Q80uZyZDUrPuO4uLTSoAxLhJHvsBkfBqbK2woG003m8%2F26CbgrdRIrh8fVuXFKXcDu1Pp0A4d5g2tINtQporDncbUfFkThfxsIaTgZIuMRNoB3fXhA8hXoBljM3rJY7jBtq1g7shI4l3WD13hrrH6IEVGFBcC8IrNqwgUtcWU5djYLe%2Fg7Asx6H5OA4yaXUJw7pDnE3fWNnTaciXX0y9l808EOZNnPqpfzFYPzZc4CtJISIysgfXgNQGQkaPAbEb1AUOFFzInUgQnrF6tWd5Bg1zmGMNYZ%2Fq34v5M8cwljKMnlo2i6Ew08HhZfKwS3jxFRWXToghFOawWCGm4FW0vW9uMdTSC5dgvLqWLD7azOsPKmTfO%2FitOxjcHZD5wYEm8dhdcLzcyksqSKdZ%2BhCEjZBO4h5gnSpw8%2F4%2BRaDH6QMUrHYVIvQE0Hi%2BVwz7yzfOY6JzT%2B4Xs%2BMVp0KJU7UfH%2FhEgRQdc7tvsut6A0wVLIcsoij0WOpLbF%2FVztfcfq193%2BdlB0NHHM%2BA8V0y1Zec1COipdEDmbk0%2B%2FHOXJTajNiFE2mJARI9j2l%2FRwMvxmRmRF4AhBbWCjP5lLA34M%2F%2B7rT9KDMwARAaO66ls9Y7IdtwSMOKZpdUGOqUBY2tSuZKTiqDBO3Fgk0HQnf01%2FEaelKV0eckrcPZZdT4TVD0D1FyGXUfleqdL5HXP5Cp%2FlwOSSPTZD%2BjVfTZRmA2YJMVp%2BpLzpDZmjHPFTFFeFZon0Sq7CmgJjFNzjm7XXHx6TtHFk%2BBNlRYjluSqg8%2B2pmyeG9uNC52IRmP0sSzSG6nTgQlJ9BquhpcmJvJimyBJUdk3UsI8oTfEuZPbKrP06K0Q&amp;X-Amz-Signature=92e9c6c84c9b40727d16fa2c8dfd0390c653ad08b1618f58e518ffc5f2e687d1&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Supporting Claude Code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I also place a <code>CLAUDE.md<\/code> beside each <code>AGENTS.md<\/code>. Rather than duplicate the instructions, the file imports the authoritative instructions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@AGENTS.md<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Claude Code supports importing another file into <code>CLAUDE.md<\/code> with the <code>@path\/to\/file<\/code> syntax. This keeps <code>AGENTS.md<\/code> as the single source of truth for the directory while still giving Claude Code the file it expects.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I use this small forwarding file instead of a symbolic link. Power Platform teams frequently work on Windows, where creating symbolic links may require administrator privileges or Developer Mode.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/18a9d97c-6e66-41b8-b9f4-98fb655d5e03\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB4662NFJROHJ%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144003Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJIMEYCIQCmQ6jVfOPxE%2FckNXKKpqXUaA5yRoaVN%2Fd6Y6jZZ8%2FbBgIhALXSFeZXHz7dr6tyWljAyklPvtAnNU15ujNUR1BfN9JeKogECP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjM3NDIzMTgzODA1IgzSq0uemcJAZfe%2FQTEq3ANitVZ4972T0c5QzTeUPEqjGdTERLUDhYlEur091IEgQYEP54Pc0Lu2QjW3xIFl6b%2BJ%2FWfOriVpxJfA%2FQAJh8iO5ns4sIU%2Bd8n%2BjD4ARLjC%2FfSv1KGFc6ZNftFX0nIuC%2Bo4qSTPrhROqXhQJS9Ku%2BWS%2FjDLTOJ2PAGCJS7TAgargSpX3K4Zo3L9rHI%2FKHzQfRvXXH08XLLUc5ifiiFksVqow94Z0YTxJTCo6eJF1AAnmmE7NxXz64v4%2BjyS4D%2Fa4sectaEkqBMpkBHePqC9Zqq7n1kM0AU%2BPzT2xUyQ5HTHMjwD6YdvwA8mc8PhEjLpVmwap0lsohejiUnjDSU%2BNWbtTalRyATFlDnPKaQ3YSx6VFFsLAsm5vPoqq4KCQTm3snAQaKG8GmQ3%2BGi3UWIel9E3Jl3gs%2Fa54UQE9ZZygVCEFCRMlTE%2F4GXWevLzsEyIQkzq4wU0ew8nTZ3IMtoZeko%2FcBGJ4rTaT73JGp86VbqFz81d0PjIBTJmNHMWJEAReN0r9L2iplKDKTnoBQzBvvBlBWWsk6h%2BNDjFA8ut6SuaQ5RcAxvIuWhK9FPN2XUFHS4P63zIqDfydq9QhBeBJ8%2BgRetmsMx88u7tY9nMeCXDO6HryFf0J9yea44SDDXmKXVBjqkAX1lGvDVHAaUt0ovZglw3GcDeENzMkS6DHRgQc0zyITe03C4pwBRukEeSCDTM%2FFVR8jisPLBlHsZKTJTjJk85ez%2Bk4SCdJxZJkuwuceZ4U78YKNa2gUt4Bm7mOk16fKpqyTjtfMb6qnPEymvI4AwMsXkqCuDj4xLBNMRasz1xaTYug0k6%2BscQb1tVpd7JI%2FoiCDMBDzbYM1SR2Eb%2Bq1JFAOFUx5d&amp;X-Amz-Signature=ac29d207bd47e4b7cb4f962c95ce3cbc4a1ff78effb6d2958f54e70be823b886&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/ee7286d0-a224-4213-878a-d50a6e29d081\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB466V2VKMHSQ%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144004Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJGMEQCIDehaZeaPPnP8Ati3CblSjAmw1XHuXF%2BjDDAqyuKDbozAiBbRUjVHygVu%2BzW8solOTbuMo486RPyo1xjOa0bG%2FSsqiqIBAj%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDYzNzQyMzE4MzgwNSIMTVUssS7fNLkyNRTpKtwDoHZpSaOmaVr7E7USOIqgd6GpD70hcn6NAhWvRHFJQ9ZdxdvMPIzibQktggo4Gfvgp6NBth%2BTWJM5v%2FVJZbQIWSl09MNZAF04WxNr7%2B6B4smXfGDwfMYJowAS8ZQee2vMjdavMbaBqdcCz1BhTGhE1qQwmzVtWqOyvEfXnmu5t63UGm7onj4z7XArEizNkGRyodVTebb8ZTqOzNkCCFjK8JP8fMK8HrDN3PpBoNsKVjw9XbMNa2gnSKVPnsZaVq%2F6j%2BhaQt6jG9FwaZ%2BdJTf6HUQC3i1LVClVMO4PbiwYMgtMCYkNZVg9bbfp4QxsBYA2PEVIiS4KvwEml7f6l77ivtc5e6Dv4mF1HOXkCzioWPxqB8%2F4G1gx1PEwyMgj0iuKt5axdVZuCv3E324JTUIZiRVZk0krlxwbk3Uuwb9sgqatYky%2BxvAfWZ6xqyUP%2FTGiW0yjbSNozb3hXumOwZrc2bC5OvKtETmuPCfUXa9b8XgCVB0ibemYWy6ZyQeC9HHdn7H7d3fPHWD12uL26PqsEgfCsVvG%2B%2Fb3Rkh1E7qGOF%2Bwhd%2BvB%2BwxvPaTCNwaDyCLnUH7w2CYrIM100rvp5i35fwJcBvWjXiYcerzTbYx4F7Gy8l7ROYw0iSmGPEwuJml1QY6pgGSoTmVZatjJvW6%2B1qM9xjJGdwNkeWKZLL%2FPCn3daH8OpGaZ2P6PNvt5Xj4TzVg7si5atCeNEN%2BB4OM4muzOwnyuWAAK78JVKkvGxS516klwH4%2BAFcYBXCDJ1futquhU%2FNwwym%2FibOtp4wYLBVWmQKluOFxV075PEN9t34fBdWXaiXDveCQolwJZ6Lwx3vBChae9P%2Blql9TMBIDEGhwBVr4ykKe7B%2Fx&amp;X-Amz-Signature=50eace6e463e1bda51d2c442d3f5697b711ca55ac4d67f0c689b7b8a142a4035&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Recording PAC CLI Commands<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I also include a root <code>PAC_COMMANDS.md<\/code> file. This is a living reference for the Power Platform CLI commands actually used in the repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The goal is not to copy the entire PAC CLI reference. I only record commands that are relevant to the project. Each entry should explain:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What the command does<\/li>\n\n\n\n<li>When it should be used<\/li>\n\n\n\n<li>The folder from which it should be run<\/li>\n\n\n\n<li>Required authentication or prerequisites<\/li>\n\n\n\n<li>Which values must be replaced<\/li>\n\n\n\n<li>Any result or validation that should follow<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A starting entry can use this format:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>## Command purpose\n\n**Use when:** Describe when this command is needed.\n\n**Run from:** `repository\/path`\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\n**Replace:**\n- `&lt;value&gt;`: Explain the expected value.\n\n**Verify:** Describe the expected result or follow-up check.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As the project grows, developers and agents add commands to this file when they introduce them. This makes successful command patterns reusable without turning the root <code>AGENTS.md<\/code> into a command reference.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The file must not contain passwords, client secrets, access tokens, or customer-specific values. Use placeholders for environment IDs, solution names, and other values that differ between projects. For the complete and current command syntax, link to the official <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/developer\/cli\/introduction\">Power Platform CLI documentation<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/e34e8600-f190-4bc6-b0fa-30cf3bd387d9\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB4665TKBZP3S%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144001Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJHMEUCIQDMW6fjWqj2q9ZJ1GQR%2BWeguUPTfxNO17Uf8tZ%2BHQ5wDQIgLrqy1s8J88c0BgxkME5xgrWQ%2BL781s5shbAafUK8yzsqiAQI%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDIOo15DhNzA%2FxzNRQircA18wU8%2FKK0a90D2Q80uZyZDUrPuO4uLTSoAxLhJHvsBkfBqbK2woG003m8%2F26CbgrdRIrh8fVuXFKXcDu1Pp0A4d5g2tINtQporDncbUfFkThfxsIaTgZIuMRNoB3fXhA8hXoBljM3rJY7jBtq1g7shI4l3WD13hrrH6IEVGFBcC8IrNqwgUtcWU5djYLe%2Fg7Asx6H5OA4yaXUJw7pDnE3fWNnTaciXX0y9l808EOZNnPqpfzFYPzZc4CtJISIysgfXgNQGQkaPAbEb1AUOFFzInUgQnrF6tWd5Bg1zmGMNYZ%2Fq34v5M8cwljKMnlo2i6Ew08HhZfKwS3jxFRWXToghFOawWCGm4FW0vW9uMdTSC5dgvLqWLD7azOsPKmTfO%2FitOxjcHZD5wYEm8dhdcLzcyksqSKdZ%2BhCEjZBO4h5gnSpw8%2F4%2BRaDH6QMUrHYVIvQE0Hi%2BVwz7yzfOY6JzT%2B4Xs%2BMVp0KJU7UfH%2FhEgRQdc7tvsut6A0wVLIcsoij0WOpLbF%2FVztfcfq193%2BdlB0NHHM%2BA8V0y1Zec1COipdEDmbk0%2B%2FHOXJTajNiFE2mJARI9j2l%2FRwMvxmRmRF4AhBbWCjP5lLA34M%2F%2B7rT9KDMwARAaO66ls9Y7IdtwSMOKZpdUGOqUBY2tSuZKTiqDBO3Fgk0HQnf01%2FEaelKV0eckrcPZZdT4TVD0D1FyGXUfleqdL5HXP5Cp%2FlwOSSPTZD%2BjVfTZRmA2YJMVp%2BpLzpDZmjHPFTFFeFZon0Sq7CmgJjFNzjm7XXHx6TtHFk%2BBNlRYjluSqg8%2B2pmyeG9uNC52IRmP0sSzSG6nTgQlJ9BquhpcmJvJimyBJUdk3UsI8oTfEuZPbKrP06K0Q&amp;X-Amz-Signature=6c3cf21a3d05270cfd915718e6eb52457a36bb0c48a3991774b5559bd9357430&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Making It a GitHub Template<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After the structure and starter files are committed, I mark the repository as a template:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the repository on GitHub.<\/li>\n\n\n\n<li>Select <strong>Settings<\/strong>.<\/li>\n\n\n\n<li>Under <strong>General<\/strong>, locate the repository settings.<\/li>\n\n\n\n<li>Enable <strong>Template repository<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The repository now displays a <strong>Use this template<\/strong> button. Selecting it creates a new repository with the template's files and folders but without its commit history.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before using the template, I verify that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The starter files do not contain customer information<\/li>\n\n\n\n<li>Placeholder values are clearly marked<\/li>\n\n\n\n<li>The component instructions do not conflict with the root instructions<\/li>\n\n\n\n<li>The README explains how to remove unused folders<\/li>\n\n\n\n<li>No secrets or local configuration files are committed<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/85b5446e-c1d3-4c09-a44e-f8e2ed88b568\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB466SXCXZWN3%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144005Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJHMEUCIBZ7X2w1KcDVcTT4m8jPsI1GxroxEGzJ6xIRzgyMiMf1AiEAscQB7AVJhQz%2Fdl6UNbwnG75U21nQ61BJ%2BE0ZyH%2Bl2XYqiAQI%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDLr%2FyjJeGnBCQb%2FbVCrcAyenN1pH%2Bb1L6SCQERUq1PHsnEd5ZMsmyJpW939q2bkGlpwk2AbO66zL1KXdC53DASWqXfGin85YDG00IMihBePQ1cwUMynzZ6xYr3ZfP4ZZQ0iNHmXTGSBy4VMwpwG9S9SePEGh3UQTdnkylwMu8FQf2CFK%2BrND%2FlLYmoEx6%2Ffhw%2BFYJNvHT6egz4BiHjr2C%2BZy9rDZrKC3VvihNXLZoMXJSSx8nJbq0beXtcf%2BZibLSQKrKtMJnD4GeLNSCdq4JnXIRRfineS5NyVbCiwrG6eriUBAhRdNU%2Fm0nmdhmXVo3caWMIEQ3v1C2dDBnjVMmSb%2Bo%2FTVyDh%2FtwpjTa4yTSPorm2nXXHsIaIjmOOiAdqyKoIiCqKNCFhjN2vle00gOpcwdTMaJo%2BopMJQkoP9ga%2FKQuqnRItoVqlHcw6vog8pmq%2BcaRhZEE8vbZ0tMfv25fREu5Joj2NjE7%2Bs%2BYmN%2FmNXFp23Wxozk4gFBczks4lcODlQ5FrHF5tY%2Bcf8Hj7BRJHvhZEFHAn14PUgyz1GOLWWnIsQ7qeNm49ZdMi2lPPxU1mv4VCKgE%2BaiMDJdfipkmcXIQza7Bp4lyiFBvrZ1nq0dDHd2bbe2%2FGxCDNvK3Oay%2FGnqNkCUIMZmSeSMM6apdUGOqUBG3%2BGjA0pjewxjYtRiUdWgbrt4gnS4dF%2F523D3H%2BKvvcSdz6QKs5EIQpSAIwWglRGvxa8hwP1Tcx%2FPQ3QcDf787it8dcWPuklLAW5Ns9AR59Aus2ltBtVnlO25pXpBFx0veACUNb1mB8yEjWgRlX3%2F2XExoS7yY%2BOkYk7edSulmb756amlHJJOA%2FYFD9DqScdpeKTQhWOoAG5MKFwlM76ca7q2k%2B%2B&amp;X-Amz-Signature=cdd7677884c2362d82bd9e4d5f7fd8a55e90d7134851c654671a96cc0fddc513&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/b57653aa-50df-49d0-8eec-521f4e81ba85\/df153db3-75af-4192-b008-4ff5c9050e95\/image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=ASIAZI2LB466YSJGHKMX%2F20260915%2Fus-west-2%2Fs3%2Faws4_request&amp;X-Amz-Date=20260915T144005Z&amp;X-Amz-Expires=3600&amp;X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDYaCXVzLXdlc3QtMiJIMEYCIQDY41f6Q2a0wm%2FVHVqsFlExAv6Ndx%2FMdTR6LTV5uWOk%2BgIhAPrF1AiAK81eYkNRSXDnRX5qio750TtCzYBmlLWqwyNqKogECP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMNjM3NDIzMTgzODA1Igz%2FIcw%2BIXbV4O55pa8q3APCg%2BSInZ%2FPW0bvSGLeL%2BwnukizSasgY60KRimSgn0E0soHqwngwIslnUtvQlydHeMQfEECf6rOIScF0i%2B2mso%2Bwq9TDxVC8B45OicWWe%2FnWjUZYIiuc7YRvncmmhxAB8qZe752nv5w9UndMu6W2QCrLsgAo3wQF5173jAc%2FNGfLRlO5uylOL2C%2BnnNueKKHahG2wI7luQfWTr43pthd7Bv4HDp0YK7i8QRyYmSYmTBh1DQAP2%2FNnKkxTsFQeU9Zg57ecNrBcuQ8fjHKzDHE3Hkus7O4ORrF0iZP%2Bnx1F%2FJWaREBYEFcjToViJ1vCCV1lYueQeJkKhd6YAQwf%2Fb8hhb3zLSIuakugdhCvENc%2BGJThjKYx6ryUZLUu0lyQSXLlQ%2BHL7XTDQyoBoyYDjXabzK1xJhOUwwtBbAVFZ9rkFui5XKJyTIrecalo20T9f5fPqZ5T6Qk7jMoDoohEpZalj7GBRLrH%2FxtKoIqzj5X4JIG4%2B2Jtx5QF%2FYJeeObNUwkRuqAaNbjQxFXaw6ggFvtaP%2FAu9gLsyfGsFTKJJq8qa6ibYn2YIVRjOiMM%2BUbwQPd7KF6UclRV0I2PuBKkz0LEYBml8DuS%2Br%2ByCpnriK2ohDgIBsDVg6EqXBjq08szDQl6XVBjqkAc7iKnZdAZ01xI%2FldIr0VP1Cp1tt09DQei%2Ff%2B9vn%2BBLRJoBx%2FT8bnISjK78rfcHS%2FHrq9aSwzjcXD0b4q%2BGjaXHXFcWP%2F2YpZHCP9d7d5d8DQNzijFK%2BAhk0D%2B90NEbKxJc54eqnLlT2f2ZlRxA129%2BIxEbjBjIKjnklg9gWeZ6rGVcTaaMdlSpNsG7TP4ALWM9GG0L1UJZrezVcOLOuLHCFyxhs&amp;X-Amz-Signature=8cb37d28678f7d93be675cfa29e64f299ee0beb95b63f26e79b40e8a1f0e9b75&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ready for the Next Step<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Part 2 ends with a reusable repository template containing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Starting folders for common Power Platform components<\/li>\n\n\n\n<li>Human-facing documentation in each folder<\/li>\n\n\n\n<li>Root and component-specific <code>AGENTS.md<\/code> files<\/li>\n\n\n\n<li><code>CLAUDE.md<\/code> forwarding files<\/li>\n\n\n\n<li>A growing <code>PAC_COMMANDS.md<\/code> reference for project-specific CLI commands<\/li>\n\n\n\n<li>Locations for requirements, architecture, testing, and deployment documentation<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In Part 3, I will equip the template with Microsoft Power Platform Skills and selected resources from Awesome GitHub Copilot. Development begins after the tooling and instructions are ready.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.github.com\/en\/repositories\/creating-and-managing-repositories\/creating-a-template-repository\">GitHub: Creating a template repository<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.github.com\/en\/repositories\/creating-and-managing-repositories\/creating-a-repository-from-a-template\">GitHub: Creating a repository from a template<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.github.com\/en\/copilot\/how-tos\/copilot-on-github\/customize-copilot\/add-custom-instructions\/add-repository-instructions\">GitHub: Repository custom instructions<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.anthropic.com\/en\/docs\/claude-code\/memory\">Anthropic: How Claude remembers your project<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/developer\/cli\/introduction\">Microsoft Learn: Power Platform CLI<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In Part 1, I explained why GitHub Copilot matters for Power Platform professionals. Copilot can accelerate development, but we still need to provide context, define standards, and validate its work. Before using Copilot to build anything, I prepare the repository where it will work. This post covers that foundation: There is no application development [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1672,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49,22,58,52],"tags":[],"class_list":["post-1671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-copilot","category-dataverse","category-github","category-solutions","entry","has-media"],"jetpack_featured_media_url":"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/09\/Working-on-Power-Platform-projects-with-GitHub-Copilot-Part-2-1-scaled.jpg","_links":{"self":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts\/1671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/comments?post=1671"}],"version-history":[{"count":1,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts\/1671\/revisions"}],"predecessor-version":[{"id":1673,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts\/1671\/revisions\/1673"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/media\/1672"}],"wp:attachment":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/media?parent=1671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/categories?post=1671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/tags?post=1671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}