mirror of
https://github.com/github/awesome-copilot.git
synced 2026-08-25 18:25:01 +00:00
fix(website): collapse long filter facets and unpin detail-page footer
Two issues surfaced by review of the redesigned site: Catalog facets rendered every option. The prototype's filter groups were built from small hardcoded arrays, but real data produces 193 tool options on /agents/ and 245 "Applies to" values on /instructions/. The sidebar grew to ~10,000px and stretched the whole catalog row, pushing the (already present) pagination control far below the fold so it read as missing. Adopt the prototype's own solution for this, which it had already applied to the extensions page: collapse groups past 10 options behind a "Show N more" toggle, and cap .filterOptions with an internal scroll area. Ported verbatim to the agents, instructions, skills, and plugins catalogs. Detail pages scroll inside .scrollHost rather than the document, but the footer came from PageShell, outside that element, so it stayed pinned over the content instead of appearing at the end. The prototype renders its footer inside the scroll host; PageShell now takes a renderFooter flag so DetailChassis can do the same. LearningArticleLayout already did this. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6
This commit is contained in:
@@ -0,0 +1 @@
|
||||
[ 1716ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:14391
|
||||
@@ -0,0 +1,2 @@
|
||||
[ 91ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4321/agent/accessibility-expert/:0
|
||||
[ 149ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4321/favicon.ico:0
|
||||
@@ -0,0 +1,18 @@
|
||||
[ 729ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:14391
|
||||
[ 75933ms] ReferenceError: LargeFooter is not defined
|
||||
at DetailChassis (http://localhost:4321/src/components/brand/DetailChassis.tsx?t=1786742250308:352:29)
|
||||
at Object.react_stack_bottom_frame (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:12904:12)
|
||||
at renderWithHooks (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:4235:19)
|
||||
at updateFunctionComponent (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:5607:16)
|
||||
at beginWork (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:6178:20)
|
||||
at runWithFiberInDEV (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:852:66)
|
||||
at performUnitOfWork (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:8467:92)
|
||||
at workLoopSync (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:8363:37)
|
||||
at renderRootSync (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:8347:6)
|
||||
at performWorkOnRoot (http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:8032:27)
|
||||
[ 75933ms] [WARNING] %s
|
||||
|
||||
%s
|
||||
An error occurred in the <DetailChassis> component. Consider adding an error boundary to your tree to customize error handling behavior.
|
||||
Visit https://react.dev/link/error-boundaries to learn more about error boundaries. @ http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:5295
|
||||
[ 150038ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:14391
|
||||
@@ -0,0 +1 @@
|
||||
[ 23763ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:14391
|
||||
@@ -0,0 +1,3 @@
|
||||
[ 1255ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:4321/node_modules/.vite/deps/client-D2l-HPP8.js?v=76c4dcbd:14391
|
||||
[ 30611ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4321/skill/pdf/:0
|
||||
[ 30617ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4321/plugin/:0
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
- main [ref=f1e2]:
|
||||
- 'heading "404: Not found" [level=1] [ref=f1e7]'
|
||||
- generic [ref=f1e8]: "Path: /agent/accessibility-expert/"
|
||||
@@ -0,0 +1,383 @@
|
||||
- generic [active] [ref=f2e1]:
|
||||
- generic [ref=f2e4]:
|
||||
- link "Skip to main content" [ref=f2e5] [cursor=pointer]:
|
||||
- /url: "#main-content"
|
||||
- banner [ref=f2e6]:
|
||||
- navigation "Primary" [ref=f2e7]:
|
||||
- link "Awesome GitHub Copilot" [ref=f2e8] [cursor=pointer]:
|
||||
- /url: /
|
||||
- list [ref=f2e11]:
|
||||
- listitem [ref=f2e12]:
|
||||
- group [ref=f2e13]:
|
||||
- generic "Resources" [ref=f2e14] [cursor=pointer]
|
||||
- listitem [ref=f2e17]:
|
||||
- link "Playbook" [ref=f2e18] [cursor=pointer]:
|
||||
- /url: /learning-hub/
|
||||
- generic [ref=f2e19]:
|
||||
- button "Search" [ref=f2e21] [cursor=pointer]
|
||||
- link "Meet all 0 contributors" [ref=f2e24] [cursor=pointer]:
|
||||
- /url: /contributors/
|
||||
- generic [ref=f2e28]: "0"
|
||||
- 'button "Language: English" [ref=f2e30] [cursor=pointer]':
|
||||
- generic [ref=f2e34]: English
|
||||
- link "Contribute" [ref=f2e39] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md
|
||||
- main [ref=f2e42]:
|
||||
- generic [ref=f2e43]:
|
||||
- generic [ref=f2e47]:
|
||||
- navigation "Breadcrumbs" [ref=f2e49]:
|
||||
- list [ref=f2e50]:
|
||||
- listitem [ref=f2e51]:
|
||||
- link "Agents" [ref=f2e52] [cursor=pointer]:
|
||||
- /url: /agents/
|
||||
- listitem [ref=f2e55]:
|
||||
- generic: .NET Upgrade
|
||||
- generic [ref=f2e56]:
|
||||
- heading ".NET Upgrade" [level=1] [ref=f2e57]
|
||||
- paragraph [ref=f2e58]: Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.
|
||||
- generic [ref=f2e59]:
|
||||
- generic [ref=f2e61]:
|
||||
- link "Install" [ref=f2e62] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fdotnet-upgrade.agent.md
|
||||
- button "Menu" [ref=f2e65] [cursor=pointer]
|
||||
- link "View the .NET Upgrade agent on GitHub" [ref=f2e70] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/dotnet-upgrade.agent.md
|
||||
- link "Download the .NET Upgrade agent file" [ref=f2e75] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/dotnet-upgrade.agent.md
|
||||
- generic [ref=f2e84]:
|
||||
- generic [ref=f2e85]:
|
||||
- article [ref=f2e86]:
|
||||
- generic [ref=f2e88]:
|
||||
- heading ".NET Upgrade Collection" [level=1] [ref=f2e89]
|
||||
- paragraph [ref=f2e90]: .NET Framework upgrade specialist for comprehensive project migration
|
||||
- paragraph [ref=f2e91]:
|
||||
- strong [ref=f2e92]: "Tags:"
|
||||
- text: dotnet, upgrade, migration, framework, modernization
|
||||
- heading "Collection Usage" [level=2] [ref=f2e93]
|
||||
- heading ".NET Upgrade Chat Mode" [level=3] [ref=f2e94]
|
||||
- paragraph [ref=f2e95]: Discover and plan your .NET upgrade journey!
|
||||
- code [ref=f2e97]: "--- mode: dotnet-upgrade title: Analyze current .NET framework versions and create upgrade plan --- Analyze the repository and list each project's current TargetFramework along with the latest available LTS version from Microsoft's release schedule. Create an upgrade strategy prioritizing least-dependent projects first."
|
||||
- paragraph [ref=f2e98]: The upgrade chat mode automatically adapts to your repository's current .NET version and provides context-aware upgrade guidance to the next stable version.
|
||||
- paragraph [ref=f2e99]: "It will help you:"
|
||||
- list [ref=f2e100]:
|
||||
- listitem [ref=f2e101]: Auto-detect current .NET versions across all projects
|
||||
- listitem [ref=f2e102]: Generate optimal upgrade sequences
|
||||
- listitem [ref=f2e103]: Identify breaking changes and modernization opportunities
|
||||
- listitem [ref=f2e104]: Create per-project upgrade flows
|
||||
- separator [ref=f2e105]
|
||||
- heading ".NET Upgrade Instructions" [level=3] [ref=f2e106]
|
||||
- paragraph [ref=f2e107]: Execute comprehensive .NET framework upgrades with structured guidance!
|
||||
- paragraph [ref=f2e108]: "The instructions provide:"
|
||||
- list [ref=f2e109]:
|
||||
- listitem [ref=f2e110]: Sequential upgrade strategies
|
||||
- listitem [ref=f2e111]: Dependency analysis and sequencing
|
||||
- listitem [ref=f2e112]: Framework targeting and code adjustments
|
||||
- listitem [ref=f2e113]: NuGet and dependency management
|
||||
- listitem [ref=f2e114]: CI/CD pipeline updates
|
||||
- listitem [ref=f2e115]: Testing and validation procedures
|
||||
- paragraph [ref=f2e116]: Use these instructions when implementing upgrade plans to ensure proper execution and validation.
|
||||
- separator [ref=f2e117]
|
||||
- heading ".NET Upgrade Prompts" [level=3] [ref=f2e118]
|
||||
- paragraph [ref=f2e119]: Quick access to specialized upgrade analysis prompts!
|
||||
- paragraph [ref=f2e120]: "The prompts collection includes ready-to-use queries for:"
|
||||
- list [ref=f2e121]:
|
||||
- listitem [ref=f2e122]: Project discovery and assessment
|
||||
- listitem [ref=f2e123]: Upgrade strategy and sequencing
|
||||
- listitem [ref=f2e124]: Framework targeting and code adjustments
|
||||
- listitem [ref=f2e125]: Breaking change analysis
|
||||
- listitem [ref=f2e126]: CI/CD pipeline updates
|
||||
- listitem [ref=f2e127]: Final validation and delivery
|
||||
- paragraph [ref=f2e128]: Use these prompts for targeted analysis of specific upgrade aspects.
|
||||
- separator [ref=f2e129]
|
||||
- heading "Quick Start" [level=2] [ref=f2e130]
|
||||
- list [ref=f2e131]:
|
||||
- listitem [ref=f2e132]:
|
||||
- text: Run a discovery pass to enumerate all
|
||||
- code [ref=f2e133]: "*.sln"
|
||||
- text: and
|
||||
- code [ref=f2e134]: "*.csproj"
|
||||
- text: files in the repository.
|
||||
- listitem [ref=f2e135]: Detect the current .NET version(s) used across projects.
|
||||
- listitem [ref=f2e136]:
|
||||
- text: Identify the latest available stable .NET version (LTS preferred) — usually
|
||||
- code [ref=f2e137]: "+2"
|
||||
- text: years ahead of the existing version.
|
||||
- listitem [ref=f2e138]:
|
||||
- text: Generate an upgrade plan to move from current → next stable version (e.g.,
|
||||
- code [ref=f2e139]: net6.0 → net8.0
|
||||
- text: ", or"
|
||||
- code [ref=f2e140]: net7.0 → net9.0
|
||||
- text: ).
|
||||
- listitem [ref=f2e141]: Upgrade one project at a time, validate builds, update tests, and modify CI/CD accordingly.
|
||||
- separator [ref=f2e142]
|
||||
- heading "Auto-Detect Current .NET Version" [level=2] [ref=f2e143]
|
||||
- paragraph [ref=f2e144]: "To automatically detect the current framework versions across the solution:"
|
||||
- code [ref=f2e146]: "# 1. Check global SDKs installed dotnet --list-sdks # 2. Detect project-level TargetFrameworks find . -name \"*.csproj\" -exec grep -H \"<TargetFramework\" {} \\; # 3. Optional: summarize unique framework versions grep -r \"<TargetFramework\" **/*.csproj | sed 's/.*<TargetFramework>//;s/<\\/TargetFramework>//' | sort | uniq # 4. Verify runtime environment dotnet --info | grep \"Version\""
|
||||
- paragraph [ref=f2e147]:
|
||||
- strong [ref=f2e148]: "Chat Prompt:"
|
||||
- blockquote [ref=f2e149]:
|
||||
- paragraph [ref=f2e150]: "\"Analyze the repository and list each project’s current TargetFramework along with the latest available LTS version from Microsoft’s release schedule.\""
|
||||
- separator [ref=f2e151]
|
||||
- heading "Discovery & Analysis Commands" [level=2] [ref=f2e152]
|
||||
- code [ref=f2e154]: "# List all projects dotnet sln list # Check current target frameworks for each project grep -H \"TargetFramework\" **/*.csproj # Check outdated packages dotnet list <ProjectName>.csproj package --outdated # Generate dependency graph dotnet msbuild <ProjectName>.csproj /t:GenerateRestoreGraphFile /p:RestoreGraphOutputPath=graph.json"
|
||||
- paragraph [ref=f2e155]:
|
||||
- strong [ref=f2e156]: "Chat Prompt:"
|
||||
- blockquote [ref=f2e157]:
|
||||
- paragraph [ref=f2e158]: "\"Analyze the solution and summarize each project’s current TargetFramework and suggest the appropriate next LTS upgrade version.\""
|
||||
- separator [ref=f2e159]
|
||||
- heading "Classification Rules" [level=2] [ref=f2e160]
|
||||
- list [ref=f2e161]:
|
||||
- listitem [ref=f2e162]:
|
||||
- code [ref=f2e163]: TargetFramework
|
||||
- text: starts with
|
||||
- code [ref=f2e164]: netcoreapp
|
||||
- text: ","
|
||||
- code [ref=f2e165]: net5.0+
|
||||
- text: ","
|
||||
- code [ref=f2e166]: net6.0+
|
||||
- text: ", etc. →"
|
||||
- strong [ref=f2e167]: Modern .NET
|
||||
- listitem [ref=f2e168]:
|
||||
- code [ref=f2e169]: netstandard*
|
||||
- text: →
|
||||
- strong [ref=f2e170]: .NET Standard
|
||||
- text: (migrate to current .NET version)
|
||||
- listitem [ref=f2e171]:
|
||||
- code [ref=f2e172]: net4*
|
||||
- text: →
|
||||
- strong [ref=f2e173]: .NET Framework
|
||||
- text: (migrate via intermediate step to .NET 8+)
|
||||
- separator [ref=f2e174]
|
||||
- heading "Upgrade Sequence" [level=2] [ref=f2e175]
|
||||
- list [ref=f2e176]:
|
||||
- listitem [ref=f2e177]:
|
||||
- strong [ref=f2e178]: "Start with Independent Libraries:"
|
||||
- text: Least dependent class libraries first.
|
||||
- listitem [ref=f2e179]:
|
||||
- strong [ref=f2e180]: "Next:"
|
||||
- text: Shared components and common utilities.
|
||||
- listitem [ref=f2e181]:
|
||||
- strong [ref=f2e182]: "Then:"
|
||||
- text: API, Web, or Function projects.
|
||||
- listitem [ref=f2e183]:
|
||||
- strong [ref=f2e184]: "Finally:"
|
||||
- text: Tests, integration points, and pipelines.
|
||||
- paragraph [ref=f2e185]:
|
||||
- strong [ref=f2e186]: "Chat Prompt:"
|
||||
- blockquote [ref=f2e187]:
|
||||
- paragraph [ref=f2e188]: "\"Generate the optimal upgrade order for this repository, prioritizing least-dependent projects first.\""
|
||||
- separator [ref=f2e189]
|
||||
- heading "Per-Project Upgrade Flow" [level=2] [ref=f2e190]
|
||||
- list [ref=f2e191]:
|
||||
- listitem [ref=f2e192]:
|
||||
- strong [ref=f2e193]: "Create branch:"
|
||||
- code [ref=f2e194]: upgrade/<project>-to-<targetVersion>
|
||||
- listitem [ref=f2e195]:
|
||||
- strong [ref=f2e196]:
|
||||
- text: Edit
|
||||
- code [ref=f2e197]: <TargetFramework>
|
||||
- text: in
|
||||
- code [ref=f2e198]: .csproj
|
||||
- text: to the suggested version (e.g.,
|
||||
- code [ref=f2e199]: net9.0
|
||||
- text: )
|
||||
- listitem [ref=f2e200]:
|
||||
- strong [ref=f2e201]: "Restore & update packages:"
|
||||
- code [ref=f2e203]: dotnet restore dotnet list package --outdated dotnet add package <PackageName> --version <LatestVersion>
|
||||
- listitem [ref=f2e204]:
|
||||
- strong [ref=f2e205]: "Build & test:"
|
||||
- code [ref=f2e207]: dotnet build <ProjectName>.csproj dotnet test <ProjectName>.Tests.csproj
|
||||
- listitem [ref=f2e208]:
|
||||
- strong [ref=f2e209]: Fix issues
|
||||
- text: — resolve deprecated APIs, adjust configurations, modernize JSON/logging/DI.
|
||||
- listitem [ref=f2e210]:
|
||||
- strong [ref=f2e211]: Commit & push
|
||||
- text: PR with test evidence and checklist.
|
||||
- separator [ref=f2e212]
|
||||
- heading "Breaking Changes & Modernization" [level=2] [ref=f2e213]
|
||||
- list [ref=f2e214]:
|
||||
- listitem [ref=f2e215]:
|
||||
- text: Use
|
||||
- code [ref=f2e216]: .NET Upgrade Assistant
|
||||
- text: for initial recommendations.
|
||||
- listitem [ref=f2e217]: Apply analyzers to detect obsolete APIs.
|
||||
- listitem [ref=f2e218]:
|
||||
- text: Replace outdated SDKs (e.g.,
|
||||
- code [ref=f2e219]: Microsoft.Azure.*
|
||||
- text: →
|
||||
- code [ref=f2e220]: Azure.*
|
||||
- text: ).
|
||||
- listitem [ref=f2e221]:
|
||||
- text: Modernize startup logic (
|
||||
- code [ref=f2e222]: Startup.cs
|
||||
- text: →
|
||||
- code [ref=f2e223]: Program.cs
|
||||
- text: top-level statements).
|
||||
- paragraph [ref=f2e224]:
|
||||
- strong [ref=f2e225]: "Chat Prompt:"
|
||||
- blockquote [ref=f2e226]:
|
||||
- paragraph [ref=f2e227]: "\"List deprecated or incompatible APIs when upgrading from to for .\""
|
||||
- separator [ref=f2e228]
|
||||
- heading "CI/CD Configuration Updates" [level=2] [ref=f2e229]
|
||||
- paragraph [ref=f2e230]:
|
||||
- text: Ensure pipelines use the detected
|
||||
- strong [ref=f2e231]: target version
|
||||
- text: "dynamically:"
|
||||
- paragraph [ref=f2e232]:
|
||||
- strong [ref=f2e233]: Azure DevOps
|
||||
- code [ref=f2e235]: "- task: UseDotNet@2 inputs: packageType: 'sdk' version: '$(TargetDotNetVersion).x'"
|
||||
- paragraph [ref=f2e236]:
|
||||
- strong [ref=f2e237]: GitHub Actions
|
||||
- code [ref=f2e239]: "- uses: actions/setup-dotnet@v4 with: dotnet-version: '${{ env.TargetDotNetVersion }}.x'"
|
||||
- separator [ref=f2e240]
|
||||
- heading "Validation Checklist" [level=2] [ref=f2e241]
|
||||
- list [ref=f2e242]:
|
||||
- listitem [ref=f2e243]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f2e244]
|
||||
- text: TargetFramework upgraded to next stable version
|
||||
- listitem [ref=f2e245]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f2e246]
|
||||
- text: All NuGet packages compatible and updated
|
||||
- listitem [ref=f2e247]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f2e248]
|
||||
- text: Build and test pipelines succeed locally and in CI
|
||||
- listitem [ref=f2e249]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f2e250]
|
||||
- text: Integration tests pass
|
||||
- listitem [ref=f2e251]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f2e252]
|
||||
- text: Deployed to a lower environment and verified
|
||||
- separator [ref=f2e253]
|
||||
- heading "Branching & Rollback Strategy" [level=2] [ref=f2e254]
|
||||
- list [ref=f2e255]:
|
||||
- listitem [ref=f2e256]:
|
||||
- text: "Use feature branches:"
|
||||
- code [ref=f2e257]: upgrade/<project>-to-<targetVersion>
|
||||
- listitem [ref=f2e258]: Commit frequently and keep changes atomic
|
||||
- listitem [ref=f2e259]: If CI fails after merge, revert PR and isolate failing modules
|
||||
- paragraph [ref=f2e260]:
|
||||
- strong [ref=f2e261]: "Chat Prompt:"
|
||||
- blockquote [ref=f2e262]:
|
||||
- paragraph [ref=f2e263]: "\"Suggest a rollback and validation plan if the .NET upgrade for introduces build or runtime regressions.\""
|
||||
- separator [ref=f2e264]
|
||||
- heading "Automation & Scaling" [level=2] [ref=f2e265]
|
||||
- list [ref=f2e266]:
|
||||
- listitem [ref=f2e267]: Automate upgrade detection with GitHub Actions or Azure Pipelines.
|
||||
- listitem [ref=f2e268]:
|
||||
- text: Schedule nightly runs to check for new .NET releases via
|
||||
- code [ref=f2e269]: dotnet --list-sdks
|
||||
- text: .
|
||||
- listitem [ref=f2e270]: Use agents to automatically raise PRs for outdated frameworks.
|
||||
- separator [ref=f2e271]
|
||||
- heading "Chatmode Prompt Library" [level=2] [ref=f2e272]
|
||||
- list [ref=f2e273]:
|
||||
- listitem [ref=f2e274]: "\"List all projects with current and recommended .NET versions.\""
|
||||
- listitem [ref=f2e275]: "\"Generate a per-project upgrade plan from to .\""
|
||||
- listitem [ref=f2e276]: "\"Suggest .csproj and pipeline edits to upgrade .\""
|
||||
- listitem [ref=f2e277]: "\"Summarize build/test results post-upgrade for .\""
|
||||
- listitem [ref=f2e278]: "\"Create PR description and checklist for the upgrade.\""
|
||||
- separator [ref=f2e279]
|
||||
- complementary [ref=f2e280]:
|
||||
- generic [ref=f2e281]:
|
||||
- generic [ref=f2e282]:
|
||||
- generic [ref=f2e283]: In this article
|
||||
- navigation "In this article" [ref=f2e285]:
|
||||
- list [ref=f2e286]:
|
||||
- listitem [ref=f2e287]:
|
||||
- link "Collection Usage" [ref=f2e288] [cursor=pointer]:
|
||||
- /url: "#collection-usage"
|
||||
- listitem [ref=f2e289]:
|
||||
- link "Quick Start" [ref=f2e290] [cursor=pointer]:
|
||||
- /url: "#quick-start"
|
||||
- listitem [ref=f2e291]:
|
||||
- link "Auto-Detect Current .NET Version" [ref=f2e292] [cursor=pointer]:
|
||||
- /url: "#auto-detect-current-net-version"
|
||||
- listitem [ref=f2e293]:
|
||||
- link "Discovery & Analysis Commands" [ref=f2e294] [cursor=pointer]:
|
||||
- /url: "#discovery-analysis-commands"
|
||||
- listitem [ref=f2e295]:
|
||||
- link "Classification Rules" [ref=f2e296] [cursor=pointer]:
|
||||
- /url: "#classification-rules"
|
||||
- listitem [ref=f2e297]:
|
||||
- link "Upgrade Sequence" [ref=f2e298] [cursor=pointer]:
|
||||
- /url: "#upgrade-sequence"
|
||||
- listitem [ref=f2e299]:
|
||||
- link "Per-Project Upgrade Flow" [ref=f2e300] [cursor=pointer]:
|
||||
- /url: "#per-project-upgrade-flow"
|
||||
- listitem [ref=f2e301]:
|
||||
- link "Breaking Changes & Modernization" [ref=f2e302] [cursor=pointer]:
|
||||
- /url: "#breaking-changes-modernization"
|
||||
- listitem [ref=f2e303]:
|
||||
- link "CI/CD Configuration Updates" [ref=f2e304] [cursor=pointer]:
|
||||
- /url: "#ci-cd-configuration-updates"
|
||||
- listitem [ref=f2e305]:
|
||||
- link "Validation Checklist" [ref=f2e306] [cursor=pointer]:
|
||||
- /url: "#validation-checklist"
|
||||
- listitem [ref=f2e307]:
|
||||
- link "Branching & Rollback Strategy" [ref=f2e308] [cursor=pointer]:
|
||||
- /url: "#branching-rollback-strategy"
|
||||
- listitem [ref=f2e309]:
|
||||
- link "Automation & Scaling" [ref=f2e310] [cursor=pointer]:
|
||||
- /url: "#automation-scaling"
|
||||
- listitem [ref=f2e311]:
|
||||
- link "Chatmode Prompt Library" [ref=f2e312] [cursor=pointer]:
|
||||
- /url: "#chatmode-prompt-library"
|
||||
- generic [ref=f2e313]:
|
||||
- generic [ref=f2e314]: Agent details
|
||||
- generic [ref=f2e316]:
|
||||
- generic [ref=f2e317]:
|
||||
- generic [ref=f2e318]: Tools
|
||||
- generic [ref=f2e319]:
|
||||
- generic [ref=f2e320]: codebase
|
||||
- generic [ref=f2e321]: edit/editFiles
|
||||
- generic [ref=f2e322]: search
|
||||
- generic [ref=f2e323]: runCommands
|
||||
- generic [ref=f2e324]: runTasks
|
||||
- generic [ref=f2e325]: runTests
|
||||
- generic [ref=f2e326]: problems
|
||||
- generic [ref=f2e327]: changes
|
||||
- generic [ref=f2e328]: usages
|
||||
- generic [ref=f2e329]: findTestFiles
|
||||
- generic [ref=f2e330]: testFailure
|
||||
- generic [ref=f2e331]: terminalLastCommand
|
||||
- generic [ref=f2e332]: terminalSelection
|
||||
- generic [ref=f2e333]: web/fetch
|
||||
- generic [ref=f2e334]: microsoft.docs.mcp
|
||||
- generic [ref=f2e335]:
|
||||
- generic [ref=f2e336]: Last updated
|
||||
- generic [ref=f2e337]: 4 February 2026
|
||||
- generic [ref=f2e339]:
|
||||
- generic [ref=f2e340]: Source
|
||||
- link "View on GitHub" [ref=f2e342] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/dotnet-upgrade.agent.md
|
||||
- complementary "More like this" [ref=f2e348]:
|
||||
- generic [ref=f2e349]:
|
||||
- generic [ref=f2e350]: Previous
|
||||
- link ".NET Self Learning Architect" [ref=f2e352] [cursor=pointer]:
|
||||
- /url: /agent/dotnet-self-learning-architect/
|
||||
- generic [ref=f2e355]:
|
||||
- generic [ref=f2e356]: Up next
|
||||
- link "Accessibility Expert" [ref=f2e358] [cursor=pointer]:
|
||||
- /url: /agent/accessibility/
|
||||
- button
|
||||
- contentinfo [ref=f2e361]:
|
||||
- link "GitHub" [ref=f2e366] [cursor=pointer]:
|
||||
- /url: https://github.com
|
||||
- generic [ref=f2e374]:
|
||||
- generic [ref=f2e375]:
|
||||
- link "Terms" [ref=f2e376] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/github-terms/github-terms-of-service
|
||||
- link "Privacy" [ref=f2e377] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement
|
||||
- link "GitHub Docs" [ref=f2e378] [cursor=pointer]:
|
||||
- /url: https://docs.github.com
|
||||
- link "Community" [ref=f2e379] [cursor=pointer]:
|
||||
- /url: https://github.community
|
||||
- link "Support" [ref=f2e380] [cursor=pointer]:
|
||||
- /url: https://support.github.com
|
||||
- paragraph [ref=f2e381]: © 2026 GitHub. All rights reserved.
|
||||
- generic [ref=f2e384]:
|
||||
- button [ref=f2e385]
|
||||
- button [ref=f2e391]
|
||||
- button [ref=f2e395]
|
||||
- button [ref=f2e400]
|
||||
@@ -0,0 +1,314 @@
|
||||
- generic [active] [ref=f4e1]:
|
||||
- generic [ref=f4e4]:
|
||||
- link "Skip to main content" [ref=f4e5] [cursor=pointer]:
|
||||
- /url: "#main-content"
|
||||
- banner [ref=f4e6]:
|
||||
- navigation "Primary" [ref=f4e7]:
|
||||
- link "Awesome GitHub Copilot" [ref=f4e8] [cursor=pointer]:
|
||||
- /url: /
|
||||
- list [ref=f4e11]:
|
||||
- listitem [ref=f4e12]:
|
||||
- group [ref=f4e13]:
|
||||
- generic "Resources" [ref=f4e14] [cursor=pointer]
|
||||
- listitem [ref=f4e17]:
|
||||
- link "Playbook" [ref=f4e18] [cursor=pointer]:
|
||||
- /url: /learning-hub/
|
||||
- generic [ref=f4e19]:
|
||||
- button "Search" [ref=f4e21] [cursor=pointer]
|
||||
- link "Meet all 0 contributors" [ref=f4e24] [cursor=pointer]:
|
||||
- /url: /contributors/
|
||||
- generic [ref=f4e28]: "0"
|
||||
- 'button "Language: English" [ref=f4e30] [cursor=pointer]':
|
||||
- generic [ref=f4e34]: English
|
||||
- link "Contribute" [ref=f4e39] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md
|
||||
- main [ref=f4e42]:
|
||||
- generic [ref=f4e44]:
|
||||
- heading "Agents" [level=1] [ref=f4e51]
|
||||
- paragraph [ref=f4e52]: Specialized agents that enhance GitHub Copilot for specific technologies, workflows, and domains — contributed and curated by the community.
|
||||
- generic [ref=f4e55]:
|
||||
- complementary "Filter agents" [ref=f4e56]:
|
||||
- generic [ref=f4e57]:
|
||||
- generic [ref=f4e58]:
|
||||
- generic [ref=f4e59]: Model
|
||||
- generic [ref=f4e60]:
|
||||
- generic [ref=f4e62]:
|
||||
- generic [ref=f4e63]:
|
||||
- checkbox "(none)" [ref=f4e64]
|
||||
- generic [ref=f4e65] [cursor=pointer]
|
||||
- generic [ref=f4e68] [cursor=pointer]: (none)
|
||||
- generic [ref=f4e70]:
|
||||
- generic [ref=f4e71]:
|
||||
- checkbox "Claude Haiku 4.5 (copilot)" [ref=f4e72]
|
||||
- generic [ref=f4e73] [cursor=pointer]
|
||||
- generic [ref=f4e76] [cursor=pointer]: Claude Haiku 4.5 (copilot)
|
||||
- generic [ref=f4e78]:
|
||||
- generic [ref=f4e79]:
|
||||
- checkbox "Claude Opus 4.6 (copilot)" [ref=f4e80]
|
||||
- generic [ref=f4e81] [cursor=pointer]
|
||||
- generic [ref=f4e84] [cursor=pointer]: Claude Opus 4.6 (copilot)
|
||||
- generic [ref=f4e86]:
|
||||
- generic [ref=f4e87]:
|
||||
- checkbox "Claude Opus 4.7" [ref=f4e88]
|
||||
- generic [ref=f4e89] [cursor=pointer]
|
||||
- generic [ref=f4e92] [cursor=pointer]: Claude Opus 4.7
|
||||
- generic [ref=f4e94]:
|
||||
- generic [ref=f4e95]:
|
||||
- checkbox "Claude Sonnet 4" [ref=f4e96]
|
||||
- generic [ref=f4e97] [cursor=pointer]
|
||||
- generic [ref=f4e100] [cursor=pointer]: Claude Sonnet 4
|
||||
- generic [ref=f4e102]:
|
||||
- generic [ref=f4e103]:
|
||||
- checkbox "Claude Sonnet 4.5" [ref=f4e104]
|
||||
- generic [ref=f4e105] [cursor=pointer]
|
||||
- generic [ref=f4e108] [cursor=pointer]: Claude Sonnet 4.5
|
||||
- generic [ref=f4e110]:
|
||||
- generic [ref=f4e111]:
|
||||
- checkbox "Claude Sonnet 4.5 (copilot)" [ref=f4e112]
|
||||
- generic [ref=f4e113] [cursor=pointer]
|
||||
- generic [ref=f4e116] [cursor=pointer]: Claude Sonnet 4.5 (copilot)
|
||||
- generic [ref=f4e118]:
|
||||
- generic [ref=f4e119]:
|
||||
- checkbox "Claude Sonnet 4.6" [ref=f4e120]
|
||||
- generic [ref=f4e121] [cursor=pointer]
|
||||
- generic [ref=f4e124] [cursor=pointer]: Claude Sonnet 4.6
|
||||
- generic [ref=f4e126]:
|
||||
- generic [ref=f4e127]:
|
||||
- checkbox "Claude Sonnet 4.6 (copilot)" [ref=f4e128]
|
||||
- generic [ref=f4e129] [cursor=pointer]
|
||||
- generic [ref=f4e132] [cursor=pointer]: Claude Sonnet 4.6 (copilot)
|
||||
- generic [ref=f4e134]:
|
||||
- generic [ref=f4e135]:
|
||||
- checkbox "claude-3.5-sonnet" [ref=f4e136]
|
||||
- generic [ref=f4e137] [cursor=pointer]
|
||||
- generic [ref=f4e140] [cursor=pointer]: claude-3.5-sonnet
|
||||
- button "Show 16 more" [ref=f4e141] [cursor=pointer]
|
||||
- generic [ref=f4e142]:
|
||||
- generic [ref=f4e143]: Tools
|
||||
- generic [ref=f4e144]:
|
||||
- generic [ref=f4e146]:
|
||||
- generic [ref=f4e147]:
|
||||
- checkbox "*" [ref=f4e148]
|
||||
- generic [ref=f4e149] [cursor=pointer]
|
||||
- generic [ref=f4e152] [cursor=pointer]: "*"
|
||||
- generic [ref=f4e154]:
|
||||
- generic [ref=f4e155]:
|
||||
- checkbox "activePullRequest" [ref=f4e156]
|
||||
- generic [ref=f4e157] [cursor=pointer]
|
||||
- generic [ref=f4e160] [cursor=pointer]: activePullRequest
|
||||
- generic [ref=f4e162]:
|
||||
- generic [ref=f4e163]:
|
||||
- checkbox "add_issue_comment" [ref=f4e164]
|
||||
- generic [ref=f4e165] [cursor=pointer]
|
||||
- generic [ref=f4e168] [cursor=pointer]: add_issue_comment
|
||||
- generic [ref=f4e170]:
|
||||
- generic [ref=f4e171]:
|
||||
- checkbox "agent" [ref=f4e172]
|
||||
- generic [ref=f4e173] [cursor=pointer]
|
||||
- generic [ref=f4e176] [cursor=pointer]: agent
|
||||
- generic [ref=f4e178]:
|
||||
- generic [ref=f4e179]:
|
||||
- checkbox "agent/runSubagent" [ref=f4e180]
|
||||
- generic [ref=f4e181] [cursor=pointer]
|
||||
- generic [ref=f4e184] [cursor=pointer]: agent/runSubagent
|
||||
- generic [ref=f4e186]:
|
||||
- generic [ref=f4e187]:
|
||||
- checkbox "atlassian" [ref=f4e188]
|
||||
- generic [ref=f4e189] [cursor=pointer]
|
||||
- generic [ref=f4e192] [cursor=pointer]: atlassian
|
||||
- generic [ref=f4e194]:
|
||||
- generic [ref=f4e195]:
|
||||
- checkbox "azure_design_architecture" [ref=f4e196]
|
||||
- generic [ref=f4e197] [cursor=pointer]
|
||||
- generic [ref=f4e200] [cursor=pointer]: azure_design_architecture
|
||||
- generic [ref=f4e202]:
|
||||
- generic [ref=f4e203]:
|
||||
- checkbox "azure_get_azure_verified_module" [ref=f4e204]
|
||||
- generic [ref=f4e205] [cursor=pointer]
|
||||
- generic [ref=f4e208] [cursor=pointer]: azure_get_azure_verified_module
|
||||
- generic [ref=f4e210]:
|
||||
- generic [ref=f4e211]:
|
||||
- checkbox "azure_get_code_gen_best_practices" [ref=f4e212]
|
||||
- generic [ref=f4e213] [cursor=pointer]
|
||||
- generic [ref=f4e216] [cursor=pointer]: azure_get_code_gen_best_practices
|
||||
- generic [ref=f4e218]:
|
||||
- generic [ref=f4e219]:
|
||||
- checkbox "azure_get_deployment_best_practices" [ref=f4e220]
|
||||
- generic [ref=f4e221] [cursor=pointer]
|
||||
- generic [ref=f4e224] [cursor=pointer]: azure_get_deployment_best_practices
|
||||
- button "Show 183 more" [ref=f4e225] [cursor=pointer]
|
||||
- generic [ref=f4e226]:
|
||||
- generic [ref=f4e227]: Last updated
|
||||
- generic [ref=f4e228]:
|
||||
- generic [ref=f4e230]:
|
||||
- generic [ref=f4e231]:
|
||||
- checkbox "Past week" [ref=f4e232]
|
||||
- generic [ref=f4e233] [cursor=pointer]
|
||||
- generic [ref=f4e236] [cursor=pointer]: Past week
|
||||
- generic [ref=f4e238]:
|
||||
- generic [ref=f4e239]:
|
||||
- checkbox "Past month" [ref=f4e240]
|
||||
- generic [ref=f4e241] [cursor=pointer]
|
||||
- generic [ref=f4e244] [cursor=pointer]: Past month
|
||||
- generic [ref=f4e246]:
|
||||
- generic [ref=f4e247]:
|
||||
- checkbox "Past 3 months" [ref=f4e248]
|
||||
- generic [ref=f4e249] [cursor=pointer]
|
||||
- generic [ref=f4e252] [cursor=pointer]: Past 3 months
|
||||
- generic [ref=f4e254]:
|
||||
- generic [ref=f4e255]:
|
||||
- checkbox "Past 6 months" [ref=f4e256]
|
||||
- generic [ref=f4e257] [cursor=pointer]
|
||||
- generic [ref=f4e260] [cursor=pointer]: Past 6 months
|
||||
- generic [ref=f4e262]:
|
||||
- generic [ref=f4e263]:
|
||||
- checkbox "Older" [ref=f4e264]
|
||||
- generic [ref=f4e265] [cursor=pointer]
|
||||
- generic [ref=f4e268] [cursor=pointer]: Older
|
||||
- generic [ref=f4e272]:
|
||||
- generic [ref=f4e274]:
|
||||
- generic [ref=f4e276]:
|
||||
- heading [level=2] [ref=f4e277]:
|
||||
- link ".NET Self Learning Architect" [ref=f4e278] [cursor=pointer]:
|
||||
- /url: /agent/dotnet-self-learning-architect/
|
||||
- paragraph [ref=f4e279]:
|
||||
- generic [ref=f4e280]: "Senior .NET architect for complex delivery: designs .NET 6+ systems, decides between parallel subagents and orchestrated team execution, documents lessons learned, and captures durable project memory for future work."
|
||||
- generic [ref=f4e281]:
|
||||
- generic [ref=f4e283]:
|
||||
- link "Install" [ref=f4e284] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fdotnet-self-learning-architect.agent.md
|
||||
- button "Menu" [ref=f4e287] [cursor=pointer]
|
||||
- link "Download .NET Self Learning Architect agent file" [ref=f4e292] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/dotnet-self-learning-architect.agent.md
|
||||
- link "View .NET Self Learning Architect agent on GitHub" [ref=f4e298] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/dotnet-self-learning-architect.agent.md
|
||||
- generic [ref=f4e304]:
|
||||
- generic [ref=f4e306]:
|
||||
- heading [level=2] [ref=f4e307]:
|
||||
- link ".NET Upgrade" [ref=f4e308] [cursor=pointer]:
|
||||
- /url: /agent/dotnet-upgrade/
|
||||
- paragraph [ref=f4e309]:
|
||||
- generic [ref=f4e310]: Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.
|
||||
- generic [ref=f4e311]:
|
||||
- generic [ref=f4e313]:
|
||||
- link "Install" [ref=f4e314] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fdotnet-upgrade.agent.md
|
||||
- button "Menu" [ref=f4e317] [cursor=pointer]
|
||||
- link "Download .NET Upgrade agent file" [ref=f4e322] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/dotnet-upgrade.agent.md
|
||||
- link "View .NET Upgrade agent on GitHub" [ref=f4e328] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/dotnet-upgrade.agent.md
|
||||
- generic [ref=f4e334]:
|
||||
- generic [ref=f4e336]:
|
||||
- heading [level=2] [ref=f4e337]:
|
||||
- link "Accessibility Expert" [ref=f4e338] [cursor=pointer]:
|
||||
- /url: /agent/accessibility/
|
||||
- paragraph [ref=f4e339]:
|
||||
- generic [ref=f4e340]: Expert assistant for web accessibility (WCAG 2.1/2.2), inclusive UX, and a11y testing
|
||||
- generic [ref=f4e341]:
|
||||
- generic [ref=f4e343]:
|
||||
- link "Install" [ref=f4e344] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Faccessibility.agent.md
|
||||
- button "Menu" [ref=f4e347] [cursor=pointer]
|
||||
- link "Download Accessibility Expert agent file" [ref=f4e352] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/accessibility.agent.md
|
||||
- link "View Accessibility Expert agent on GitHub" [ref=f4e358] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/accessibility.agent.md
|
||||
- generic [ref=f4e364]:
|
||||
- generic [ref=f4e366]:
|
||||
- heading [level=2] [ref=f4e367]:
|
||||
- link "Accessibility Runtime Tester" [ref=f4e368] [cursor=pointer]:
|
||||
- /url: /agent/accessibility-runtime-tester/
|
||||
- paragraph [ref=f4e369]:
|
||||
- generic [ref=f4e370]: Runtime accessibility specialist for keyboard flows, focus management, dialog behavior, form errors, and evidence-backed WCAG validation in the browser.
|
||||
- generic [ref=f4e371]:
|
||||
- generic [ref=f4e373]:
|
||||
- link "Install" [ref=f4e374] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Faccessibility-runtime-tester.agent.md
|
||||
- button "Menu" [ref=f4e377] [cursor=pointer]
|
||||
- link "Download Accessibility Runtime Tester agent file" [ref=f4e382] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/accessibility-runtime-tester.agent.md
|
||||
- link "View Accessibility Runtime Tester agent on GitHub" [ref=f4e388] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/accessibility-runtime-tester.agent.md
|
||||
- generic [ref=f4e394]:
|
||||
- generic [ref=f4e396]:
|
||||
- heading [level=2] [ref=f4e397]:
|
||||
- link "ADR Generator" [ref=f4e398] [cursor=pointer]:
|
||||
- /url: /agent/adr-generator/
|
||||
- paragraph [ref=f4e399]:
|
||||
- generic [ref=f4e400]: Expert agent for creating comprehensive Architectural Decision Records (ADRs) with structured formatting optimized for AI consumption and human readability.
|
||||
- generic [ref=f4e401]:
|
||||
- generic [ref=f4e403]:
|
||||
- link "Install" [ref=f4e404] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fadr-generator.agent.md
|
||||
- button "Menu" [ref=f4e407] [cursor=pointer]
|
||||
- link "Download ADR Generator agent file" [ref=f4e412] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/adr-generator.agent.md
|
||||
- link "View ADR Generator agent on GitHub" [ref=f4e418] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/adr-generator.agent.md
|
||||
- generic [ref=f4e424]:
|
||||
- generic [ref=f4e426]:
|
||||
- heading [level=2] [ref=f4e427]:
|
||||
- link "AEM Front End Specialist" [ref=f4e428] [cursor=pointer]:
|
||||
- /url: /agent/aem-frontend-specialist/
|
||||
- paragraph [ref=f4e429]:
|
||||
- generic [ref=f4e430]: Expert assistant for developing AEM components using HTL, Tailwind CSS, and Figma-to-code workflows with design system integration
|
||||
- generic [ref=f4e431]:
|
||||
- generic [ref=f4e433]:
|
||||
- link "Install" [ref=f4e434] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Faem-frontend-specialist.agent.md
|
||||
- button "Menu" [ref=f4e437] [cursor=pointer]
|
||||
- link "Download AEM Front End Specialist agent file" [ref=f4e442] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/aem-frontend-specialist.agent.md
|
||||
- link "View AEM Front End Specialist agent on GitHub" [ref=f4e448] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/aem-frontend-specialist.agent.md
|
||||
- navigation "Pagination" [ref=f4e456]:
|
||||
- generic [ref=f4e457]:
|
||||
- button "Previous Page" [disabled] [ref=f4e458]:
|
||||
- generic [ref=f4e459]: Previous
|
||||
- button "Page 1" [ref=f4e466] [cursor=pointer]:
|
||||
- generic [ref=f4e467]: "1"
|
||||
- button "Page 2" [ref=f4e469] [cursor=pointer]:
|
||||
- generic [ref=f4e470]: "2"
|
||||
- button "Page 3" [ref=f4e472] [cursor=pointer]:
|
||||
- generic [ref=f4e473]: "3"
|
||||
- button "Page 4" [ref=f4e475] [cursor=pointer]:
|
||||
- generic [ref=f4e476]: "4"
|
||||
- button "Page 5" [ref=f4e478] [cursor=pointer]:
|
||||
- generic [ref=f4e479]: "5"
|
||||
- button "Page 6..." [ref=f4e481] [cursor=pointer]:
|
||||
- generic [ref=f4e482]: "6"
|
||||
- generic [ref=f4e484] [cursor=pointer]: …
|
||||
- button "Page 38" [ref=f4e486] [cursor=pointer]:
|
||||
- generic [ref=f4e487]: "38"
|
||||
- button "Next Page" [ref=f4e489] [cursor=pointer]:
|
||||
- generic [ref=f4e490]: Next
|
||||
- generic [ref=f4e504]:
|
||||
- heading "Can’t find the agent you need?" [level=3] [ref=f4e505]
|
||||
- paragraph [ref=f4e506]: This library is community-built. Share an agent you use—or request one—to help developers ship faster with GitHub Copilot.
|
||||
- generic [ref=f4e507]:
|
||||
- link "Submit an agent" [ref=f4e508] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md
|
||||
- link "Request an agent" [ref=f4e510] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/issues/new
|
||||
- contentinfo [ref=f4e512]:
|
||||
- link "GitHub" [ref=f4e517] [cursor=pointer]:
|
||||
- /url: https://github.com
|
||||
- generic [ref=f4e525]:
|
||||
- generic [ref=f4e526]:
|
||||
- link "Terms" [ref=f4e527] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/github-terms/github-terms-of-service
|
||||
- link "Privacy" [ref=f4e528] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement
|
||||
- link "GitHub Docs" [ref=f4e529] [cursor=pointer]:
|
||||
- /url: https://docs.github.com
|
||||
- link "Community" [ref=f4e530] [cursor=pointer]:
|
||||
- /url: https://github.community
|
||||
- link "Support" [ref=f4e531] [cursor=pointer]:
|
||||
- /url: https://support.github.com
|
||||
- paragraph [ref=f4e532]: © 2026 GitHub. All rights reserved.
|
||||
- generic [ref=f4e535]:
|
||||
- button [ref=f4e536]
|
||||
- button [ref=f4e542]
|
||||
- button [ref=f4e546]
|
||||
- button [ref=f4e551]
|
||||
@@ -0,0 +1,314 @@
|
||||
- generic [ref=f4e1]:
|
||||
- generic [ref=f4e4]:
|
||||
- link "Skip to main content" [ref=f4e5] [cursor=pointer]:
|
||||
- /url: "#main-content"
|
||||
- banner [ref=f4e6]:
|
||||
- navigation "Primary" [ref=f4e7]:
|
||||
- link "Awesome GitHub Copilot" [ref=f4e8] [cursor=pointer]:
|
||||
- /url: /
|
||||
- list [ref=f4e11]:
|
||||
- listitem [ref=f4e12]:
|
||||
- group [ref=f4e13]:
|
||||
- generic "Resources" [ref=f4e14] [cursor=pointer]
|
||||
- listitem [ref=f4e17]:
|
||||
- link "Playbook" [ref=f4e18] [cursor=pointer]:
|
||||
- /url: /learning-hub/
|
||||
- generic [ref=f4e19]:
|
||||
- button "Search" [ref=f4e21] [cursor=pointer]
|
||||
- link "Meet all 0 contributors" [ref=f4e24] [cursor=pointer]:
|
||||
- /url: /contributors/
|
||||
- generic [ref=f4e28]: "0"
|
||||
- 'button "Language: English" [ref=f4e30] [cursor=pointer]':
|
||||
- generic [ref=f4e34]: English
|
||||
- link "Contribute" [ref=f4e39] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md
|
||||
- main [ref=f4e42]:
|
||||
- generic [ref=f4e44]:
|
||||
- heading "Agents" [level=1] [ref=f4e51]
|
||||
- paragraph [ref=f4e52]: Specialized agents that enhance GitHub Copilot for specific technologies, workflows, and domains — contributed and curated by the community.
|
||||
- generic [ref=f4e55]:
|
||||
- complementary "Filter agents" [ref=f4e56]:
|
||||
- generic [ref=f4e57]:
|
||||
- generic [ref=f4e58]:
|
||||
- generic [ref=f4e59]: Model
|
||||
- generic [ref=f4e60]:
|
||||
- generic [ref=f4e62]:
|
||||
- generic [ref=f4e63]:
|
||||
- checkbox "(none)" [ref=f4e64]
|
||||
- generic [ref=f4e65] [cursor=pointer]
|
||||
- generic [ref=f4e68] [cursor=pointer]: (none)
|
||||
- generic [ref=f4e70]:
|
||||
- generic [ref=f4e71]:
|
||||
- checkbox "Claude Haiku 4.5 (copilot)" [ref=f4e72]
|
||||
- generic [ref=f4e73] [cursor=pointer]
|
||||
- generic [ref=f4e76] [cursor=pointer]: Claude Haiku 4.5 (copilot)
|
||||
- generic [ref=f4e78]:
|
||||
- generic [ref=f4e79]:
|
||||
- checkbox "Claude Opus 4.6 (copilot)" [ref=f4e80]
|
||||
- generic [ref=f4e81] [cursor=pointer]
|
||||
- generic [ref=f4e84] [cursor=pointer]: Claude Opus 4.6 (copilot)
|
||||
- generic [ref=f4e86]:
|
||||
- generic [ref=f4e87]:
|
||||
- checkbox "Claude Opus 4.7" [ref=f4e88]
|
||||
- generic [ref=f4e89] [cursor=pointer]
|
||||
- generic [ref=f4e92] [cursor=pointer]: Claude Opus 4.7
|
||||
- generic [ref=f4e94]:
|
||||
- generic [ref=f4e95]:
|
||||
- checkbox "Claude Sonnet 4" [ref=f4e96]
|
||||
- generic [ref=f4e97] [cursor=pointer]
|
||||
- generic [ref=f4e100] [cursor=pointer]: Claude Sonnet 4
|
||||
- generic [ref=f4e102]:
|
||||
- generic [ref=f4e103]:
|
||||
- checkbox "Claude Sonnet 4.5" [ref=f4e104]
|
||||
- generic [ref=f4e105] [cursor=pointer]
|
||||
- generic [ref=f4e108] [cursor=pointer]: Claude Sonnet 4.5
|
||||
- generic [ref=f4e110]:
|
||||
- generic [ref=f4e111]:
|
||||
- checkbox "Claude Sonnet 4.5 (copilot)" [ref=f4e112]
|
||||
- generic [ref=f4e113] [cursor=pointer]
|
||||
- generic [ref=f4e116] [cursor=pointer]: Claude Sonnet 4.5 (copilot)
|
||||
- generic [ref=f4e118]:
|
||||
- generic [ref=f4e119]:
|
||||
- checkbox "Claude Sonnet 4.6" [ref=f4e120]
|
||||
- generic [ref=f4e121] [cursor=pointer]
|
||||
- generic [ref=f4e124] [cursor=pointer]: Claude Sonnet 4.6
|
||||
- generic [ref=f4e126]:
|
||||
- generic [ref=f4e127]:
|
||||
- checkbox "Claude Sonnet 4.6 (copilot)" [ref=f4e128]
|
||||
- generic [ref=f4e129] [cursor=pointer]
|
||||
- generic [ref=f4e132] [cursor=pointer]: Claude Sonnet 4.6 (copilot)
|
||||
- generic [ref=f4e134]:
|
||||
- generic [ref=f4e135]:
|
||||
- checkbox "claude-3.5-sonnet" [ref=f4e136]
|
||||
- generic [ref=f4e137] [cursor=pointer]
|
||||
- generic [ref=f4e140] [cursor=pointer]: claude-3.5-sonnet
|
||||
- button "Show 16 more" [ref=f4e141] [cursor=pointer]
|
||||
- generic [ref=f4e142]:
|
||||
- generic [ref=f4e143]: Tools
|
||||
- generic [ref=f4e144]:
|
||||
- generic [ref=f4e146]:
|
||||
- generic [ref=f4e147]:
|
||||
- checkbox "*" [ref=f4e148]
|
||||
- generic [ref=f4e149] [cursor=pointer]
|
||||
- generic [ref=f4e152] [cursor=pointer]: "*"
|
||||
- generic [ref=f4e154]:
|
||||
- generic [ref=f4e155]:
|
||||
- checkbox "activePullRequest" [ref=f4e156]
|
||||
- generic [ref=f4e157] [cursor=pointer]
|
||||
- generic [ref=f4e160] [cursor=pointer]: activePullRequest
|
||||
- generic [ref=f4e162]:
|
||||
- generic [ref=f4e163]:
|
||||
- checkbox "add_issue_comment" [ref=f4e164]
|
||||
- generic [ref=f4e165] [cursor=pointer]
|
||||
- generic [ref=f4e168] [cursor=pointer]: add_issue_comment
|
||||
- generic [ref=f4e170]:
|
||||
- generic [ref=f4e171]:
|
||||
- checkbox "agent" [ref=f4e172]
|
||||
- generic [ref=f4e173] [cursor=pointer]
|
||||
- generic [ref=f4e176] [cursor=pointer]: agent
|
||||
- generic [ref=f4e178]:
|
||||
- generic [ref=f4e179]:
|
||||
- checkbox "agent/runSubagent" [ref=f4e180]
|
||||
- generic [ref=f4e181] [cursor=pointer]
|
||||
- generic [ref=f4e184] [cursor=pointer]: agent/runSubagent
|
||||
- generic [ref=f4e186]:
|
||||
- generic [ref=f4e187]:
|
||||
- checkbox "atlassian" [ref=f4e188]
|
||||
- generic [ref=f4e189] [cursor=pointer]
|
||||
- generic [ref=f4e192] [cursor=pointer]: atlassian
|
||||
- generic [ref=f4e194]:
|
||||
- generic [ref=f4e195]:
|
||||
- checkbox "azure_design_architecture" [ref=f4e196]
|
||||
- generic [ref=f4e197] [cursor=pointer]
|
||||
- generic [ref=f4e200] [cursor=pointer]: azure_design_architecture
|
||||
- generic [ref=f4e202]:
|
||||
- generic [ref=f4e203]:
|
||||
- checkbox "azure_get_azure_verified_module" [ref=f4e204]
|
||||
- generic [ref=f4e205] [cursor=pointer]
|
||||
- generic [ref=f4e208] [cursor=pointer]: azure_get_azure_verified_module
|
||||
- generic [ref=f4e210]:
|
||||
- generic [ref=f4e211]:
|
||||
- checkbox "azure_get_code_gen_best_practices" [ref=f4e212]
|
||||
- generic [ref=f4e213] [cursor=pointer]
|
||||
- generic [ref=f4e216] [cursor=pointer]: azure_get_code_gen_best_practices
|
||||
- generic [ref=f4e218]:
|
||||
- generic [ref=f4e219]:
|
||||
- checkbox "azure_get_deployment_best_practices" [ref=f4e220]
|
||||
- generic [ref=f4e221] [cursor=pointer]
|
||||
- generic [ref=f4e224] [cursor=pointer]: azure_get_deployment_best_practices
|
||||
- button "Show 183 more" [ref=f4e225] [cursor=pointer]
|
||||
- generic [ref=f4e226]:
|
||||
- generic [ref=f4e227]: Last updated
|
||||
- generic [ref=f4e228]:
|
||||
- generic [ref=f4e230]:
|
||||
- generic [ref=f4e231]:
|
||||
- checkbox "Past week" [ref=f4e232]
|
||||
- generic [ref=f4e233] [cursor=pointer]
|
||||
- generic [ref=f4e236] [cursor=pointer]: Past week
|
||||
- generic [ref=f4e238]:
|
||||
- generic [ref=f4e239]:
|
||||
- checkbox "Past month" [ref=f4e240]
|
||||
- generic [ref=f4e241] [cursor=pointer]
|
||||
- generic [ref=f4e244] [cursor=pointer]: Past month
|
||||
- generic [ref=f4e246]:
|
||||
- generic [ref=f4e247]:
|
||||
- checkbox "Past 3 months" [ref=f4e248]
|
||||
- generic [ref=f4e249] [cursor=pointer]
|
||||
- generic [ref=f4e252] [cursor=pointer]: Past 3 months
|
||||
- generic [ref=f4e254]:
|
||||
- generic [ref=f4e255]:
|
||||
- checkbox "Past 6 months" [ref=f4e256]
|
||||
- generic [ref=f4e257] [cursor=pointer]
|
||||
- generic [ref=f4e260] [cursor=pointer]: Past 6 months
|
||||
- generic [ref=f4e262]:
|
||||
- generic [ref=f4e263]:
|
||||
- checkbox "Older" [ref=f4e264]
|
||||
- generic [ref=f4e265] [cursor=pointer]
|
||||
- generic [ref=f4e268] [cursor=pointer]: Older
|
||||
- generic [ref=f4e272]:
|
||||
- generic [ref=f4e560]:
|
||||
- generic [ref=f4e562]:
|
||||
- heading [level=2] [ref=f4e563]:
|
||||
- link "Agent Governance Reviewer" [ref=f4e564] [cursor=pointer]:
|
||||
- /url: /agent/agent-governance-reviewer/
|
||||
- paragraph [ref=f4e565]:
|
||||
- generic [ref=f4e566]: AI agent governance expert that reviews code for safety issues, missing governance controls, and helps implement policy enforcement, trust scoring, and audit trails in agent systems.
|
||||
- generic [ref=f4e567]:
|
||||
- generic [ref=f4e569]:
|
||||
- link "Install" [ref=f4e570] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fagent-governance-reviewer.agent.md
|
||||
- button "Menu" [ref=f4e573] [cursor=pointer]
|
||||
- link "Download Agent Governance Reviewer agent file" [ref=f4e578] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/agent-governance-reviewer.agent.md
|
||||
- link "View Agent Governance Reviewer agent on GitHub" [ref=f4e584] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/agent-governance-reviewer.agent.md
|
||||
- generic [ref=f4e590]:
|
||||
- generic [ref=f4e592]:
|
||||
- heading [level=2] [ref=f4e593]:
|
||||
- link "Ai Readiness Reporter" [ref=f4e594] [cursor=pointer]:
|
||||
- /url: /agent/ai-readiness-reporter/
|
||||
- paragraph [ref=f4e595]:
|
||||
- generic [ref=f4e596]: Runs the AgentRC readiness assessment on the current repository and produces a self-contained, static HTML dashboard at reports/index.html. Explains every readiness pillar, the maturity level, and an actionable remediation plan, framed by AgentRC measure → generate → maintain loop. Use when asked to assess, audit, score, report on, or visualise the AI readiness of a repo.
|
||||
- generic [ref=f4e597]:
|
||||
- generic [ref=f4e599]:
|
||||
- link "Install" [ref=f4e600] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fai-readiness-reporter.agent.md
|
||||
- button "Menu" [ref=f4e603] [cursor=pointer]
|
||||
- link "Download Ai Readiness Reporter agent file" [ref=f4e608] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/ai-readiness-reporter.agent.md
|
||||
- link "View Ai Readiness Reporter agent on GitHub" [ref=f4e614] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/ai-readiness-reporter.agent.md
|
||||
- generic [ref=f4e620]:
|
||||
- generic [ref=f4e622]:
|
||||
- heading [level=2] [ref=f4e623]:
|
||||
- link "Ai Team Dev" [ref=f4e624] [cursor=pointer]:
|
||||
- /url: /agent/ai-team-dev/
|
||||
- paragraph [ref=f4e625]:
|
||||
- generic [ref=f4e626]: AI development team (Nova, Sage, Milo). Use when implementing features, fixing bugs, writing tests, improving user experience, or preparing a pull request across the project's actual stack.
|
||||
- generic [ref=f4e627]:
|
||||
- generic [ref=f4e629]:
|
||||
- link "Install" [ref=f4e630] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fai-team-dev.agent.md
|
||||
- button "Menu" [ref=f4e633] [cursor=pointer]
|
||||
- link "Download Ai Team Dev agent file" [ref=f4e638] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/ai-team-dev.agent.md
|
||||
- link "View Ai Team Dev agent on GitHub" [ref=f4e644] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/ai-team-dev.agent.md
|
||||
- generic [ref=f4e650]:
|
||||
- generic [ref=f4e652]:
|
||||
- heading [level=2] [ref=f4e653]:
|
||||
- link "Ai Team Producer" [ref=f4e654] [cursor=pointer]:
|
||||
- /url: /agent/ai-team-producer/
|
||||
- paragraph [ref=f4e655]:
|
||||
- generic [ref=f4e656]: AI team producer (Remy). Use when planning work, clarifying scope, coordinating Dev and optional QA, triaging issues, maintaining project context, or preparing and merging pull requests. Never writes application code.
|
||||
- generic [ref=f4e657]:
|
||||
- generic [ref=f4e659]:
|
||||
- link "Install" [ref=f4e660] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fai-team-producer.agent.md
|
||||
- button "Menu" [ref=f4e663] [cursor=pointer]
|
||||
- link "Download Ai Team Producer agent file" [ref=f4e668] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/ai-team-producer.agent.md
|
||||
- link "View Ai Team Producer agent on GitHub" [ref=f4e674] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/ai-team-producer.agent.md
|
||||
- generic [ref=f4e680]:
|
||||
- generic [ref=f4e682]:
|
||||
- heading [level=2] [ref=f4e683]:
|
||||
- link "Ai Team Qa" [ref=f4e684] [cursor=pointer]:
|
||||
- /url: /agent/ai-team-qa/
|
||||
- paragraph [ref=f4e685]:
|
||||
- generic [ref=f4e686]: Optional AI QA engineer (Ivy). Use when testing behavior, running automated or exploratory checks, filing reproducible bugs, verifying fixes, or providing release confidence for changes that warrant dedicated QA.
|
||||
- generic [ref=f4e687]:
|
||||
- generic [ref=f4e689]:
|
||||
- link "Install" [ref=f4e690] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fai-team-qa.agent.md
|
||||
- button "Menu" [ref=f4e693] [cursor=pointer]
|
||||
- link "Download Ai Team Qa agent file" [ref=f4e698] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/ai-team-qa.agent.md
|
||||
- link "View Ai Team Qa agent on GitHub" [ref=f4e704] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/ai-team-qa.agent.md
|
||||
- generic [ref=f4e710]:
|
||||
- generic [ref=f4e712]:
|
||||
- heading [level=2] [ref=f4e713]:
|
||||
- link "Amplitude Experiment Implementation" [ref=f4e714] [cursor=pointer]:
|
||||
- /url: /agent/amplitude-experiment-implementation/
|
||||
- paragraph [ref=f4e715]:
|
||||
- generic [ref=f4e716]: This custom agent uses Amplitude's MCP tools to deploy new experiments inside of Amplitude, enabling seamless variant testing capabilities and rollout of product features.
|
||||
- generic [ref=f4e717]:
|
||||
- generic [ref=f4e719]:
|
||||
- link "Install" [ref=f4e720] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Famplitude-experiment-implementation.agent.md
|
||||
- button "Menu" [ref=f4e723] [cursor=pointer]
|
||||
- link "Download Amplitude Experiment Implementation agent file" [ref=f4e728] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/amplitude-experiment-implementation.agent.md
|
||||
- link "View Amplitude Experiment Implementation agent on GitHub" [ref=f4e734] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/amplitude-experiment-implementation.agent.md
|
||||
- navigation "Pagination" [ref=f4e456]:
|
||||
- generic [ref=f4e457]:
|
||||
- button "Previous Page" [ref=f4e739] [cursor=pointer]:
|
||||
- generic [ref=f4e740]: Previous
|
||||
- button "Page 1" [ref=f4e466] [cursor=pointer]:
|
||||
- generic [ref=f4e467]: "1"
|
||||
- button "Page 2" [active] [ref=f4e469] [cursor=pointer]:
|
||||
- generic [ref=f4e470]: "2"
|
||||
- button "Page 3" [ref=f4e472] [cursor=pointer]:
|
||||
- generic [ref=f4e473]: "3"
|
||||
- button "Page 4" [ref=f4e475] [cursor=pointer]:
|
||||
- generic [ref=f4e476]: "4"
|
||||
- button "Page 5" [ref=f4e478] [cursor=pointer]:
|
||||
- generic [ref=f4e479]: "5"
|
||||
- button "Page 6..." [ref=f4e481] [cursor=pointer]:
|
||||
- generic [ref=f4e482]: "6"
|
||||
- generic [ref=f4e484] [cursor=pointer]: …
|
||||
- button "Page 38" [ref=f4e486] [cursor=pointer]:
|
||||
- generic [ref=f4e487]: "38"
|
||||
- button "Next Page" [ref=f4e747] [cursor=pointer]:
|
||||
- generic [ref=f4e748]: Next
|
||||
- generic [ref=f4e504]:
|
||||
- heading "Can’t find the agent you need?" [level=3] [ref=f4e505]
|
||||
- paragraph [ref=f4e506]: This library is community-built. Share an agent you use—or request one—to help developers ship faster with GitHub Copilot.
|
||||
- generic [ref=f4e507]:
|
||||
- link "Submit an agent" [ref=f4e508] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md
|
||||
- link "Request an agent" [ref=f4e510] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/issues/new
|
||||
- contentinfo [ref=f4e512]:
|
||||
- link "GitHub" [ref=f4e517] [cursor=pointer]:
|
||||
- /url: https://github.com
|
||||
- generic [ref=f4e525]:
|
||||
- generic [ref=f4e526]:
|
||||
- link "Terms" [ref=f4e527] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/github-terms/github-terms-of-service
|
||||
- link "Privacy" [ref=f4e528] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement
|
||||
- link "GitHub Docs" [ref=f4e529] [cursor=pointer]:
|
||||
- /url: https://docs.github.com
|
||||
- link "Community" [ref=f4e530] [cursor=pointer]:
|
||||
- /url: https://github.community
|
||||
- link "Support" [ref=f4e531] [cursor=pointer]:
|
||||
- /url: https://support.github.com
|
||||
- paragraph [ref=f4e532]: © 2026 GitHub. All rights reserved.
|
||||
- generic [ref=f4e535]:
|
||||
- button [ref=f4e536]
|
||||
- button [ref=f4e542]
|
||||
- button [ref=f4e546]
|
||||
- button [ref=f4e551]
|
||||
@@ -0,0 +1,383 @@
|
||||
- generic [active] [ref=f5e1]:
|
||||
- generic [ref=f5e4]:
|
||||
- link "Skip to main content" [ref=f5e5] [cursor=pointer]:
|
||||
- /url: "#main-content"
|
||||
- banner [ref=f5e6]:
|
||||
- navigation "Primary" [ref=f5e7]:
|
||||
- link "Awesome GitHub Copilot" [ref=f5e8] [cursor=pointer]:
|
||||
- /url: /
|
||||
- list [ref=f5e11]:
|
||||
- listitem [ref=f5e12]:
|
||||
- group [ref=f5e13]:
|
||||
- generic "Resources" [ref=f5e14] [cursor=pointer]
|
||||
- listitem [ref=f5e17]:
|
||||
- link "Playbook" [ref=f5e18] [cursor=pointer]:
|
||||
- /url: /learning-hub/
|
||||
- generic [ref=f5e19]:
|
||||
- button "Search" [ref=f5e21] [cursor=pointer]
|
||||
- link "Meet all 0 contributors" [ref=f5e24] [cursor=pointer]:
|
||||
- /url: /contributors/
|
||||
- generic [ref=f5e28]: "0"
|
||||
- 'button "Language: English" [ref=f5e30] [cursor=pointer]':
|
||||
- generic [ref=f5e34]: English
|
||||
- link "Contribute" [ref=f5e39] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md
|
||||
- main [ref=f5e42]:
|
||||
- generic [ref=f5e43]:
|
||||
- generic [ref=f5e47]:
|
||||
- navigation "Breadcrumbs" [ref=f5e49]:
|
||||
- list [ref=f5e50]:
|
||||
- listitem [ref=f5e51]:
|
||||
- link "Agents" [ref=f5e52] [cursor=pointer]:
|
||||
- /url: /agents/
|
||||
- listitem [ref=f5e55]:
|
||||
- generic: .NET Upgrade
|
||||
- generic [ref=f5e56]:
|
||||
- heading ".NET Upgrade" [level=1] [ref=f5e57]
|
||||
- paragraph [ref=f5e58]: Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.
|
||||
- generic [ref=f5e59]:
|
||||
- generic [ref=f5e61]:
|
||||
- link "Install" [ref=f5e62] [cursor=pointer]:
|
||||
- /url: https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252Fgithub%252Fawesome-copilot%252Fmain%252Fagents%252Fdotnet-upgrade.agent.md
|
||||
- button "Menu" [ref=f5e65] [cursor=pointer]
|
||||
- link "View the .NET Upgrade agent on GitHub" [ref=f5e70] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/dotnet-upgrade.agent.md
|
||||
- link "Download the .NET Upgrade agent file" [ref=f5e75] [cursor=pointer]:
|
||||
- /url: https://raw.githubusercontent.com/github/awesome-copilot/main/agents/dotnet-upgrade.agent.md
|
||||
- generic [ref=f5e84]:
|
||||
- generic [ref=f5e85]:
|
||||
- article [ref=f5e86]:
|
||||
- generic [ref=f5e88]:
|
||||
- heading ".NET Upgrade Collection" [level=1] [ref=f5e89]
|
||||
- paragraph [ref=f5e90]: .NET Framework upgrade specialist for comprehensive project migration
|
||||
- paragraph [ref=f5e91]:
|
||||
- strong [ref=f5e92]: "Tags:"
|
||||
- text: dotnet, upgrade, migration, framework, modernization
|
||||
- heading "Collection Usage" [level=2] [ref=f5e93]
|
||||
- heading ".NET Upgrade Chat Mode" [level=3] [ref=f5e94]
|
||||
- paragraph [ref=f5e95]: Discover and plan your .NET upgrade journey!
|
||||
- code [ref=f5e97]: "--- mode: dotnet-upgrade title: Analyze current .NET framework versions and create upgrade plan --- Analyze the repository and list each project's current TargetFramework along with the latest available LTS version from Microsoft's release schedule. Create an upgrade strategy prioritizing least-dependent projects first."
|
||||
- paragraph [ref=f5e98]: The upgrade chat mode automatically adapts to your repository's current .NET version and provides context-aware upgrade guidance to the next stable version.
|
||||
- paragraph [ref=f5e99]: "It will help you:"
|
||||
- list [ref=f5e100]:
|
||||
- listitem [ref=f5e101]: Auto-detect current .NET versions across all projects
|
||||
- listitem [ref=f5e102]: Generate optimal upgrade sequences
|
||||
- listitem [ref=f5e103]: Identify breaking changes and modernization opportunities
|
||||
- listitem [ref=f5e104]: Create per-project upgrade flows
|
||||
- separator [ref=f5e105]
|
||||
- heading ".NET Upgrade Instructions" [level=3] [ref=f5e106]
|
||||
- paragraph [ref=f5e107]: Execute comprehensive .NET framework upgrades with structured guidance!
|
||||
- paragraph [ref=f5e108]: "The instructions provide:"
|
||||
- list [ref=f5e109]:
|
||||
- listitem [ref=f5e110]: Sequential upgrade strategies
|
||||
- listitem [ref=f5e111]: Dependency analysis and sequencing
|
||||
- listitem [ref=f5e112]: Framework targeting and code adjustments
|
||||
- listitem [ref=f5e113]: NuGet and dependency management
|
||||
- listitem [ref=f5e114]: CI/CD pipeline updates
|
||||
- listitem [ref=f5e115]: Testing and validation procedures
|
||||
- paragraph [ref=f5e116]: Use these instructions when implementing upgrade plans to ensure proper execution and validation.
|
||||
- separator [ref=f5e117]
|
||||
- heading ".NET Upgrade Prompts" [level=3] [ref=f5e118]
|
||||
- paragraph [ref=f5e119]: Quick access to specialized upgrade analysis prompts!
|
||||
- paragraph [ref=f5e120]: "The prompts collection includes ready-to-use queries for:"
|
||||
- list [ref=f5e121]:
|
||||
- listitem [ref=f5e122]: Project discovery and assessment
|
||||
- listitem [ref=f5e123]: Upgrade strategy and sequencing
|
||||
- listitem [ref=f5e124]: Framework targeting and code adjustments
|
||||
- listitem [ref=f5e125]: Breaking change analysis
|
||||
- listitem [ref=f5e126]: CI/CD pipeline updates
|
||||
- listitem [ref=f5e127]: Final validation and delivery
|
||||
- paragraph [ref=f5e128]: Use these prompts for targeted analysis of specific upgrade aspects.
|
||||
- separator [ref=f5e129]
|
||||
- heading "Quick Start" [level=2] [ref=f5e130]
|
||||
- list [ref=f5e131]:
|
||||
- listitem [ref=f5e132]:
|
||||
- text: Run a discovery pass to enumerate all
|
||||
- code [ref=f5e133]: "*.sln"
|
||||
- text: and
|
||||
- code [ref=f5e134]: "*.csproj"
|
||||
- text: files in the repository.
|
||||
- listitem [ref=f5e135]: Detect the current .NET version(s) used across projects.
|
||||
- listitem [ref=f5e136]:
|
||||
- text: Identify the latest available stable .NET version (LTS preferred) — usually
|
||||
- code [ref=f5e137]: "+2"
|
||||
- text: years ahead of the existing version.
|
||||
- listitem [ref=f5e138]:
|
||||
- text: Generate an upgrade plan to move from current → next stable version (e.g.,
|
||||
- code [ref=f5e139]: net6.0 → net8.0
|
||||
- text: ", or"
|
||||
- code [ref=f5e140]: net7.0 → net9.0
|
||||
- text: ).
|
||||
- listitem [ref=f5e141]: Upgrade one project at a time, validate builds, update tests, and modify CI/CD accordingly.
|
||||
- separator [ref=f5e142]
|
||||
- heading "Auto-Detect Current .NET Version" [level=2] [ref=f5e143]
|
||||
- paragraph [ref=f5e144]: "To automatically detect the current framework versions across the solution:"
|
||||
- code [ref=f5e146]: "# 1. Check global SDKs installed dotnet --list-sdks # 2. Detect project-level TargetFrameworks find . -name \"*.csproj\" -exec grep -H \"<TargetFramework\" {} \\; # 3. Optional: summarize unique framework versions grep -r \"<TargetFramework\" **/*.csproj | sed 's/.*<TargetFramework>//;s/<\\/TargetFramework>//' | sort | uniq # 4. Verify runtime environment dotnet --info | grep \"Version\""
|
||||
- paragraph [ref=f5e147]:
|
||||
- strong [ref=f5e148]: "Chat Prompt:"
|
||||
- blockquote [ref=f5e149]:
|
||||
- paragraph [ref=f5e150]: "\"Analyze the repository and list each project’s current TargetFramework along with the latest available LTS version from Microsoft’s release schedule.\""
|
||||
- separator [ref=f5e151]
|
||||
- heading "Discovery & Analysis Commands" [level=2] [ref=f5e152]
|
||||
- code [ref=f5e154]: "# List all projects dotnet sln list # Check current target frameworks for each project grep -H \"TargetFramework\" **/*.csproj # Check outdated packages dotnet list <ProjectName>.csproj package --outdated # Generate dependency graph dotnet msbuild <ProjectName>.csproj /t:GenerateRestoreGraphFile /p:RestoreGraphOutputPath=graph.json"
|
||||
- paragraph [ref=f5e155]:
|
||||
- strong [ref=f5e156]: "Chat Prompt:"
|
||||
- blockquote [ref=f5e157]:
|
||||
- paragraph [ref=f5e158]: "\"Analyze the solution and summarize each project’s current TargetFramework and suggest the appropriate next LTS upgrade version.\""
|
||||
- separator [ref=f5e159]
|
||||
- heading "Classification Rules" [level=2] [ref=f5e160]
|
||||
- list [ref=f5e161]:
|
||||
- listitem [ref=f5e162]:
|
||||
- code [ref=f5e163]: TargetFramework
|
||||
- text: starts with
|
||||
- code [ref=f5e164]: netcoreapp
|
||||
- text: ","
|
||||
- code [ref=f5e165]: net5.0+
|
||||
- text: ","
|
||||
- code [ref=f5e166]: net6.0+
|
||||
- text: ", etc. →"
|
||||
- strong [ref=f5e167]: Modern .NET
|
||||
- listitem [ref=f5e168]:
|
||||
- code [ref=f5e169]: netstandard*
|
||||
- text: →
|
||||
- strong [ref=f5e170]: .NET Standard
|
||||
- text: (migrate to current .NET version)
|
||||
- listitem [ref=f5e171]:
|
||||
- code [ref=f5e172]: net4*
|
||||
- text: →
|
||||
- strong [ref=f5e173]: .NET Framework
|
||||
- text: (migrate via intermediate step to .NET 8+)
|
||||
- separator [ref=f5e174]
|
||||
- heading "Upgrade Sequence" [level=2] [ref=f5e175]
|
||||
- list [ref=f5e176]:
|
||||
- listitem [ref=f5e177]:
|
||||
- strong [ref=f5e178]: "Start with Independent Libraries:"
|
||||
- text: Least dependent class libraries first.
|
||||
- listitem [ref=f5e179]:
|
||||
- strong [ref=f5e180]: "Next:"
|
||||
- text: Shared components and common utilities.
|
||||
- listitem [ref=f5e181]:
|
||||
- strong [ref=f5e182]: "Then:"
|
||||
- text: API, Web, or Function projects.
|
||||
- listitem [ref=f5e183]:
|
||||
- strong [ref=f5e184]: "Finally:"
|
||||
- text: Tests, integration points, and pipelines.
|
||||
- paragraph [ref=f5e185]:
|
||||
- strong [ref=f5e186]: "Chat Prompt:"
|
||||
- blockquote [ref=f5e187]:
|
||||
- paragraph [ref=f5e188]: "\"Generate the optimal upgrade order for this repository, prioritizing least-dependent projects first.\""
|
||||
- separator [ref=f5e189]
|
||||
- heading "Per-Project Upgrade Flow" [level=2] [ref=f5e190]
|
||||
- list [ref=f5e191]:
|
||||
- listitem [ref=f5e192]:
|
||||
- strong [ref=f5e193]: "Create branch:"
|
||||
- code [ref=f5e194]: upgrade/<project>-to-<targetVersion>
|
||||
- listitem [ref=f5e195]:
|
||||
- strong [ref=f5e196]:
|
||||
- text: Edit
|
||||
- code [ref=f5e197]: <TargetFramework>
|
||||
- text: in
|
||||
- code [ref=f5e198]: .csproj
|
||||
- text: to the suggested version (e.g.,
|
||||
- code [ref=f5e199]: net9.0
|
||||
- text: )
|
||||
- listitem [ref=f5e200]:
|
||||
- strong [ref=f5e201]: "Restore & update packages:"
|
||||
- code [ref=f5e203]: dotnet restore dotnet list package --outdated dotnet add package <PackageName> --version <LatestVersion>
|
||||
- listitem [ref=f5e204]:
|
||||
- strong [ref=f5e205]: "Build & test:"
|
||||
- code [ref=f5e207]: dotnet build <ProjectName>.csproj dotnet test <ProjectName>.Tests.csproj
|
||||
- listitem [ref=f5e208]:
|
||||
- strong [ref=f5e209]: Fix issues
|
||||
- text: — resolve deprecated APIs, adjust configurations, modernize JSON/logging/DI.
|
||||
- listitem [ref=f5e210]:
|
||||
- strong [ref=f5e211]: Commit & push
|
||||
- text: PR with test evidence and checklist.
|
||||
- separator [ref=f5e212]
|
||||
- heading "Breaking Changes & Modernization" [level=2] [ref=f5e213]
|
||||
- list [ref=f5e214]:
|
||||
- listitem [ref=f5e215]:
|
||||
- text: Use
|
||||
- code [ref=f5e216]: .NET Upgrade Assistant
|
||||
- text: for initial recommendations.
|
||||
- listitem [ref=f5e217]: Apply analyzers to detect obsolete APIs.
|
||||
- listitem [ref=f5e218]:
|
||||
- text: Replace outdated SDKs (e.g.,
|
||||
- code [ref=f5e219]: Microsoft.Azure.*
|
||||
- text: →
|
||||
- code [ref=f5e220]: Azure.*
|
||||
- text: ).
|
||||
- listitem [ref=f5e221]:
|
||||
- text: Modernize startup logic (
|
||||
- code [ref=f5e222]: Startup.cs
|
||||
- text: →
|
||||
- code [ref=f5e223]: Program.cs
|
||||
- text: top-level statements).
|
||||
- paragraph [ref=f5e224]:
|
||||
- strong [ref=f5e225]: "Chat Prompt:"
|
||||
- blockquote [ref=f5e226]:
|
||||
- paragraph [ref=f5e227]: "\"List deprecated or incompatible APIs when upgrading from to for .\""
|
||||
- separator [ref=f5e228]
|
||||
- heading "CI/CD Configuration Updates" [level=2] [ref=f5e229]
|
||||
- paragraph [ref=f5e230]:
|
||||
- text: Ensure pipelines use the detected
|
||||
- strong [ref=f5e231]: target version
|
||||
- text: "dynamically:"
|
||||
- paragraph [ref=f5e232]:
|
||||
- strong [ref=f5e233]: Azure DevOps
|
||||
- code [ref=f5e235]: "- task: UseDotNet@2 inputs: packageType: 'sdk' version: '$(TargetDotNetVersion).x'"
|
||||
- paragraph [ref=f5e236]:
|
||||
- strong [ref=f5e237]: GitHub Actions
|
||||
- code [ref=f5e239]: "- uses: actions/setup-dotnet@v4 with: dotnet-version: '${{ env.TargetDotNetVersion }}.x'"
|
||||
- separator [ref=f5e240]
|
||||
- heading "Validation Checklist" [level=2] [ref=f5e241]
|
||||
- list [ref=f5e242]:
|
||||
- listitem [ref=f5e243]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f5e244]
|
||||
- text: TargetFramework upgraded to next stable version
|
||||
- listitem [ref=f5e245]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f5e246]
|
||||
- text: All NuGet packages compatible and updated
|
||||
- listitem [ref=f5e247]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f5e248]
|
||||
- text: Build and test pipelines succeed locally and in CI
|
||||
- listitem [ref=f5e249]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f5e250]
|
||||
- text: Integration tests pass
|
||||
- listitem [ref=f5e251]:
|
||||
- checkbox "Incomplete task" [disabled] [ref=f5e252]
|
||||
- text: Deployed to a lower environment and verified
|
||||
- separator [ref=f5e253]
|
||||
- heading "Branching & Rollback Strategy" [level=2] [ref=f5e254]
|
||||
- list [ref=f5e255]:
|
||||
- listitem [ref=f5e256]:
|
||||
- text: "Use feature branches:"
|
||||
- code [ref=f5e257]: upgrade/<project>-to-<targetVersion>
|
||||
- listitem [ref=f5e258]: Commit frequently and keep changes atomic
|
||||
- listitem [ref=f5e259]: If CI fails after merge, revert PR and isolate failing modules
|
||||
- paragraph [ref=f5e260]:
|
||||
- strong [ref=f5e261]: "Chat Prompt:"
|
||||
- blockquote [ref=f5e262]:
|
||||
- paragraph [ref=f5e263]: "\"Suggest a rollback and validation plan if the .NET upgrade for introduces build or runtime regressions.\""
|
||||
- separator [ref=f5e264]
|
||||
- heading "Automation & Scaling" [level=2] [ref=f5e265]
|
||||
- list [ref=f5e266]:
|
||||
- listitem [ref=f5e267]: Automate upgrade detection with GitHub Actions or Azure Pipelines.
|
||||
- listitem [ref=f5e268]:
|
||||
- text: Schedule nightly runs to check for new .NET releases via
|
||||
- code [ref=f5e269]: dotnet --list-sdks
|
||||
- text: .
|
||||
- listitem [ref=f5e270]: Use agents to automatically raise PRs for outdated frameworks.
|
||||
- separator [ref=f5e271]
|
||||
- heading "Chatmode Prompt Library" [level=2] [ref=f5e272]
|
||||
- list [ref=f5e273]:
|
||||
- listitem [ref=f5e274]: "\"List all projects with current and recommended .NET versions.\""
|
||||
- listitem [ref=f5e275]: "\"Generate a per-project upgrade plan from to .\""
|
||||
- listitem [ref=f5e276]: "\"Suggest .csproj and pipeline edits to upgrade .\""
|
||||
- listitem [ref=f5e277]: "\"Summarize build/test results post-upgrade for .\""
|
||||
- listitem [ref=f5e278]: "\"Create PR description and checklist for the upgrade.\""
|
||||
- separator [ref=f5e279]
|
||||
- complementary [ref=f5e280]:
|
||||
- generic [ref=f5e281]:
|
||||
- generic [ref=f5e282]:
|
||||
- generic [ref=f5e283]: In this article
|
||||
- navigation "In this article" [ref=f5e285]:
|
||||
- list [ref=f5e286]:
|
||||
- listitem [ref=f5e287]:
|
||||
- link "Collection Usage" [ref=f5e288] [cursor=pointer]:
|
||||
- /url: "#collection-usage"
|
||||
- listitem [ref=f5e289]:
|
||||
- link "Quick Start" [ref=f5e290] [cursor=pointer]:
|
||||
- /url: "#quick-start"
|
||||
- listitem [ref=f5e291]:
|
||||
- link "Auto-Detect Current .NET Version" [ref=f5e292] [cursor=pointer]:
|
||||
- /url: "#auto-detect-current-net-version"
|
||||
- listitem [ref=f5e293]:
|
||||
- link "Discovery & Analysis Commands" [ref=f5e294] [cursor=pointer]:
|
||||
- /url: "#discovery-analysis-commands"
|
||||
- listitem [ref=f5e295]:
|
||||
- link "Classification Rules" [ref=f5e296] [cursor=pointer]:
|
||||
- /url: "#classification-rules"
|
||||
- listitem [ref=f5e297]:
|
||||
- link "Upgrade Sequence" [ref=f5e298] [cursor=pointer]:
|
||||
- /url: "#upgrade-sequence"
|
||||
- listitem [ref=f5e299]:
|
||||
- link "Per-Project Upgrade Flow" [ref=f5e300] [cursor=pointer]:
|
||||
- /url: "#per-project-upgrade-flow"
|
||||
- listitem [ref=f5e301]:
|
||||
- link "Breaking Changes & Modernization" [ref=f5e302] [cursor=pointer]:
|
||||
- /url: "#breaking-changes-modernization"
|
||||
- listitem [ref=f5e303]:
|
||||
- link "CI/CD Configuration Updates" [ref=f5e304] [cursor=pointer]:
|
||||
- /url: "#ci-cd-configuration-updates"
|
||||
- listitem [ref=f5e305]:
|
||||
- link "Validation Checklist" [ref=f5e306] [cursor=pointer]:
|
||||
- /url: "#validation-checklist"
|
||||
- listitem [ref=f5e307]:
|
||||
- link "Branching & Rollback Strategy" [ref=f5e308] [cursor=pointer]:
|
||||
- /url: "#branching-rollback-strategy"
|
||||
- listitem [ref=f5e309]:
|
||||
- link "Automation & Scaling" [ref=f5e310] [cursor=pointer]:
|
||||
- /url: "#automation-scaling"
|
||||
- listitem [ref=f5e311]:
|
||||
- link "Chatmode Prompt Library" [ref=f5e312] [cursor=pointer]:
|
||||
- /url: "#chatmode-prompt-library"
|
||||
- generic [ref=f5e313]:
|
||||
- generic [ref=f5e314]: Agent details
|
||||
- generic [ref=f5e316]:
|
||||
- generic [ref=f5e317]:
|
||||
- generic [ref=f5e318]: Tools
|
||||
- generic [ref=f5e319]:
|
||||
- generic [ref=f5e320]: codebase
|
||||
- generic [ref=f5e321]: edit/editFiles
|
||||
- generic [ref=f5e322]: search
|
||||
- generic [ref=f5e323]: runCommands
|
||||
- generic [ref=f5e324]: runTasks
|
||||
- generic [ref=f5e325]: runTests
|
||||
- generic [ref=f5e326]: problems
|
||||
- generic [ref=f5e327]: changes
|
||||
- generic [ref=f5e328]: usages
|
||||
- generic [ref=f5e329]: findTestFiles
|
||||
- generic [ref=f5e330]: testFailure
|
||||
- generic [ref=f5e331]: terminalLastCommand
|
||||
- generic [ref=f5e332]: terminalSelection
|
||||
- generic [ref=f5e333]: web/fetch
|
||||
- generic [ref=f5e334]: microsoft.docs.mcp
|
||||
- generic [ref=f5e335]:
|
||||
- generic [ref=f5e336]: Last updated
|
||||
- generic [ref=f5e337]: 4 February 2026
|
||||
- generic [ref=f5e339]:
|
||||
- generic [ref=f5e340]: Source
|
||||
- link "View on GitHub" [ref=f5e342] [cursor=pointer]:
|
||||
- /url: https://github.com/github/awesome-copilot/blob/main/agents/dotnet-upgrade.agent.md
|
||||
- complementary "More like this" [ref=f5e348]:
|
||||
- generic [ref=f5e349]:
|
||||
- generic [ref=f5e350]: Previous
|
||||
- link ".NET Self Learning Architect" [ref=f5e352] [cursor=pointer]:
|
||||
- /url: /agent/dotnet-self-learning-architect/
|
||||
- generic [ref=f5e355]:
|
||||
- generic [ref=f5e356]: Up next
|
||||
- link "Accessibility Expert" [ref=f5e358] [cursor=pointer]:
|
||||
- /url: /agent/accessibility/
|
||||
- generic [ref=f5e361]:
|
||||
- link "GitHub" [ref=f5e366] [cursor=pointer]:
|
||||
- /url: https://github.com
|
||||
- generic [ref=f5e374]:
|
||||
- generic [ref=f5e375]:
|
||||
- link "Terms" [ref=f5e376] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/github-terms/github-terms-of-service
|
||||
- link "Privacy" [ref=f5e377] [cursor=pointer]:
|
||||
- /url: https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement
|
||||
- link "GitHub Docs" [ref=f5e378] [cursor=pointer]:
|
||||
- /url: https://docs.github.com
|
||||
- link "Community" [ref=f5e379] [cursor=pointer]:
|
||||
- /url: https://github.community
|
||||
- link "Support" [ref=f5e380] [cursor=pointer]:
|
||||
- /url: https://support.github.com
|
||||
- paragraph [ref=f5e381]: © 2026 GitHub. All rights reserved.
|
||||
- button
|
||||
- generic [ref=f5e384]:
|
||||
- button [ref=f5e385]
|
||||
- button [ref=f5e391]
|
||||
- button [ref=f5e395]
|
||||
- button [ref=f5e400]
|
||||
@@ -88,6 +88,13 @@ const emptyFilters: FilterState = { model: [], tools: [], updated: [] };
|
||||
|
||||
const PAGE_SIZE = 6;
|
||||
|
||||
/**
|
||||
* Long facets collapse behind a "Show N more" toggle, matching the prototype's
|
||||
* extensions page. Real data produces far longer option lists than the
|
||||
* prototype's hardcoded arrays, so every catalog needs this.
|
||||
*/
|
||||
const FILTER_COLLAPSE_LIMIT = 10;
|
||||
|
||||
/**
|
||||
* The Agents catalog, ported from the design prototype's `agents.tsx`. The
|
||||
* prototype's hardcoded array and hardcoded model/capability options are
|
||||
@@ -109,6 +116,12 @@ export function AgentsCatalog({
|
||||
const [currentPage, setCurrentPage] = useState(1);
|
||||
const [mobileFiltersOpen, setMobileFiltersOpen] = useState(false);
|
||||
const [filters, setFilters] = useState<FilterState>(emptyFilters);
|
||||
const [expandedGroups, setExpandedGroups] = useState<
|
||||
Record<FilterGroupId, boolean>
|
||||
>({ model: false, tools: false, updated: false });
|
||||
const toggleGroupExpanded = (groupId: FilterGroupId) => {
|
||||
setExpandedGroups((prev) => ({ ...prev, [groupId]: !prev[groupId] }));
|
||||
};
|
||||
|
||||
const filterGroups = useMemo<
|
||||
{ id: FilterGroupId; label: string; options: string[] }[]
|
||||
@@ -257,26 +270,47 @@ export function AgentsCatalog({
|
||||
!mobileFiltersOpen && styles.filterBodyCollapsed,
|
||||
)}
|
||||
>
|
||||
{filterGroups.map((group) => (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{group.options.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
{filterGroups.map((group) => {
|
||||
const isExpandable =
|
||||
group.options.length > FILTER_COLLAPSE_LIMIT;
|
||||
const expanded = expandedGroups[group.id];
|
||||
const visibleOptions =
|
||||
isExpandable && !expanded
|
||||
? group.options.slice(0, FILTER_COLLAPSE_LIMIT)
|
||||
: group.options;
|
||||
return (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{visibleOptions.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
{isExpandable ? (
|
||||
<button
|
||||
type="button"
|
||||
className={styles.showMoreButton}
|
||||
aria-expanded={expanded}
|
||||
onClick={() => toggleGroupExpanded(group.id)}
|
||||
>
|
||||
{expanded
|
||||
? "Show less"
|
||||
: `Show ${group.options.length - FILTER_COLLAPSE_LIMIT} more`}
|
||||
</button>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
);
|
||||
})}
|
||||
{hasActiveFilters ? (
|
||||
<div className={styles.filterActions}>
|
||||
<Button
|
||||
|
||||
@@ -5,6 +5,7 @@ import React from "react";
|
||||
import { Box, Breadcrumbs, Heading, Section, Text } from "@primer/react-brand";
|
||||
|
||||
import { PageShell } from "./PageShell";
|
||||
import { LargeFooter } from "./LargeFooter";
|
||||
import type { AwesomeCopilotPage } from "./navigation";
|
||||
import type { SearchItem } from "./searchIndex";
|
||||
import styles from "./styles/dotnet-upgrade.module.css";
|
||||
@@ -105,6 +106,7 @@ export function DetailChassis({
|
||||
currentPage={currentPage}
|
||||
searchIndex={searchIndex}
|
||||
contributorsTotal={contributorsTotal}
|
||||
renderFooter={false}
|
||||
>
|
||||
<div className={styles.scrollHost} ref={contentScrollRef}>
|
||||
<Box as="section" className={styles.hero}>
|
||||
@@ -259,6 +261,7 @@ export function DetailChassis({
|
||||
</div>
|
||||
</Section>
|
||||
</Box>
|
||||
<LargeFooter />
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -86,6 +86,13 @@ const emptyFilters: FilterState = { pattern: [], extension: [], updated: [] };
|
||||
|
||||
const PAGE_SIZE = 6;
|
||||
|
||||
/**
|
||||
* Long facets collapse behind a "Show N more" toggle, matching the prototype's
|
||||
* extensions page. Real data produces far longer option lists than the
|
||||
* prototype's hardcoded arrays, so every catalog needs this.
|
||||
*/
|
||||
const FILTER_COLLAPSE_LIMIT = 10;
|
||||
|
||||
/**
|
||||
* The Instructions catalog, ported from the design prototype's
|
||||
* `instructions.tsx`. The prototype's hardcoded array and filter options are
|
||||
@@ -108,6 +115,12 @@ export function InstructionsCatalog({
|
||||
const [currentPage, setCurrentPage] = useState(1);
|
||||
const [mobileFiltersOpen, setMobileFiltersOpen] = useState(false);
|
||||
const [filters, setFilters] = useState<FilterState>(emptyFilters);
|
||||
const [expandedGroups, setExpandedGroups] = useState<
|
||||
Record<FilterGroupId, boolean>
|
||||
>({ pattern: false, extension: false, updated: false });
|
||||
const toggleGroupExpanded = (groupId: FilterGroupId) => {
|
||||
setExpandedGroups((prev) => ({ ...prev, [groupId]: !prev[groupId] }));
|
||||
};
|
||||
|
||||
const filterGroups = useMemo<
|
||||
{ id: FilterGroupId; label: string; options: string[] }[]
|
||||
@@ -388,26 +401,47 @@ export function InstructionsCatalog({
|
||||
!mobileFiltersOpen && styles.filterBodyCollapsed,
|
||||
)}
|
||||
>
|
||||
{filterGroups.map((group) => (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{group.options.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
{filterGroups.map((group) => {
|
||||
const isExpandable =
|
||||
group.options.length > FILTER_COLLAPSE_LIMIT;
|
||||
const expanded = expandedGroups[group.id];
|
||||
const visibleOptions =
|
||||
isExpandable && !expanded
|
||||
? group.options.slice(0, FILTER_COLLAPSE_LIMIT)
|
||||
: group.options;
|
||||
return (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{visibleOptions.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
{isExpandable ? (
|
||||
<button
|
||||
type="button"
|
||||
className={styles.showMoreButton}
|
||||
aria-expanded={expanded}
|
||||
onClick={() => toggleGroupExpanded(group.id)}
|
||||
>
|
||||
{expanded
|
||||
? "Show less"
|
||||
: `Show ${group.options.length - FILTER_COLLAPSE_LIMIT} more`}
|
||||
</button>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
);
|
||||
})}
|
||||
{hasActiveFilters ? (
|
||||
<div className={styles.filterActions}>
|
||||
<Button
|
||||
|
||||
@@ -26,6 +26,13 @@ export type PageShellProps = {
|
||||
contributorsTotal?: number;
|
||||
searchAriaLabel?: string;
|
||||
contributorsCurrent?: boolean;
|
||||
/**
|
||||
* Pages that scroll inside their own element (the detail/article chassis) must
|
||||
* render the footer *inside* that scroll region, otherwise it sits outside the
|
||||
* scrolling box and stays pinned over the content. Those pages opt out here
|
||||
* and render `<LargeFooter />` themselves.
|
||||
*/
|
||||
renderFooter?: boolean;
|
||||
children: ReactNode;
|
||||
};
|
||||
|
||||
@@ -44,6 +51,7 @@ export function PageShell({
|
||||
contributorsTotal = 0,
|
||||
searchAriaLabel = "Search the library",
|
||||
contributorsCurrent = false,
|
||||
renderFooter = true,
|
||||
children,
|
||||
}: PageShellProps) {
|
||||
return (
|
||||
@@ -55,6 +63,7 @@ export function PageShell({
|
||||
contributorsTotal={contributorsTotal}
|
||||
searchAriaLabel={searchAriaLabel}
|
||||
contributorsCurrent={contributorsCurrent}
|
||||
renderFooter={renderFooter}
|
||||
>
|
||||
{children}
|
||||
</PageShellBody>
|
||||
@@ -74,6 +83,7 @@ function PageShellBody({
|
||||
contributorsTotal = 0,
|
||||
searchAriaLabel = "Search the library",
|
||||
contributorsCurrent = false,
|
||||
renderFooter = true,
|
||||
children,
|
||||
}: PageShellProps) {
|
||||
const { colorMode } = useTheme();
|
||||
@@ -121,7 +131,7 @@ function PageShellBody({
|
||||
{children}
|
||||
</main>
|
||||
|
||||
<LargeFooter />
|
||||
{renderFooter ? <LargeFooter /> : null}
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -72,6 +72,13 @@ type FilterState = Record<FilterGroupId, string[]>;
|
||||
|
||||
const emptyFilters: FilterState = { source: [], category: [], size: [] };
|
||||
|
||||
/**
|
||||
* Long facets collapse behind a "Show N more" toggle, matching the prototype's
|
||||
* extensions page. Real data produces far longer option lists than the
|
||||
* prototype's hardcoded arrays, so every catalog needs this.
|
||||
*/
|
||||
const FILTER_COLLAPSE_LIMIT = 10;
|
||||
|
||||
const sourceOf = (plugin: PluginItem) =>
|
||||
plugin.external ? "External" : "Built-in";
|
||||
|
||||
@@ -120,6 +127,12 @@ export function PluginsCatalog({
|
||||
const [mobileFiltersOpen, setMobileFiltersOpen] = useState(false);
|
||||
|
||||
const [filters, setFilters] = useState<FilterState>(emptyFilters);
|
||||
const [expandedGroups, setExpandedGroups] = useState<
|
||||
Record<FilterGroupId, boolean>
|
||||
>({ source: false, category: false, size: false });
|
||||
const toggleGroupExpanded = (groupId: FilterGroupId) => {
|
||||
setExpandedGroups((prev) => ({ ...prev, [groupId]: !prev[groupId] }));
|
||||
};
|
||||
|
||||
const filterGroups = useMemo(
|
||||
(): { id: FilterGroupId; label: string; options: string[] }[] => [
|
||||
@@ -226,26 +239,47 @@ export function PluginsCatalog({
|
||||
!mobileFiltersOpen && styles.filterBodyCollapsed,
|
||||
)}
|
||||
>
|
||||
{filterGroups.map((group) => (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{group.options.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
{filterGroups.map((group) => {
|
||||
const isExpandable =
|
||||
group.options.length > FILTER_COLLAPSE_LIMIT;
|
||||
const expanded = expandedGroups[group.id];
|
||||
const visibleOptions =
|
||||
isExpandable && !expanded
|
||||
? group.options.slice(0, FILTER_COLLAPSE_LIMIT)
|
||||
: group.options;
|
||||
return (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{visibleOptions.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
{isExpandable ? (
|
||||
<button
|
||||
type="button"
|
||||
className={styles.showMoreButton}
|
||||
aria-expanded={expanded}
|
||||
onClick={() => toggleGroupExpanded(group.id)}
|
||||
>
|
||||
{expanded
|
||||
? "Show less"
|
||||
: `Show ${group.options.length - FILTER_COLLAPSE_LIMIT} more`}
|
||||
</button>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
);
|
||||
})}
|
||||
{hasActiveFilters ? (
|
||||
<div className={styles.filterActions}>
|
||||
<Button
|
||||
|
||||
@@ -75,6 +75,13 @@ const resourceOf = (skill: SkillItem) =>
|
||||
|
||||
const PAGE_SIZE = 6;
|
||||
|
||||
/**
|
||||
* Long facets collapse behind a "Show N more" toggle, matching the prototype's
|
||||
* extensions page. Real data produces far longer option lists than the
|
||||
* prototype's hardcoded arrays, so every catalog needs this.
|
||||
*/
|
||||
const FILTER_COLLAPSE_LIMIT = 10;
|
||||
|
||||
/**
|
||||
* The Skills catalog, ported from the design prototype's `skills.tsx`. The
|
||||
* prototype's hardcoded array is replaced by build-time data; the layout,
|
||||
@@ -93,6 +100,12 @@ export function SkillsCatalog({
|
||||
const [currentPage, setCurrentPage] = useState(1);
|
||||
const [mobileFiltersOpen, setMobileFiltersOpen] = useState(false);
|
||||
const [filters, setFilters] = useState<FilterState>(emptyFilters);
|
||||
const [expandedGroups, setExpandedGroups] = useState<
|
||||
Record<FilterGroupId, boolean>
|
||||
>({ resources: false, files: false, updated: false });
|
||||
const toggleGroupExpanded = (groupId: FilterGroupId) => {
|
||||
setExpandedGroups((prev) => ({ ...prev, [groupId]: !prev[groupId] }));
|
||||
};
|
||||
const [copied, setCopied] = useState(false);
|
||||
const copyTimer = React.useRef<number | undefined>(undefined);
|
||||
|
||||
@@ -195,26 +208,47 @@ export function SkillsCatalog({
|
||||
!mobileFiltersOpen && styles.filterBodyCollapsed,
|
||||
)}
|
||||
>
|
||||
{filterGroups.map((group) => (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{group.options.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
{filterGroups.map((group) => {
|
||||
const isExpandable =
|
||||
group.options.length > FILTER_COLLAPSE_LIMIT;
|
||||
const expanded = expandedGroups[group.id];
|
||||
const visibleOptions =
|
||||
isExpandable && !expanded
|
||||
? group.options.slice(0, FILTER_COLLAPSE_LIMIT)
|
||||
: group.options;
|
||||
return (
|
||||
<div className={styles.filterGroup} key={group.id}>
|
||||
<Text as="h2" size="100" className={styles.filterHeading}>
|
||||
{group.label}
|
||||
</Text>
|
||||
<div className={styles.filterOptions}>
|
||||
{visibleOptions.map((option) => (
|
||||
<div className={styles.filterOption} key={option}>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={filters[group.id].includes(option)}
|
||||
onChange={() => toggleFilter(group.id, option)}
|
||||
/>
|
||||
<FormControl.Label>{option}</FormControl.Label>
|
||||
</FormControl>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
{isExpandable ? (
|
||||
<button
|
||||
type="button"
|
||||
className={styles.showMoreButton}
|
||||
aria-expanded={expanded}
|
||||
onClick={() => toggleGroupExpanded(group.id)}
|
||||
>
|
||||
{expanded
|
||||
? "Show less"
|
||||
: `Show ${group.options.length - FILTER_COLLAPSE_LIMIT} more`}
|
||||
</button>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
);
|
||||
})}
|
||||
{hasActiveFilters ? (
|
||||
<div className={styles.filterActions}>
|
||||
<Button
|
||||
|
||||
@@ -683,6 +683,35 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--base-size-4);
|
||||
max-block-size: 480px;
|
||||
overflow-y: auto;
|
||||
padding-inline-end: var(--base-size-4);
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.showMoreButton {
|
||||
align-self: flex-start;
|
||||
margin-block-start: var(--base-size-8);
|
||||
margin-inline-start: var(--base-size-12);
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: none;
|
||||
color: var(--brand-color-text-default);
|
||||
font-family: var(--brand-fontStack-monospace);
|
||||
font-size: var(--brand-text-size-100);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 0.25em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showMoreButton:hover {
|
||||
color: var(--brand-color-text-muted);
|
||||
}
|
||||
|
||||
.showMoreButton:focus-visible {
|
||||
outline: var(--brand-borderWidth-thin) solid var(--brand-color-focus);
|
||||
outline-offset: var(--base-size-4);
|
||||
border-radius: var(--brand-borderRadius-small);
|
||||
}
|
||||
|
||||
.filterOption {
|
||||
|
||||
@@ -669,6 +669,35 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--base-size-4);
|
||||
max-block-size: 480px;
|
||||
overflow-y: auto;
|
||||
padding-inline-end: var(--base-size-4);
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.showMoreButton {
|
||||
align-self: flex-start;
|
||||
margin-block-start: var(--base-size-8);
|
||||
margin-inline-start: var(--base-size-12);
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: none;
|
||||
color: var(--brand-color-text-default);
|
||||
font-family: var(--brand-fontStack-monospace);
|
||||
font-size: var(--brand-text-size-100);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 0.25em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showMoreButton:hover {
|
||||
color: var(--brand-color-text-muted);
|
||||
}
|
||||
|
||||
.showMoreButton:focus-visible {
|
||||
outline: var(--brand-borderWidth-thin) solid var(--brand-color-focus);
|
||||
outline-offset: var(--base-size-4);
|
||||
border-radius: var(--brand-borderRadius-small);
|
||||
}
|
||||
|
||||
.filterOption {
|
||||
|
||||
@@ -767,6 +767,35 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--base-size-4);
|
||||
max-block-size: 480px;
|
||||
overflow-y: auto;
|
||||
padding-inline-end: var(--base-size-4);
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.showMoreButton {
|
||||
align-self: flex-start;
|
||||
margin-block-start: var(--base-size-8);
|
||||
margin-inline-start: var(--base-size-12);
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: none;
|
||||
color: var(--brand-color-text-default);
|
||||
font-family: var(--brand-fontStack-monospace);
|
||||
font-size: var(--brand-text-size-100);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 0.25em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showMoreButton:hover {
|
||||
color: var(--brand-color-text-muted);
|
||||
}
|
||||
|
||||
.showMoreButton:focus-visible {
|
||||
outline: var(--brand-borderWidth-thin) solid var(--brand-color-focus);
|
||||
outline-offset: var(--base-size-4);
|
||||
border-radius: var(--brand-borderRadius-small);
|
||||
}
|
||||
|
||||
.filterOption {
|
||||
|
||||
@@ -676,6 +676,35 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--base-size-4);
|
||||
max-block-size: 480px;
|
||||
overflow-y: auto;
|
||||
padding-inline-end: var(--base-size-4);
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.showMoreButton {
|
||||
align-self: flex-start;
|
||||
margin-block-start: var(--base-size-8);
|
||||
margin-inline-start: var(--base-size-12);
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: none;
|
||||
color: var(--brand-color-text-default);
|
||||
font-family: var(--brand-fontStack-monospace);
|
||||
font-size: var(--brand-text-size-100);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 0.25em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showMoreButton:hover {
|
||||
color: var(--brand-color-text-muted);
|
||||
}
|
||||
|
||||
.showMoreButton:focus-visible {
|
||||
outline: var(--brand-borderWidth-thin) solid var(--brand-color-focus);
|
||||
outline-offset: var(--base-size-4);
|
||||
border-radius: var(--brand-borderRadius-small);
|
||||
}
|
||||
|
||||
.filterOption {
|
||||
|
||||
Reference in New Issue
Block a user