[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-add-sample-data":3,"mdc--gr5ugp-key":43,"related-repo-microsoft-add-sample-data":1813,"related-org-microsoft-add-sample-data":1902},{"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},"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},"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},"Power Pages","power-pages","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Database","database",{"name":21,"slug":22,"type":15},"Dataverse","dataverse",{"name":24,"slug":25,"type":15},"Testing","testing",564,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills","2026-04-06T18:34:41.141155",null,114,[32,33,34,35,36,14,37],"claude-code-plugin","claude-code-skills","code-apps","github-copilot-plugin","power-apps","power-platform",{"repoUrl":27,"stars":26,"forks":30,"topics":39,"description":40},[32,33,34,35,36,14,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\u002Fpower-pages\u002Fskills\u002Fadd-sample-data","---\nname: add-sample-data\ndescription: >-\n  Populates Dataverse tables with sample records for testing and demoing a Power Pages site.\n  Use when the user wants to add sample data, seed data, generate test records, or insert\n  demo data into their tables.\nuser-invocable: true\nallowed-tools: Read, Write, Bash, Grep, Glob, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, mcp__plugin_power-pages_microsoft-learn__microsoft_docs_search, mcp__plugin_power-pages_microsoft-learn__microsoft_code_sample_search, mcp__plugin_power-pages_microsoft-learn__microsoft_docs_fetch\nmodel: sonnet\n---\n\n> **Plugin check**: Run `node \"${PLUGIN_ROOT}\u002Fscripts\u002Fcheck-version.js\"` — if it outputs a message, show it to the user before proceeding.\n\n# Add Sample Data\n\nPopulate Dataverse tables with sample records via OData API so users can test and demo their Power Pages sites.\n\n## Core Principles\n\n- **Respect insertion order**: Always insert parent\u002Freferenced tables before child\u002Freferencing tables so lookup IDs are available when needed.\n- **Use TaskCreate\u002FTaskUpdate**: Track all progress throughout all phases -- create the todo list upfront with all phases before starting any work.\n- **Fail gracefully**: On insertion failure, log the error and continue with remaining records -- never attempt automated rollback.\n\n**Initial request:** $ARGUMENTS\n\n---\n\n## Phase 1: Verify Prerequisites\n\n**Goal**: Confirm PAC CLI auth, acquire an Azure CLI token, and verify API access\n\n**Actions**:\n\n1. Create todo list with all 6 phases (see [Progress Tracking](#progress-tracking) table)\n2. Follow the prerequisite steps in `${PLUGIN_ROOT}\u002Freferences\u002Fdataverse-prerequisites.md` to verify PAC CLI auth, acquire an Azure CLI token, and confirm API access. Note the environment URL as `\u003CenvUrl>` for subsequent script calls.\n\n**Output**: Authenticated session with valid token and confirmed API access\n\n---\n\n## Phase 2: Discover Tables\n\n**Goal**: Find the custom tables available in the user's Dataverse environment\n\n**Actions**:\n\n### Path A: Read `.datamodel-manifest.json` (Preferred)\n\nCheck if `.datamodel-manifest.json` exists in the project root (written by the `setup-datamodel` skill). If it exists, read it -- it already contains table logical names, display names, and column info.\n\nSee `${PLUGIN_ROOT}\u002Freferences\u002Fdatamodel-manifest-schema.md` for the full manifest schema.\n\n### Path B: Query OData API (Fallback)\n\nIf no manifest exists, discover custom tables via OData:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions?\\$select=LogicalName,DisplayName,EntitySetName&\\$filter=IsCustomEntity eq true\"\n```\n\nFor each discovered table, fetch its custom columns:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions(LogicalName='\u003Ctable>')\u002FAttributes?\\$select=LogicalName,DisplayName,AttributeType,RequiredLevel&\\$filter=IsCustomAttribute eq true\"\n```\n\n### 2.1 Present Available Tables\n\nShow the user the list of discovered tables with their columns so they can choose which to populate.\n\n**Output**: List of discovered tables with their columns presented to the user\n\n---\n\n## Phase 3: Select Tables & Configure\n\n**Goal**: Gather user preferences on which tables to populate and how many records to create\n\n**Actions**:\n\n### 3.1 Select Tables\n\n\u003C!-- gate: add-sample-data:3.1.tables | category=plan | cancel-leaves=nothing -->\n\n> 🚦 **Gate (plan · add-sample-data:3.1.tables):** Multi-select over discovered tables — decides which tables get populated with sample data.\n>\n> **Trigger:** Phase 2 discovery completed.\n> **Why we ask:** Auto-selecting all tables can pollute production-shape tables (e.g. `contact`) with throwaway records.\n> **Cancel leaves:** Nothing — no record inserts yet.\n\nUse `AskUserQuestion` to ask which tables they want to populate (use `multiSelect: true`). List all discovered tables as options.\n\n### 3.2 Select Record Count\n\n\u003C!-- gate: add-sample-data:3.2.count | category=plan | cancel-leaves=nothing -->\n\n> 🚦 **Gate (plan · add-sample-data:3.2.count):** Pick records-per-table (5 \u002F 10 \u002F 25 \u002F Custom). Custom branch is a follow-up free-text prompt under the same gate.\n>\n> **Trigger:** Tables selected in 3.1.\n> **Why we ask:** Inserting hundreds of records can blow past Dataverse storage \u002F API throttling budgets.\n> **Cancel leaves:** Nothing — no record inserts yet.\n\nUse `AskUserQuestion` to ask how many sample records per table:\n\n| Option | Description |\n|--------|-------------|\n| **5 records** | Quick test -- just enough to verify the setup |\n| **10 records** | Light demo data for basic testing |\n| **25 records** | Fuller dataset for realistic demos |\n| **Custom** | Let the user specify a number |\n\n### 3.3 Determine Insertion Order\n\nAnalyze relationships between selected tables. Parent\u002Freferenced tables must be inserted first so their IDs are available for child\u002Freferencing table lookups.\n\nBuild the insertion order:\n\n1. Tables with no lookup dependencies (parent tables) -- insert first\n2. Tables that reference already-inserted tables -- insert next\n3. Continue until all tables are ordered\n\n**Output**: Confirmed table selection, record count, and insertion order\n\n---\n\n## Phase 4: Generate & Review Sample Data\n\n**Goal**: Generate contextually appropriate sample records and get user approval before inserting\n\n**Actions**:\n\n### 4.1 Generate Contextual Sample Data\n\nFor each selected table, generate sample records with contextually appropriate values based on column names and types:\n\n- **String columns**: Generate realistic values matching the column name (e.g., \"Email\" -> `jane.doe@example.com`, \"Phone\" -> `(555) 123-4567`, \"Name\" -> realistic names)\n- **Memo columns**: Generate short descriptive text relevant to the column name\n- **Integer\u002FDecimal\u002FCurrency columns**: Generate reasonable numeric values\n- **DateTime columns**: Generate dates within a sensible range (past year to next month)\n- **Boolean columns**: Mix of `true` and `false` values\n- **Picklist\u002FChoice columns**: Query valid options first (see references\u002Fodata-record-patterns.md), then use actual option values\n- **Lookup columns**: Reference records from parent tables that will be\u002Fwere already inserted\n\n### 4.2 Present Sample Data Preview\n\nFor each table, show a markdown table previewing the sample records directly in the conversation:\n\n```markdown\n### Project (cr123_project) -- 5 records\n\n| Name | Description | Status | Start Date |\n|------|-------------|--------|------------|\n| Website Redesign | Modernize the corporate website | 100000000 (Active) | 2025-03-15 |\n| Mobile App | Build iOS and Android app | 100000001 (Planning) | 2025-04-01 |\n| ... | ... | ... | ... |\n```\n\nShow relationship handling: which lookup fields reference which parent table records.\n\n**Output**: Sample data plan ready for insertion. Proceed directly to Phase 5.\n\n---\n\n## Phase 5: Insert Sample Data\n\n**Goal**: Execute OData POST calls to create all approved sample records with correct relationship handling\n\n**Actions**:\n\nRefer to `references\u002Fodata-record-patterns.md` for full patterns.\n\n### 5.1 Get Entity Set Names\n\nFor each table, get the entity set name (needed for the API URL):\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions(LogicalName='\u003Ctable>')?\\$select=EntitySetName\"\n```\n\n### 5.2 Get Picklist Options\n\nFor any picklist\u002Fchoice columns, query valid option values before insertion:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions(LogicalName='\u003Ctable>')\u002FAttributes(LogicalName='\u003Ccolumn>')\u002FMicrosoft.Dynamics.CRM.PicklistAttributeMetadata?\\$expand=OptionSet\"\n```\n\nUse the actual `Value` integers from the option set in your sample data.\n\n### 5.3 Insert Parent Tables First\n\nInsert records into parent\u002Freferenced tables first to capture their IDs:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> POST \"\u003CEntitySetName>\" --body '{\"cr123_name\":\"Sample Record\",\"cr123_description\":\"A sample record for testing\"}' --include-headers\n```\n\nThe `--include-headers` flag includes the `OData-EntityId` response header, which contains the created record ID. Parse the GUID from the response to use in child table lookups.\n\nStore parent record IDs for use in child table lookups.\n\n### 5.4 Insert Child Tables with Lookups\n\nFor child\u002Freferencing tables, use `@odata.bind` syntax to set lookup fields:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> POST \"\u003CChildEntitySetName>\" --body '{\"cr123_name\":\"Child Record\",\"cr123_ParentId@odata.bind\":\"\u002F\u003CParentEntitySetName>(\u003Cparent_guid>)\"}' --include-headers\n```\n\n### 5.5 Track Progress\n\nTrack each insertion attempt:\n\n- Record table name, record number, success\u002Ffailure\n- On failure, log the error message but continue with remaining records\n- Do NOT attempt automated rollback on failure\n\n### 5.6 Refresh Token Periodically\n\nThe `dataverse-request.js` script handles 401 token refresh internally. For long-running operations (many records), periodically re-run `verify-dataverse-access.js` to confirm the session is still valid:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fverify-dataverse-access.js\" \u003CenvUrl>\n```\n\n**Output**: All approved records inserted with parent-child relationships established\n\n---\n\n## Phase 6: Verify & Summarize\n\n**Goal**: Confirm record counts and present a final summary to the user\n\n**Actions**:\n\n### 6.1 Verify Record Counts\n\nFor each table that was populated, query the record count:\n\n```\nnode \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"\u003CEntitySetName>?\\$count=true&\\$top=0\"\n```\n\nThe `@odata.count` field in the response gives the total record count.\n\n### 6.2 Record Skill Usage\n\n> Reference: `${PLUGIN_ROOT}\u002Freferences\u002Fskill-tracking-reference.md`\n\nFollow the skill tracking instructions in the reference to record this skill's usage. Use `--skillName \"AddSampleData\"`.\n\n### 6.3 Present Summary\n\nPresent a summary table:\n\n| Table | Records Requested | Records Created | Failures |\n|-------|-------------------|-----------------|----------|\n| `cr123_project` (Project) | 10 | 10 | 0 |\n| `cr123_task` (Task) | 10 | 9 | 1 |\n\nInclude:\n\n- Total records created across all tables\n- Any failures with error details\n- Lookup relationships that were established\n\n### 6.4 Suggest Next Steps\n\nAfter the summary, suggest:\n\n- Review the data in the Power Pages maker portal or model-driven app\n- If the site is not yet built: `\u002Fcreate-site`\n- If the site is ready to deploy: `\u002Fdeploy-site`\n\n**Output**: Verified record counts and summary presented to the user\n\n---\n\n## Important Notes\n\n### Throughout All Phases\n\n- **Use TaskCreate\u002FTaskUpdate** to track progress at every phase\n- **Ask for user confirmation** at key decision points (see list below)\n- **Respect insertion order** -- always insert parent tables before child tables\n- **Fail gracefully** -- log errors and continue, never rollback automatically\n- **Refresh tokens** every 20 records to avoid expiration\n\n### Key Decision Points (Wait for User)\n\n1. After Phase 2: Confirm which tables to populate\n2. After Phase 3: Confirm record count and insertion order\n3. After Phase 6: Review summary and decide next steps\n\n### Progress Tracking\n\nBefore starting Phase 1, create a task list with all phases using `TaskCreate`:\n\n| Task subject | activeForm | Description |\n|-------------|------------|-------------|\n| Verify prerequisites | Verifying prerequisites | Confirm PAC CLI auth, acquire Azure CLI token, verify API access |\n| Discover tables | Discovering tables | Read .datamodel-manifest.json or query OData API for custom tables |\n| Select tables and configure | Configuring tables | User picks tables, record count, and determine insertion order |\n| Generate and review sample data | Generating sample data | Generate contextual sample records, present preview, get user approval |\n| Insert sample data | Inserting records | Execute OData POST calls with relationship handling and token refresh |\n| Verify and summarize | Verifying results | Confirm record counts, present summary, suggest next steps |\n\nMark each task `in_progress` when starting it and `completed` when done via `TaskUpdate`. This gives the user visibility into progress and keeps the workflow deterministic.\n\n---\n\n**Begin with Phase 1: Verify Prerequisites**\n",{"data":44,"body":48},{"name":4,"description":6,"user-invocable":45,"allowed-tools":46,"model":47},true,"Read, Write, Bash, Grep, Glob, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, mcp__plugin_power-pages_microsoft-learn__microsoft_docs_search, mcp__plugin_power-pages_microsoft-learn__microsoft_code_sample_search, mcp__plugin_power-pages_microsoft-learn__microsoft_docs_fetch","sonnet",{"type":49,"children":50},"root",[51,78,84,89,96,131,141,145,151,161,171,210,220,223,229,238,246,261,281,294,300,305,317,322,331,337,342,351,354,360,369,377,383,430,451,457,491,502,594,600,605,610,628,637,640,646,655,663,669,674,779,785,790,1011,1016,1025,1028,1034,1043,1051,1064,1070,1075,1084,1090,1095,1104,1117,1123,1128,1137,1158,1163,1169,1182,1191,1197,1202,1220,1226,1246,1255,1264,1267,1273,1282,1290,1296,1301,1310,1322,1328,1342,1355,1361,1366,1454,1459,1477,1483,1488,1518,1527,1530,1536,1542,1592,1598,1616,1621,1633,1767,1796,1799,1807],{"type":52,"tag":53,"props":54,"children":55},"element","blockquote",{},[56],{"type":52,"tag":57,"props":58,"children":59},"p",{},[60,67,69,76],{"type":52,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":65,"value":66},"text","Plugin check",{"type":65,"value":68},": Run ",{"type":52,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":65,"value":75},"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fcheck-version.js\"",{"type":65,"value":77}," — if it outputs a message, show it to the user before proceeding.",{"type":52,"tag":79,"props":80,"children":81},"h1",{"id":4},[82],{"type":65,"value":83},"Add Sample Data",{"type":52,"tag":57,"props":85,"children":86},{},[87],{"type":65,"value":88},"Populate Dataverse tables with sample records via OData API so users can test and demo their Power Pages sites.",{"type":52,"tag":90,"props":91,"children":93},"h2",{"id":92},"core-principles",[94],{"type":65,"value":95},"Core Principles",{"type":52,"tag":97,"props":98,"children":99},"ul",{},[100,111,121],{"type":52,"tag":101,"props":102,"children":103},"li",{},[104,109],{"type":52,"tag":61,"props":105,"children":106},{},[107],{"type":65,"value":108},"Respect insertion order",{"type":65,"value":110},": Always insert parent\u002Freferenced tables before child\u002Freferencing tables so lookup IDs are available when needed.",{"type":52,"tag":101,"props":112,"children":113},{},[114,119],{"type":52,"tag":61,"props":115,"children":116},{},[117],{"type":65,"value":118},"Use TaskCreate\u002FTaskUpdate",{"type":65,"value":120},": Track all progress throughout all phases -- create the todo list upfront with all phases before starting any work.",{"type":52,"tag":101,"props":122,"children":123},{},[124,129],{"type":52,"tag":61,"props":125,"children":126},{},[127],{"type":65,"value":128},"Fail gracefully",{"type":65,"value":130},": On insertion failure, log the error and continue with remaining records -- never attempt automated rollback.",{"type":52,"tag":57,"props":132,"children":133},{},[134,139],{"type":52,"tag":61,"props":135,"children":136},{},[137],{"type":65,"value":138},"Initial request:",{"type":65,"value":140}," $ARGUMENTS",{"type":52,"tag":142,"props":143,"children":144},"hr",{},[],{"type":52,"tag":90,"props":146,"children":148},{"id":147},"phase-1-verify-prerequisites",[149],{"type":65,"value":150},"Phase 1: Verify Prerequisites",{"type":52,"tag":57,"props":152,"children":153},{},[154,159],{"type":52,"tag":61,"props":155,"children":156},{},[157],{"type":65,"value":158},"Goal",{"type":65,"value":160},": Confirm PAC CLI auth, acquire an Azure CLI token, and verify API access",{"type":52,"tag":57,"props":162,"children":163},{},[164,169],{"type":52,"tag":61,"props":165,"children":166},{},[167],{"type":65,"value":168},"Actions",{"type":65,"value":170},":",{"type":52,"tag":172,"props":173,"children":174},"ol",{},[175,189],{"type":52,"tag":101,"props":176,"children":177},{},[178,180,187],{"type":65,"value":179},"Create todo list with all 6 phases (see ",{"type":52,"tag":181,"props":182,"children":184},"a",{"href":183},"#progress-tracking",[185],{"type":65,"value":186},"Progress Tracking",{"type":65,"value":188}," table)",{"type":52,"tag":101,"props":190,"children":191},{},[192,194,200,202,208],{"type":65,"value":193},"Follow the prerequisite steps in ",{"type":52,"tag":70,"props":195,"children":197},{"className":196},[],[198],{"type":65,"value":199},"${PLUGIN_ROOT}\u002Freferences\u002Fdataverse-prerequisites.md",{"type":65,"value":201}," to verify PAC CLI auth, acquire an Azure CLI token, and confirm API access. Note the environment URL as ",{"type":52,"tag":70,"props":203,"children":205},{"className":204},[],[206],{"type":65,"value":207},"\u003CenvUrl>",{"type":65,"value":209}," for subsequent script calls.",{"type":52,"tag":57,"props":211,"children":212},{},[213,218],{"type":52,"tag":61,"props":214,"children":215},{},[216],{"type":65,"value":217},"Output",{"type":65,"value":219},": Authenticated session with valid token and confirmed API access",{"type":52,"tag":142,"props":221,"children":222},{},[],{"type":52,"tag":90,"props":224,"children":226},{"id":225},"phase-2-discover-tables",[227],{"type":65,"value":228},"Phase 2: Discover Tables",{"type":52,"tag":57,"props":230,"children":231},{},[232,236],{"type":52,"tag":61,"props":233,"children":234},{},[235],{"type":65,"value":158},{"type":65,"value":237},": Find the custom tables available in the user's Dataverse environment",{"type":52,"tag":57,"props":239,"children":240},{},[241,245],{"type":52,"tag":61,"props":242,"children":243},{},[244],{"type":65,"value":168},{"type":65,"value":170},{"type":52,"tag":247,"props":248,"children":250},"h3",{"id":249},"path-a-read-datamodel-manifestjson-preferred",[251,253,259],{"type":65,"value":252},"Path A: Read ",{"type":52,"tag":70,"props":254,"children":256},{"className":255},[],[257],{"type":65,"value":258},".datamodel-manifest.json",{"type":65,"value":260}," (Preferred)",{"type":52,"tag":57,"props":262,"children":263},{},[264,266,271,273,279],{"type":65,"value":265},"Check if ",{"type":52,"tag":70,"props":267,"children":269},{"className":268},[],[270],{"type":65,"value":258},{"type":65,"value":272}," exists in the project root (written by the ",{"type":52,"tag":70,"props":274,"children":276},{"className":275},[],[277],{"type":65,"value":278},"setup-datamodel",{"type":65,"value":280}," skill). If it exists, read it -- it already contains table logical names, display names, and column info.",{"type":52,"tag":57,"props":282,"children":283},{},[284,286,292],{"type":65,"value":285},"See ",{"type":52,"tag":70,"props":287,"children":289},{"className":288},[],[290],{"type":65,"value":291},"${PLUGIN_ROOT}\u002Freferences\u002Fdatamodel-manifest-schema.md",{"type":65,"value":293}," for the full manifest schema.",{"type":52,"tag":247,"props":295,"children":297},{"id":296},"path-b-query-odata-api-fallback",[298],{"type":65,"value":299},"Path B: Query OData API (Fallback)",{"type":52,"tag":57,"props":301,"children":302},{},[303],{"type":65,"value":304},"If no manifest exists, discover custom tables via OData:",{"type":52,"tag":306,"props":307,"children":311},"pre",{"className":308,"code":310,"language":65},[309],"language-text","node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions?\\$select=LogicalName,DisplayName,EntitySetName&\\$filter=IsCustomEntity eq true\"\n",[312],{"type":52,"tag":70,"props":313,"children":315},{"__ignoreMap":314},"",[316],{"type":65,"value":310},{"type":52,"tag":57,"props":318,"children":319},{},[320],{"type":65,"value":321},"For each discovered table, fetch its custom columns:",{"type":52,"tag":306,"props":323,"children":326},{"className":324,"code":325,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions(LogicalName='\u003Ctable>')\u002FAttributes?\\$select=LogicalName,DisplayName,AttributeType,RequiredLevel&\\$filter=IsCustomAttribute eq true\"\n",[327],{"type":52,"tag":70,"props":328,"children":329},{"__ignoreMap":314},[330],{"type":65,"value":325},{"type":52,"tag":247,"props":332,"children":334},{"id":333},"_21-present-available-tables",[335],{"type":65,"value":336},"2.1 Present Available Tables",{"type":52,"tag":57,"props":338,"children":339},{},[340],{"type":65,"value":341},"Show the user the list of discovered tables with their columns so they can choose which to populate.",{"type":52,"tag":57,"props":343,"children":344},{},[345,349],{"type":52,"tag":61,"props":346,"children":347},{},[348],{"type":65,"value":217},{"type":65,"value":350},": List of discovered tables with their columns presented to the user",{"type":52,"tag":142,"props":352,"children":353},{},[],{"type":52,"tag":90,"props":355,"children":357},{"id":356},"phase-3-select-tables-configure",[358],{"type":65,"value":359},"Phase 3: Select Tables & Configure",{"type":52,"tag":57,"props":361,"children":362},{},[363,367],{"type":52,"tag":61,"props":364,"children":365},{},[366],{"type":65,"value":158},{"type":65,"value":368},": Gather user preferences on which tables to populate and how many records to create",{"type":52,"tag":57,"props":370,"children":371},{},[372,376],{"type":52,"tag":61,"props":373,"children":374},{},[375],{"type":65,"value":168},{"type":65,"value":170},{"type":52,"tag":247,"props":378,"children":380},{"id":379},"_31-select-tables",[381],{"type":65,"value":382},"3.1 Select Tables",{"type":52,"tag":53,"props":384,"children":385},{},[386,398],{"type":52,"tag":57,"props":387,"children":388},{},[389,391,396],{"type":65,"value":390},"🚦 ",{"type":52,"tag":61,"props":392,"children":393},{},[394],{"type":65,"value":395},"Gate (plan · add-sample-data:3.1.tables):",{"type":65,"value":397}," Multi-select over discovered tables — decides which tables get populated with sample data.",{"type":52,"tag":57,"props":399,"children":400},{},[401,406,408,413,415,421,423,428],{"type":52,"tag":61,"props":402,"children":403},{},[404],{"type":65,"value":405},"Trigger:",{"type":65,"value":407}," Phase 2 discovery completed.\n",{"type":52,"tag":61,"props":409,"children":410},{},[411],{"type":65,"value":412},"Why we ask:",{"type":65,"value":414}," Auto-selecting all tables can pollute production-shape tables (e.g. ",{"type":52,"tag":70,"props":416,"children":418},{"className":417},[],[419],{"type":65,"value":420},"contact",{"type":65,"value":422},") with throwaway records.\n",{"type":52,"tag":61,"props":424,"children":425},{},[426],{"type":65,"value":427},"Cancel leaves:",{"type":65,"value":429}," Nothing — no record inserts yet.",{"type":52,"tag":57,"props":431,"children":432},{},[433,435,441,443,449],{"type":65,"value":434},"Use ",{"type":52,"tag":70,"props":436,"children":438},{"className":437},[],[439],{"type":65,"value":440},"AskUserQuestion",{"type":65,"value":442}," to ask which tables they want to populate (use ",{"type":52,"tag":70,"props":444,"children":446},{"className":445},[],[447],{"type":65,"value":448},"multiSelect: true",{"type":65,"value":450},"). List all discovered tables as options.",{"type":52,"tag":247,"props":452,"children":454},{"id":453},"_32-select-record-count",[455],{"type":65,"value":456},"3.2 Select Record Count",{"type":52,"tag":53,"props":458,"children":459},{},[460,471],{"type":52,"tag":57,"props":461,"children":462},{},[463,464,469],{"type":65,"value":390},{"type":52,"tag":61,"props":465,"children":466},{},[467],{"type":65,"value":468},"Gate (plan · add-sample-data:3.2.count):",{"type":65,"value":470}," Pick records-per-table (5 \u002F 10 \u002F 25 \u002F Custom). Custom branch is a follow-up free-text prompt under the same gate.",{"type":52,"tag":57,"props":472,"children":473},{},[474,478,480,484,486,490],{"type":52,"tag":61,"props":475,"children":476},{},[477],{"type":65,"value":405},{"type":65,"value":479}," Tables selected in 3.1.\n",{"type":52,"tag":61,"props":481,"children":482},{},[483],{"type":65,"value":412},{"type":65,"value":485}," Inserting hundreds of records can blow past Dataverse storage \u002F API throttling budgets.\n",{"type":52,"tag":61,"props":487,"children":488},{},[489],{"type":65,"value":427},{"type":65,"value":429},{"type":52,"tag":57,"props":492,"children":493},{},[494,495,500],{"type":65,"value":434},{"type":52,"tag":70,"props":496,"children":498},{"className":497},[],[499],{"type":65,"value":440},{"type":65,"value":501}," to ask how many sample records per table:",{"type":52,"tag":503,"props":504,"children":505},"table",{},[506,525],{"type":52,"tag":507,"props":508,"children":509},"thead",{},[510],{"type":52,"tag":511,"props":512,"children":513},"tr",{},[514,520],{"type":52,"tag":515,"props":516,"children":517},"th",{},[518],{"type":65,"value":519},"Option",{"type":52,"tag":515,"props":521,"children":522},{},[523],{"type":65,"value":524},"Description",{"type":52,"tag":526,"props":527,"children":528},"tbody",{},[529,546,562,578],{"type":52,"tag":511,"props":530,"children":531},{},[532,541],{"type":52,"tag":533,"props":534,"children":535},"td",{},[536],{"type":52,"tag":61,"props":537,"children":538},{},[539],{"type":65,"value":540},"5 records",{"type":52,"tag":533,"props":542,"children":543},{},[544],{"type":65,"value":545},"Quick test -- just enough to verify the setup",{"type":52,"tag":511,"props":547,"children":548},{},[549,557],{"type":52,"tag":533,"props":550,"children":551},{},[552],{"type":52,"tag":61,"props":553,"children":554},{},[555],{"type":65,"value":556},"10 records",{"type":52,"tag":533,"props":558,"children":559},{},[560],{"type":65,"value":561},"Light demo data for basic testing",{"type":52,"tag":511,"props":563,"children":564},{},[565,573],{"type":52,"tag":533,"props":566,"children":567},{},[568],{"type":52,"tag":61,"props":569,"children":570},{},[571],{"type":65,"value":572},"25 records",{"type":52,"tag":533,"props":574,"children":575},{},[576],{"type":65,"value":577},"Fuller dataset for realistic demos",{"type":52,"tag":511,"props":579,"children":580},{},[581,589],{"type":52,"tag":533,"props":582,"children":583},{},[584],{"type":52,"tag":61,"props":585,"children":586},{},[587],{"type":65,"value":588},"Custom",{"type":52,"tag":533,"props":590,"children":591},{},[592],{"type":65,"value":593},"Let the user specify a number",{"type":52,"tag":247,"props":595,"children":597},{"id":596},"_33-determine-insertion-order",[598],{"type":65,"value":599},"3.3 Determine Insertion Order",{"type":52,"tag":57,"props":601,"children":602},{},[603],{"type":65,"value":604},"Analyze relationships between selected tables. Parent\u002Freferenced tables must be inserted first so their IDs are available for child\u002Freferencing table lookups.",{"type":52,"tag":57,"props":606,"children":607},{},[608],{"type":65,"value":609},"Build the insertion order:",{"type":52,"tag":172,"props":611,"children":612},{},[613,618,623],{"type":52,"tag":101,"props":614,"children":615},{},[616],{"type":65,"value":617},"Tables with no lookup dependencies (parent tables) -- insert first",{"type":52,"tag":101,"props":619,"children":620},{},[621],{"type":65,"value":622},"Tables that reference already-inserted tables -- insert next",{"type":52,"tag":101,"props":624,"children":625},{},[626],{"type":65,"value":627},"Continue until all tables are ordered",{"type":52,"tag":57,"props":629,"children":630},{},[631,635],{"type":52,"tag":61,"props":632,"children":633},{},[634],{"type":65,"value":217},{"type":65,"value":636},": Confirmed table selection, record count, and insertion order",{"type":52,"tag":142,"props":638,"children":639},{},[],{"type":52,"tag":90,"props":641,"children":643},{"id":642},"phase-4-generate-review-sample-data",[644],{"type":65,"value":645},"Phase 4: Generate & Review Sample Data",{"type":52,"tag":57,"props":647,"children":648},{},[649,653],{"type":52,"tag":61,"props":650,"children":651},{},[652],{"type":65,"value":158},{"type":65,"value":654},": Generate contextually appropriate sample records and get user approval before inserting",{"type":52,"tag":57,"props":656,"children":657},{},[658,662],{"type":52,"tag":61,"props":659,"children":660},{},[661],{"type":65,"value":168},{"type":65,"value":170},{"type":52,"tag":247,"props":664,"children":666},{"id":665},"_41-generate-contextual-sample-data",[667],{"type":65,"value":668},"4.1 Generate Contextual Sample Data",{"type":52,"tag":57,"props":670,"children":671},{},[672],{"type":65,"value":673},"For each selected table, generate sample records with contextually appropriate values based on column names and types:",{"type":52,"tag":97,"props":675,"children":676},{},[677,703,713,723,733,759,769],{"type":52,"tag":101,"props":678,"children":679},{},[680,685,687,693,695,701],{"type":52,"tag":61,"props":681,"children":682},{},[683],{"type":65,"value":684},"String columns",{"type":65,"value":686},": Generate realistic values matching the column name (e.g., \"Email\" -> ",{"type":52,"tag":70,"props":688,"children":690},{"className":689},[],[691],{"type":65,"value":692},"jane.doe@example.com",{"type":65,"value":694},", \"Phone\" -> ",{"type":52,"tag":70,"props":696,"children":698},{"className":697},[],[699],{"type":65,"value":700},"(555) 123-4567",{"type":65,"value":702},", \"Name\" -> realistic names)",{"type":52,"tag":101,"props":704,"children":705},{},[706,711],{"type":52,"tag":61,"props":707,"children":708},{},[709],{"type":65,"value":710},"Memo columns",{"type":65,"value":712},": Generate short descriptive text relevant to the column name",{"type":52,"tag":101,"props":714,"children":715},{},[716,721],{"type":52,"tag":61,"props":717,"children":718},{},[719],{"type":65,"value":720},"Integer\u002FDecimal\u002FCurrency columns",{"type":65,"value":722},": Generate reasonable numeric values",{"type":52,"tag":101,"props":724,"children":725},{},[726,731],{"type":52,"tag":61,"props":727,"children":728},{},[729],{"type":65,"value":730},"DateTime columns",{"type":65,"value":732},": Generate dates within a sensible range (past year to next month)",{"type":52,"tag":101,"props":734,"children":735},{},[736,741,743,749,751,757],{"type":52,"tag":61,"props":737,"children":738},{},[739],{"type":65,"value":740},"Boolean columns",{"type":65,"value":742},": Mix of ",{"type":52,"tag":70,"props":744,"children":746},{"className":745},[],[747],{"type":65,"value":748},"true",{"type":65,"value":750}," and ",{"type":52,"tag":70,"props":752,"children":754},{"className":753},[],[755],{"type":65,"value":756},"false",{"type":65,"value":758}," values",{"type":52,"tag":101,"props":760,"children":761},{},[762,767],{"type":52,"tag":61,"props":763,"children":764},{},[765],{"type":65,"value":766},"Picklist\u002FChoice columns",{"type":65,"value":768},": Query valid options first (see references\u002Fodata-record-patterns.md), then use actual option values",{"type":52,"tag":101,"props":770,"children":771},{},[772,777],{"type":52,"tag":61,"props":773,"children":774},{},[775],{"type":65,"value":776},"Lookup columns",{"type":65,"value":778},": Reference records from parent tables that will be\u002Fwere already inserted",{"type":52,"tag":247,"props":780,"children":782},{"id":781},"_42-present-sample-data-preview",[783],{"type":65,"value":784},"4.2 Present Sample Data Preview",{"type":52,"tag":57,"props":786,"children":787},{},[788],{"type":65,"value":789},"For each table, show a markdown table previewing the sample records directly in the conversation:",{"type":52,"tag":306,"props":791,"children":795},{"className":792,"code":793,"language":794,"meta":314,"style":314},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","### Project (cr123_project) -- 5 records\n\n| Name | Description | Status | Start Date |\n|------|-------------|--------|------------|\n| Website Redesign | Modernize the corporate website | 100000000 (Active) | 2025-03-15 |\n| Mobile App | Build iOS and Android app | 100000001 (Planning) | 2025-04-01 |\n| ... | ... | ... | ... |\n","markdown",[796],{"type":52,"tag":70,"props":797,"children":798},{"__ignoreMap":314},[799,817,826,873,882,926,970],{"type":52,"tag":800,"props":801,"children":804},"span",{"class":802,"line":803},"line",1,[805,811],{"type":52,"tag":800,"props":806,"children":808},{"style":807},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[809],{"type":65,"value":810},"### ",{"type":52,"tag":800,"props":812,"children":814},{"style":813},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[815],{"type":65,"value":816},"Project (cr123_project) -- 5 records\n",{"type":52,"tag":800,"props":818,"children":820},{"class":802,"line":819},2,[821],{"type":52,"tag":800,"props":822,"children":823},{"emptyLinePlaceholder":45},[824],{"type":65,"value":825},"\n",{"type":52,"tag":800,"props":827,"children":829},{"class":802,"line":828},3,[830,835,841,845,850,854,859,863,868],{"type":52,"tag":800,"props":831,"children":832},{"style":807},[833],{"type":65,"value":834},"|",{"type":52,"tag":800,"props":836,"children":838},{"style":837},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[839],{"type":65,"value":840}," Name ",{"type":52,"tag":800,"props":842,"children":843},{"style":807},[844],{"type":65,"value":834},{"type":52,"tag":800,"props":846,"children":847},{"style":837},[848],{"type":65,"value":849}," Description ",{"type":52,"tag":800,"props":851,"children":852},{"style":807},[853],{"type":65,"value":834},{"type":52,"tag":800,"props":855,"children":856},{"style":837},[857],{"type":65,"value":858}," Status ",{"type":52,"tag":800,"props":860,"children":861},{"style":807},[862],{"type":65,"value":834},{"type":52,"tag":800,"props":864,"children":865},{"style":837},[866],{"type":65,"value":867}," Start Date ",{"type":52,"tag":800,"props":869,"children":870},{"style":807},[871],{"type":65,"value":872},"|\n",{"type":52,"tag":800,"props":874,"children":876},{"class":802,"line":875},4,[877],{"type":52,"tag":800,"props":878,"children":879},{"style":807},[880],{"type":65,"value":881},"|------|-------------|--------|------------|\n",{"type":52,"tag":800,"props":883,"children":885},{"class":802,"line":884},5,[886,890,895,899,904,908,913,917,922],{"type":52,"tag":800,"props":887,"children":888},{"style":807},[889],{"type":65,"value":834},{"type":52,"tag":800,"props":891,"children":892},{"style":837},[893],{"type":65,"value":894}," Website Redesign ",{"type":52,"tag":800,"props":896,"children":897},{"style":807},[898],{"type":65,"value":834},{"type":52,"tag":800,"props":900,"children":901},{"style":837},[902],{"type":65,"value":903}," Modernize the corporate website ",{"type":52,"tag":800,"props":905,"children":906},{"style":807},[907],{"type":65,"value":834},{"type":52,"tag":800,"props":909,"children":910},{"style":837},[911],{"type":65,"value":912}," 100000000 (Active) ",{"type":52,"tag":800,"props":914,"children":915},{"style":807},[916],{"type":65,"value":834},{"type":52,"tag":800,"props":918,"children":919},{"style":837},[920],{"type":65,"value":921}," 2025-03-15 ",{"type":52,"tag":800,"props":923,"children":924},{"style":807},[925],{"type":65,"value":872},{"type":52,"tag":800,"props":927,"children":929},{"class":802,"line":928},6,[930,934,939,943,948,952,957,961,966],{"type":52,"tag":800,"props":931,"children":932},{"style":807},[933],{"type":65,"value":834},{"type":52,"tag":800,"props":935,"children":936},{"style":837},[937],{"type":65,"value":938}," Mobile App ",{"type":52,"tag":800,"props":940,"children":941},{"style":807},[942],{"type":65,"value":834},{"type":52,"tag":800,"props":944,"children":945},{"style":837},[946],{"type":65,"value":947}," Build iOS and Android app ",{"type":52,"tag":800,"props":949,"children":950},{"style":807},[951],{"type":65,"value":834},{"type":52,"tag":800,"props":953,"children":954},{"style":837},[955],{"type":65,"value":956}," 100000001 (Planning) ",{"type":52,"tag":800,"props":958,"children":959},{"style":807},[960],{"type":65,"value":834},{"type":52,"tag":800,"props":962,"children":963},{"style":837},[964],{"type":65,"value":965}," 2025-04-01 ",{"type":52,"tag":800,"props":967,"children":968},{"style":807},[969],{"type":65,"value":872},{"type":52,"tag":800,"props":971,"children":973},{"class":802,"line":972},7,[974,978,983,987,991,995,999,1003,1007],{"type":52,"tag":800,"props":975,"children":976},{"style":807},[977],{"type":65,"value":834},{"type":52,"tag":800,"props":979,"children":980},{"style":837},[981],{"type":65,"value":982}," ... ",{"type":52,"tag":800,"props":984,"children":985},{"style":807},[986],{"type":65,"value":834},{"type":52,"tag":800,"props":988,"children":989},{"style":837},[990],{"type":65,"value":982},{"type":52,"tag":800,"props":992,"children":993},{"style":807},[994],{"type":65,"value":834},{"type":52,"tag":800,"props":996,"children":997},{"style":837},[998],{"type":65,"value":982},{"type":52,"tag":800,"props":1000,"children":1001},{"style":807},[1002],{"type":65,"value":834},{"type":52,"tag":800,"props":1004,"children":1005},{"style":837},[1006],{"type":65,"value":982},{"type":52,"tag":800,"props":1008,"children":1009},{"style":807},[1010],{"type":65,"value":872},{"type":52,"tag":57,"props":1012,"children":1013},{},[1014],{"type":65,"value":1015},"Show relationship handling: which lookup fields reference which parent table records.",{"type":52,"tag":57,"props":1017,"children":1018},{},[1019,1023],{"type":52,"tag":61,"props":1020,"children":1021},{},[1022],{"type":65,"value":217},{"type":65,"value":1024},": Sample data plan ready for insertion. Proceed directly to Phase 5.",{"type":52,"tag":142,"props":1026,"children":1027},{},[],{"type":52,"tag":90,"props":1029,"children":1031},{"id":1030},"phase-5-insert-sample-data",[1032],{"type":65,"value":1033},"Phase 5: Insert Sample Data",{"type":52,"tag":57,"props":1035,"children":1036},{},[1037,1041],{"type":52,"tag":61,"props":1038,"children":1039},{},[1040],{"type":65,"value":158},{"type":65,"value":1042},": Execute OData POST calls to create all approved sample records with correct relationship handling",{"type":52,"tag":57,"props":1044,"children":1045},{},[1046,1050],{"type":52,"tag":61,"props":1047,"children":1048},{},[1049],{"type":65,"value":168},{"type":65,"value":170},{"type":52,"tag":57,"props":1052,"children":1053},{},[1054,1056,1062],{"type":65,"value":1055},"Refer to ",{"type":52,"tag":70,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":65,"value":1061},"references\u002Fodata-record-patterns.md",{"type":65,"value":1063}," for full patterns.",{"type":52,"tag":247,"props":1065,"children":1067},{"id":1066},"_51-get-entity-set-names",[1068],{"type":65,"value":1069},"5.1 Get Entity Set Names",{"type":52,"tag":57,"props":1071,"children":1072},{},[1073],{"type":65,"value":1074},"For each table, get the entity set name (needed for the API URL):",{"type":52,"tag":306,"props":1076,"children":1079},{"className":1077,"code":1078,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions(LogicalName='\u003Ctable>')?\\$select=EntitySetName\"\n",[1080],{"type":52,"tag":70,"props":1081,"children":1082},{"__ignoreMap":314},[1083],{"type":65,"value":1078},{"type":52,"tag":247,"props":1085,"children":1087},{"id":1086},"_52-get-picklist-options",[1088],{"type":65,"value":1089},"5.2 Get Picklist Options",{"type":52,"tag":57,"props":1091,"children":1092},{},[1093],{"type":65,"value":1094},"For any picklist\u002Fchoice columns, query valid option values before insertion:",{"type":52,"tag":306,"props":1096,"children":1099},{"className":1097,"code":1098,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"EntityDefinitions(LogicalName='\u003Ctable>')\u002FAttributes(LogicalName='\u003Ccolumn>')\u002FMicrosoft.Dynamics.CRM.PicklistAttributeMetadata?\\$expand=OptionSet\"\n",[1100],{"type":52,"tag":70,"props":1101,"children":1102},{"__ignoreMap":314},[1103],{"type":65,"value":1098},{"type":52,"tag":57,"props":1105,"children":1106},{},[1107,1109,1115],{"type":65,"value":1108},"Use the actual ",{"type":52,"tag":70,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":65,"value":1114},"Value",{"type":65,"value":1116}," integers from the option set in your sample data.",{"type":52,"tag":247,"props":1118,"children":1120},{"id":1119},"_53-insert-parent-tables-first",[1121],{"type":65,"value":1122},"5.3 Insert Parent Tables First",{"type":52,"tag":57,"props":1124,"children":1125},{},[1126],{"type":65,"value":1127},"Insert records into parent\u002Freferenced tables first to capture their IDs:",{"type":52,"tag":306,"props":1129,"children":1132},{"className":1130,"code":1131,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> POST \"\u003CEntitySetName>\" --body '{\"cr123_name\":\"Sample Record\",\"cr123_description\":\"A sample record for testing\"}' --include-headers\n",[1133],{"type":52,"tag":70,"props":1134,"children":1135},{"__ignoreMap":314},[1136],{"type":65,"value":1131},{"type":52,"tag":57,"props":1138,"children":1139},{},[1140,1142,1148,1150,1156],{"type":65,"value":1141},"The ",{"type":52,"tag":70,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":65,"value":1147},"--include-headers",{"type":65,"value":1149}," flag includes the ",{"type":52,"tag":70,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":65,"value":1155},"OData-EntityId",{"type":65,"value":1157}," response header, which contains the created record ID. Parse the GUID from the response to use in child table lookups.",{"type":52,"tag":57,"props":1159,"children":1160},{},[1161],{"type":65,"value":1162},"Store parent record IDs for use in child table lookups.",{"type":52,"tag":247,"props":1164,"children":1166},{"id":1165},"_54-insert-child-tables-with-lookups",[1167],{"type":65,"value":1168},"5.4 Insert Child Tables with Lookups",{"type":52,"tag":57,"props":1170,"children":1171},{},[1172,1174,1180],{"type":65,"value":1173},"For child\u002Freferencing tables, use ",{"type":52,"tag":70,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":65,"value":1179},"@odata.bind",{"type":65,"value":1181}," syntax to set lookup fields:",{"type":52,"tag":306,"props":1183,"children":1186},{"className":1184,"code":1185,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> POST \"\u003CChildEntitySetName>\" --body '{\"cr123_name\":\"Child Record\",\"cr123_ParentId@odata.bind\":\"\u002F\u003CParentEntitySetName>(\u003Cparent_guid>)\"}' --include-headers\n",[1187],{"type":52,"tag":70,"props":1188,"children":1189},{"__ignoreMap":314},[1190],{"type":65,"value":1185},{"type":52,"tag":247,"props":1192,"children":1194},{"id":1193},"_55-track-progress",[1195],{"type":65,"value":1196},"5.5 Track Progress",{"type":52,"tag":57,"props":1198,"children":1199},{},[1200],{"type":65,"value":1201},"Track each insertion attempt:",{"type":52,"tag":97,"props":1203,"children":1204},{},[1205,1210,1215],{"type":52,"tag":101,"props":1206,"children":1207},{},[1208],{"type":65,"value":1209},"Record table name, record number, success\u002Ffailure",{"type":52,"tag":101,"props":1211,"children":1212},{},[1213],{"type":65,"value":1214},"On failure, log the error message but continue with remaining records",{"type":52,"tag":101,"props":1216,"children":1217},{},[1218],{"type":65,"value":1219},"Do NOT attempt automated rollback on failure",{"type":52,"tag":247,"props":1221,"children":1223},{"id":1222},"_56-refresh-token-periodically",[1224],{"type":65,"value":1225},"5.6 Refresh Token Periodically",{"type":52,"tag":57,"props":1227,"children":1228},{},[1229,1230,1236,1238,1244],{"type":65,"value":1141},{"type":52,"tag":70,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":65,"value":1235},"dataverse-request.js",{"type":65,"value":1237}," script handles 401 token refresh internally. For long-running operations (many records), periodically re-run ",{"type":52,"tag":70,"props":1239,"children":1241},{"className":1240},[],[1242],{"type":65,"value":1243},"verify-dataverse-access.js",{"type":65,"value":1245}," to confirm the session is still valid:",{"type":52,"tag":306,"props":1247,"children":1250},{"className":1248,"code":1249,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fverify-dataverse-access.js\" \u003CenvUrl>\n",[1251],{"type":52,"tag":70,"props":1252,"children":1253},{"__ignoreMap":314},[1254],{"type":65,"value":1249},{"type":52,"tag":57,"props":1256,"children":1257},{},[1258,1262],{"type":52,"tag":61,"props":1259,"children":1260},{},[1261],{"type":65,"value":217},{"type":65,"value":1263},": All approved records inserted with parent-child relationships established",{"type":52,"tag":142,"props":1265,"children":1266},{},[],{"type":52,"tag":90,"props":1268,"children":1270},{"id":1269},"phase-6-verify-summarize",[1271],{"type":65,"value":1272},"Phase 6: Verify & Summarize",{"type":52,"tag":57,"props":1274,"children":1275},{},[1276,1280],{"type":52,"tag":61,"props":1277,"children":1278},{},[1279],{"type":65,"value":158},{"type":65,"value":1281},": Confirm record counts and present a final summary to the user",{"type":52,"tag":57,"props":1283,"children":1284},{},[1285,1289],{"type":52,"tag":61,"props":1286,"children":1287},{},[1288],{"type":65,"value":168},{"type":65,"value":170},{"type":52,"tag":247,"props":1291,"children":1293},{"id":1292},"_61-verify-record-counts",[1294],{"type":65,"value":1295},"6.1 Verify Record Counts",{"type":52,"tag":57,"props":1297,"children":1298},{},[1299],{"type":65,"value":1300},"For each table that was populated, query the record count:",{"type":52,"tag":306,"props":1302,"children":1305},{"className":1303,"code":1304,"language":65},[309],"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fdataverse-request.js\" \u003CenvUrl> GET \"\u003CEntitySetName>?\\$count=true&\\$top=0\"\n",[1306],{"type":52,"tag":70,"props":1307,"children":1308},{"__ignoreMap":314},[1309],{"type":65,"value":1304},{"type":52,"tag":57,"props":1311,"children":1312},{},[1313,1314,1320],{"type":65,"value":1141},{"type":52,"tag":70,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":65,"value":1319},"@odata.count",{"type":65,"value":1321}," field in the response gives the total record count.",{"type":52,"tag":247,"props":1323,"children":1325},{"id":1324},"_62-record-skill-usage",[1326],{"type":65,"value":1327},"6.2 Record Skill Usage",{"type":52,"tag":53,"props":1329,"children":1330},{},[1331],{"type":52,"tag":57,"props":1332,"children":1333},{},[1334,1336],{"type":65,"value":1335},"Reference: ",{"type":52,"tag":70,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":65,"value":1341},"${PLUGIN_ROOT}\u002Freferences\u002Fskill-tracking-reference.md",{"type":52,"tag":57,"props":1343,"children":1344},{},[1345,1347,1353],{"type":65,"value":1346},"Follow the skill tracking instructions in the reference to record this skill's usage. Use ",{"type":52,"tag":70,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":65,"value":1352},"--skillName \"AddSampleData\"",{"type":65,"value":1354},".",{"type":52,"tag":247,"props":1356,"children":1358},{"id":1357},"_63-present-summary",[1359],{"type":65,"value":1360},"6.3 Present Summary",{"type":52,"tag":57,"props":1362,"children":1363},{},[1364],{"type":65,"value":1365},"Present a summary table:",{"type":52,"tag":503,"props":1367,"children":1368},{},[1369,1395],{"type":52,"tag":507,"props":1370,"children":1371},{},[1372],{"type":52,"tag":511,"props":1373,"children":1374},{},[1375,1380,1385,1390],{"type":52,"tag":515,"props":1376,"children":1377},{},[1378],{"type":65,"value":1379},"Table",{"type":52,"tag":515,"props":1381,"children":1382},{},[1383],{"type":65,"value":1384},"Records Requested",{"type":52,"tag":515,"props":1386,"children":1387},{},[1388],{"type":65,"value":1389},"Records Created",{"type":52,"tag":515,"props":1391,"children":1392},{},[1393],{"type":65,"value":1394},"Failures",{"type":52,"tag":526,"props":1396,"children":1397},{},[1398,1426],{"type":52,"tag":511,"props":1399,"children":1400},{},[1401,1412,1417,1421],{"type":52,"tag":533,"props":1402,"children":1403},{},[1404,1410],{"type":52,"tag":70,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":65,"value":1409},"cr123_project",{"type":65,"value":1411}," (Project)",{"type":52,"tag":533,"props":1413,"children":1414},{},[1415],{"type":65,"value":1416},"10",{"type":52,"tag":533,"props":1418,"children":1419},{},[1420],{"type":65,"value":1416},{"type":52,"tag":533,"props":1422,"children":1423},{},[1424],{"type":65,"value":1425},"0",{"type":52,"tag":511,"props":1427,"children":1428},{},[1429,1440,1444,1449],{"type":52,"tag":533,"props":1430,"children":1431},{},[1432,1438],{"type":52,"tag":70,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":65,"value":1437},"cr123_task",{"type":65,"value":1439}," (Task)",{"type":52,"tag":533,"props":1441,"children":1442},{},[1443],{"type":65,"value":1416},{"type":52,"tag":533,"props":1445,"children":1446},{},[1447],{"type":65,"value":1448},"9",{"type":52,"tag":533,"props":1450,"children":1451},{},[1452],{"type":65,"value":1453},"1",{"type":52,"tag":57,"props":1455,"children":1456},{},[1457],{"type":65,"value":1458},"Include:",{"type":52,"tag":97,"props":1460,"children":1461},{},[1462,1467,1472],{"type":52,"tag":101,"props":1463,"children":1464},{},[1465],{"type":65,"value":1466},"Total records created across all tables",{"type":52,"tag":101,"props":1468,"children":1469},{},[1470],{"type":65,"value":1471},"Any failures with error details",{"type":52,"tag":101,"props":1473,"children":1474},{},[1475],{"type":65,"value":1476},"Lookup relationships that were established",{"type":52,"tag":247,"props":1478,"children":1480},{"id":1479},"_64-suggest-next-steps",[1481],{"type":65,"value":1482},"6.4 Suggest Next Steps",{"type":52,"tag":57,"props":1484,"children":1485},{},[1486],{"type":65,"value":1487},"After the summary, suggest:",{"type":52,"tag":97,"props":1489,"children":1490},{},[1491,1496,1507],{"type":52,"tag":101,"props":1492,"children":1493},{},[1494],{"type":65,"value":1495},"Review the data in the Power Pages maker portal or model-driven app",{"type":52,"tag":101,"props":1497,"children":1498},{},[1499,1501],{"type":65,"value":1500},"If the site is not yet built: ",{"type":52,"tag":70,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":65,"value":1506},"\u002Fcreate-site",{"type":52,"tag":101,"props":1508,"children":1509},{},[1510,1512],{"type":65,"value":1511},"If the site is ready to deploy: ",{"type":52,"tag":70,"props":1513,"children":1515},{"className":1514},[],[1516],{"type":65,"value":1517},"\u002Fdeploy-site",{"type":52,"tag":57,"props":1519,"children":1520},{},[1521,1525],{"type":52,"tag":61,"props":1522,"children":1523},{},[1524],{"type":65,"value":217},{"type":65,"value":1526},": Verified record counts and summary presented to the user",{"type":52,"tag":142,"props":1528,"children":1529},{},[],{"type":52,"tag":90,"props":1531,"children":1533},{"id":1532},"important-notes",[1534],{"type":65,"value":1535},"Important Notes",{"type":52,"tag":247,"props":1537,"children":1539},{"id":1538},"throughout-all-phases",[1540],{"type":65,"value":1541},"Throughout All Phases",{"type":52,"tag":97,"props":1543,"children":1544},{},[1545,1554,1564,1573,1582],{"type":52,"tag":101,"props":1546,"children":1547},{},[1548,1552],{"type":52,"tag":61,"props":1549,"children":1550},{},[1551],{"type":65,"value":118},{"type":65,"value":1553}," to track progress at every phase",{"type":52,"tag":101,"props":1555,"children":1556},{},[1557,1562],{"type":52,"tag":61,"props":1558,"children":1559},{},[1560],{"type":65,"value":1561},"Ask for user confirmation",{"type":65,"value":1563}," at key decision points (see list below)",{"type":52,"tag":101,"props":1565,"children":1566},{},[1567,1571],{"type":52,"tag":61,"props":1568,"children":1569},{},[1570],{"type":65,"value":108},{"type":65,"value":1572}," -- always insert parent tables before child tables",{"type":52,"tag":101,"props":1574,"children":1575},{},[1576,1580],{"type":52,"tag":61,"props":1577,"children":1578},{},[1579],{"type":65,"value":128},{"type":65,"value":1581}," -- log errors and continue, never rollback automatically",{"type":52,"tag":101,"props":1583,"children":1584},{},[1585,1590],{"type":52,"tag":61,"props":1586,"children":1587},{},[1588],{"type":65,"value":1589},"Refresh tokens",{"type":65,"value":1591}," every 20 records to avoid expiration",{"type":52,"tag":247,"props":1593,"children":1595},{"id":1594},"key-decision-points-wait-for-user",[1596],{"type":65,"value":1597},"Key Decision Points (Wait for User)",{"type":52,"tag":172,"props":1599,"children":1600},{},[1601,1606,1611],{"type":52,"tag":101,"props":1602,"children":1603},{},[1604],{"type":65,"value":1605},"After Phase 2: Confirm which tables to populate",{"type":52,"tag":101,"props":1607,"children":1608},{},[1609],{"type":65,"value":1610},"After Phase 3: Confirm record count and insertion order",{"type":52,"tag":101,"props":1612,"children":1613},{},[1614],{"type":65,"value":1615},"After Phase 6: Review summary and decide next steps",{"type":52,"tag":247,"props":1617,"children":1619},{"id":1618},"progress-tracking",[1620],{"type":65,"value":186},{"type":52,"tag":57,"props":1622,"children":1623},{},[1624,1626,1632],{"type":65,"value":1625},"Before starting Phase 1, create a task list with all phases using ",{"type":52,"tag":70,"props":1627,"children":1629},{"className":1628},[],[1630],{"type":65,"value":1631},"TaskCreate",{"type":65,"value":170},{"type":52,"tag":503,"props":1634,"children":1635},{},[1636,1656],{"type":52,"tag":507,"props":1637,"children":1638},{},[1639],{"type":52,"tag":511,"props":1640,"children":1641},{},[1642,1647,1652],{"type":52,"tag":515,"props":1643,"children":1644},{},[1645],{"type":65,"value":1646},"Task subject",{"type":52,"tag":515,"props":1648,"children":1649},{},[1650],{"type":65,"value":1651},"activeForm",{"type":52,"tag":515,"props":1653,"children":1654},{},[1655],{"type":65,"value":524},{"type":52,"tag":526,"props":1657,"children":1658},{},[1659,1677,1695,1713,1731,1749],{"type":52,"tag":511,"props":1660,"children":1661},{},[1662,1667,1672],{"type":52,"tag":533,"props":1663,"children":1664},{},[1665],{"type":65,"value":1666},"Verify prerequisites",{"type":52,"tag":533,"props":1668,"children":1669},{},[1670],{"type":65,"value":1671},"Verifying prerequisites",{"type":52,"tag":533,"props":1673,"children":1674},{},[1675],{"type":65,"value":1676},"Confirm PAC CLI auth, acquire Azure CLI token, verify API access",{"type":52,"tag":511,"props":1678,"children":1679},{},[1680,1685,1690],{"type":52,"tag":533,"props":1681,"children":1682},{},[1683],{"type":65,"value":1684},"Discover tables",{"type":52,"tag":533,"props":1686,"children":1687},{},[1688],{"type":65,"value":1689},"Discovering tables",{"type":52,"tag":533,"props":1691,"children":1692},{},[1693],{"type":65,"value":1694},"Read .datamodel-manifest.json or query OData API for custom tables",{"type":52,"tag":511,"props":1696,"children":1697},{},[1698,1703,1708],{"type":52,"tag":533,"props":1699,"children":1700},{},[1701],{"type":65,"value":1702},"Select tables and configure",{"type":52,"tag":533,"props":1704,"children":1705},{},[1706],{"type":65,"value":1707},"Configuring tables",{"type":52,"tag":533,"props":1709,"children":1710},{},[1711],{"type":65,"value":1712},"User picks tables, record count, and determine insertion order",{"type":52,"tag":511,"props":1714,"children":1715},{},[1716,1721,1726],{"type":52,"tag":533,"props":1717,"children":1718},{},[1719],{"type":65,"value":1720},"Generate and review sample data",{"type":52,"tag":533,"props":1722,"children":1723},{},[1724],{"type":65,"value":1725},"Generating sample data",{"type":52,"tag":533,"props":1727,"children":1728},{},[1729],{"type":65,"value":1730},"Generate contextual sample records, present preview, get user approval",{"type":52,"tag":511,"props":1732,"children":1733},{},[1734,1739,1744],{"type":52,"tag":533,"props":1735,"children":1736},{},[1737],{"type":65,"value":1738},"Insert sample data",{"type":52,"tag":533,"props":1740,"children":1741},{},[1742],{"type":65,"value":1743},"Inserting records",{"type":52,"tag":533,"props":1745,"children":1746},{},[1747],{"type":65,"value":1748},"Execute OData POST calls with relationship handling and token refresh",{"type":52,"tag":511,"props":1750,"children":1751},{},[1752,1757,1762],{"type":52,"tag":533,"props":1753,"children":1754},{},[1755],{"type":65,"value":1756},"Verify and summarize",{"type":52,"tag":533,"props":1758,"children":1759},{},[1760],{"type":65,"value":1761},"Verifying results",{"type":52,"tag":533,"props":1763,"children":1764},{},[1765],{"type":65,"value":1766},"Confirm record counts, present summary, suggest next steps",{"type":52,"tag":57,"props":1768,"children":1769},{},[1770,1772,1778,1780,1786,1788,1794],{"type":65,"value":1771},"Mark each task ",{"type":52,"tag":70,"props":1773,"children":1775},{"className":1774},[],[1776],{"type":65,"value":1777},"in_progress",{"type":65,"value":1779}," when starting it and ",{"type":52,"tag":70,"props":1781,"children":1783},{"className":1782},[],[1784],{"type":65,"value":1785},"completed",{"type":65,"value":1787}," when done via ",{"type":52,"tag":70,"props":1789,"children":1791},{"className":1790},[],[1792],{"type":65,"value":1793},"TaskUpdate",{"type":65,"value":1795},". This gives the user visibility into progress and keeps the workflow deterministic.",{"type":52,"tag":142,"props":1797,"children":1798},{},[],{"type":52,"tag":57,"props":1800,"children":1801},{},[1802],{"type":52,"tag":61,"props":1803,"children":1804},{},[1805],{"type":65,"value":1806},"Begin with Phase 1: Verify Prerequisites",{"type":52,"tag":1808,"props":1809,"children":1810},"style",{},[1811],{"type":65,"value":1812},"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":1814,"total":1901},[1815,1827,1841,1851,1864,1877,1893],{"slug":1816,"name":1816,"fn":1817,"description":1818,"org":1819,"tags":1820,"stars":26,"repoUrl":27,"updatedAt":1826},"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},[1821,1824,1825],{"name":1822,"slug":1823,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-04-06T18:34:34.732549",{"slug":1828,"name":1828,"fn":1829,"description":1830,"org":1831,"tags":1832,"stars":26,"repoUrl":27,"updatedAt":1840},"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},[1833,1836,1838],{"name":1834,"slug":1835,"type":15},"Integrations","integrations",{"name":1837,"slug":36,"type":15},"Power Apps",{"name":1839,"slug":37,"type":15},"Power Platform","2026-07-31T05:54:47.042251",{"slug":1842,"name":1842,"fn":1843,"description":1844,"org":1845,"tags":1846,"stars":26,"repoUrl":27,"updatedAt":1850},"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},[1847,1848,1849],{"name":1834,"slug":1835,"type":15},{"name":9,"slug":8,"type":15},{"name":1837,"slug":36,"type":15},"2026-07-03T16:31:47.822186",{"slug":1852,"name":1852,"fn":1853,"description":1854,"org":1855,"tags":1856,"stars":26,"repoUrl":27,"updatedAt":1863},"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},[1857,1860,1861,1862],{"name":1858,"slug":1859,"type":15},"Data Modeling","data-modeling",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":1837,"slug":36,"type":15},"2026-07-31T05:54:46.078014",{"slug":1865,"name":1865,"fn":1866,"description":1867,"org":1868,"tags":1869,"stars":26,"repoUrl":27,"updatedAt":1876},"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},[1870,1873,1874,1875],{"name":1871,"slug":1872,"type":15},"Excel","excel",{"name":1834,"slug":1835,"type":15},{"name":9,"slug":8,"type":15},{"name":1837,"slug":36,"type":15},"2026-07-31T05:54:44.030943",{"slug":1878,"name":1878,"fn":1879,"description":1880,"org":1881,"tags":1882,"stars":26,"repoUrl":27,"updatedAt":1892},"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},[1883,1886,1889,1890,1891],{"name":1884,"slug":1885,"type":15},"Agents","agents",{"name":1887,"slug":1888,"type":15},"Copilot Studio","copilot-studio",{"name":1834,"slug":1835,"type":15},{"name":9,"slug":8,"type":15},{"name":1837,"slug":36,"type":15},"2026-07-31T05:54:39.025597",{"slug":4,"name":4,"fn":5,"description":6,"org":1894,"tags":1895,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1896,1897,1898,1899,1900],{"name":18,"slug":19,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":24,"slug":25,"type":15},26,{"items":1903,"total":2094},[1904,1926,1945,1966,1981,1998,2009,2022,2037,2052,2069,2082],{"slug":1905,"name":1905,"fn":1906,"description":1907,"org":1908,"tags":1909,"stars":1923,"repoUrl":1924,"updatedAt":1925},"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},[1910,1913,1916,1917,1920],{"name":1911,"slug":1912,"type":15},"Engineering","engineering",{"name":1914,"slug":1915,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1918,"slug":1919,"type":15},"Project Management","project-management",{"name":1921,"slug":1922,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1927,"name":1927,"fn":1928,"description":1929,"org":1930,"tags":1931,"stars":1942,"repoUrl":1943,"updatedAt":1944},"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},[1932,1935,1936,1939],{"name":1933,"slug":1934,"type":15},".NET","net",{"name":1884,"slug":1885,"type":15},{"name":1937,"slug":1938,"type":15},"Azure","azure",{"name":1940,"slug":1941,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":1946,"name":1946,"fn":1947,"description":1948,"org":1949,"tags":1950,"stars":1942,"repoUrl":1943,"updatedAt":1965},"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},[1951,1954,1955,1958,1961,1962],{"name":1952,"slug":1953,"type":15},"Analytics","analytics",{"name":1937,"slug":1938,"type":15},{"name":1956,"slug":1957,"type":15},"Data Analysis","data-analysis",{"name":1959,"slug":1960,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":1963,"slug":1964,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":1967,"name":1967,"fn":1968,"description":1969,"org":1970,"tags":1971,"stars":1942,"repoUrl":1943,"updatedAt":1980},"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},[1972,1975,1976,1977],{"name":1973,"slug":1974,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1937,"slug":1938,"type":15},{"name":1959,"slug":1960,"type":15},{"name":1978,"slug":1979,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":1982,"name":1982,"fn":1983,"description":1984,"org":1985,"tags":1986,"stars":1942,"repoUrl":1943,"updatedAt":1997},"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},[1987,1988,1991,1992,1993,1996],{"name":1937,"slug":1938,"type":15},{"name":1989,"slug":1990,"type":15},"Compliance","compliance",{"name":1940,"slug":1941,"type":15},{"name":9,"slug":8,"type":15},{"name":1994,"slug":1995,"type":15},"Python","python",{"name":1978,"slug":1979,"type":15},"2026-07-18T05:14:23.017504",{"slug":1999,"name":1999,"fn":2000,"description":2001,"org":2002,"tags":2003,"stars":1942,"repoUrl":1943,"updatedAt":2008},"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},[2004,2005,2006,2007],{"name":1952,"slug":1953,"type":15},{"name":1937,"slug":1938,"type":15},{"name":1940,"slug":1941,"type":15},{"name":1994,"slug":1995,"type":15},"2026-07-31T05:54:29.068751",{"slug":2010,"name":2010,"fn":2011,"description":2012,"org":2013,"tags":2014,"stars":1942,"repoUrl":1943,"updatedAt":2021},"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},[2015,2018,2019,2020],{"name":2016,"slug":2017,"type":15},"API Development","api-development",{"name":1937,"slug":1938,"type":15},{"name":9,"slug":8,"type":15},{"name":1994,"slug":1995,"type":15},"2026-07-18T05:14:16.988376",{"slug":2023,"name":2023,"fn":2024,"description":2025,"org":2026,"tags":2027,"stars":1942,"repoUrl":1943,"updatedAt":2036},"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},[2028,2029,2032,2035],{"name":1937,"slug":1938,"type":15},{"name":2030,"slug":2031,"type":15},"Computer Vision","computer-vision",{"name":2033,"slug":2034,"type":15},"Images","images",{"name":1994,"slug":1995,"type":15},"2026-07-18T05:14:18.007737",{"slug":2038,"name":2038,"fn":2039,"description":2040,"org":2041,"tags":2042,"stars":1942,"repoUrl":1943,"updatedAt":2051},"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},[2043,2044,2047,2050],{"name":1937,"slug":1938,"type":15},{"name":2045,"slug":2046,"type":15},"Configuration","configuration",{"name":2048,"slug":2049,"type":15},"Feature Flags","feature-flags",{"name":1959,"slug":1960,"type":15},"2026-07-03T16:32:01.278468",{"slug":2053,"name":2053,"fn":2054,"description":2055,"org":2056,"tags":2057,"stars":1942,"repoUrl":1943,"updatedAt":2068},"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},[2058,2061,2062,2065],{"name":2059,"slug":2060,"type":15},"Cosmos DB","cosmos-db",{"name":18,"slug":19,"type":15},{"name":2063,"slug":2064,"type":15},"NoSQL","nosql",{"name":2066,"slug":2067,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":2070,"name":2070,"fn":2054,"description":2071,"org":2072,"tags":2073,"stars":1942,"repoUrl":1943,"updatedAt":2081},"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},[2074,2075,2076,2077,2078],{"name":2059,"slug":2060,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":2063,"slug":2064,"type":15},{"name":2079,"slug":2080,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":2083,"name":2083,"fn":2084,"description":2085,"org":2086,"tags":2087,"stars":1942,"repoUrl":1943,"updatedAt":2093},"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},[2088,2089,2090,2091,2092],{"name":1937,"slug":1938,"type":15},{"name":2059,"slug":2060,"type":15},{"name":18,"slug":19,"type":15},{"name":1959,"slug":1960,"type":15},{"name":2063,"slug":2064,"type":15},"2026-05-13T06:14:17.582229",267]