[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-create-code-app":3,"mdc--gg8eex-key":43,"related-repo-microsoft-create-code-app":3453,"related-org-microsoft-create-code-app":3549},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":38,"sourceUrl":41,"mdContent":42},"create-code-app","build Power Apps code apps with React","Creates Power Apps code apps using React and Vite. Use when building code apps, scaffolding projects, or deploying to Power Platform.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,17,20,23],{"name":13,"slug":14,"type":15},"React","react","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Deployment","deployment",{"name":21,"slug":22,"type":15},"Power Apps","power-apps",{"name":24,"slug":25,"type":15},"Frontend","frontend",564,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills","2026-07-31T05:54:45.033398",null,114,[32,33,34,35,22,36,37],"claude-code-plugin","claude-code-skills","code-apps","github-copilot-plugin","power-pages","power-platform",{"repoUrl":27,"stars":26,"forks":30,"topics":39,"description":40},[32,33,34,35,22,36,37],"A plugin marketplace for Claude Code\u002FGitHub Copilot that provides Power Platform development plugins, including reusable skills, agents, and commands for building and deploying solutions.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fcode-apps\u002Fskills\u002Fcreate-code-app","---\nname: create-code-app\ndescription: Creates Power Apps code apps using React and Vite. Use when building code apps, scaffolding projects, or deploying to Power Platform.\nuser-invocable: true\nallowed-tools: Read, Edit, Write, Grep, Glob, Bash, LSP, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, Skill, EnterPlanMode, ExitPlanMode\nmodel: opus\n---\n\n**📋 Shared Instructions: [shared-instructions.md](${PLUGIN_ROOT}\u002Fshared\u002Fshared-instructions.md)** - Cross-cutting concerns.\n\n**References:**\n\n- [prerequisites-reference.md](.\u002Freferences\u002Fprerequisites-reference.md) - Prerequisites and required permissions\n- [troubleshooting.md](.\u002Freferences\u002Ftroubleshooting.md) - Common issues, npm scripts, resources\n\n# Create Power Apps Code App\n\n## Workflow\n\n1. Prerequisites → 2. Gather Requirements → 3. Plan → 4. Scaffold → 5. Initialize → 6. Build & Deploy (baseline) → 7. Add Data Sources → 8. Implement App → 9. Final Build & Deploy → 10. Summary\n\n---\n\n### Step 0: Check Memory Bank\n\nCheck for `memory-bank.md` per [shared-instructions.md](${PLUGIN_ROOT}\u002Fshared\u002Fshared-instructions.md). Skip completed steps.\n\n### Step 1: Validate Prerequisites\n\nRun prerequisite checks **first** -- no point gathering requirements if the environment isn't ready. See [prerequisites-reference.md](.\u002Freferences\u002Fprerequisites-reference.md) for details.\n\nCheck Node.js and Git (runs natively in bash):\n\n```bash\nnode --version   # Must be v22+\ngit --version    # Optional but recommended\n```\n\n- **Missing Node.js**: Report \"Install Node.js v22+ from https:\u002F\u002Fnodejs.org\u002F\" and STOP.\n- **Node.js below v22**: Report \"Node.js 22+ is required. Please upgrade or switch with `nvm use 22`.\" and STOP.\n- **Missing Git**: Report \"Recommended but optional.\" Continue if approved.\n- **All present**: Report versions and proceed.\n\n\n### Step 2: Gather Requirements\n\n**Skip questions the user already answered in their initial instruction.**\n\n**If the user has not described what they want to build** (i.e., `\u002Fcreate-code-app` was invoked with no arguments or a vague prompt), start with a single open-ended question before asking anything else:\n\n> \"What would you like to build? Describe it in your own words — what it does, who uses it, and what problem it solves.\"\n\nWait for their answer. Use it to frame all follow-up questions. Do NOT present a multiple-choice list of app types before the user has described their idea.\n\nOnce you have their description:\n\n1. Confirm the app name and clarify the purpose if needed\n2. Ask about data -- focus on **what the app needs to do**, not specific technologies:\n   - \"What data does your app need to work with?\" (e.g., company emails, project tasks, custom business records)\n   - \"Does your app need to search existing information, manage its own data, or both?\"\n   - Based on their answers, recommend the best approach:\n     - **Store and manage custom business data** (tables, forms, CRUD) → Dataverse (`\u002Fadd-dataverse`)\n     - **Interact with specific services** (send emails, post messages, manage files) → the appropriate connector\n     - **Search M365 data or get AI-powered answers** (emails, files, people, company knowledge) → Work IQ (`\u002Fadd-workiq`)\n   - If they mention existing Dataverse tables, SharePoint lists, or connectors by name, use those directly\n3. Ask about UI requirements: key screens, layout, interactions, theme preference\n4. Ask any clarifying questions now -- resolve all ambiguity before entering plan mode\n\n### Step 3: Plan\n\n1. Enter plan mode with `EnterPlanMode`\n2. Design the full implementation approach:\n   - Which `\u002Fadd-*` skills to run for data sources\n   - App architecture: components, pages, state management\n   - Feature list with priority order\n3. Present plan for approval, include `allowedPrompts` from [prerequisites-reference.md](.\u002Freferences\u002Fprerequisites-reference.md)\n4. Exit plan mode with `ExitPlanMode` when approved\n\n### Step 4: Scaffold\n\nAsk the user for a folder name. Default to `powerapps-{app-name-slugified}-{timestamp}` if they don't have a preference.\n\n**IMPORTANT: Use `npx degit` to download the template. Do NOT use `git clone`, do NOT manually create files, do NOT download from GitHub UI. `degit` downloads the template without git history.**\n\n```bash\nnpx degit microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite {folder} --force\ncd {folder}\nnpm install\n```\n\n**Notes:**\n\n- Use `--force` to overwrite if the directory already has files (e.g., `.claude` from a planning session)\n- If targeting an existing directory, use `.` as the folder name: `npx degit microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite . --force`\n- If `npx degit` fails (network issues, npm not found), retry once, then ask the user to run manually\n\nVerify: `package.json` exists, `node_modules\u002F` created.\n\n### Step 5: Initialize\n\n> Resolve the CLI first (see [cli-binary.md](${PLUGIN_ROOT}\u002Fshared\u002Fcli-binary.md)): run as `$PA app init …` (`npx --no-install pa …`), never a bare `pa`. On `power-apps`-only projects, translate to `power-apps init …` (the `init` verb and its `-n`\u002F`-e` flags are unchanged on both binaries).\n\n```bash\npa app init -n '{user-provided-app-name}' -e \u003Cenvironment-id>\n```\n\n**Finding the environment ID:** It's the GUID in the make.powerapps.com URL: `https:\u002F\u002Fmake.powerapps.com\u002Fenvironments\u002F\u003Cenv-id>\u002Fhome`. If you don't pass `-e`, the CLI will prompt for it interactively.\n\n**Authentication:** On first run, a browser window opens for Microsoft sign-in. Complete the login and the command continues. No separate auth setup is needed.\n\nSee [preferred-environment.md](${PLUGIN_ROOT}\u002Fshared\u002Fpreferred-environment.md) for environment selection details.\n\n**`pa app init` failure:**\n\n- Non-zero exit: Report the exact output and STOP. Do not continue to Step 6.\n- \"environmentId not found\" or environment validation error: Verify the environment ID is correct and the user has maker permissions in that environment, then retry.\n- Example: _\"The `pa app init` command failed: `[error text]`. Please check that environment ID `32a51012-...` is correct and that you have maker permissions in that environment.\"_\n\n**Critical:** Read `power.config.json` after init and verify `environmentId` is set correctly.\n\n### Step 6: Build & Deploy (baseline)\n\n> **Pre-approved**: This baseline deploy is part of the scaffold flow and does not require a separate confirmation prompt.\n\nBuild and deploy the bare template to verify the pipeline works before adding data sources.\n\n```bash\nnpm run build\n```\n\nVerify `dist\u002F` folder created with `index.html` and `assets\u002F`.\n\n> Deploy via the resolved CLI: `$PA app push` on `pa`, or `power-apps push` on `power-apps`-only projects (see [cli-binary.md](${PLUGIN_ROOT}\u002Fshared\u002Fcli-binary.md)).\n\n```bash\npa app push\n```\n\n**Capture app URL** from output: `https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F{env-id}\u002Fapp\u002F{app-id}`\n\n**Common deploy errors:** See [troubleshooting.md](.\u002Freferences\u002Ftroubleshooting.md).\n\n**Create or update `memory-bank.md` in the project root now** -- don't wait until the end. Include:\n\n- Project path, app name, environment ID, app URL\n- Completed steps: scaffold, init, baseline deploy\n- Data sources planned (from Step 2)\n\nThis ensures progress is saved even if the session ends unexpectedly.\n\n### Step 7: Add Data Sources\n\nInvoke the `\u002Fadd-*` skills identified in the plan (Step 3). Run each in sequence. **Pass context as arguments** so sub-skills skip redundant questions (project path, connector name, etc.):\n\n| App needs to...                            | Invoke             |\n| ------------------------------------------ | ------------------ |\n| Store\u002Fmanage custom business data          | `\u002Fadd-dataverse`   |\n| Track work items, bugs, pipelines          | `\u002Fadd-azuredevops` |\n| Send or read Teams messages                | `\u002Fadd-teams`       |\n| Read\u002Fwrite Excel spreadsheet data          | `\u002Fadd-excel`       |\n| Upload, download, or manage files          | `\u002Fadd-onedrive`    |\n| Work with SharePoint lists or docs         | `\u002Fadd-sharepoint`  |\n| Send emails, read inbox, manage calendar   | `\u002Fadd-office365`   |\n| Invoke a Copilot Studio agent              | `\u002Fadd-mcscopilot`  |\n| Search M365 data or get AI-powered answers | `\u002Fadd-workiq`      |\n| Connect to another service                 | `\u002Fadd-connector`   |\n\nEach `\u002Fadd-*` skill runs `npm run build` to catch errors. Do NOT deploy yet.\n\n**If no data sources needed:** Skip to Step 8.\n\n### Step 8: Implement App\n\n**This is the core step.** Build the actual app features described in the plan from Step 3.\n\n1. **Review generated services**: Use `Grep` to find methods in generated service files (they can be very large -- see [connector-reference.md](${PLUGIN_ROOT}\u002Fshared\u002Fconnector-reference.md#inspecting-large-generated-files)). Do NOT read entire generated files.\n2. **Build components**: Create React components for each screen\u002Ffeature in the plan\n3. **Connect data**: Wire components to generated services (use `*Service.getAll()`, `*Service.create()`, etc.)\n4. **Apply theme**: Use the user's theme preference (default: dark theme per development standards)\n5. **Iterate with user**: Show progress, ask for feedback, adjust as needed\n\n**Key rules:**\n\n- Use generated services for all data access -- never use fetch\u002Faxios directly\n- Read [dataverse-reference.md](${PLUGIN_ROOT}\u002Fskills\u002Fadd-dataverse\u002Freferences\u002Fdataverse-reference.md) if working with Dataverse (picklist fields, virtual fields, lookups have critical gotchas)\n- Remove unused imports before building (TS6133 strict mode)\n- Don't edit files in `src\u002Fgenerated\u002F` unless fixing known issues\n\n### Step 9: Final Build & Deploy\n\n```bash\nnpm run build\n```\n\nFix any TypeScript errors. Verify `dist\u002F` contains the updated app.\n\nAsk the user: _\"Ready to deploy to [environment name]? This will update the live app.\"_ Wait for explicit confirmation before proceeding.\n\n```bash\npa app push\n```\n\n### Step 10: Summary\n\nProvide:\n\n- App name, environment, app URL, project location\n- What was built: features, data sources, components\n- Next steps: how to iterate (`npm run build && pa app push`), how to add more data sources\n- Suggest what else the app could do:\n  - `\u002Fadd-datasource` -- add another data source (describe what you need, and the plugin will recommend the best approach)\n  - `\u002Fadd-dataverse` -- store and manage custom business data\n  - `\u002Fadd-azuredevops` -- track work items, bugs, and pipelines\n  - `\u002Fadd-teams` -- send and read Teams messages\n  - `\u002Fadd-sharepoint` -- work with SharePoint lists or documents\n  - `\u002Fadd-office365` -- send emails, manage calendar\n  - `\u002Fadd-workiq` -- search M365 data or get AI-powered answers about company info\n  - `\u002Fadd-connector` -- connect to any other service\n- Manage at https:\u002F\u002Fmake.powerapps.com\u002Fenvironments\u002F\u003Cenvironment-id>\u002Fhome\n\n### Update Memory Bank\n\nUpdate the memory bank (created in Step 6) with final state:\n\n- All completed steps (scaffold, data sources, implementation, deploy)\n- Features implemented and components created\n- Data sources connected\n- Suggested next steps\n\n---\n\n## Example Walkthroughs\n\nThese walkthroughs show the full sequence from user request to final output — commands run, files changed, and the verbatim summary format the assistant should use.\n\n---\n\n### Example 1: Create a Task Tracker App with Dataverse\n\n**User request:**\n\n> \"Build me a simple task tracker that stores tasks in Dataverse. I want to add tasks, mark them complete, and see a list.\"\n\n**Commands run (in order):**\n\n```bash\n# Step 1: Prerequisites\nnode --version   # → v22.4.0\n\n# Step 4: Scaffold\nnpx degit microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite powerapps-task-tracker-20260302 --force\ncd powerapps-task-tracker-20260302\nnpm install\n\n# Step 5: Initialize (browser login prompt on first run; CLI prompts for env ID if -e omitted)\npa app init -n 'Task Tracker' -e \u003Cenvironment-id>\n\n# Step 6: Baseline deploy (pre-approved as part of scaffold flow)\nnpm run build\npa app push\n# → App URL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F32a51012-...\u002Fapp\u002F\u003Capp-id>\n\n# Step 7: Add Dataverse (via \u002Fadd-dataverse)\npa app add data-source --connector dataverse --table cr123_task\nnpm run build   # verify connector — no deploy yet\n\n# Step 9: Final deploy (requires user confirmation)\nnpm run build\npa app push\n```\n\n**Files changed:**\n\n| File                                          | Change                                                |\n| --------------------------------------------- | ----------------------------------------------------- |\n| `power.config.json`                           | Created by `pa app init` — contains `environmentId` |\n| `src\u002Fgenerated\u002Fmodels\u002FCr123_taskModel.ts`     | Generated by `pa app add data-source`               |\n| `src\u002Fgenerated\u002Fservices\u002FCr123_taskService.ts` | Generated by `pa app add data-source`               |\n| `src\u002Fcomponents\u002FTaskList.tsx`                 | Created — renders task list with status filter        |\n| `src\u002Fcomponents\u002FAddTaskForm.tsx`              | Created — form to add new tasks                       |\n| `src\u002FApp.tsx`                                 | Updated — wires components to `Cr123_taskService`     |\n| `memory-bank.md`                              | Created in Step 7, updated in Step 11                 |\n\n**Final assistant summary (verbatim format):**\n\n```\nTask Tracker is live.\n\nApp: Task Tracker\nEnvironment: \u003Cyour-environment-name> (\u003Cenvironment-id>)\nURL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F\u003Cenvironment-id>\u002Fapp\u002F\u003Capp-id>\nProject: ~\u002Fpowerapps-task-tracker-20260302\u002F\n\nWhat was built:\n- Task list view with Active \u002F Completed filter\n- Add task form (title, description, due date)\n- Mark complete \u002F delete actions\n- Dataverse table `cr123_task` (Title, Description, DueDate, IsComplete)\n\nTo redeploy: npm run build && pa app push (from the project folder)\n\nWhat you can add next:\n- \u002Fadd-teams — post task updates to a Teams channel\n- \u002Fadd-office365 — send email notifications on completion\n```\n\n**What to record in `memory-bank.md`:**\n\n```markdown\n# Task Tracker — Memory Bank\n\n## Project\n\n- Path: ~\u002Fpowerapps-task-tracker-20260302\u002F\n- App name: Task Tracker\n- Environment: \u003Cyour-environment-name> (\u003Cenvironment-id>)\n- App URL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F\u003Cenvironment-id>\u002Fapp\u002F\u003Capp-id>\n\n## Completed Steps\n\n- [x] Step 1: Prerequisites validated\n- [x] Step 4: Scaffold (npx degit)\n- [x] Step 5: Initialize (pa app init)\n- [x] Step 6: Baseline deploy\n- [x] Step 7: Add Dataverse (cr123_task)\n- [x] Step 8: Implement app (TaskList, AddTaskForm)\n- [x] Step 9: Final deploy\n\n## Data Sources\n\n- Dataverse: cr123_task (Title, Description, DueDate, IsComplete)\n\n## Components\n\n- TaskList.tsx — filtered list, mark complete, delete\n- AddTaskForm.tsx — create new tasks\n\n## Next Steps\n\n- Consider \u002Fadd-teams for task assignment notifications\n```\n\n---\n\n### Example 2: Add SharePoint Connector to an Existing App\n\n**User request:**\n\n> \"My app already exists. Add SharePoint so I can read items from a list called 'Project Milestones'.\"\n\n**Commands run (in order):**\n\n```bash\n# Step 6: Get connection ID (via \u002Flist-connections)\npa connection list\n# → ConnectionId: conn-sp-xyz789  (SharePoint Online)\n\n# Step 7: Discover sites\npa connector list-datasets --connector sharepointonline -c conn-sp-xyz789\n# → https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\n\n# Step 8: Discover tables\npa connector list-tables --connector sharepointonline -c conn-sp-xyz789 -d 'https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects'\n# → Project Milestones, Documents, Team Wiki\n\n# Step 9: Add connector\npa app add data-source --connector sharepointonline -c conn-sp-xyz789 -d 'https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects' --table 'Project Milestones'\n\n# Step 11: Build to verify\nnpm run build   # → success\n```\n\n**Files changed:**\n\n| File                                                | Change                                            |\n| --------------------------------------------------- | ------------------------------------------------- |\n| `src\u002Fgenerated\u002Fservices\u002FSharePointOnlineService.ts` | Generated — contains `GetItems`, `PostItem`, etc. |\n| `src\u002Fgenerated\u002Fmodels\u002FSharePointOnlineModel.ts`     | Generated — TypeScript interfaces                 |\n| `.power\u002Fschemas\u002Fsharepointonline\u002F`                  | Generated schema files                            |\n| `memory-bank.md`                                    | Updated — connector recorded                      |\n\n**Final assistant summary (verbatim format):**\n\n```\nSharePoint Online connector added.\n\nConnector: SharePoint Online\nSite: https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\nList: Project Milestones\nBuild: Passed ✓\n\nUsage:\n  const result = await SharePointOnlineService.GetItems({\n    dataset: \"https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\",\n    table: \"Project Milestones\"\n  });\n  const milestones = result.data?.value || [];\n\nNext: Implement your UI components using the generated service, then run \u002Fdeploy when ready.\n```\n",{"data":44,"body":48},{"name":4,"description":6,"user-invocable":45,"allowed-tools":46,"model":47},true,"Read, Edit, Write, Grep, Glob, Bash, LSP, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, Skill, EnterPlanMode, ExitPlanMode","opus",{"type":49,"children":50},"root",[51,72,80,107,114,121,130,134,141,161,167,185,190,243,303,309,317,335,344,349,354,455,461,536,542,555,587,650,658,713,734,740,819,890,915,925,938,952,999,1025,1031,1044,1049,1073,1101,1144,1167,1183,1198,1215,1233,1238,1244,1263,1458,1478,1488,1494,1504,1589,1597,1636,1642,1663,1675,1694,1715,1721,1726,1858,1864,1869,1892,1895,1901,1906,1909,1915,1923,1931,1939,2295,2303,2470,2478,2488,2503,2999,3002,3008,3015,3023,3030,3322,3329,3431,3438,3447],{"type":52,"tag":53,"props":54,"children":55},"element","p",{},[56,70],{"type":52,"tag":57,"props":58,"children":59},"strong",{},[60,63],{"type":61,"value":62},"text","📋 Shared Instructions: ",{"type":52,"tag":64,"props":65,"children":67},"a",{"href":66},"$%7BPLUGIN_ROOT%7D\u002Fshared\u002Fshared-instructions.md",[68],{"type":61,"value":69},"shared-instructions.md",{"type":61,"value":71}," - Cross-cutting concerns.",{"type":52,"tag":53,"props":73,"children":74},{},[75],{"type":52,"tag":57,"props":76,"children":77},{},[78],{"type":61,"value":79},"References:",{"type":52,"tag":81,"props":82,"children":83},"ul",{},[84,96],{"type":52,"tag":85,"props":86,"children":87},"li",{},[88,94],{"type":52,"tag":64,"props":89,"children":91},{"href":90},".\u002Freferences\u002Fprerequisites-reference.md",[92],{"type":61,"value":93},"prerequisites-reference.md",{"type":61,"value":95}," - Prerequisites and required permissions",{"type":52,"tag":85,"props":97,"children":98},{},[99,105],{"type":52,"tag":64,"props":100,"children":102},{"href":101},".\u002Freferences\u002Ftroubleshooting.md",[103],{"type":61,"value":104},"troubleshooting.md",{"type":61,"value":106}," - Common issues, npm scripts, resources",{"type":52,"tag":108,"props":109,"children":111},"h1",{"id":110},"create-power-apps-code-app",[112],{"type":61,"value":113},"Create Power Apps Code App",{"type":52,"tag":115,"props":116,"children":118},"h2",{"id":117},"workflow",[119],{"type":61,"value":120},"Workflow",{"type":52,"tag":122,"props":123,"children":124},"ol",{},[125],{"type":52,"tag":85,"props":126,"children":127},{},[128],{"type":61,"value":129},"Prerequisites → 2. Gather Requirements → 3. Plan → 4. Scaffold → 5. Initialize → 6. Build & Deploy (baseline) → 7. Add Data Sources → 8. Implement App → 9. Final Build & Deploy → 10. Summary",{"type":52,"tag":131,"props":132,"children":133},"hr",{},[],{"type":52,"tag":135,"props":136,"children":138},"h3",{"id":137},"step-0-check-memory-bank",[139],{"type":61,"value":140},"Step 0: Check Memory Bank",{"type":52,"tag":53,"props":142,"children":143},{},[144,146,153,155,159],{"type":61,"value":145},"Check for ",{"type":52,"tag":147,"props":148,"children":150},"code",{"className":149},[],[151],{"type":61,"value":152},"memory-bank.md",{"type":61,"value":154}," per ",{"type":52,"tag":64,"props":156,"children":157},{"href":66},[158],{"type":61,"value":69},{"type":61,"value":160},". Skip completed steps.",{"type":52,"tag":135,"props":162,"children":164},{"id":163},"step-1-validate-prerequisites",[165],{"type":61,"value":166},"Step 1: Validate Prerequisites",{"type":52,"tag":53,"props":168,"children":169},{},[170,172,177,179,183],{"type":61,"value":171},"Run prerequisite checks ",{"type":52,"tag":57,"props":173,"children":174},{},[175],{"type":61,"value":176},"first",{"type":61,"value":178}," -- no point gathering requirements if the environment isn't ready. See ",{"type":52,"tag":64,"props":180,"children":181},{"href":90},[182],{"type":61,"value":93},{"type":61,"value":184}," for details.",{"type":52,"tag":53,"props":186,"children":187},{},[188],{"type":61,"value":189},"Check Node.js and Git (runs natively in bash):",{"type":52,"tag":191,"props":192,"children":197},"pre",{"className":193,"code":194,"language":195,"meta":196,"style":196},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","node --version   # Must be v22+\ngit --version    # Optional but recommended\n","bash","",[198],{"type":52,"tag":147,"props":199,"children":200},{"__ignoreMap":196},[201,225],{"type":52,"tag":202,"props":203,"children":206},"span",{"class":204,"line":205},"line",1,[207,213,219],{"type":52,"tag":202,"props":208,"children":210},{"style":209},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[211],{"type":61,"value":212},"node",{"type":52,"tag":202,"props":214,"children":216},{"style":215},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[217],{"type":61,"value":218}," --version",{"type":52,"tag":202,"props":220,"children":222},{"style":221},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[223],{"type":61,"value":224},"   # Must be v22+\n",{"type":52,"tag":202,"props":226,"children":228},{"class":204,"line":227},2,[229,234,238],{"type":52,"tag":202,"props":230,"children":231},{"style":209},[232],{"type":61,"value":233},"git",{"type":52,"tag":202,"props":235,"children":236},{"style":215},[237],{"type":61,"value":218},{"type":52,"tag":202,"props":239,"children":240},{"style":221},[241],{"type":61,"value":242},"    # Optional but recommended\n",{"type":52,"tag":81,"props":244,"children":245},{},[246,265,283,293],{"type":52,"tag":85,"props":247,"children":248},{},[249,254,256,263],{"type":52,"tag":57,"props":250,"children":251},{},[252],{"type":61,"value":253},"Missing Node.js",{"type":61,"value":255},": Report \"Install Node.js v22+ from ",{"type":52,"tag":64,"props":257,"children":261},{"href":258,"rel":259},"https:\u002F\u002Fnodejs.org\u002F",[260],"nofollow",[262],{"type":61,"value":258},{"type":61,"value":264},"\" and STOP.",{"type":52,"tag":85,"props":266,"children":267},{},[268,273,275,281],{"type":52,"tag":57,"props":269,"children":270},{},[271],{"type":61,"value":272},"Node.js below v22",{"type":61,"value":274},": Report \"Node.js 22+ is required. Please upgrade or switch with ",{"type":52,"tag":147,"props":276,"children":278},{"className":277},[],[279],{"type":61,"value":280},"nvm use 22",{"type":61,"value":282},".\" and STOP.",{"type":52,"tag":85,"props":284,"children":285},{},[286,291],{"type":52,"tag":57,"props":287,"children":288},{},[289],{"type":61,"value":290},"Missing Git",{"type":61,"value":292},": Report \"Recommended but optional.\" Continue if approved.",{"type":52,"tag":85,"props":294,"children":295},{},[296,301],{"type":52,"tag":57,"props":297,"children":298},{},[299],{"type":61,"value":300},"All present",{"type":61,"value":302},": Report versions and proceed.",{"type":52,"tag":135,"props":304,"children":306},{"id":305},"step-2-gather-requirements",[307],{"type":61,"value":308},"Step 2: Gather Requirements",{"type":52,"tag":53,"props":310,"children":311},{},[312],{"type":52,"tag":57,"props":313,"children":314},{},[315],{"type":61,"value":316},"Skip questions the user already answered in their initial instruction.",{"type":52,"tag":53,"props":318,"children":319},{},[320,325,327,333],{"type":52,"tag":57,"props":321,"children":322},{},[323],{"type":61,"value":324},"If the user has not described what they want to build",{"type":61,"value":326}," (i.e., ",{"type":52,"tag":147,"props":328,"children":330},{"className":329},[],[331],{"type":61,"value":332},"\u002Fcreate-code-app",{"type":61,"value":334}," was invoked with no arguments or a vague prompt), start with a single open-ended question before asking anything else:",{"type":52,"tag":336,"props":337,"children":338},"blockquote",{},[339],{"type":52,"tag":53,"props":340,"children":341},{},[342],{"type":61,"value":343},"\"What would you like to build? Describe it in your own words — what it does, who uses it, and what problem it solves.\"",{"type":52,"tag":53,"props":345,"children":346},{},[347],{"type":61,"value":348},"Wait for their answer. Use it to frame all follow-up questions. Do NOT present a multiple-choice list of app types before the user has described their idea.",{"type":52,"tag":53,"props":350,"children":351},{},[352],{"type":61,"value":353},"Once you have their description:",{"type":52,"tag":122,"props":355,"children":356},{},[357,362,445,450],{"type":52,"tag":85,"props":358,"children":359},{},[360],{"type":61,"value":361},"Confirm the app name and clarify the purpose if needed",{"type":52,"tag":85,"props":363,"children":364},{},[365,367,372,374],{"type":61,"value":366},"Ask about data -- focus on ",{"type":52,"tag":57,"props":368,"children":369},{},[370],{"type":61,"value":371},"what the app needs to do",{"type":61,"value":373},", not specific technologies:\n",{"type":52,"tag":81,"props":375,"children":376},{},[377,382,387,440],{"type":52,"tag":85,"props":378,"children":379},{},[380],{"type":61,"value":381},"\"What data does your app need to work with?\" (e.g., company emails, project tasks, custom business records)",{"type":52,"tag":85,"props":383,"children":384},{},[385],{"type":61,"value":386},"\"Does your app need to search existing information, manage its own data, or both?\"",{"type":52,"tag":85,"props":388,"children":389},{},[390,392],{"type":61,"value":391},"Based on their answers, recommend the best approach:\n",{"type":52,"tag":81,"props":393,"children":394},{},[395,413,423],{"type":52,"tag":85,"props":396,"children":397},{},[398,403,405,411],{"type":52,"tag":57,"props":399,"children":400},{},[401],{"type":61,"value":402},"Store and manage custom business data",{"type":61,"value":404}," (tables, forms, CRUD) → Dataverse (",{"type":52,"tag":147,"props":406,"children":408},{"className":407},[],[409],{"type":61,"value":410},"\u002Fadd-dataverse",{"type":61,"value":412},")",{"type":52,"tag":85,"props":414,"children":415},{},[416,421],{"type":52,"tag":57,"props":417,"children":418},{},[419],{"type":61,"value":420},"Interact with specific services",{"type":61,"value":422}," (send emails, post messages, manage files) → the appropriate connector",{"type":52,"tag":85,"props":424,"children":425},{},[426,431,433,439],{"type":52,"tag":57,"props":427,"children":428},{},[429],{"type":61,"value":430},"Search M365 data or get AI-powered answers",{"type":61,"value":432}," (emails, files, people, company knowledge) → Work IQ (",{"type":52,"tag":147,"props":434,"children":436},{"className":435},[],[437],{"type":61,"value":438},"\u002Fadd-workiq",{"type":61,"value":412},{"type":52,"tag":85,"props":441,"children":442},{},[443],{"type":61,"value":444},"If they mention existing Dataverse tables, SharePoint lists, or connectors by name, use those directly",{"type":52,"tag":85,"props":446,"children":447},{},[448],{"type":61,"value":449},"Ask about UI requirements: key screens, layout, interactions, theme preference",{"type":52,"tag":85,"props":451,"children":452},{},[453],{"type":61,"value":454},"Ask any clarifying questions now -- resolve all ambiguity before entering plan mode",{"type":52,"tag":135,"props":456,"children":458},{"id":457},"step-3-plan",[459],{"type":61,"value":460},"Step 3: Plan",{"type":52,"tag":122,"props":462,"children":463},{},[464,475,506,523],{"type":52,"tag":85,"props":465,"children":466},{},[467,469],{"type":61,"value":468},"Enter plan mode with ",{"type":52,"tag":147,"props":470,"children":472},{"className":471},[],[473],{"type":61,"value":474},"EnterPlanMode",{"type":52,"tag":85,"props":476,"children":477},{},[478,480],{"type":61,"value":479},"Design the full implementation approach:\n",{"type":52,"tag":81,"props":481,"children":482},{},[483,496,501],{"type":52,"tag":85,"props":484,"children":485},{},[486,488,494],{"type":61,"value":487},"Which ",{"type":52,"tag":147,"props":489,"children":491},{"className":490},[],[492],{"type":61,"value":493},"\u002Fadd-*",{"type":61,"value":495}," skills to run for data sources",{"type":52,"tag":85,"props":497,"children":498},{},[499],{"type":61,"value":500},"App architecture: components, pages, state management",{"type":52,"tag":85,"props":502,"children":503},{},[504],{"type":61,"value":505},"Feature list with priority order",{"type":52,"tag":85,"props":507,"children":508},{},[509,511,517,519],{"type":61,"value":510},"Present plan for approval, include ",{"type":52,"tag":147,"props":512,"children":514},{"className":513},[],[515],{"type":61,"value":516},"allowedPrompts",{"type":61,"value":518}," from ",{"type":52,"tag":64,"props":520,"children":521},{"href":90},[522],{"type":61,"value":93},{"type":52,"tag":85,"props":524,"children":525},{},[526,528,534],{"type":61,"value":527},"Exit plan mode with ",{"type":52,"tag":147,"props":529,"children":531},{"className":530},[],[532],{"type":61,"value":533},"ExitPlanMode",{"type":61,"value":535}," when approved",{"type":52,"tag":135,"props":537,"children":539},{"id":538},"step-4-scaffold",[540],{"type":61,"value":541},"Step 4: Scaffold",{"type":52,"tag":53,"props":543,"children":544},{},[545,547,553],{"type":61,"value":546},"Ask the user for a folder name. Default to ",{"type":52,"tag":147,"props":548,"children":550},{"className":549},[],[551],{"type":61,"value":552},"powerapps-{app-name-slugified}-{timestamp}",{"type":61,"value":554}," if they don't have a preference.",{"type":52,"tag":53,"props":556,"children":557},{},[558],{"type":52,"tag":57,"props":559,"children":560},{},[561,563,569,571,577,579,585],{"type":61,"value":562},"IMPORTANT: Use ",{"type":52,"tag":147,"props":564,"children":566},{"className":565},[],[567],{"type":61,"value":568},"npx degit",{"type":61,"value":570}," to download the template. Do NOT use ",{"type":52,"tag":147,"props":572,"children":574},{"className":573},[],[575],{"type":61,"value":576},"git clone",{"type":61,"value":578},", do NOT manually create files, do NOT download from GitHub UI. ",{"type":52,"tag":147,"props":580,"children":582},{"className":581},[],[583],{"type":61,"value":584},"degit",{"type":61,"value":586}," downloads the template without git history.",{"type":52,"tag":191,"props":588,"children":590},{"className":193,"code":589,"language":195,"meta":196,"style":196},"npx degit microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite {folder} --force\ncd {folder}\nnpm install\n",[591],{"type":52,"tag":147,"props":592,"children":593},{"__ignoreMap":196},[594,622,636],{"type":52,"tag":202,"props":595,"children":596},{"class":204,"line":205},[597,602,607,612,617],{"type":52,"tag":202,"props":598,"children":599},{"style":209},[600],{"type":61,"value":601},"npx",{"type":52,"tag":202,"props":603,"children":604},{"style":215},[605],{"type":61,"value":606}," degit",{"type":52,"tag":202,"props":608,"children":609},{"style":215},[610],{"type":61,"value":611}," microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite",{"type":52,"tag":202,"props":613,"children":614},{"style":215},[615],{"type":61,"value":616}," {folder}",{"type":52,"tag":202,"props":618,"children":619},{"style":215},[620],{"type":61,"value":621}," --force\n",{"type":52,"tag":202,"props":623,"children":624},{"class":204,"line":227},[625,631],{"type":52,"tag":202,"props":626,"children":628},{"style":627},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[629],{"type":61,"value":630},"cd",{"type":52,"tag":202,"props":632,"children":633},{"style":215},[634],{"type":61,"value":635}," {folder}\n",{"type":52,"tag":202,"props":637,"children":639},{"class":204,"line":638},3,[640,645],{"type":52,"tag":202,"props":641,"children":642},{"style":209},[643],{"type":61,"value":644},"npm",{"type":52,"tag":202,"props":646,"children":647},{"style":215},[648],{"type":61,"value":649}," install\n",{"type":52,"tag":53,"props":651,"children":652},{},[653],{"type":52,"tag":57,"props":654,"children":655},{},[656],{"type":61,"value":657},"Notes:",{"type":52,"tag":81,"props":659,"children":660},{},[661,682,701],{"type":52,"tag":85,"props":662,"children":663},{},[664,666,672,674,680],{"type":61,"value":665},"Use ",{"type":52,"tag":147,"props":667,"children":669},{"className":668},[],[670],{"type":61,"value":671},"--force",{"type":61,"value":673}," to overwrite if the directory already has files (e.g., ",{"type":52,"tag":147,"props":675,"children":677},{"className":676},[],[678],{"type":61,"value":679},".claude",{"type":61,"value":681}," from a planning session)",{"type":52,"tag":85,"props":683,"children":684},{},[685,687,693,695],{"type":61,"value":686},"If targeting an existing directory, use ",{"type":52,"tag":147,"props":688,"children":690},{"className":689},[],[691],{"type":61,"value":692},".",{"type":61,"value":694}," as the folder name: ",{"type":52,"tag":147,"props":696,"children":698},{"className":697},[],[699],{"type":61,"value":700},"npx degit microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite . --force",{"type":52,"tag":85,"props":702,"children":703},{},[704,706,711],{"type":61,"value":705},"If ",{"type":52,"tag":147,"props":707,"children":709},{"className":708},[],[710],{"type":61,"value":568},{"type":61,"value":712}," fails (network issues, npm not found), retry once, then ask the user to run manually",{"type":52,"tag":53,"props":714,"children":715},{},[716,718,724,726,732],{"type":61,"value":717},"Verify: ",{"type":52,"tag":147,"props":719,"children":721},{"className":720},[],[722],{"type":61,"value":723},"package.json",{"type":61,"value":725}," exists, ",{"type":52,"tag":147,"props":727,"children":729},{"className":728},[],[730],{"type":61,"value":731},"node_modules\u002F",{"type":61,"value":733}," created.",{"type":52,"tag":135,"props":735,"children":737},{"id":736},"step-5-initialize",[738],{"type":61,"value":739},"Step 5: Initialize",{"type":52,"tag":336,"props":741,"children":742},{},[743],{"type":52,"tag":53,"props":744,"children":745},{},[746,748,754,756,762,764,770,772,778,780,785,787,793,795,801,803,809,811,817],{"type":61,"value":747},"Resolve the CLI first (see ",{"type":52,"tag":64,"props":749,"children":751},{"href":750},"$%7BPLUGIN_ROOT%7D\u002Fshared\u002Fcli-binary.md",[752],{"type":61,"value":753},"cli-binary.md",{"type":61,"value":755},"): run as ",{"type":52,"tag":147,"props":757,"children":759},{"className":758},[],[760],{"type":61,"value":761},"$PA app init …",{"type":61,"value":763}," (",{"type":52,"tag":147,"props":765,"children":767},{"className":766},[],[768],{"type":61,"value":769},"npx --no-install pa …",{"type":61,"value":771},"), never a bare ",{"type":52,"tag":147,"props":773,"children":775},{"className":774},[],[776],{"type":61,"value":777},"pa",{"type":61,"value":779},". On ",{"type":52,"tag":147,"props":781,"children":783},{"className":782},[],[784],{"type":61,"value":22},{"type":61,"value":786},"-only projects, translate to ",{"type":52,"tag":147,"props":788,"children":790},{"className":789},[],[791],{"type":61,"value":792},"power-apps init …",{"type":61,"value":794}," (the ",{"type":52,"tag":147,"props":796,"children":798},{"className":797},[],[799],{"type":61,"value":800},"init",{"type":61,"value":802}," verb and its ",{"type":52,"tag":147,"props":804,"children":806},{"className":805},[],[807],{"type":61,"value":808},"-n",{"type":61,"value":810},"\u002F",{"type":52,"tag":147,"props":812,"children":814},{"className":813},[],[815],{"type":61,"value":816},"-e",{"type":61,"value":818}," flags are unchanged on both binaries).",{"type":52,"tag":191,"props":820,"children":822},{"className":193,"code":821,"language":195,"meta":196,"style":196},"pa app init -n '{user-provided-app-name}' -e \u003Cenvironment-id>\n",[823],{"type":52,"tag":147,"props":824,"children":825},{"__ignoreMap":196},[826],{"type":52,"tag":202,"props":827,"children":828},{"class":204,"line":205},[829,833,838,843,848,854,859,864,869,874,879,885],{"type":52,"tag":202,"props":830,"children":831},{"style":209},[832],{"type":61,"value":777},{"type":52,"tag":202,"props":834,"children":835},{"style":215},[836],{"type":61,"value":837}," app",{"type":52,"tag":202,"props":839,"children":840},{"style":215},[841],{"type":61,"value":842}," init",{"type":52,"tag":202,"props":844,"children":845},{"style":215},[846],{"type":61,"value":847}," -n",{"type":52,"tag":202,"props":849,"children":851},{"style":850},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[852],{"type":61,"value":853}," '",{"type":52,"tag":202,"props":855,"children":856},{"style":215},[857],{"type":61,"value":858},"{user-provided-app-name}",{"type":52,"tag":202,"props":860,"children":861},{"style":850},[862],{"type":61,"value":863},"'",{"type":52,"tag":202,"props":865,"children":866},{"style":215},[867],{"type":61,"value":868}," -e",{"type":52,"tag":202,"props":870,"children":871},{"style":850},[872],{"type":61,"value":873}," \u003C",{"type":52,"tag":202,"props":875,"children":876},{"style":215},[877],{"type":61,"value":878},"environment-i",{"type":52,"tag":202,"props":880,"children":882},{"style":881},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[883],{"type":61,"value":884},"d",{"type":52,"tag":202,"props":886,"children":887},{"style":850},[888],{"type":61,"value":889},">\n",{"type":52,"tag":53,"props":891,"children":892},{},[893,898,900,906,908,913],{"type":52,"tag":57,"props":894,"children":895},{},[896],{"type":61,"value":897},"Finding the environment ID:",{"type":61,"value":899}," It's the GUID in the make.powerapps.com URL: ",{"type":52,"tag":147,"props":901,"children":903},{"className":902},[],[904],{"type":61,"value":905},"https:\u002F\u002Fmake.powerapps.com\u002Fenvironments\u002F\u003Cenv-id>\u002Fhome",{"type":61,"value":907},". If you don't pass ",{"type":52,"tag":147,"props":909,"children":911},{"className":910},[],[912],{"type":61,"value":816},{"type":61,"value":914},", the CLI will prompt for it interactively.",{"type":52,"tag":53,"props":916,"children":917},{},[918,923],{"type":52,"tag":57,"props":919,"children":920},{},[921],{"type":61,"value":922},"Authentication:",{"type":61,"value":924}," On first run, a browser window opens for Microsoft sign-in. Complete the login and the command continues. No separate auth setup is needed.",{"type":52,"tag":53,"props":926,"children":927},{},[928,930,936],{"type":61,"value":929},"See ",{"type":52,"tag":64,"props":931,"children":933},{"href":932},"$%7BPLUGIN_ROOT%7D\u002Fshared\u002Fpreferred-environment.md",[934],{"type":61,"value":935},"preferred-environment.md",{"type":61,"value":937}," for environment selection details.",{"type":52,"tag":53,"props":939,"children":940},{},[941],{"type":52,"tag":57,"props":942,"children":943},{},[944,950],{"type":52,"tag":147,"props":945,"children":947},{"className":946},[],[948],{"type":61,"value":949},"pa app init",{"type":61,"value":951}," failure:",{"type":52,"tag":81,"props":953,"children":954},{},[955,960,965],{"type":52,"tag":85,"props":956,"children":957},{},[958],{"type":61,"value":959},"Non-zero exit: Report the exact output and STOP. Do not continue to Step 6.",{"type":52,"tag":85,"props":961,"children":962},{},[963],{"type":61,"value":964},"\"environmentId not found\" or environment validation error: Verify the environment ID is correct and the user has maker permissions in that environment, then retry.",{"type":52,"tag":85,"props":966,"children":967},{},[968,970],{"type":61,"value":969},"Example: ",{"type":52,"tag":971,"props":972,"children":973},"em",{},[974,976,981,983,989,991,997],{"type":61,"value":975},"\"The ",{"type":52,"tag":147,"props":977,"children":979},{"className":978},[],[980],{"type":61,"value":949},{"type":61,"value":982}," command failed: ",{"type":52,"tag":147,"props":984,"children":986},{"className":985},[],[987],{"type":61,"value":988},"[error text]",{"type":61,"value":990},". Please check that environment ID ",{"type":52,"tag":147,"props":992,"children":994},{"className":993},[],[995],{"type":61,"value":996},"32a51012-...",{"type":61,"value":998}," is correct and that you have maker permissions in that environment.\"",{"type":52,"tag":53,"props":1000,"children":1001},{},[1002,1007,1009,1015,1017,1023],{"type":52,"tag":57,"props":1003,"children":1004},{},[1005],{"type":61,"value":1006},"Critical:",{"type":61,"value":1008}," Read ",{"type":52,"tag":147,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":61,"value":1014},"power.config.json",{"type":61,"value":1016}," after init and verify ",{"type":52,"tag":147,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":61,"value":1022},"environmentId",{"type":61,"value":1024}," is set correctly.",{"type":52,"tag":135,"props":1026,"children":1028},{"id":1027},"step-6-build-deploy-baseline",[1029],{"type":61,"value":1030},"Step 6: Build & Deploy (baseline)",{"type":52,"tag":336,"props":1032,"children":1033},{},[1034],{"type":52,"tag":53,"props":1035,"children":1036},{},[1037,1042],{"type":52,"tag":57,"props":1038,"children":1039},{},[1040],{"type":61,"value":1041},"Pre-approved",{"type":61,"value":1043},": This baseline deploy is part of the scaffold flow and does not require a separate confirmation prompt.",{"type":52,"tag":53,"props":1045,"children":1046},{},[1047],{"type":61,"value":1048},"Build and deploy the bare template to verify the pipeline works before adding data sources.",{"type":52,"tag":191,"props":1050,"children":1052},{"className":193,"code":1051,"language":195,"meta":196,"style":196},"npm run build\n",[1053],{"type":52,"tag":147,"props":1054,"children":1055},{"__ignoreMap":196},[1056],{"type":52,"tag":202,"props":1057,"children":1058},{"class":204,"line":205},[1059,1063,1068],{"type":52,"tag":202,"props":1060,"children":1061},{"style":209},[1062],{"type":61,"value":644},{"type":52,"tag":202,"props":1064,"children":1065},{"style":215},[1066],{"type":61,"value":1067}," run",{"type":52,"tag":202,"props":1069,"children":1070},{"style":215},[1071],{"type":61,"value":1072}," build\n",{"type":52,"tag":53,"props":1074,"children":1075},{},[1076,1078,1084,1086,1092,1094,1100],{"type":61,"value":1077},"Verify ",{"type":52,"tag":147,"props":1079,"children":1081},{"className":1080},[],[1082],{"type":61,"value":1083},"dist\u002F",{"type":61,"value":1085}," folder created with ",{"type":52,"tag":147,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":61,"value":1091},"index.html",{"type":61,"value":1093}," and ",{"type":52,"tag":147,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":61,"value":1099},"assets\u002F",{"type":61,"value":692},{"type":52,"tag":336,"props":1102,"children":1103},{},[1104],{"type":52,"tag":53,"props":1105,"children":1106},{},[1107,1109,1115,1117,1122,1124,1130,1131,1136,1138,1142],{"type":61,"value":1108},"Deploy via the resolved CLI: ",{"type":52,"tag":147,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":61,"value":1114},"$PA app push",{"type":61,"value":1116}," on ",{"type":52,"tag":147,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":61,"value":777},{"type":61,"value":1123},", or ",{"type":52,"tag":147,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":61,"value":1129},"power-apps push",{"type":61,"value":1116},{"type":52,"tag":147,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":61,"value":22},{"type":61,"value":1137},"-only projects (see ",{"type":52,"tag":64,"props":1139,"children":1140},{"href":750},[1141],{"type":61,"value":753},{"type":61,"value":1143},").",{"type":52,"tag":191,"props":1145,"children":1147},{"className":193,"code":1146,"language":195,"meta":196,"style":196},"pa app push\n",[1148],{"type":52,"tag":147,"props":1149,"children":1150},{"__ignoreMap":196},[1151],{"type":52,"tag":202,"props":1152,"children":1153},{"class":204,"line":205},[1154,1158,1162],{"type":52,"tag":202,"props":1155,"children":1156},{"style":209},[1157],{"type":61,"value":777},{"type":52,"tag":202,"props":1159,"children":1160},{"style":215},[1161],{"type":61,"value":837},{"type":52,"tag":202,"props":1163,"children":1164},{"style":215},[1165],{"type":61,"value":1166}," push\n",{"type":52,"tag":53,"props":1168,"children":1169},{},[1170,1175,1177],{"type":52,"tag":57,"props":1171,"children":1172},{},[1173],{"type":61,"value":1174},"Capture app URL",{"type":61,"value":1176}," from output: ",{"type":52,"tag":147,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":61,"value":1182},"https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F{env-id}\u002Fapp\u002F{app-id}",{"type":52,"tag":53,"props":1184,"children":1185},{},[1186,1191,1193,1197],{"type":52,"tag":57,"props":1187,"children":1188},{},[1189],{"type":61,"value":1190},"Common deploy errors:",{"type":61,"value":1192}," See ",{"type":52,"tag":64,"props":1194,"children":1195},{"href":101},[1196],{"type":61,"value":104},{"type":61,"value":692},{"type":52,"tag":53,"props":1199,"children":1200},{},[1201,1213],{"type":52,"tag":57,"props":1202,"children":1203},{},[1204,1206,1211],{"type":61,"value":1205},"Create or update ",{"type":52,"tag":147,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":61,"value":152},{"type":61,"value":1212}," in the project root now",{"type":61,"value":1214}," -- don't wait until the end. Include:",{"type":52,"tag":81,"props":1216,"children":1217},{},[1218,1223,1228],{"type":52,"tag":85,"props":1219,"children":1220},{},[1221],{"type":61,"value":1222},"Project path, app name, environment ID, app URL",{"type":52,"tag":85,"props":1224,"children":1225},{},[1226],{"type":61,"value":1227},"Completed steps: scaffold, init, baseline deploy",{"type":52,"tag":85,"props":1229,"children":1230},{},[1231],{"type":61,"value":1232},"Data sources planned (from Step 2)",{"type":52,"tag":53,"props":1234,"children":1235},{},[1236],{"type":61,"value":1237},"This ensures progress is saved even if the session ends unexpectedly.",{"type":52,"tag":135,"props":1239,"children":1241},{"id":1240},"step-7-add-data-sources",[1242],{"type":61,"value":1243},"Step 7: Add Data Sources",{"type":52,"tag":53,"props":1245,"children":1246},{},[1247,1249,1254,1256,1261],{"type":61,"value":1248},"Invoke the ",{"type":52,"tag":147,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":61,"value":493},{"type":61,"value":1255}," skills identified in the plan (Step 3). Run each in sequence. ",{"type":52,"tag":57,"props":1257,"children":1258},{},[1259],{"type":61,"value":1260},"Pass context as arguments",{"type":61,"value":1262}," so sub-skills skip redundant questions (project path, connector name, etc.):",{"type":52,"tag":1264,"props":1265,"children":1266},"table",{},[1267,1286],{"type":52,"tag":1268,"props":1269,"children":1270},"thead",{},[1271],{"type":52,"tag":1272,"props":1273,"children":1274},"tr",{},[1275,1281],{"type":52,"tag":1276,"props":1277,"children":1278},"th",{},[1279],{"type":61,"value":1280},"App needs to...",{"type":52,"tag":1276,"props":1282,"children":1283},{},[1284],{"type":61,"value":1285},"Invoke",{"type":52,"tag":1287,"props":1288,"children":1289},"tbody",{},[1290,1307,1324,1341,1358,1375,1392,1409,1426,1441],{"type":52,"tag":1272,"props":1291,"children":1292},{},[1293,1299],{"type":52,"tag":1294,"props":1295,"children":1296},"td",{},[1297],{"type":61,"value":1298},"Store\u002Fmanage custom business data",{"type":52,"tag":1294,"props":1300,"children":1301},{},[1302],{"type":52,"tag":147,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":61,"value":410},{"type":52,"tag":1272,"props":1308,"children":1309},{},[1310,1315],{"type":52,"tag":1294,"props":1311,"children":1312},{},[1313],{"type":61,"value":1314},"Track work items, bugs, pipelines",{"type":52,"tag":1294,"props":1316,"children":1317},{},[1318],{"type":52,"tag":147,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":61,"value":1323},"\u002Fadd-azuredevops",{"type":52,"tag":1272,"props":1325,"children":1326},{},[1327,1332],{"type":52,"tag":1294,"props":1328,"children":1329},{},[1330],{"type":61,"value":1331},"Send or read Teams messages",{"type":52,"tag":1294,"props":1333,"children":1334},{},[1335],{"type":52,"tag":147,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":61,"value":1340},"\u002Fadd-teams",{"type":52,"tag":1272,"props":1342,"children":1343},{},[1344,1349],{"type":52,"tag":1294,"props":1345,"children":1346},{},[1347],{"type":61,"value":1348},"Read\u002Fwrite Excel spreadsheet data",{"type":52,"tag":1294,"props":1350,"children":1351},{},[1352],{"type":52,"tag":147,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":61,"value":1357},"\u002Fadd-excel",{"type":52,"tag":1272,"props":1359,"children":1360},{},[1361,1366],{"type":52,"tag":1294,"props":1362,"children":1363},{},[1364],{"type":61,"value":1365},"Upload, download, or manage files",{"type":52,"tag":1294,"props":1367,"children":1368},{},[1369],{"type":52,"tag":147,"props":1370,"children":1372},{"className":1371},[],[1373],{"type":61,"value":1374},"\u002Fadd-onedrive",{"type":52,"tag":1272,"props":1376,"children":1377},{},[1378,1383],{"type":52,"tag":1294,"props":1379,"children":1380},{},[1381],{"type":61,"value":1382},"Work with SharePoint lists or docs",{"type":52,"tag":1294,"props":1384,"children":1385},{},[1386],{"type":52,"tag":147,"props":1387,"children":1389},{"className":1388},[],[1390],{"type":61,"value":1391},"\u002Fadd-sharepoint",{"type":52,"tag":1272,"props":1393,"children":1394},{},[1395,1400],{"type":52,"tag":1294,"props":1396,"children":1397},{},[1398],{"type":61,"value":1399},"Send emails, read inbox, manage calendar",{"type":52,"tag":1294,"props":1401,"children":1402},{},[1403],{"type":52,"tag":147,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":61,"value":1408},"\u002Fadd-office365",{"type":52,"tag":1272,"props":1410,"children":1411},{},[1412,1417],{"type":52,"tag":1294,"props":1413,"children":1414},{},[1415],{"type":61,"value":1416},"Invoke a Copilot Studio agent",{"type":52,"tag":1294,"props":1418,"children":1419},{},[1420],{"type":52,"tag":147,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":61,"value":1425},"\u002Fadd-mcscopilot",{"type":52,"tag":1272,"props":1427,"children":1428},{},[1429,1433],{"type":52,"tag":1294,"props":1430,"children":1431},{},[1432],{"type":61,"value":430},{"type":52,"tag":1294,"props":1434,"children":1435},{},[1436],{"type":52,"tag":147,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":61,"value":438},{"type":52,"tag":1272,"props":1442,"children":1443},{},[1444,1449],{"type":52,"tag":1294,"props":1445,"children":1446},{},[1447],{"type":61,"value":1448},"Connect to another service",{"type":52,"tag":1294,"props":1450,"children":1451},{},[1452],{"type":52,"tag":147,"props":1453,"children":1455},{"className":1454},[],[1456],{"type":61,"value":1457},"\u002Fadd-connector",{"type":52,"tag":53,"props":1459,"children":1460},{},[1461,1463,1468,1470,1476],{"type":61,"value":1462},"Each ",{"type":52,"tag":147,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":61,"value":493},{"type":61,"value":1469}," skill runs ",{"type":52,"tag":147,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":61,"value":1475},"npm run build",{"type":61,"value":1477}," to catch errors. Do NOT deploy yet.",{"type":52,"tag":53,"props":1479,"children":1480},{},[1481,1486],{"type":52,"tag":57,"props":1482,"children":1483},{},[1484],{"type":61,"value":1485},"If no data sources needed:",{"type":61,"value":1487}," Skip to Step 8.",{"type":52,"tag":135,"props":1489,"children":1491},{"id":1490},"step-8-implement-app",[1492],{"type":61,"value":1493},"Step 8: Implement App",{"type":52,"tag":53,"props":1495,"children":1496},{},[1497,1502],{"type":52,"tag":57,"props":1498,"children":1499},{},[1500],{"type":61,"value":1501},"This is the core step.",{"type":61,"value":1503}," Build the actual app features described in the plan from Step 3.",{"type":52,"tag":122,"props":1505,"children":1506},{},[1507,1533,1543,1569,1579],{"type":52,"tag":85,"props":1508,"children":1509},{},[1510,1515,1517,1523,1525,1531],{"type":52,"tag":57,"props":1511,"children":1512},{},[1513],{"type":61,"value":1514},"Review generated services",{"type":61,"value":1516},": Use ",{"type":52,"tag":147,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":61,"value":1522},"Grep",{"type":61,"value":1524}," to find methods in generated service files (they can be very large -- see ",{"type":52,"tag":64,"props":1526,"children":1528},{"href":1527},"$%7BPLUGIN_ROOT%7D\u002Fshared\u002Fconnector-reference.md#inspecting-large-generated-files",[1529],{"type":61,"value":1530},"connector-reference.md",{"type":61,"value":1532},"). Do NOT read entire generated files.",{"type":52,"tag":85,"props":1534,"children":1535},{},[1536,1541],{"type":52,"tag":57,"props":1537,"children":1538},{},[1539],{"type":61,"value":1540},"Build components",{"type":61,"value":1542},": Create React components for each screen\u002Ffeature in the plan",{"type":52,"tag":85,"props":1544,"children":1545},{},[1546,1551,1553,1559,1561,1567],{"type":52,"tag":57,"props":1547,"children":1548},{},[1549],{"type":61,"value":1550},"Connect data",{"type":61,"value":1552},": Wire components to generated services (use ",{"type":52,"tag":147,"props":1554,"children":1556},{"className":1555},[],[1557],{"type":61,"value":1558},"*Service.getAll()",{"type":61,"value":1560},", ",{"type":52,"tag":147,"props":1562,"children":1564},{"className":1563},[],[1565],{"type":61,"value":1566},"*Service.create()",{"type":61,"value":1568},", etc.)",{"type":52,"tag":85,"props":1570,"children":1571},{},[1572,1577],{"type":52,"tag":57,"props":1573,"children":1574},{},[1575],{"type":61,"value":1576},"Apply theme",{"type":61,"value":1578},": Use the user's theme preference (default: dark theme per development standards)",{"type":52,"tag":85,"props":1580,"children":1581},{},[1582,1587],{"type":52,"tag":57,"props":1583,"children":1584},{},[1585],{"type":61,"value":1586},"Iterate with user",{"type":61,"value":1588},": Show progress, ask for feedback, adjust as needed",{"type":52,"tag":53,"props":1590,"children":1591},{},[1592],{"type":52,"tag":57,"props":1593,"children":1594},{},[1595],{"type":61,"value":1596},"Key rules:",{"type":52,"tag":81,"props":1598,"children":1599},{},[1600,1605,1618,1623],{"type":52,"tag":85,"props":1601,"children":1602},{},[1603],{"type":61,"value":1604},"Use generated services for all data access -- never use fetch\u002Faxios directly",{"type":52,"tag":85,"props":1606,"children":1607},{},[1608,1610,1616],{"type":61,"value":1609},"Read ",{"type":52,"tag":64,"props":1611,"children":1613},{"href":1612},"$%7BPLUGIN_ROOT%7D\u002Fskills\u002Fadd-dataverse\u002Freferences\u002Fdataverse-reference.md",[1614],{"type":61,"value":1615},"dataverse-reference.md",{"type":61,"value":1617}," if working with Dataverse (picklist fields, virtual fields, lookups have critical gotchas)",{"type":52,"tag":85,"props":1619,"children":1620},{},[1621],{"type":61,"value":1622},"Remove unused imports before building (TS6133 strict mode)",{"type":52,"tag":85,"props":1624,"children":1625},{},[1626,1628,1634],{"type":61,"value":1627},"Don't edit files in ",{"type":52,"tag":147,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":61,"value":1633},"src\u002Fgenerated\u002F",{"type":61,"value":1635}," unless fixing known issues",{"type":52,"tag":135,"props":1637,"children":1639},{"id":1638},"step-9-final-build-deploy",[1640],{"type":61,"value":1641},"Step 9: Final Build & Deploy",{"type":52,"tag":191,"props":1643,"children":1644},{"className":193,"code":1051,"language":195,"meta":196,"style":196},[1645],{"type":52,"tag":147,"props":1646,"children":1647},{"__ignoreMap":196},[1648],{"type":52,"tag":202,"props":1649,"children":1650},{"class":204,"line":205},[1651,1655,1659],{"type":52,"tag":202,"props":1652,"children":1653},{"style":209},[1654],{"type":61,"value":644},{"type":52,"tag":202,"props":1656,"children":1657},{"style":215},[1658],{"type":61,"value":1067},{"type":52,"tag":202,"props":1660,"children":1661},{"style":215},[1662],{"type":61,"value":1072},{"type":52,"tag":53,"props":1664,"children":1665},{},[1666,1668,1673],{"type":61,"value":1667},"Fix any TypeScript errors. Verify ",{"type":52,"tag":147,"props":1669,"children":1671},{"className":1670},[],[1672],{"type":61,"value":1083},{"type":61,"value":1674}," contains the updated app.",{"type":52,"tag":53,"props":1676,"children":1677},{},[1678,1680,1692],{"type":61,"value":1679},"Ask the user: ",{"type":52,"tag":971,"props":1681,"children":1682},{},[1683,1685,1690],{"type":61,"value":1684},"\"Ready to deploy to ",{"type":52,"tag":202,"props":1686,"children":1687},{},[1688],{"type":61,"value":1689},"environment name",{"type":61,"value":1691},"? This will update the live app.\"",{"type":61,"value":1693}," Wait for explicit confirmation before proceeding.",{"type":52,"tag":191,"props":1695,"children":1696},{"className":193,"code":1146,"language":195,"meta":196,"style":196},[1697],{"type":52,"tag":147,"props":1698,"children":1699},{"__ignoreMap":196},[1700],{"type":52,"tag":202,"props":1701,"children":1702},{"class":204,"line":205},[1703,1707,1711],{"type":52,"tag":202,"props":1704,"children":1705},{"style":209},[1706],{"type":61,"value":777},{"type":52,"tag":202,"props":1708,"children":1709},{"style":215},[1710],{"type":61,"value":837},{"type":52,"tag":202,"props":1712,"children":1713},{"style":215},[1714],{"type":61,"value":1166},{"type":52,"tag":135,"props":1716,"children":1718},{"id":1717},"step-10-summary",[1719],{"type":61,"value":1720},"Step 10: Summary",{"type":52,"tag":53,"props":1722,"children":1723},{},[1724],{"type":61,"value":1725},"Provide:",{"type":52,"tag":81,"props":1727,"children":1728},{},[1729,1734,1739,1752,1841],{"type":52,"tag":85,"props":1730,"children":1731},{},[1732],{"type":61,"value":1733},"App name, environment, app URL, project location",{"type":52,"tag":85,"props":1735,"children":1736},{},[1737],{"type":61,"value":1738},"What was built: features, data sources, components",{"type":52,"tag":85,"props":1740,"children":1741},{},[1742,1744,1750],{"type":61,"value":1743},"Next steps: how to iterate (",{"type":52,"tag":147,"props":1745,"children":1747},{"className":1746},[],[1748],{"type":61,"value":1749},"npm run build && pa app push",{"type":61,"value":1751},"), how to add more data sources",{"type":52,"tag":85,"props":1753,"children":1754},{},[1755,1757],{"type":61,"value":1756},"Suggest what else the app could do:\n",{"type":52,"tag":81,"props":1758,"children":1759},{},[1760,1771,1781,1791,1801,1811,1821,1831],{"type":52,"tag":85,"props":1761,"children":1762},{},[1763,1769],{"type":52,"tag":147,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":61,"value":1768},"\u002Fadd-datasource",{"type":61,"value":1770}," -- add another data source (describe what you need, and the plugin will recommend the best approach)",{"type":52,"tag":85,"props":1772,"children":1773},{},[1774,1779],{"type":52,"tag":147,"props":1775,"children":1777},{"className":1776},[],[1778],{"type":61,"value":410},{"type":61,"value":1780}," -- store and manage custom business data",{"type":52,"tag":85,"props":1782,"children":1783},{},[1784,1789],{"type":52,"tag":147,"props":1785,"children":1787},{"className":1786},[],[1788],{"type":61,"value":1323},{"type":61,"value":1790}," -- track work items, bugs, and pipelines",{"type":52,"tag":85,"props":1792,"children":1793},{},[1794,1799],{"type":52,"tag":147,"props":1795,"children":1797},{"className":1796},[],[1798],{"type":61,"value":1340},{"type":61,"value":1800}," -- send and read Teams messages",{"type":52,"tag":85,"props":1802,"children":1803},{},[1804,1809],{"type":52,"tag":147,"props":1805,"children":1807},{"className":1806},[],[1808],{"type":61,"value":1391},{"type":61,"value":1810}," -- work with SharePoint lists or documents",{"type":52,"tag":85,"props":1812,"children":1813},{},[1814,1819],{"type":52,"tag":147,"props":1815,"children":1817},{"className":1816},[],[1818],{"type":61,"value":1408},{"type":61,"value":1820}," -- send emails, manage calendar",{"type":52,"tag":85,"props":1822,"children":1823},{},[1824,1829],{"type":52,"tag":147,"props":1825,"children":1827},{"className":1826},[],[1828],{"type":61,"value":438},{"type":61,"value":1830}," -- search M365 data or get AI-powered answers about company info",{"type":52,"tag":85,"props":1832,"children":1833},{},[1834,1839],{"type":52,"tag":147,"props":1835,"children":1837},{"className":1836},[],[1838],{"type":61,"value":1457},{"type":61,"value":1840}," -- connect to any other service",{"type":52,"tag":85,"props":1842,"children":1843},{},[1844,1846,1852],{"type":61,"value":1845},"Manage at ",{"type":52,"tag":64,"props":1847,"children":1850},{"href":1848,"rel":1849},"https:\u002F\u002Fmake.powerapps.com\u002Fenvironments\u002F",[260],[1851],{"type":61,"value":1848},{"type":52,"tag":1853,"props":1854,"children":1855},"environment-id",{},[1856],{"type":61,"value":1857},"\u002Fhome",{"type":52,"tag":135,"props":1859,"children":1861},{"id":1860},"update-memory-bank",[1862],{"type":61,"value":1863},"Update Memory Bank",{"type":52,"tag":53,"props":1865,"children":1866},{},[1867],{"type":61,"value":1868},"Update the memory bank (created in Step 6) with final state:",{"type":52,"tag":81,"props":1870,"children":1871},{},[1872,1877,1882,1887],{"type":52,"tag":85,"props":1873,"children":1874},{},[1875],{"type":61,"value":1876},"All completed steps (scaffold, data sources, implementation, deploy)",{"type":52,"tag":85,"props":1878,"children":1879},{},[1880],{"type":61,"value":1881},"Features implemented and components created",{"type":52,"tag":85,"props":1883,"children":1884},{},[1885],{"type":61,"value":1886},"Data sources connected",{"type":52,"tag":85,"props":1888,"children":1889},{},[1890],{"type":61,"value":1891},"Suggested next steps",{"type":52,"tag":131,"props":1893,"children":1894},{},[],{"type":52,"tag":115,"props":1896,"children":1898},{"id":1897},"example-walkthroughs",[1899],{"type":61,"value":1900},"Example Walkthroughs",{"type":52,"tag":53,"props":1902,"children":1903},{},[1904],{"type":61,"value":1905},"These walkthroughs show the full sequence from user request to final output — commands run, files changed, and the verbatim summary format the assistant should use.",{"type":52,"tag":131,"props":1907,"children":1908},{},[],{"type":52,"tag":135,"props":1910,"children":1912},{"id":1911},"example-1-create-a-task-tracker-app-with-dataverse",[1913],{"type":61,"value":1914},"Example 1: Create a Task Tracker App with Dataverse",{"type":52,"tag":53,"props":1916,"children":1917},{},[1918],{"type":52,"tag":57,"props":1919,"children":1920},{},[1921],{"type":61,"value":1922},"User request:",{"type":52,"tag":336,"props":1924,"children":1925},{},[1926],{"type":52,"tag":53,"props":1927,"children":1928},{},[1929],{"type":61,"value":1930},"\"Build me a simple task tracker that stores tasks in Dataverse. I want to add tasks, mark them complete, and see a list.\"",{"type":52,"tag":53,"props":1932,"children":1933},{},[1934],{"type":52,"tag":57,"props":1935,"children":1936},{},[1937],{"type":61,"value":1938},"Commands run (in order):",{"type":52,"tag":191,"props":1940,"children":1942},{"className":193,"code":1941,"language":195,"meta":196,"style":196},"# Step 1: Prerequisites\nnode --version   # → v22.4.0\n\n# Step 4: Scaffold\nnpx degit microsoft\u002FPowerAppsCodeApps\u002Ftemplates\u002Fvite powerapps-task-tracker-20260302 --force\ncd powerapps-task-tracker-20260302\nnpm install\n\n# Step 5: Initialize (browser login prompt on first run; CLI prompts for env ID if -e omitted)\npa app init -n 'Task Tracker' -e \u003Cenvironment-id>\n\n# Step 6: Baseline deploy (pre-approved as part of scaffold flow)\nnpm run build\npa app push\n# → App URL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F32a51012-...\u002Fapp\u002F\u003Capp-id>\n\n# Step 7: Add Dataverse (via \u002Fadd-dataverse)\npa app add data-source --connector dataverse --table cr123_task\nnpm run build   # verify connector — no deploy yet\n\n# Step 9: Final deploy (requires user confirmation)\nnpm run build\npa app push\n",[1943],{"type":52,"tag":147,"props":1944,"children":1945},{"__ignoreMap":196},[1946,1954,1970,1978,1987,2012,2025,2037,2045,2054,2107,2115,2124,2140,2156,2165,2173,2182,2224,2246,2254,2263,2279],{"type":52,"tag":202,"props":1947,"children":1948},{"class":204,"line":205},[1949],{"type":52,"tag":202,"props":1950,"children":1951},{"style":221},[1952],{"type":61,"value":1953},"# Step 1: Prerequisites\n",{"type":52,"tag":202,"props":1955,"children":1956},{"class":204,"line":227},[1957,1961,1965],{"type":52,"tag":202,"props":1958,"children":1959},{"style":209},[1960],{"type":61,"value":212},{"type":52,"tag":202,"props":1962,"children":1963},{"style":215},[1964],{"type":61,"value":218},{"type":52,"tag":202,"props":1966,"children":1967},{"style":221},[1968],{"type":61,"value":1969},"   # → v22.4.0\n",{"type":52,"tag":202,"props":1971,"children":1972},{"class":204,"line":638},[1973],{"type":52,"tag":202,"props":1974,"children":1975},{"emptyLinePlaceholder":45},[1976],{"type":61,"value":1977},"\n",{"type":52,"tag":202,"props":1979,"children":1981},{"class":204,"line":1980},4,[1982],{"type":52,"tag":202,"props":1983,"children":1984},{"style":221},[1985],{"type":61,"value":1986},"# Step 4: Scaffold\n",{"type":52,"tag":202,"props":1988,"children":1990},{"class":204,"line":1989},5,[1991,1995,1999,2003,2008],{"type":52,"tag":202,"props":1992,"children":1993},{"style":209},[1994],{"type":61,"value":601},{"type":52,"tag":202,"props":1996,"children":1997},{"style":215},[1998],{"type":61,"value":606},{"type":52,"tag":202,"props":2000,"children":2001},{"style":215},[2002],{"type":61,"value":611},{"type":52,"tag":202,"props":2004,"children":2005},{"style":215},[2006],{"type":61,"value":2007}," powerapps-task-tracker-20260302",{"type":52,"tag":202,"props":2009,"children":2010},{"style":215},[2011],{"type":61,"value":621},{"type":52,"tag":202,"props":2013,"children":2015},{"class":204,"line":2014},6,[2016,2020],{"type":52,"tag":202,"props":2017,"children":2018},{"style":627},[2019],{"type":61,"value":630},{"type":52,"tag":202,"props":2021,"children":2022},{"style":215},[2023],{"type":61,"value":2024}," powerapps-task-tracker-20260302\n",{"type":52,"tag":202,"props":2026,"children":2028},{"class":204,"line":2027},7,[2029,2033],{"type":52,"tag":202,"props":2030,"children":2031},{"style":209},[2032],{"type":61,"value":644},{"type":52,"tag":202,"props":2034,"children":2035},{"style":215},[2036],{"type":61,"value":649},{"type":52,"tag":202,"props":2038,"children":2040},{"class":204,"line":2039},8,[2041],{"type":52,"tag":202,"props":2042,"children":2043},{"emptyLinePlaceholder":45},[2044],{"type":61,"value":1977},{"type":52,"tag":202,"props":2046,"children":2048},{"class":204,"line":2047},9,[2049],{"type":52,"tag":202,"props":2050,"children":2051},{"style":221},[2052],{"type":61,"value":2053},"# Step 5: Initialize (browser login prompt on first run; CLI prompts for env ID if -e omitted)\n",{"type":52,"tag":202,"props":2055,"children":2057},{"class":204,"line":2056},10,[2058,2062,2066,2070,2074,2078,2083,2087,2091,2095,2099,2103],{"type":52,"tag":202,"props":2059,"children":2060},{"style":209},[2061],{"type":61,"value":777},{"type":52,"tag":202,"props":2063,"children":2064},{"style":215},[2065],{"type":61,"value":837},{"type":52,"tag":202,"props":2067,"children":2068},{"style":215},[2069],{"type":61,"value":842},{"type":52,"tag":202,"props":2071,"children":2072},{"style":215},[2073],{"type":61,"value":847},{"type":52,"tag":202,"props":2075,"children":2076},{"style":850},[2077],{"type":61,"value":853},{"type":52,"tag":202,"props":2079,"children":2080},{"style":215},[2081],{"type":61,"value":2082},"Task Tracker",{"type":52,"tag":202,"props":2084,"children":2085},{"style":850},[2086],{"type":61,"value":863},{"type":52,"tag":202,"props":2088,"children":2089},{"style":215},[2090],{"type":61,"value":868},{"type":52,"tag":202,"props":2092,"children":2093},{"style":850},[2094],{"type":61,"value":873},{"type":52,"tag":202,"props":2096,"children":2097},{"style":215},[2098],{"type":61,"value":878},{"type":52,"tag":202,"props":2100,"children":2101},{"style":881},[2102],{"type":61,"value":884},{"type":52,"tag":202,"props":2104,"children":2105},{"style":850},[2106],{"type":61,"value":889},{"type":52,"tag":202,"props":2108,"children":2110},{"class":204,"line":2109},11,[2111],{"type":52,"tag":202,"props":2112,"children":2113},{"emptyLinePlaceholder":45},[2114],{"type":61,"value":1977},{"type":52,"tag":202,"props":2116,"children":2118},{"class":204,"line":2117},12,[2119],{"type":52,"tag":202,"props":2120,"children":2121},{"style":221},[2122],{"type":61,"value":2123},"# Step 6: Baseline deploy (pre-approved as part of scaffold flow)\n",{"type":52,"tag":202,"props":2125,"children":2127},{"class":204,"line":2126},13,[2128,2132,2136],{"type":52,"tag":202,"props":2129,"children":2130},{"style":209},[2131],{"type":61,"value":644},{"type":52,"tag":202,"props":2133,"children":2134},{"style":215},[2135],{"type":61,"value":1067},{"type":52,"tag":202,"props":2137,"children":2138},{"style":215},[2139],{"type":61,"value":1072},{"type":52,"tag":202,"props":2141,"children":2143},{"class":204,"line":2142},14,[2144,2148,2152],{"type":52,"tag":202,"props":2145,"children":2146},{"style":209},[2147],{"type":61,"value":777},{"type":52,"tag":202,"props":2149,"children":2150},{"style":215},[2151],{"type":61,"value":837},{"type":52,"tag":202,"props":2153,"children":2154},{"style":215},[2155],{"type":61,"value":1166},{"type":52,"tag":202,"props":2157,"children":2159},{"class":204,"line":2158},15,[2160],{"type":52,"tag":202,"props":2161,"children":2162},{"style":221},[2163],{"type":61,"value":2164},"# → App URL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F32a51012-...\u002Fapp\u002F\u003Capp-id>\n",{"type":52,"tag":202,"props":2166,"children":2168},{"class":204,"line":2167},16,[2169],{"type":52,"tag":202,"props":2170,"children":2171},{"emptyLinePlaceholder":45},[2172],{"type":61,"value":1977},{"type":52,"tag":202,"props":2174,"children":2176},{"class":204,"line":2175},17,[2177],{"type":52,"tag":202,"props":2178,"children":2179},{"style":221},[2180],{"type":61,"value":2181},"# Step 7: Add Dataverse (via \u002Fadd-dataverse)\n",{"type":52,"tag":202,"props":2183,"children":2185},{"class":204,"line":2184},18,[2186,2190,2194,2199,2204,2209,2214,2219],{"type":52,"tag":202,"props":2187,"children":2188},{"style":209},[2189],{"type":61,"value":777},{"type":52,"tag":202,"props":2191,"children":2192},{"style":215},[2193],{"type":61,"value":837},{"type":52,"tag":202,"props":2195,"children":2196},{"style":215},[2197],{"type":61,"value":2198}," add",{"type":52,"tag":202,"props":2200,"children":2201},{"style":215},[2202],{"type":61,"value":2203}," data-source",{"type":52,"tag":202,"props":2205,"children":2206},{"style":215},[2207],{"type":61,"value":2208}," --connector",{"type":52,"tag":202,"props":2210,"children":2211},{"style":215},[2212],{"type":61,"value":2213}," dataverse",{"type":52,"tag":202,"props":2215,"children":2216},{"style":215},[2217],{"type":61,"value":2218}," --table",{"type":52,"tag":202,"props":2220,"children":2221},{"style":215},[2222],{"type":61,"value":2223}," cr123_task\n",{"type":52,"tag":202,"props":2225,"children":2227},{"class":204,"line":2226},19,[2228,2232,2236,2241],{"type":52,"tag":202,"props":2229,"children":2230},{"style":209},[2231],{"type":61,"value":644},{"type":52,"tag":202,"props":2233,"children":2234},{"style":215},[2235],{"type":61,"value":1067},{"type":52,"tag":202,"props":2237,"children":2238},{"style":215},[2239],{"type":61,"value":2240}," build",{"type":52,"tag":202,"props":2242,"children":2243},{"style":221},[2244],{"type":61,"value":2245},"   # verify connector — no deploy yet\n",{"type":52,"tag":202,"props":2247,"children":2249},{"class":204,"line":2248},20,[2250],{"type":52,"tag":202,"props":2251,"children":2252},{"emptyLinePlaceholder":45},[2253],{"type":61,"value":1977},{"type":52,"tag":202,"props":2255,"children":2257},{"class":204,"line":2256},21,[2258],{"type":52,"tag":202,"props":2259,"children":2260},{"style":221},[2261],{"type":61,"value":2262},"# Step 9: Final deploy (requires user confirmation)\n",{"type":52,"tag":202,"props":2264,"children":2266},{"class":204,"line":2265},22,[2267,2271,2275],{"type":52,"tag":202,"props":2268,"children":2269},{"style":209},[2270],{"type":61,"value":644},{"type":52,"tag":202,"props":2272,"children":2273},{"style":215},[2274],{"type":61,"value":1067},{"type":52,"tag":202,"props":2276,"children":2277},{"style":215},[2278],{"type":61,"value":1072},{"type":52,"tag":202,"props":2280,"children":2282},{"class":204,"line":2281},23,[2283,2287,2291],{"type":52,"tag":202,"props":2284,"children":2285},{"style":209},[2286],{"type":61,"value":777},{"type":52,"tag":202,"props":2288,"children":2289},{"style":215},[2290],{"type":61,"value":837},{"type":52,"tag":202,"props":2292,"children":2293},{"style":215},[2294],{"type":61,"value":1166},{"type":52,"tag":53,"props":2296,"children":2297},{},[2298],{"type":52,"tag":57,"props":2299,"children":2300},{},[2301],{"type":61,"value":2302},"Files changed:",{"type":52,"tag":1264,"props":2304,"children":2305},{},[2306,2322],{"type":52,"tag":1268,"props":2307,"children":2308},{},[2309],{"type":52,"tag":1272,"props":2310,"children":2311},{},[2312,2317],{"type":52,"tag":1276,"props":2313,"children":2314},{},[2315],{"type":61,"value":2316},"File",{"type":52,"tag":1276,"props":2318,"children":2319},{},[2320],{"type":61,"value":2321},"Change",{"type":52,"tag":1287,"props":2323,"children":2324},{},[2325,2353,2376,2397,2414,2431,2454],{"type":52,"tag":1272,"props":2326,"children":2327},{},[2328,2336],{"type":52,"tag":1294,"props":2329,"children":2330},{},[2331],{"type":52,"tag":147,"props":2332,"children":2334},{"className":2333},[],[2335],{"type":61,"value":1014},{"type":52,"tag":1294,"props":2337,"children":2338},{},[2339,2341,2346,2348],{"type":61,"value":2340},"Created by ",{"type":52,"tag":147,"props":2342,"children":2344},{"className":2343},[],[2345],{"type":61,"value":949},{"type":61,"value":2347}," — contains ",{"type":52,"tag":147,"props":2349,"children":2351},{"className":2350},[],[2352],{"type":61,"value":1022},{"type":52,"tag":1272,"props":2354,"children":2355},{},[2356,2365],{"type":52,"tag":1294,"props":2357,"children":2358},{},[2359],{"type":52,"tag":147,"props":2360,"children":2362},{"className":2361},[],[2363],{"type":61,"value":2364},"src\u002Fgenerated\u002Fmodels\u002FCr123_taskModel.ts",{"type":52,"tag":1294,"props":2366,"children":2367},{},[2368,2370],{"type":61,"value":2369},"Generated by ",{"type":52,"tag":147,"props":2371,"children":2373},{"className":2372},[],[2374],{"type":61,"value":2375},"pa app add data-source",{"type":52,"tag":1272,"props":2377,"children":2378},{},[2379,2388],{"type":52,"tag":1294,"props":2380,"children":2381},{},[2382],{"type":52,"tag":147,"props":2383,"children":2385},{"className":2384},[],[2386],{"type":61,"value":2387},"src\u002Fgenerated\u002Fservices\u002FCr123_taskService.ts",{"type":52,"tag":1294,"props":2389,"children":2390},{},[2391,2392],{"type":61,"value":2369},{"type":52,"tag":147,"props":2393,"children":2395},{"className":2394},[],[2396],{"type":61,"value":2375},{"type":52,"tag":1272,"props":2398,"children":2399},{},[2400,2409],{"type":52,"tag":1294,"props":2401,"children":2402},{},[2403],{"type":52,"tag":147,"props":2404,"children":2406},{"className":2405},[],[2407],{"type":61,"value":2408},"src\u002Fcomponents\u002FTaskList.tsx",{"type":52,"tag":1294,"props":2410,"children":2411},{},[2412],{"type":61,"value":2413},"Created — renders task list with status filter",{"type":52,"tag":1272,"props":2415,"children":2416},{},[2417,2426],{"type":52,"tag":1294,"props":2418,"children":2419},{},[2420],{"type":52,"tag":147,"props":2421,"children":2423},{"className":2422},[],[2424],{"type":61,"value":2425},"src\u002Fcomponents\u002FAddTaskForm.tsx",{"type":52,"tag":1294,"props":2427,"children":2428},{},[2429],{"type":61,"value":2430},"Created — form to add new tasks",{"type":52,"tag":1272,"props":2432,"children":2433},{},[2434,2443],{"type":52,"tag":1294,"props":2435,"children":2436},{},[2437],{"type":52,"tag":147,"props":2438,"children":2440},{"className":2439},[],[2441],{"type":61,"value":2442},"src\u002FApp.tsx",{"type":52,"tag":1294,"props":2444,"children":2445},{},[2446,2448],{"type":61,"value":2447},"Updated — wires components to ",{"type":52,"tag":147,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":61,"value":2453},"Cr123_taskService",{"type":52,"tag":1272,"props":2455,"children":2456},{},[2457,2465],{"type":52,"tag":1294,"props":2458,"children":2459},{},[2460],{"type":52,"tag":147,"props":2461,"children":2463},{"className":2462},[],[2464],{"type":61,"value":152},{"type":52,"tag":1294,"props":2466,"children":2467},{},[2468],{"type":61,"value":2469},"Created in Step 7, updated in Step 11",{"type":52,"tag":53,"props":2471,"children":2472},{},[2473],{"type":52,"tag":57,"props":2474,"children":2475},{},[2476],{"type":61,"value":2477},"Final assistant summary (verbatim format):",{"type":52,"tag":191,"props":2479,"children":2483},{"className":2480,"code":2482,"language":61},[2481],"language-text","Task Tracker is live.\n\nApp: Task Tracker\nEnvironment: \u003Cyour-environment-name> (\u003Cenvironment-id>)\nURL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F\u003Cenvironment-id>\u002Fapp\u002F\u003Capp-id>\nProject: ~\u002Fpowerapps-task-tracker-20260302\u002F\n\nWhat was built:\n- Task list view with Active \u002F Completed filter\n- Add task form (title, description, due date)\n- Mark complete \u002F delete actions\n- Dataverse table `cr123_task` (Title, Description, DueDate, IsComplete)\n\nTo redeploy: npm run build && pa app push (from the project folder)\n\nWhat you can add next:\n- \u002Fadd-teams — post task updates to a Teams channel\n- \u002Fadd-office365 — send email notifications on completion\n",[2484],{"type":52,"tag":147,"props":2485,"children":2486},{"__ignoreMap":196},[2487],{"type":61,"value":2482},{"type":52,"tag":53,"props":2489,"children":2490},{},[2491],{"type":52,"tag":57,"props":2492,"children":2493},{},[2494,2496,2501],{"type":61,"value":2495},"What to record in ",{"type":52,"tag":147,"props":2497,"children":2499},{"className":2498},[],[2500],{"type":61,"value":152},{"type":61,"value":2502},":",{"type":52,"tag":191,"props":2504,"children":2508},{"className":2505,"code":2506,"language":2507,"meta":196,"style":196},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Task Tracker — Memory Bank\n\n## Project\n\n- Path: ~\u002Fpowerapps-task-tracker-20260302\u002F\n- App name: Task Tracker\n- Environment: \u003Cyour-environment-name> (\u003Cenvironment-id>)\n- App URL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F\u003Cenvironment-id>\u002Fapp\u002F\u003Capp-id>\n\n## Completed Steps\n\n- [x] Step 1: Prerequisites validated\n- [x] Step 4: Scaffold (npx degit)\n- [x] Step 5: Initialize (pa app init)\n- [x] Step 6: Baseline deploy\n- [x] Step 7: Add Dataverse (cr123_task)\n- [x] Step 8: Implement app (TaskList, AddTaskForm)\n- [x] Step 9: Final deploy\n\n## Data Sources\n\n- Dataverse: cr123_task (Title, Description, DueDate, IsComplete)\n\n## Components\n\n- TaskList.tsx — filtered list, mark complete, delete\n- AddTaskForm.tsx — create new tasks\n\n## Next Steps\n\n- Consider \u002Fadd-teams for task assignment notifications\n","markdown",[2509],{"type":52,"tag":147,"props":2510,"children":2511},{"__ignoreMap":196},[2512,2525,2532,2545,2552,2565,2577,2626,2668,2675,2687,2694,2721,2745,2769,2793,2817,2841,2865,2872,2884,2891,2903,2910,2923,2931,2944,2957,2965,2978,2986],{"type":52,"tag":202,"props":2513,"children":2514},{"class":204,"line":205},[2515,2520],{"type":52,"tag":202,"props":2516,"children":2517},{"style":850},[2518],{"type":61,"value":2519},"# ",{"type":52,"tag":202,"props":2521,"children":2522},{"style":209},[2523],{"type":61,"value":2524},"Task Tracker — Memory Bank\n",{"type":52,"tag":202,"props":2526,"children":2527},{"class":204,"line":227},[2528],{"type":52,"tag":202,"props":2529,"children":2530},{"emptyLinePlaceholder":45},[2531],{"type":61,"value":1977},{"type":52,"tag":202,"props":2533,"children":2534},{"class":204,"line":638},[2535,2540],{"type":52,"tag":202,"props":2536,"children":2537},{"style":850},[2538],{"type":61,"value":2539},"## ",{"type":52,"tag":202,"props":2541,"children":2542},{"style":209},[2543],{"type":61,"value":2544},"Project\n",{"type":52,"tag":202,"props":2546,"children":2547},{"class":204,"line":1980},[2548],{"type":52,"tag":202,"props":2549,"children":2550},{"emptyLinePlaceholder":45},[2551],{"type":61,"value":1977},{"type":52,"tag":202,"props":2553,"children":2554},{"class":204,"line":1989},[2555,2560],{"type":52,"tag":202,"props":2556,"children":2557},{"style":850},[2558],{"type":61,"value":2559},"-",{"type":52,"tag":202,"props":2561,"children":2562},{"style":881},[2563],{"type":61,"value":2564}," Path: ~\u002Fpowerapps-task-tracker-20260302\u002F\n",{"type":52,"tag":202,"props":2566,"children":2567},{"class":204,"line":2014},[2568,2572],{"type":52,"tag":202,"props":2569,"children":2570},{"style":850},[2571],{"type":61,"value":2559},{"type":52,"tag":202,"props":2573,"children":2574},{"style":881},[2575],{"type":61,"value":2576}," App name: Task Tracker\n",{"type":52,"tag":202,"props":2578,"children":2579},{"class":204,"line":2027},[2580,2584,2589,2594,2600,2605,2609,2613,2617,2621],{"type":52,"tag":202,"props":2581,"children":2582},{"style":850},[2583],{"type":61,"value":2559},{"type":52,"tag":202,"props":2585,"children":2586},{"style":881},[2587],{"type":61,"value":2588}," Environment: ",{"type":52,"tag":202,"props":2590,"children":2591},{"style":850},[2592],{"type":61,"value":2593},"\u003C",{"type":52,"tag":202,"props":2595,"children":2597},{"style":2596},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2598],{"type":61,"value":2599},"your-environment-name",{"type":52,"tag":202,"props":2601,"children":2602},{"style":850},[2603],{"type":61,"value":2604},">",{"type":52,"tag":202,"props":2606,"children":2607},{"style":881},[2608],{"type":61,"value":763},{"type":52,"tag":202,"props":2610,"children":2611},{"style":850},[2612],{"type":61,"value":2593},{"type":52,"tag":202,"props":2614,"children":2615},{"style":2596},[2616],{"type":61,"value":1853},{"type":52,"tag":202,"props":2618,"children":2619},{"style":850},[2620],{"type":61,"value":2604},{"type":52,"tag":202,"props":2622,"children":2623},{"style":881},[2624],{"type":61,"value":2625},")\n",{"type":52,"tag":202,"props":2627,"children":2628},{"class":204,"line":2039},[2629,2633,2638,2642,2646,2650,2655,2659,2664],{"type":52,"tag":202,"props":2630,"children":2631},{"style":850},[2632],{"type":61,"value":2559},{"type":52,"tag":202,"props":2634,"children":2635},{"style":881},[2636],{"type":61,"value":2637}," App URL: https:\u002F\u002Fapps.powerapps.com\u002Fplay\u002Fe\u002F",{"type":52,"tag":202,"props":2639,"children":2640},{"style":850},[2641],{"type":61,"value":2593},{"type":52,"tag":202,"props":2643,"children":2644},{"style":2596},[2645],{"type":61,"value":1853},{"type":52,"tag":202,"props":2647,"children":2648},{"style":850},[2649],{"type":61,"value":2604},{"type":52,"tag":202,"props":2651,"children":2652},{"style":881},[2653],{"type":61,"value":2654},"\u002Fapp\u002F",{"type":52,"tag":202,"props":2656,"children":2657},{"style":850},[2658],{"type":61,"value":2593},{"type":52,"tag":202,"props":2660,"children":2661},{"style":2596},[2662],{"type":61,"value":2663},"app-id",{"type":52,"tag":202,"props":2665,"children":2666},{"style":850},[2667],{"type":61,"value":889},{"type":52,"tag":202,"props":2669,"children":2670},{"class":204,"line":2047},[2671],{"type":52,"tag":202,"props":2672,"children":2673},{"emptyLinePlaceholder":45},[2674],{"type":61,"value":1977},{"type":52,"tag":202,"props":2676,"children":2677},{"class":204,"line":2056},[2678,2682],{"type":52,"tag":202,"props":2679,"children":2680},{"style":850},[2681],{"type":61,"value":2539},{"type":52,"tag":202,"props":2683,"children":2684},{"style":209},[2685],{"type":61,"value":2686},"Completed Steps\n",{"type":52,"tag":202,"props":2688,"children":2689},{"class":204,"line":2109},[2690],{"type":52,"tag":202,"props":2691,"children":2692},{"emptyLinePlaceholder":45},[2693],{"type":61,"value":1977},{"type":52,"tag":202,"props":2695,"children":2696},{"class":204,"line":2117},[2697,2701,2706,2711,2716],{"type":52,"tag":202,"props":2698,"children":2699},{"style":850},[2700],{"type":61,"value":2559},{"type":52,"tag":202,"props":2702,"children":2703},{"style":850},[2704],{"type":61,"value":2705}," [",{"type":52,"tag":202,"props":2707,"children":2708},{"style":215},[2709],{"type":61,"value":2710},"x",{"type":52,"tag":202,"props":2712,"children":2713},{"style":850},[2714],{"type":61,"value":2715},"]",{"type":52,"tag":202,"props":2717,"children":2718},{"style":881},[2719],{"type":61,"value":2720}," Step 1: Prerequisites validated\n",{"type":52,"tag":202,"props":2722,"children":2723},{"class":204,"line":2126},[2724,2728,2732,2736,2740],{"type":52,"tag":202,"props":2725,"children":2726},{"style":850},[2727],{"type":61,"value":2559},{"type":52,"tag":202,"props":2729,"children":2730},{"style":850},[2731],{"type":61,"value":2705},{"type":52,"tag":202,"props":2733,"children":2734},{"style":215},[2735],{"type":61,"value":2710},{"type":52,"tag":202,"props":2737,"children":2738},{"style":850},[2739],{"type":61,"value":2715},{"type":52,"tag":202,"props":2741,"children":2742},{"style":881},[2743],{"type":61,"value":2744}," Step 4: Scaffold (npx degit)\n",{"type":52,"tag":202,"props":2746,"children":2747},{"class":204,"line":2142},[2748,2752,2756,2760,2764],{"type":52,"tag":202,"props":2749,"children":2750},{"style":850},[2751],{"type":61,"value":2559},{"type":52,"tag":202,"props":2753,"children":2754},{"style":850},[2755],{"type":61,"value":2705},{"type":52,"tag":202,"props":2757,"children":2758},{"style":215},[2759],{"type":61,"value":2710},{"type":52,"tag":202,"props":2761,"children":2762},{"style":850},[2763],{"type":61,"value":2715},{"type":52,"tag":202,"props":2765,"children":2766},{"style":881},[2767],{"type":61,"value":2768}," Step 5: Initialize (pa app init)\n",{"type":52,"tag":202,"props":2770,"children":2771},{"class":204,"line":2158},[2772,2776,2780,2784,2788],{"type":52,"tag":202,"props":2773,"children":2774},{"style":850},[2775],{"type":61,"value":2559},{"type":52,"tag":202,"props":2777,"children":2778},{"style":850},[2779],{"type":61,"value":2705},{"type":52,"tag":202,"props":2781,"children":2782},{"style":215},[2783],{"type":61,"value":2710},{"type":52,"tag":202,"props":2785,"children":2786},{"style":850},[2787],{"type":61,"value":2715},{"type":52,"tag":202,"props":2789,"children":2790},{"style":881},[2791],{"type":61,"value":2792}," Step 6: Baseline deploy\n",{"type":52,"tag":202,"props":2794,"children":2795},{"class":204,"line":2167},[2796,2800,2804,2808,2812],{"type":52,"tag":202,"props":2797,"children":2798},{"style":850},[2799],{"type":61,"value":2559},{"type":52,"tag":202,"props":2801,"children":2802},{"style":850},[2803],{"type":61,"value":2705},{"type":52,"tag":202,"props":2805,"children":2806},{"style":215},[2807],{"type":61,"value":2710},{"type":52,"tag":202,"props":2809,"children":2810},{"style":850},[2811],{"type":61,"value":2715},{"type":52,"tag":202,"props":2813,"children":2814},{"style":881},[2815],{"type":61,"value":2816}," Step 7: Add Dataverse (cr123_task)\n",{"type":52,"tag":202,"props":2818,"children":2819},{"class":204,"line":2175},[2820,2824,2828,2832,2836],{"type":52,"tag":202,"props":2821,"children":2822},{"style":850},[2823],{"type":61,"value":2559},{"type":52,"tag":202,"props":2825,"children":2826},{"style":850},[2827],{"type":61,"value":2705},{"type":52,"tag":202,"props":2829,"children":2830},{"style":215},[2831],{"type":61,"value":2710},{"type":52,"tag":202,"props":2833,"children":2834},{"style":850},[2835],{"type":61,"value":2715},{"type":52,"tag":202,"props":2837,"children":2838},{"style":881},[2839],{"type":61,"value":2840}," Step 8: Implement app (TaskList, AddTaskForm)\n",{"type":52,"tag":202,"props":2842,"children":2843},{"class":204,"line":2184},[2844,2848,2852,2856,2860],{"type":52,"tag":202,"props":2845,"children":2846},{"style":850},[2847],{"type":61,"value":2559},{"type":52,"tag":202,"props":2849,"children":2850},{"style":850},[2851],{"type":61,"value":2705},{"type":52,"tag":202,"props":2853,"children":2854},{"style":215},[2855],{"type":61,"value":2710},{"type":52,"tag":202,"props":2857,"children":2858},{"style":850},[2859],{"type":61,"value":2715},{"type":52,"tag":202,"props":2861,"children":2862},{"style":881},[2863],{"type":61,"value":2864}," Step 9: Final deploy\n",{"type":52,"tag":202,"props":2866,"children":2867},{"class":204,"line":2226},[2868],{"type":52,"tag":202,"props":2869,"children":2870},{"emptyLinePlaceholder":45},[2871],{"type":61,"value":1977},{"type":52,"tag":202,"props":2873,"children":2874},{"class":204,"line":2248},[2875,2879],{"type":52,"tag":202,"props":2876,"children":2877},{"style":850},[2878],{"type":61,"value":2539},{"type":52,"tag":202,"props":2880,"children":2881},{"style":209},[2882],{"type":61,"value":2883},"Data Sources\n",{"type":52,"tag":202,"props":2885,"children":2886},{"class":204,"line":2256},[2887],{"type":52,"tag":202,"props":2888,"children":2889},{"emptyLinePlaceholder":45},[2890],{"type":61,"value":1977},{"type":52,"tag":202,"props":2892,"children":2893},{"class":204,"line":2265},[2894,2898],{"type":52,"tag":202,"props":2895,"children":2896},{"style":850},[2897],{"type":61,"value":2559},{"type":52,"tag":202,"props":2899,"children":2900},{"style":881},[2901],{"type":61,"value":2902}," Dataverse: cr123_task (Title, Description, DueDate, IsComplete)\n",{"type":52,"tag":202,"props":2904,"children":2905},{"class":204,"line":2281},[2906],{"type":52,"tag":202,"props":2907,"children":2908},{"emptyLinePlaceholder":45},[2909],{"type":61,"value":1977},{"type":52,"tag":202,"props":2911,"children":2913},{"class":204,"line":2912},24,[2914,2918],{"type":52,"tag":202,"props":2915,"children":2916},{"style":850},[2917],{"type":61,"value":2539},{"type":52,"tag":202,"props":2919,"children":2920},{"style":209},[2921],{"type":61,"value":2922},"Components\n",{"type":52,"tag":202,"props":2924,"children":2926},{"class":204,"line":2925},25,[2927],{"type":52,"tag":202,"props":2928,"children":2929},{"emptyLinePlaceholder":45},[2930],{"type":61,"value":1977},{"type":52,"tag":202,"props":2932,"children":2934},{"class":204,"line":2933},26,[2935,2939],{"type":52,"tag":202,"props":2936,"children":2937},{"style":850},[2938],{"type":61,"value":2559},{"type":52,"tag":202,"props":2940,"children":2941},{"style":881},[2942],{"type":61,"value":2943}," TaskList.tsx — filtered list, mark complete, delete\n",{"type":52,"tag":202,"props":2945,"children":2947},{"class":204,"line":2946},27,[2948,2952],{"type":52,"tag":202,"props":2949,"children":2950},{"style":850},[2951],{"type":61,"value":2559},{"type":52,"tag":202,"props":2953,"children":2954},{"style":881},[2955],{"type":61,"value":2956}," AddTaskForm.tsx — create new tasks\n",{"type":52,"tag":202,"props":2958,"children":2960},{"class":204,"line":2959},28,[2961],{"type":52,"tag":202,"props":2962,"children":2963},{"emptyLinePlaceholder":45},[2964],{"type":61,"value":1977},{"type":52,"tag":202,"props":2966,"children":2968},{"class":204,"line":2967},29,[2969,2973],{"type":52,"tag":202,"props":2970,"children":2971},{"style":850},[2972],{"type":61,"value":2539},{"type":52,"tag":202,"props":2974,"children":2975},{"style":209},[2976],{"type":61,"value":2977},"Next Steps\n",{"type":52,"tag":202,"props":2979,"children":2981},{"class":204,"line":2980},30,[2982],{"type":52,"tag":202,"props":2983,"children":2984},{"emptyLinePlaceholder":45},[2985],{"type":61,"value":1977},{"type":52,"tag":202,"props":2987,"children":2989},{"class":204,"line":2988},31,[2990,2994],{"type":52,"tag":202,"props":2991,"children":2992},{"style":850},[2993],{"type":61,"value":2559},{"type":52,"tag":202,"props":2995,"children":2996},{"style":881},[2997],{"type":61,"value":2998}," Consider \u002Fadd-teams for task assignment notifications\n",{"type":52,"tag":131,"props":3000,"children":3001},{},[],{"type":52,"tag":135,"props":3003,"children":3005},{"id":3004},"example-2-add-sharepoint-connector-to-an-existing-app",[3006],{"type":61,"value":3007},"Example 2: Add SharePoint Connector to an Existing App",{"type":52,"tag":53,"props":3009,"children":3010},{},[3011],{"type":52,"tag":57,"props":3012,"children":3013},{},[3014],{"type":61,"value":1922},{"type":52,"tag":336,"props":3016,"children":3017},{},[3018],{"type":52,"tag":53,"props":3019,"children":3020},{},[3021],{"type":61,"value":3022},"\"My app already exists. Add SharePoint so I can read items from a list called 'Project Milestones'.\"",{"type":52,"tag":53,"props":3024,"children":3025},{},[3026],{"type":52,"tag":57,"props":3027,"children":3028},{},[3029],{"type":61,"value":1938},{"type":52,"tag":191,"props":3031,"children":3033},{"className":193,"code":3032,"language":195,"meta":196,"style":196},"# Step 6: Get connection ID (via \u002Flist-connections)\npa connection list\n# → ConnectionId: conn-sp-xyz789  (SharePoint Online)\n\n# Step 7: Discover sites\npa connector list-datasets --connector sharepointonline -c conn-sp-xyz789\n# → https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\n\n# Step 8: Discover tables\npa connector list-tables --connector sharepointonline -c conn-sp-xyz789 -d 'https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects'\n# → Project Milestones, Documents, Team Wiki\n\n# Step 9: Add connector\npa app add data-source --connector sharepointonline -c conn-sp-xyz789 -d 'https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects' --table 'Project Milestones'\n\n# Step 11: Build to verify\nnpm run build   # → success\n",[3034],{"type":52,"tag":147,"props":3035,"children":3036},{"__ignoreMap":196},[3037,3045,3062,3070,3077,3085,3121,3129,3136,3144,3196,3204,3211,3219,3287,3294,3302],{"type":52,"tag":202,"props":3038,"children":3039},{"class":204,"line":205},[3040],{"type":52,"tag":202,"props":3041,"children":3042},{"style":221},[3043],{"type":61,"value":3044},"# Step 6: Get connection ID (via \u002Flist-connections)\n",{"type":52,"tag":202,"props":3046,"children":3047},{"class":204,"line":227},[3048,3052,3057],{"type":52,"tag":202,"props":3049,"children":3050},{"style":209},[3051],{"type":61,"value":777},{"type":52,"tag":202,"props":3053,"children":3054},{"style":215},[3055],{"type":61,"value":3056}," connection",{"type":52,"tag":202,"props":3058,"children":3059},{"style":215},[3060],{"type":61,"value":3061}," list\n",{"type":52,"tag":202,"props":3063,"children":3064},{"class":204,"line":638},[3065],{"type":52,"tag":202,"props":3066,"children":3067},{"style":221},[3068],{"type":61,"value":3069},"# → ConnectionId: conn-sp-xyz789  (SharePoint Online)\n",{"type":52,"tag":202,"props":3071,"children":3072},{"class":204,"line":1980},[3073],{"type":52,"tag":202,"props":3074,"children":3075},{"emptyLinePlaceholder":45},[3076],{"type":61,"value":1977},{"type":52,"tag":202,"props":3078,"children":3079},{"class":204,"line":1989},[3080],{"type":52,"tag":202,"props":3081,"children":3082},{"style":221},[3083],{"type":61,"value":3084},"# Step 7: Discover sites\n",{"type":52,"tag":202,"props":3086,"children":3087},{"class":204,"line":2014},[3088,3092,3097,3102,3106,3111,3116],{"type":52,"tag":202,"props":3089,"children":3090},{"style":209},[3091],{"type":61,"value":777},{"type":52,"tag":202,"props":3093,"children":3094},{"style":215},[3095],{"type":61,"value":3096}," connector",{"type":52,"tag":202,"props":3098,"children":3099},{"style":215},[3100],{"type":61,"value":3101}," list-datasets",{"type":52,"tag":202,"props":3103,"children":3104},{"style":215},[3105],{"type":61,"value":2208},{"type":52,"tag":202,"props":3107,"children":3108},{"style":215},[3109],{"type":61,"value":3110}," sharepointonline",{"type":52,"tag":202,"props":3112,"children":3113},{"style":215},[3114],{"type":61,"value":3115}," -c",{"type":52,"tag":202,"props":3117,"children":3118},{"style":215},[3119],{"type":61,"value":3120}," conn-sp-xyz789\n",{"type":52,"tag":202,"props":3122,"children":3123},{"class":204,"line":2027},[3124],{"type":52,"tag":202,"props":3125,"children":3126},{"style":221},[3127],{"type":61,"value":3128},"# → https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\n",{"type":52,"tag":202,"props":3130,"children":3131},{"class":204,"line":2039},[3132],{"type":52,"tag":202,"props":3133,"children":3134},{"emptyLinePlaceholder":45},[3135],{"type":61,"value":1977},{"type":52,"tag":202,"props":3137,"children":3138},{"class":204,"line":2047},[3139],{"type":52,"tag":202,"props":3140,"children":3141},{"style":221},[3142],{"type":61,"value":3143},"# Step 8: Discover tables\n",{"type":52,"tag":202,"props":3145,"children":3146},{"class":204,"line":2056},[3147,3151,3155,3160,3164,3168,3172,3177,3182,3186,3191],{"type":52,"tag":202,"props":3148,"children":3149},{"style":209},[3150],{"type":61,"value":777},{"type":52,"tag":202,"props":3152,"children":3153},{"style":215},[3154],{"type":61,"value":3096},{"type":52,"tag":202,"props":3156,"children":3157},{"style":215},[3158],{"type":61,"value":3159}," list-tables",{"type":52,"tag":202,"props":3161,"children":3162},{"style":215},[3163],{"type":61,"value":2208},{"type":52,"tag":202,"props":3165,"children":3166},{"style":215},[3167],{"type":61,"value":3110},{"type":52,"tag":202,"props":3169,"children":3170},{"style":215},[3171],{"type":61,"value":3115},{"type":52,"tag":202,"props":3173,"children":3174},{"style":215},[3175],{"type":61,"value":3176}," conn-sp-xyz789",{"type":52,"tag":202,"props":3178,"children":3179},{"style":215},[3180],{"type":61,"value":3181}," -d",{"type":52,"tag":202,"props":3183,"children":3184},{"style":850},[3185],{"type":61,"value":853},{"type":52,"tag":202,"props":3187,"children":3188},{"style":215},[3189],{"type":61,"value":3190},"https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects",{"type":52,"tag":202,"props":3192,"children":3193},{"style":850},[3194],{"type":61,"value":3195},"'\n",{"type":52,"tag":202,"props":3197,"children":3198},{"class":204,"line":2109},[3199],{"type":52,"tag":202,"props":3200,"children":3201},{"style":221},[3202],{"type":61,"value":3203},"# → Project Milestones, Documents, Team Wiki\n",{"type":52,"tag":202,"props":3205,"children":3206},{"class":204,"line":2117},[3207],{"type":52,"tag":202,"props":3208,"children":3209},{"emptyLinePlaceholder":45},[3210],{"type":61,"value":1977},{"type":52,"tag":202,"props":3212,"children":3213},{"class":204,"line":2126},[3214],{"type":52,"tag":202,"props":3215,"children":3216},{"style":221},[3217],{"type":61,"value":3218},"# Step 9: Add connector\n",{"type":52,"tag":202,"props":3220,"children":3221},{"class":204,"line":2142},[3222,3226,3230,3234,3238,3242,3246,3250,3254,3258,3262,3266,3270,3274,3278,3283],{"type":52,"tag":202,"props":3223,"children":3224},{"style":209},[3225],{"type":61,"value":777},{"type":52,"tag":202,"props":3227,"children":3228},{"style":215},[3229],{"type":61,"value":837},{"type":52,"tag":202,"props":3231,"children":3232},{"style":215},[3233],{"type":61,"value":2198},{"type":52,"tag":202,"props":3235,"children":3236},{"style":215},[3237],{"type":61,"value":2203},{"type":52,"tag":202,"props":3239,"children":3240},{"style":215},[3241],{"type":61,"value":2208},{"type":52,"tag":202,"props":3243,"children":3244},{"style":215},[3245],{"type":61,"value":3110},{"type":52,"tag":202,"props":3247,"children":3248},{"style":215},[3249],{"type":61,"value":3115},{"type":52,"tag":202,"props":3251,"children":3252},{"style":215},[3253],{"type":61,"value":3176},{"type":52,"tag":202,"props":3255,"children":3256},{"style":215},[3257],{"type":61,"value":3181},{"type":52,"tag":202,"props":3259,"children":3260},{"style":850},[3261],{"type":61,"value":853},{"type":52,"tag":202,"props":3263,"children":3264},{"style":215},[3265],{"type":61,"value":3190},{"type":52,"tag":202,"props":3267,"children":3268},{"style":850},[3269],{"type":61,"value":863},{"type":52,"tag":202,"props":3271,"children":3272},{"style":215},[3273],{"type":61,"value":2218},{"type":52,"tag":202,"props":3275,"children":3276},{"style":850},[3277],{"type":61,"value":853},{"type":52,"tag":202,"props":3279,"children":3280},{"style":215},[3281],{"type":61,"value":3282},"Project Milestones",{"type":52,"tag":202,"props":3284,"children":3285},{"style":850},[3286],{"type":61,"value":3195},{"type":52,"tag":202,"props":3288,"children":3289},{"class":204,"line":2158},[3290],{"type":52,"tag":202,"props":3291,"children":3292},{"emptyLinePlaceholder":45},[3293],{"type":61,"value":1977},{"type":52,"tag":202,"props":3295,"children":3296},{"class":204,"line":2167},[3297],{"type":52,"tag":202,"props":3298,"children":3299},{"style":221},[3300],{"type":61,"value":3301},"# Step 11: Build to verify\n",{"type":52,"tag":202,"props":3303,"children":3304},{"class":204,"line":2175},[3305,3309,3313,3317],{"type":52,"tag":202,"props":3306,"children":3307},{"style":209},[3308],{"type":61,"value":644},{"type":52,"tag":202,"props":3310,"children":3311},{"style":215},[3312],{"type":61,"value":1067},{"type":52,"tag":202,"props":3314,"children":3315},{"style":215},[3316],{"type":61,"value":2240},{"type":52,"tag":202,"props":3318,"children":3319},{"style":221},[3320],{"type":61,"value":3321},"   # → success\n",{"type":52,"tag":53,"props":3323,"children":3324},{},[3325],{"type":52,"tag":57,"props":3326,"children":3327},{},[3328],{"type":61,"value":2302},{"type":52,"tag":1264,"props":3330,"children":3331},{},[3332,3346],{"type":52,"tag":1268,"props":3333,"children":3334},{},[3335],{"type":52,"tag":1272,"props":3336,"children":3337},{},[3338,3342],{"type":52,"tag":1276,"props":3339,"children":3340},{},[3341],{"type":61,"value":2316},{"type":52,"tag":1276,"props":3343,"children":3344},{},[3345],{"type":61,"value":2321},{"type":52,"tag":1287,"props":3347,"children":3348},{},[3349,3381,3398,3415],{"type":52,"tag":1272,"props":3350,"children":3351},{},[3352,3361],{"type":52,"tag":1294,"props":3353,"children":3354},{},[3355],{"type":52,"tag":147,"props":3356,"children":3358},{"className":3357},[],[3359],{"type":61,"value":3360},"src\u002Fgenerated\u002Fservices\u002FSharePointOnlineService.ts",{"type":52,"tag":1294,"props":3362,"children":3363},{},[3364,3366,3372,3373,3379],{"type":61,"value":3365},"Generated — contains ",{"type":52,"tag":147,"props":3367,"children":3369},{"className":3368},[],[3370],{"type":61,"value":3371},"GetItems",{"type":61,"value":1560},{"type":52,"tag":147,"props":3374,"children":3376},{"className":3375},[],[3377],{"type":61,"value":3378},"PostItem",{"type":61,"value":3380},", etc.",{"type":52,"tag":1272,"props":3382,"children":3383},{},[3384,3393],{"type":52,"tag":1294,"props":3385,"children":3386},{},[3387],{"type":52,"tag":147,"props":3388,"children":3390},{"className":3389},[],[3391],{"type":61,"value":3392},"src\u002Fgenerated\u002Fmodels\u002FSharePointOnlineModel.ts",{"type":52,"tag":1294,"props":3394,"children":3395},{},[3396],{"type":61,"value":3397},"Generated — TypeScript interfaces",{"type":52,"tag":1272,"props":3399,"children":3400},{},[3401,3410],{"type":52,"tag":1294,"props":3402,"children":3403},{},[3404],{"type":52,"tag":147,"props":3405,"children":3407},{"className":3406},[],[3408],{"type":61,"value":3409},".power\u002Fschemas\u002Fsharepointonline\u002F",{"type":52,"tag":1294,"props":3411,"children":3412},{},[3413],{"type":61,"value":3414},"Generated schema files",{"type":52,"tag":1272,"props":3416,"children":3417},{},[3418,3426],{"type":52,"tag":1294,"props":3419,"children":3420},{},[3421],{"type":52,"tag":147,"props":3422,"children":3424},{"className":3423},[],[3425],{"type":61,"value":152},{"type":52,"tag":1294,"props":3427,"children":3428},{},[3429],{"type":61,"value":3430},"Updated — connector recorded",{"type":52,"tag":53,"props":3432,"children":3433},{},[3434],{"type":52,"tag":57,"props":3435,"children":3436},{},[3437],{"type":61,"value":2477},{"type":52,"tag":191,"props":3439,"children":3442},{"className":3440,"code":3441,"language":61},[2481],"SharePoint Online connector added.\n\nConnector: SharePoint Online\nSite: https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\nList: Project Milestones\nBuild: Passed ✓\n\nUsage:\n  const result = await SharePointOnlineService.GetItems({\n    dataset: \"https:\u002F\u002Fcontoso.sharepoint.com\u002Fsites\u002FProjects\",\n    table: \"Project Milestones\"\n  });\n  const milestones = result.data?.value || [];\n\nNext: Implement your UI components using the generated service, then run \u002Fdeploy when ready.\n",[3443],{"type":52,"tag":147,"props":3444,"children":3445},{"__ignoreMap":196},[3446],{"type":61,"value":3441},{"type":52,"tag":3448,"props":3449,"children":3450},"style",{},[3451],{"type":61,"value":3452},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3454,"total":2933},[3455,3466,3479,3489,3504,3517,3533],{"slug":3456,"name":3456,"fn":3457,"description":3458,"org":3459,"tags":3460,"stars":26,"repoUrl":27,"updatedAt":3465},"activate-site","provision and activate Power Pages sites","Activates and provisions a Power Pages website in a Power Platform environment via the Power Platform REST API. Use when the user wants to activate, provision, turn on, or enable a Power Pages website or portal.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3461,3462,3463],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":3464,"slug":36,"type":15},"Power Pages","2026-04-06T18:34:34.732549",{"slug":3467,"name":3467,"fn":3468,"description":3469,"org":3470,"tags":3471,"stars":26,"repoUrl":27,"updatedAt":3478},"add-connector","add Power Platform connectors to apps","Adds any Power Platform connector to a Power Apps code app. Generic fallback for connectors not covered by a specific skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3472,3475,3476],{"name":3473,"slug":3474,"type":15},"Integrations","integrations",{"name":21,"slug":22,"type":15},{"name":3477,"slug":37,"type":15},"Power Platform","2026-07-31T05:54:47.042251",{"slug":3480,"name":3480,"fn":3481,"description":3482,"org":3483,"tags":3484,"stars":26,"repoUrl":27,"updatedAt":3488},"add-datasource","add data sources to Power Apps","Adds a data source or connector to a Power Apps code app. Asks what the user wants to accomplish and routes to the appropriate specialized skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3485,3486,3487],{"name":3473,"slug":3474,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-03T16:31:47.822186",{"slug":3490,"name":3490,"fn":3491,"description":3492,"org":3493,"tags":3494,"stars":26,"repoUrl":27,"updatedAt":3503},"add-dataverse","add Dataverse tables to Power Apps","Use when the user wants to add Dataverse tables (existing or new) to a Power Apps mobile app, extend an existing Dataverse table with new columns, or apply an approved data model plan.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3495,3498,3501,3502],{"name":3496,"slug":3497,"type":15},"Data Modeling","data-modeling",{"name":3499,"slug":3500,"type":15},"Dataverse","dataverse",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-31T05:54:46.078014",{"slug":3505,"name":3505,"fn":3506,"description":3507,"org":3508,"tags":3509,"stars":26,"repoUrl":27,"updatedAt":3516},"add-excel","integrate Excel Online into Power Apps","Adds Excel Online (Business) connector to a Power Apps code app. Use when reading or writing Excel workbook data from OneDrive or SharePoint.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3510,3513,3514,3515],{"name":3511,"slug":3512,"type":15},"Excel","excel",{"name":3473,"slug":3474,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-31T05:54:44.030943",{"slug":3518,"name":3518,"fn":3519,"description":3520,"org":3521,"tags":3522,"stars":26,"repoUrl":27,"updatedAt":3532},"add-mcscopilot","add Copilot Studio connectors to Power Apps","Adds Microsoft Copilot Studio connector to a Power Apps code app. Use when invoking Copilot Studio agents, sending prompts to agents, or integrating agent responses.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3523,3526,3529,3530,3531],{"name":3524,"slug":3525,"type":15},"Agents","agents",{"name":3527,"slug":3528,"type":15},"Copilot Studio","copilot-studio",{"name":3473,"slug":3474,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-31T05:54:39.025597",{"slug":3534,"name":3534,"fn":3535,"description":3536,"org":3537,"tags":3538,"stars":26,"repoUrl":27,"updatedAt":3548},"add-sample-data","populate Power Pages tables with sample data","Populates Dataverse tables with sample records for testing and demoing a Power Pages site. Use when the user wants to add sample data, seed data, generate test records, or insert demo data into their tables.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3539,3542,3543,3544,3545],{"name":3540,"slug":3541,"type":15},"Database","database",{"name":3499,"slug":3500,"type":15},{"name":9,"slug":8,"type":15},{"name":3464,"slug":36,"type":15},{"name":3546,"slug":3547,"type":15},"Testing","testing","2026-04-06T18:34:41.141155",{"items":3550,"total":3741},[3551,3573,3592,3613,3628,3645,3656,3669,3684,3699,3716,3729],{"slug":3552,"name":3552,"fn":3553,"description":3554,"org":3555,"tags":3556,"stars":3570,"repoUrl":3571,"updatedAt":3572},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3557,3560,3563,3564,3567],{"name":3558,"slug":3559,"type":15},"Engineering","engineering",{"name":3561,"slug":3562,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":3565,"slug":3566,"type":15},"Project Management","project-management",{"name":3568,"slug":3569,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":3574,"name":3574,"fn":3575,"description":3576,"org":3577,"tags":3578,"stars":3589,"repoUrl":3590,"updatedAt":3591},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3579,3582,3583,3586],{"name":3580,"slug":3581,"type":15},".NET","net",{"name":3524,"slug":3525,"type":15},{"name":3584,"slug":3585,"type":15},"Azure","azure",{"name":3587,"slug":3588,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":3593,"name":3593,"fn":3594,"description":3595,"org":3596,"tags":3597,"stars":3589,"repoUrl":3590,"updatedAt":3612},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3598,3601,3602,3605,3608,3609],{"name":3599,"slug":3600,"type":15},"Analytics","analytics",{"name":3584,"slug":3585,"type":15},{"name":3603,"slug":3604,"type":15},"Data Analysis","data-analysis",{"name":3606,"slug":3607,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":3610,"slug":3611,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":3614,"name":3614,"fn":3615,"description":3616,"org":3617,"tags":3618,"stars":3589,"repoUrl":3590,"updatedAt":3627},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3619,3622,3623,3624],{"name":3620,"slug":3621,"type":15},"AI Infrastructure","ai-infrastructure",{"name":3584,"slug":3585,"type":15},{"name":3606,"slug":3607,"type":15},{"name":3625,"slug":3626,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":3629,"name":3629,"fn":3630,"description":3631,"org":3632,"tags":3633,"stars":3589,"repoUrl":3590,"updatedAt":3644},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3634,3635,3638,3639,3640,3643],{"name":3584,"slug":3585,"type":15},{"name":3636,"slug":3637,"type":15},"Compliance","compliance",{"name":3587,"slug":3588,"type":15},{"name":9,"slug":8,"type":15},{"name":3641,"slug":3642,"type":15},"Python","python",{"name":3625,"slug":3626,"type":15},"2026-07-18T05:14:23.017504",{"slug":3646,"name":3646,"fn":3647,"description":3648,"org":3649,"tags":3650,"stars":3589,"repoUrl":3590,"updatedAt":3655},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3651,3652,3653,3654],{"name":3599,"slug":3600,"type":15},{"name":3584,"slug":3585,"type":15},{"name":3587,"slug":3588,"type":15},{"name":3641,"slug":3642,"type":15},"2026-07-31T05:54:29.068751",{"slug":3657,"name":3657,"fn":3658,"description":3659,"org":3660,"tags":3661,"stars":3589,"repoUrl":3590,"updatedAt":3668},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3662,3665,3666,3667],{"name":3663,"slug":3664,"type":15},"API Development","api-development",{"name":3584,"slug":3585,"type":15},{"name":9,"slug":8,"type":15},{"name":3641,"slug":3642,"type":15},"2026-07-18T05:14:16.988376",{"slug":3670,"name":3670,"fn":3671,"description":3672,"org":3673,"tags":3674,"stars":3589,"repoUrl":3590,"updatedAt":3683},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3675,3676,3679,3682],{"name":3584,"slug":3585,"type":15},{"name":3677,"slug":3678,"type":15},"Computer Vision","computer-vision",{"name":3680,"slug":3681,"type":15},"Images","images",{"name":3641,"slug":3642,"type":15},"2026-07-18T05:14:18.007737",{"slug":3685,"name":3685,"fn":3686,"description":3687,"org":3688,"tags":3689,"stars":3589,"repoUrl":3590,"updatedAt":3698},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3690,3691,3694,3697],{"name":3584,"slug":3585,"type":15},{"name":3692,"slug":3693,"type":15},"Configuration","configuration",{"name":3695,"slug":3696,"type":15},"Feature Flags","feature-flags",{"name":3606,"slug":3607,"type":15},"2026-07-03T16:32:01.278468",{"slug":3700,"name":3700,"fn":3701,"description":3702,"org":3703,"tags":3704,"stars":3589,"repoUrl":3590,"updatedAt":3715},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3705,3708,3709,3712],{"name":3706,"slug":3707,"type":15},"Cosmos DB","cosmos-db",{"name":3540,"slug":3541,"type":15},{"name":3710,"slug":3711,"type":15},"NoSQL","nosql",{"name":3713,"slug":3714,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":3717,"name":3717,"fn":3701,"description":3718,"org":3719,"tags":3720,"stars":3589,"repoUrl":3590,"updatedAt":3728},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3721,3722,3723,3724,3725],{"name":3706,"slug":3707,"type":15},{"name":3540,"slug":3541,"type":15},{"name":9,"slug":8,"type":15},{"name":3710,"slug":3711,"type":15},{"name":3726,"slug":3727,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":3730,"name":3730,"fn":3731,"description":3732,"org":3733,"tags":3734,"stars":3589,"repoUrl":3590,"updatedAt":3740},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3735,3736,3737,3738,3739],{"name":3584,"slug":3585,"type":15},{"name":3706,"slug":3707,"type":15},{"name":3540,"slug":3541,"type":15},{"name":3606,"slug":3607,"type":15},{"name":3710,"slug":3711,"type":15},"2026-05-13T06:14:17.582229",267]