[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BCAEPE3W6QZF2RTZ9Q28C":3,"skill-same:01M69BCAEPE3W6QZF2RTZ9Q28C":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M69BCAEPE3W6QZF2RTZ9Q28C","add-fallback-commands",null,"Add fallback commands to your Command Palette extension for catch-all search behavior. Use when asked to add search functionality, query matching, direct input handling, calculator-style evaluation, URL opening, command execution, or results that appear when no other extension matches. Used by 14 of 20 built-in extensions.","microsoft\u002FPowerToys","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BB0G8W7E0BMJRDE4NW1BD",140873,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fcmdpal\u002FExtensionTemplate\u002FTemplateCmdPalExtension\u002F.github\u002Fskills\u002Fadd-fallback-commands\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"add fallback commands","fallback","add","commands","when","command palette","input handling","catch","for","extensions","URL","palette","input","query","use","command","direct","calculator","execution","Evaluation","search","2026-11-10 10:12:30",false,"---\nname: add-fallback-commands\ndescription: >-\n  Add fallback commands to your Command Palette extension for catch-all search behavior.\n  Use when asked to add search functionality, query matching, direct input handling,\n  calculator-style evaluation, URL opening, command execution, or results that appear\n  when no other extension matches. Used by 14 of 20 built-in extensions.\n---\n\n# Add Fallback Commands\n\nFallback commands are shown in Command Palette when no other results match the user's query. They enable your extension to act as a catch-all handler — perfect for calculators, web search, command execution, file path opening, and more.\n\n## When to Use This Skill\n\n- Adding search functionality that responds to any user input\n- Creating a calculator that evaluates expressions as the user types\n- Building a web search that triggers on unmatched queries\n- Opening files or URLs typed directly into the palette\n- Executing shell commands from the search bar\n\n## How Fallback Commands Work\n\n1. User types a query in Command Palette\n2. If no top-level commands match, CmdPal asks extensions for fallback results\n3. Your extension's `FallbackCommands()` provides items that respond to the query\n4. The fallback items can be static (always shown) or dynamic (filtered by query)\n\n## Quick Start: Static Fallback\n\nOverride `FallbackCommands()` in your `CommandProvider`:\n\n```csharp\npublic partial class MyCommandsProvider : CommandProvider\n{\n    private readonly ICommandItem[] _commands;\n    private readonly FallbackCommandItem[] _fallbacks;\n\n    public MyCommandsProvider()\n    {\n        DisplayName = \"Web Search\";\n        Icon = new IconInfo(\"\\uE721\"); \u002F\u002F Search icon\n\n        var searchPage = new WebSearchPage();\n        _commands = [new CommandItem(searchPage) { Title = DisplayName }];\n        _fallbacks = [new FallbackCommandItem(searchPage) { Title = \"Search the web\" }];\n    }\n\n    public override ICommandItem[] TopLevelCommands() => _commands;\n    public override IFallbackCommandItem[] FallbackCommands() => _fallbacks;\n}\n```\n\n## Dynamic Fallback with DynamicListPage\n\nFor fallbacks that filter results based on the query, use `DynamicListPage`:\n\n```csharp\ninternal sealed partial class WebSearchPage : DynamicListPage\n{\n    private string _query = string.Empty;\n\n    public WebSearchPage()\n    {\n        Icon = new IconInfo(\"\\uE721\");\n        Title = \"Web Search\";\n        Name = \"Search\";\n        PlaceholderText = \"Type to search...\";\n    }\n\n    public override void UpdateSearchText(string oldSearch, string newSearch)\n    {\n        _query = newSearch;\n        RaiseItemsChanged();\n    }\n\n    public override IListItem[] GetItems()\n    {\n        if (string.IsNullOrWhiteSpace(_query))\n            return [];\n\n        return [\n            new ListItem(new OpenUrlCommand($\"https:\u002F\u002Fwww.google.com\u002Fsearch?q={Uri.EscapeDataString(_query)}\"))\n            {\n                Title = $\"Search Google for \\\"{_query}\\\"\",\n                Icon = new IconInfo(\"\\uE721\"),\n            },\n            new ListItem(new OpenUrlCommand($\"https:\u002F\u002Fwww.bing.com\u002Fsearch?q={Uri.EscapeDataString(_query)}\"))\n            {\n                Title = $\"Search Bing for \\\"{_query}\\\"\",\n                Icon = new IconInfo(\"\\uE721\"),\n            },\n        ];\n    }\n}\n```\n\n## Responsive Fallback with Cancellation\n\nFor expensive operations (API calls, file searches), use cancellation to stay responsive:\n\n```csharp\ninternal sealed partial class SmartSearchPage : DynamicListPage\n{\n    private CancellationTokenSource? _cts;\n    private IListItem[] _results = [];\n\n    public override void UpdateSearchText(string oldSearch, string newSearch)\n    {\n        \u002F\u002F Cancel any in-flight search\n        _cts?.Cancel();\n        _cts = new CancellationTokenSource();\n        var token = _cts.Token;\n\n        _ = Task.Run(async () =>\n        {\n            \u002F\u002F Debounce: wait for user to stop typing\n            await Task.Delay(300, token);\n            if (token.IsCancellationRequested) return;\n\n            \u002F\u002F Perform search\n            _results = await SearchAsync(newSearch, token);\n            RaiseItemsChanged();\n        }, token);\n    }\n\n    public override IListItem[] GetItems() => _results;\n\n    private async Task\u003CIListItem[]> SearchAsync(string query, CancellationToken token)\n    {\n        \u002F\u002F Your search logic here\n        \u002F\u002F Check token.IsCancellationRequested periodically\n        return [];\n    }\n}\n```\n\n## Real-World Examples (from built-in extensions)\n\n| Extension | Fallback Behavior |\n|-----------|------------------|\n| **Apps** | Search installed applications by name |\n| **Calc** | Evaluate mathematical expressions directly |\n| **Shell** | Execute command-line commands |\n| **WebSearch** | Search the web with configured engine |\n| **Indexer** | Open files by path |\n| **TimeDate** | Parse time\u002Fdate queries |\n| **WindowsSettings** | Jump to Windows Settings pages |\n| **WinGet** | Search WinGet packages |\n| **WindowWalker** | Find and switch to open windows |\n\n## Key Points\n\n- `FallbackCommands()` returns `IFallbackCommandItem[]` (not `ICommandItem[]`)\n- Use `FallbackCommandItem` wrapper (not `CommandItem`)\n- Wrap a `DynamicListPage` for query-reactive results\n- Cancel previous searches when new input arrives\n- Keep fallback responses fast — users expect instant results\n- Use `PlaceholderText` on your page to guide users\n\n## Documentation\n\n- [Extension samples](https:\u002F\u002Flearn.microsoft.com\u002Fwindows\u002Fpowertoys\u002Fcommand-palette\u002Fsamples)\n- [Extensibility overview](https:\u002F\u002Flearn.microsoft.com\u002Fwindows\u002Fpowertoys\u002Fcommand-palette\u002Fextensibility-overview)\n","# Add Fallback Commands\n\nFallback commands are shown in Command Palette when no other results match the user's query. They enable your extension to act as a catch-all handler — perfect for calculators, web search, command execution, file path opening, and more.\n\n## When to Use This Skill\n\n- Adding search functionality that responds to any user input\n- Creating a calculator that evaluates expressions as the user types\n- Building a web search that triggers on unmatched queries\n- Opening files or URLs typed directly into the palette\n- Executing shell commands from the search bar\n\n## How Fallback Commands Work\n\n1. User types a query in Command Palette\n2. If no top-level commands match, CmdPal asks extensions for fallback results\n3. Your extension's `FallbackCommands()` provides items that respond to the query\n4. The fallback items can be static (always shown) or dynamic (filtered by query)\n\n## Quick Start: Static Fallback\n\nOverride `FallbackCommands()` in your `CommandProvider`:\n\n```csharp\npublic partial class MyCommandsProvider : CommandProvider\n{\n    private readonly ICommandItem[] _commands;\n    private readonly FallbackCommandItem[] _fallbacks;\n\n    public MyCommandsProvider()\n    {\n        DisplayName = \"Web Search\";\n        Icon = new IconInfo(\"\\uE721\"); \u002F\u002F Search icon\n\n        var searchPage = new WebSearchPage();\n        _commands = [new CommandItem(searchPage) { Title = DisplayName }];\n        _fallbacks = [new FallbackCommandItem(searchPage) { Title = \"Search the web\" }];\n    }\n\n    public override ICommandItem[] TopLevelCommands() => _commands;\n    public override IFallbackCommandItem[] FallbackCommands() => _fallbacks;\n}\n```\n\n## Dynamic Fallback with DynamicListPage\n\nFor fallbacks that filter results based on the query, use `DynamicListPage`:\n\n```csharp\ninternal sealed partial class WebSearchPage : DynamicListPage\n{\n    private string _query = string.Empty;\n\n    public WebSearchPage()\n    {\n        Icon = new IconInfo(\"\\uE721\");\n        Title = \"Web Search\";\n        Name = \"Search\";\n        PlaceholderText = \"Type to search...\";\n    }\n\n    public override void UpdateSearchText(string oldSearch, string newSearch)\n    {\n        _query = newSearch;\n        RaiseItemsChanged();\n    }\n\n    public override IListItem[] GetItems()\n    {\n        if (string.IsNullOrWhiteSpace(_query))\n            return [];\n\n        return [\n            new ListItem(new OpenUrlCommand($\"https:\u002F\u002Fwww.google.com\u002Fsearch?q={Uri.EscapeDataString(_query)}\"))\n            {\n                Title = $\"Search Google for \\\"{_query}\\\"\",\n                Icon = new IconInfo(\"\\uE721\"),\n            },\n            new ListItem(new OpenUrlCommand($\"https:\u002F\u002Fwww.bing.com\u002Fsearch?q={Uri.EscapeDataString(_query)}\"))\n            {\n                Title = $\"Search Bing for \\\"{_query}\\\"\",\n                Icon = new IconInfo(\"\\uE721\"),\n            },\n        ];\n    }\n}\n```\n\n## Responsive Fallback with Cancellation\n\nFor expensive operations (API calls, file searches), use cancellation to stay responsive:\n\n```csharp\ninternal sealed partial class SmartSearchPage : DynamicListPage\n{\n    private CancellationTokenSource? _cts;\n    private IListItem[] _results = [];\n\n    public override void UpdateSearchText(string oldSearch, string newSearch)\n    {\n        \u002F\u002F Cancel any in-flight search\n        _cts?.Cancel();\n        _cts = new CancellationTokenSource();\n        var token = _cts.Token;\n\n        _ = Task.Run(async () =>\n        {\n            \u002F\u002F Debounce: wait for user to stop typing\n            await Task.Delay(300, token);\n            if (token.IsCancellationRequested) return;\n\n            \u002F\u002F Perform search\n            _results = await SearchAsync(newSearch, token);\n            RaiseItemsChanged();\n        }, token);\n    }\n\n    public override IListItem[] GetItems() => _results;\n\n    private async Task\u003CIListItem[]> SearchAsync(string query, CancellationToken token)\n    {\n        \u002F\u002F Your search logic here\n        \u002F\u002F Check token.IsCancellationRequested periodically\n        return [];\n    }\n}\n```\n\n## Real-World Examples (from built-in extensions)\n\n| Extension | Fallback Behavior |\n|-----------|------------------|\n| **Apps** | Search installed applications by name |\n| **Calc** | Evaluate mathematical expressions directly |\n| **Shell** | Execute command-line commands |\n| **WebSearch** | Search the web with configured engine |\n| **Indexer** | Open files by path |\n| **TimeDate** | Parse time\u002Fdate queries |\n| **WindowsSettings** | Jump to Windows Settings pages |\n| **WinGet** | Search WinGet packages |\n| **WindowWalker** | Find and switch to open windows |\n\n## Key Points\n\n- `FallbackCommands()` returns `IFallbackCommandItem[]` (not `ICommandItem[]`)\n- Use `FallbackCommandItem` wrapper (not `CommandItem`)\n- Wrap a `DynamicListPage` for query-reactive results\n- Cancel previous searches when new input arrives\n- Keep fallback responses fast — users expect instant results\n- Use `PlaceholderText` on your page to guide users\n\n## Documentation\n\n- [Extension samples](https:\u002F\u002Flearn.microsoft.com\u002Fwindows\u002Fpowertoys\u002Fcommand-palette\u002Fsamples)\n- [Extensibility overview](https:\u002F\u002Flearn.microsoft.com\u002Fwindows\u002Fpowertoys\u002Fcommand-palette\u002Fextensibility-overview)\n",{"name":5,"description":7},"main","5ce7acee5356814f1fbd8e8b8fd27b95c11a6def","src\u002Fmodules\u002Fcmdpal\u002FExtensionTemplate\u002FTemplateCmdPalExtension\u002F.github\u002Fskills\u002Fadd-fallback-commands",8729,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 02:45:55",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add microsoft\u002FPowerToys --skill add-fallback-commands",{"tool":60,"command":61},"bunx","bunx skills add microsoft\u002FPowerToys --skill add-fallback-commands",{"tool":63,"command":64},"pnpm","pnpm dlx skills add microsoft\u002FPowerToys --skill add-fallback-commands","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fcmdpal\u002FExtensionTemplate\u002FTemplateCmdPalExtension\u002F.github\u002Fskills\u002Fadd-fallback-commands\u002FSKILL.md",true,[],[69,106,142,175,202,227],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":73,"sourceHtmlUrl":74,"categories":75,"keywords":86,"publishedAt":40},"01M69BBVFWFXVP5T0QRVHVC764","winmd-api-search","Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI\u002FML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fwinmd-api-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fwinmd-api-search\u002FSKILL.md",[76,81],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[87,39,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,27,105,23],"winmd api search","api","file access","windows","ml","desktop","networking","capabilities","ui","notifications","explore","access","camera","methods","full","platform","events","controls","features",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":111,"sourceHtmlUrl":112,"categories":113,"keywords":117,"publishedAt":40},"01M69BBM5F427YJB53DV40WFEV","ui-tests-migration","Create, migrate, and stabilize PowerToys UI tests with Microsoft.PowerToys.UITest.Next and winappcli, through local VM success, commit\u002Fpush, and CI validation. Use for ports, new UITest projects, flaky CI tests, persistent Hyper-V validation, Settings IPC authentication\u002Ftest signing, Explorer\u002FShell selection, preview handlers, thumbnail providers, hotkey activation, stateful process lifecycle, composed WinUI\u002FWebView visual baselines, or foreground failures. Covers APIs, scaffolding, test design, diagnostics, and the required handoff to ui-tests-pipeline-ci. Keywords: UI test, UITests, UITestAutomation.Next, winappcli, WinAppDriver, Selenium, Settings IPC, not-microsoft-signed, Authenticode, local VM, Hyper-V, checkpoint, migrate, flaky, CI stability, Explorer, Shell extension, WebView2.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fui-tests-migration\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fui-tests-migration\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000032","设计师",[118,95,119,120,121,122,123,124,9,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141],"ui tests migration","migration","tests","design","handoff","stability","test","commit","diagnostics","create","powertoys","authentication","selenium","ci","pipeline","migrate","projects","ports","selection","scaffolding","preview","local","stateful","new",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":146,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":40},"01M69BBAKBN3RB0YF8CDV5TTAS","release-note-generation","Toolkit for generating PowerToys stable or preview release notes from GitHub milestones, commit ranges, or Azure DevOps release-candidate builds. Prepare draft preview releases with three-component GitHub tags while preserving four-component build and asset versions. Use when asked to create release notes, summarize milestone PRs, generate changelog, prepare a draft preview release, calculate PR deltas across main and stable, update release documentation, manage PR milestones, or prepare and validate release assets.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Frelease-note-generation\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Frelease-note-generation\u002FSKILL.md",[],[150,151,152,153,154,155,156,157,125,158,159,160,161,162,163,164,165,166,167,127,168,169,128,170,45,171,138,172,173,174,23],"release note generation","release","release note","generation","note","summarize","github","component","validate","azure devops","prepare","documentation","create release","notes","azure","pr","release notes","toolkit","generate","update","deltas","milestone","across","milestones","candidate",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":185,"publishedAt":40},"01M69BB4235609E12GSMJTZWPT","powertoys-verification","Verify PowerToys behavior end-to-end with the winapp CLI across two scenarios: (A) a module's release checklist against the installed build; (B) PR validation — derive each PR's checklist from its description + diff, then drive it against the installed build (a merged\u002Fshipped PR, or a whole release\u002Fhotfix set) or by building + sideloading the module when the PR isn't in the build yet (unmerged or not-yet-released). Drive each item via UIA invoke \u002F Named Events \u002F settings.json edits \u002F clipboard \u002F GPO \u002F SendInput, and emit a structured PASS \u002F FAIL \u002F BLOCKED verdict per item with evidence (FAIL distinguishes product defects from stale\u002Fambiguous checklist items). Use when asked to verify a module checklist, validate a PR, sign off a release\u002Fhotfix's PRs, or QA installed\u002Fsideloaded PowerToys bits. Combines generic winapp ui mechanics (references\u002Fwinapp-ui-testing.md) with PT-specific recipes, per-scenario playbooks (references\u002Fscenarios\u002F), and the helper .ps1 files shipped with this skill.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpowertoys-verification\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpowertoys-verification\u002FSKILL.md",[182],{"categoryNo":183,"categoryName":184,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000008","测试与质量",[128,186,187,188,189,158,165,151,95,33,190,191,192,193,194,195,196,103,197,198,199,200,201],"powertoys verification","verification","testing","cli","clipboard","files","build","scenario","module","recipes","verdict","release checklist","winapp cli","pt","prs","invoke",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":211,"publishedAt":40},"01M69BCCP7VKNARGZP6VSSW1PV","publish-extension","Publish your Command Palette extension to the Microsoft Store or WinGet. Use when asked to publish, distribute, release, deploy to store, create MSIX packages, submit to WinGet, set up CI\u002FCD for releases, or automate builds with GitHub Actions.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fcmdpal\u002FExtensionTemplate\u002FTemplateCmdPalExtension\u002F.github\u002Fskills\u002Fpublish-extension\u002FSKILL.md",[208],{"categoryNo":209,"categoryName":210,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000011","运维与部署",[212,213,214,156,9,215,216,217,127,24,151,218,131,219,220,221,34,222,223,224,225,30,226,23],"publish extension","publish","extension","msix","deploy","packages","actions","github actions","SET","automate","up","releases","distribute","submit","CI\u002FCD",{"skillNo":228,"name":229,"nameZh":6,"description":230,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":231,"categories":232,"keywords":233,"publishedAt":40},"01M69BC81SF2YG0G1YFZMAAFRN","add-extension-settings","Add a settings page to your Command Palette extension. Use when asked to add settings, preferences, configuration options, toggles, text inputs, dropdowns, or user-customizable behavior. Covers ToggleSetting, TextSetting, ChoiceSetSetting, and persistence.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FPowerToys\u002Fblob\u002Fmain\u002Fsrc\u002Fmodules\u002Fcmdpal\u002FExtensionTemplate\u002FTemplateCmdPalExtension\u002F.github\u002Fskills\u002Fadd-extension-settings\u002FSKILL.md",[],[234,235,214,21,24,236,237,238,239,34,240,241,33,242,243,30,23],"add extension settings","settings","persistence","preferences","text","page","behavior","user","configuration","options"]