目录
Aaron Powell

Rebuild website on Primer Brand design (#2703)

  • feat(website): rebuild site on Primer Brand design prototype

Replace the Astro + Starlight site with the Brand Engineering design prototype, ported component-for-component onto plain Astro + React islands. The prototype is treated as the authority on markup and styling; dynamic data is injected into its components rather than the components being reinterpreted.

Framework:

  • Remove @astrojs/starlight entirely, along with its document shell, search, footer and language selector. BaseLayout.astro now owns the document head, CSP, social meta and analytics.
  • Add @primer/react-brand and @astrojs/react. Alias the package to its ESM build in vite.resolve, since the default CJS entrypoint breaks named-export detection during SSR, and mark it noExternal so its stylesheet imports resolve.
  • Promote pagefind to an explicit devDependency; it was previously pulled in transitively by Starlight.

Pages: home, the five catalogs, the five detail routes, contributors, Playbook index and articles, and the cookbook are all rendered by ported prototype components inside a shared PageShell.

Detail pages share a DetailChassis (hero, breadcrumbs, sticky TOC with scroll-spy, prev/next) while keeping what makes each type distinct: a file switcher over bundled skill assets, an included-items grid and external provenance for plugins, and a hero-scale preview for extensions.

i18n: resolve translated Playbook entries via Astro.currentLocale inside the shared article route instead of separate [locale] routes. The explicit routes collided with the i18n fallback routes, so translated articles were being shadowed by their English originals and 900 nonsensical double-locale pages were emitted.

Search: TopNavSearch now queries the Pagefind index client-side in addition to the static resource index, merging on href and degrading to the static index in dev, where no index has been built.

Also delete the superseded vanilla-TS page renderers and Astro partials, which the ported React components fully replace.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): resolve accessibility violations in ported detail pages

Fixes the three axe violations surfaced by the a11y audit after the Primer Brand redesign:

  • aria-prohibited-attr: aria-label was set on roleless divs in InstructionDetail and PluginDetail. The “Applies to” list now uses list/listitem roles; plugin provenance uses a group role.
  • scrollable-region-focusable: the install command code element overflows horizontally but was not keyboard reachable. Added tabIndex to all three render sites.
  • color-contrast: the Playbook “New” label used the brand’s success-fg on success-subtle, reaching only 4.09:1 in light mode. Stepped one down the same green ramp for 6.14:1. Scoped to light mode; dark mode already passed and its green-7 is near-black.

Also corrects the stale route list in the audit script: /hooks/, /workflows/ and /tools/ have never existed as pages.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • 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

  • fix(website): source contributor count from .all-contributorsrc

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Removing playwright-mcp files

  • fix(website): resolve article text colour inside themed scope

Injected markdown inherited color from body, which sits outside the ThemeProvider and always resolved the light-mode token, making body copy unreadable in dark mode.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): drop ‘In this article’ TOC from resource detail pages

Resource detail pages (agent, instruction, skill, plugin, extension) are not articles, and their markdown headings do not form a meaningful outline. Playbook and cookbook articles keep their TOC.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • style(website): thin the sidebar scrollbar on detail pages

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): use themed link colour for markdown links in dark mode

Raw markdown-injected elements previously fell back to the browser’s default blue/purple link colours, which are harsh against the dark-mode background. Route them through –brand-color-text-link-rest (and the pressed/hover token) instead.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): apply ThemeProvider to Playbook article layout so dark mode works

LearningArticleLayout replaces PageShell for Playbook articles but never wrapped itself in a ThemeProvider, so its useTheme() call always fell back to Primer’s light default regardless of the site’s actual theme preference. Split the component into a thin ThemeProvider wrapper plus the existing implementation (now LearningArticleLayoutBody), matching the pattern already used by PageShell.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): align raw markdown code blocks with prototype styling

Astro’s default Shiki config bakes in the fixed ‘github-dark’ theme’s literal colors, ignoring the site’s actual light/dark mode - this made plain markdown-fenced code blocks (as opposed to the prototype’s own SyntaxHighlightedCode component) always render a hardcoded dark box regardless of theme.

Switch shikiConfig to the ‘css-variables’ theme so highlighted tokens resolve through –astro-code-* custom properties instead, then map those to the same brand color tokens the prototype’s codeBlock uses (canvas-subtle background, border-muted border, brand text/link/accent colors for tokens). Raw markdown code blocks now match the prototype’s bordered, canvas-subtle surface in both color modes.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): show real contributor count on every page shell

The contributor badge rendered 0 on Playbook, Cookbook, home and custom pages, and reverted to 0 on hydration everywhere else.

Two causes:

  • Shells that bypass PageShell (LearningArticleLayout, PlaybookIndex, PlaybookArticleBody, CookbookIndex, HomePage, TopNav, Custom) defaulted contributorsTotal to 0 instead of the site-data value.
  • site-data read .all-contributorsrc with node:fs at module scope. Those shells are client:load hydrated, so the read threw in the browser and the count reset to 0 after hydration.

The count is now read once in astro.config.mjs and inlined through vite.define as CONTRIBUTORS_TOTAL, so it is a literal in both the server render and the client bundle.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • style(website): soften catalog filter list scrollbars

The filter option lists only set scrollbar-width: thin, so they rendered the platform default scrollbar. They now use the same muted, transparent track treatment as the article sidebar, which resolves through –brand-color-border-muted in both colour modes.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • refactor(website): remove Access from tools panel from plugins catalog

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • feat(website): make Copilot app deep link the default plugin install

Plugin detail pages exposed only a copyable CLI command. They now lead with a ghapp://plugins/install deep link in the same split-button ActionMenu the other detail pages use, keeping the CLI command available as a Copy action in the menu.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): migrate markdown remark plugins to unified processor

Astro 7 deprecates markdown.remarkPlugins in favour of passing a unified() processor from @astrojs/markdown-remark. Moves the GitHub admonitions plugin into markdown.processor, clearing the startup deprecation warning. shikiConfig stays at the markdown level as it is not part of UnifiedProcessorOptions.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): fail the build when the contributor manifest is unreadable

Silently falling back to 0 is how the contributor badge regressed before, so a missing or malformed .all-contributorsrc now throws in production builds and warns in dev instead of shipping a wrong count.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Fix codespell and CodeQL findings in website components
  • Fix real typos flagged by codespell: ‘Couldn't’ -> ‘Couldn’t’ (plain apostrophe, matching convention elsewhere in JSX) and ‘Unparseable’ -> ‘Unparsable’ in catalogFilters.ts
  • DetailChassis.tsx: replace sequential HTML entity unescaping with a single-pass replace to avoid double-unescape/injection risk flagged by CodeQL
  • SyntaxHighlightedCode.tsx: make the markup HTML comment regex match newlines so multi-line comments cannot break out of the token (Bad HTML filtering regexp)
  • pagefindSearch.ts: strip HTML tags in a loop until stable so nested/ malformed markup can’t survive a single-pass strip (Incomplete multi-character sanitization)

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): harden detail heading sanitization

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • github-app settings

  • Fix light-theme flash before dark mode applies on page load

ThemeProvider colorMode=”auto” from @primer/react-brand only resolves the real OS colour-scheme preference inside a useEffect, so its first render is always light. Add a synchronous inline script in that reads prefers-color-scheme and stamps data-color-mode onto before first paint, using the same attribute Primer Brand’s CSS already keys off. React’s own data-color-mode on the inner element takes over once it hydrates.

Fixes #2820

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Fix light-mode scrollbar rendering in dark mode on Playbook articles

.scrollHost (the article scroll region shared by Playbook articles, cookbook recipes, and extension detail pages) never declared a color-scheme, so the browser always painted its native scrollbar using light-mode chrome regardless of the site’s active theme. Set color-scheme: light dark as a baseline and pin it explicitly to the resolved data-mode, and add scrollbar-color so Firefox picks up the themed thumb colour too.

Fixes #2822

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Widen and center extension card preview image

The Canvas Extensions overview card thumbnail was fixed at 360px, leaving uneven left/right margins within the card. Let it grow up to 440px and center it with margin-inline: auto so the image is balanced within the card.

Fixes #2823

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Link Submit CTAs to each resource’s contribution section

The bottom “Submit” CTA on every catalog page pointed at the top of CONTRIBUTING.md, forcing readers to scroll and hunt for the relevant “how to contribute” instructions for that specific resource type. Point each catalog’s CTA directly at the section that documents how to contribute that resource: agents, instructions, plugins, and skills link to their dedicated docs/README.*.md “How to Contribute” section, and canvas extensions link to CONTRIBUTING.md’s “Adding Canvas Extensions” section (extensions have no dedicated README doc).

Fixes #2824

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Center-align “View on GitHub” source link with its icon

The source-link label sat on the default inline text baseline instead of being vertically centered against the GitHub mark icon next to it, so the two visually drifted apart. Wrap the icon and label in an inline-flex container with align-items: center so they share the same vertical center.

Fixes #2825

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Fix mobile resource and Playbook article layout issues

Clean up the shared resource detail and Playbook article styling so mobile pages no longer show unintended divider lines or overflow horizontally.

  • remove article-section divider borders so content separates with spacing instead of white/muted horizontal rules
  • drop the detail-page breadcrumb divider on mobile to match the Playbook mobile treatment
  • constrain raw markdown pre/code blocks to their column and let long code scroll horizontally
  • allow metadata chips to wrap inside the mobile sidebar instead of widening the page

Fixes #2827 Fixes #2828 Fixes #2829

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Only show language selector on pages with real translations

Most of the site is English-only, but the language selector rendered unconditionally on every page even though only the learning-hub/copilot-workshops/app track has mirrored translations.

Add hasTranslations() to playbook-routes.ts, thread a showLanguageSelect prop through PageShell, TopNav and LearningArticleLayout, and compute it from the article’s englishId in learning-hub/[…slug].astro so only translated Playbook articles show the selector.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Add Workshop recommended card to Playbook index

The copilot-workshops hands-on tracks (VS Code, CLI, App, Cloud harnesses) existed and rendered correctly at direct URLs, but had no entry point in the new Playbook index UI – the Articles grid intentionally excludes nested multi-page tracks by design, and the only prior link was buried in body prose.

Adds a ‘Workshop’ recommended card (following the existing cli-for-beginners precedent) linking to /learning-hub/copilot-workshops/, and registers the route in pageHref.ts.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Add a Workshop content-type filter to the Playbook

The hands-on workshop tracks (CLI for Beginners, and the copilot-workshops harnesses) had no shared way to discover them from the Articles grid – each had a recommended card, but no consistent categorization.

Tags both workshop landing pages ‘workshop’, adds a new ‘Workshop’ Kind/content-type facet (derived the same way as the existing Terminology/Tutorial/Example kinds), and includes both landing pages in the Articles grid dataset so filtering by Content type > Workshop surfaces exactly the two tracks.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Fix P0/P1 items from Brand Engineering audit (brand-experience#458)
  • P0: html lang now reflects the actually-rendered locale for a page, not the requested URL locale (BaseLayout.astro, playbook-routes.ts, PlaybookArticle.astro)
  • P0: markdown tables get tabindex=0 via enhanceMarkdownA11y, which Playbook articles were never running (PlaybookArticle.astro)
  • P0: long inline content and breadcrumbs no longer clip on narrow viewports (dotnet-upgrade.module.css, github-copilot-app.module.css)
  • P1: strip the markdown document’s own leading H1 so detail pages don’t render the title twice (detail-page.ts)
  • P1: document the hero secondary-CTA hex and InstructionsCatalog illustration colors as intentional prototype-fidelity values rather than defects (styles.module.css)
  • P1: add explicit Heading size props in PlaybookIndex.tsx

Ref: github/brand-experience#458

  • Rename Playbook to Learning Hub across UI and code

Renames PlaybookIndex.tsx -> LearningHubIndex.tsx, PlaybookArticle.astro -> LearningHubArticle.astro, PlaybookArticleBody.tsx -> LearningHubArticleBody.tsx, PlaybookIcon.tsx -> LearningHubIcon.tsx, lib/playbook-routes.ts -> lib/learning-hub-routes.ts, and lib/playbook-article.ts -> lib/learning-hub-article.ts. Updates all call sites, UI copy, TopNav’s playbookLabel prop, nav/search entries, and home page CTA data to use Learning Hub terminology. URLs under /learning-hub/* are unchanged.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Port github-copilot-app as bespoke Learning Hub article

Adopts the prototype’s github-copilot-app.tsx directly as a dedicated React component instead of rendering it through the generic markdown pipeline, preserving its video carousel, comparison list, learn-more band, and other bespoke JSX exactly as designed.

  • New GithubCopilotApp.tsx under components/brand/learning-hub/, ported near-verbatim from the prototype (data-wiring only: pageHref import swap, media paths).
  • The two large source videos (~23MB, ~32MB) are not committed; the article falls back to their poster/webp images with a TODO to host them externally.
  • learning-hub-bespoke-articles.ts lists slugs that bypass the generic LearningHubArticle.astro pipeline.
  • […slug].astro branches to the bespoke component for “github-copilot-app” (English only for now); all other slugs and locales keep the generic path.
  • Port bespoke Learning Hub articles

Add bespoke Learning Hub article components for the remaining prototype-backed article pages, wire the cookbook index to the data-driven port, and route the CLI overview page through the new bespoke component.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Resolve merge validation blockers in astro config

  • Regenerate README docs after merging origin/main

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Fix Learning Hub Get started pages disappearing after opening (#2960)

The bespoke Learning Hub article components (GithubCopilotApp, AgentsAndSubagents, CopilotConfigurationBasics, GithubCopilotTerminologyGlossary, UsingAutomationsInCopilotApp, WhatAreAgentsSkillsInstructions, WorkingWithCanvasExtensions, CliForBeginnersOverview, CookbookIndex) received the pageHref helper as a function prop passed into a client:load React island. Functions cannot survive Astro’s client-hydration prop serialization, so the prop arrived as undefined on the client. The page rendered correctly server-side (visible briefly), then React threw TypeError: pageHref is not a function during hydration and unmounted the tree, making the page appear to disappear.

Fixed by having each component import the pageHref singleton directly (as AgentDetail, HomePage, and the other catalog components already do) instead of receiving it as a prop, and removed the now unnecessary pageHref={pageHref} prop and its import from the two Astro routes that render these islands.

Verified in the dev server: all 9 previously affected routes now hydrate without error, and npm run build completes successfully (1097 pages).

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • Strip stray trailing divider from Learning Hub articles (#2961)

Several Learning Hub markdown articles end their body with a trailing — thematic break, left over from an authoring template. Rendered as-is it produced an unlabeled


sitting directly above the page footer, with no heading/section boundary to justify it.

Fix this generically in buildArticleSections() by stripping a single trailing


from the rendered HTML before it’s split into sections, rather than hand-editing every affected content file. This also protects future articles authored with the same trailing-rule habit. Legitimate mid-content dividers (e.g. between CLI lesson steps) are left untouched.

  • Remove emojis from Learning Hub article nav (#2962)

CLI for Beginners lessons decorate their ## headings with emoji (e.g. “🎯 Learning Objectives”), which is fine inline in the article body but read as stray glyphs once surfaced as plain-text labels in the “In this article” nav — other Learning Hub pages don’t emoji-decorate their nav, so this was inconsistent.

Add a shared stripEmoji() helper and apply it to the nav labels built from markdown headings in LearningHubArticle.astro. The article body headings themselves are untouched.

  • Fix hero code blocks blending into background (#2963)

Detail page hero install-command code blocks (SyntaxHighlightedCode via heroExtras) used the same background token as the hero surface itself (–brand-color-canvas-subtle), making them visually indistinguishable except for a thin border.

Add a scoped .heroContent .codeBlock override in both shared style modules (dotnet-upgrade.module.css for catalog Detail pages/Cookbook, github-copilot-app.module.css for Learning Hub) that sets the background to –brand-color-canvas-default instead, so hero code blocks stand apart from the hero background.

The base .codeBlock rule is left untouched since body-content code blocks (e.g. Cookbook recipe steps) correctly rely on canvas-subtle being distinct from the page’s canvas-default background.

  • Tie color-scheme to dark mode for native scrollbars (#2964)

Native scrollbars (the page scrollbar, and any overflow container without custom scrollbar styling, e.g. code block

 elements) are
painted by the browser based on the color-scheme CSS property, not our
design tokens. Only a handful of scoped containers (.scrollHost,
.filterOptions, .sidebarSticky) had custom scrollbar-color rules; the
page scrollbar and plain code-block overflow scrollbars had no
color-scheme set at all, so they rendered with light OS-default
scrollbars even when data-color-mode="dark" was set on .

Add a global rule tying html’s color-scheme to the same data-color-mode attribute BaseLayout.astro already stamps on , so every native scrollbar (and other UA-drawn form controls) follows the site’s theme.

  • Unify article/detail page typography, tables, and dividers (#2965)

Raw markdown injected into .articleSection (Skill/Agent/Instruction/ Plugin/Extension Detail pages via dotnet-upgrade.module.css, and Learning Hub articles via github-copilot-app.module.css) had no styling for headings, tables, horizontal rules, blockquotes, or inline code, so it fell back to inconsistent browser UA defaults – most visibly, tables rendered with no borders or header emphasis at all.

Add a shared set of rules to both CSS modules, scoped under .articleSection, that:

  • map raw h1-h6 onto the brand type scale (font, weight, line-height)
  • give hr a full-width divider matching the border-muted token
  • style blockquote with a left accent bar
  • render inline code (outside
    ) as a small chip, matching
    .inlineCode used elsewhere for hand-authored tokens
  • style table/th/td with bordered cells and a canvas-subtle header row, scrolling horizontally on narrow viewports

Also fix skills/acquire-codebase-knowledge/SKILL.md: a stray blank line inside the “Bundled Assets” table split it into a lone header row and a second block with no header, so GFM table parsing stopped after the first row and the remaining rows rendered as literal pipe-delimited text instead of a table – this was the exact bug shown in the issue screenshot.

  • fix: align previous/next navigation links horizontally on Detail pages

Detail page Previous/Up next links were stacked vertically. Change .nextUp to a row layout (space-between) so Previous sits left-aligned and Up next right-aligned on the same row, with a max-width: 40rem media query reverting to a stacked column layout on small screens.

Use an explicit .nextUpNext modifier class (applied to the “Up next” link specifically) with margin-inline-start: auto instead of a positional :last-child selector, so the link right-aligns correctly even when it is the only link present (e.g. the first item in a catalog, which has no Previous link).

Fixes #2966

  • fix: align callout blocks with article content width

The .proTip callout (Note/Tip/Caution admonitions in Learning Hub articles, and the “Maintained outside this repository” notice on external Plugin Detail pages) had its own 32px horizontal margin.

The prototype places this callout as a sibling of .articleSection (which has no horizontal padding of its own), using that margin to align its edges with the section’s own 32px padding. Our port always renders it nested inside an already-padded .articleSection, so the extra margin doubled up with that padding, making the callout visibly narrower than the surrounding paragraph/table text – most obvious on narrow viewports.

Remove the horizontal margin (keep only the bottom spacing) in both dotnet-upgrade.module.css and github-copilot-app.module.css so the callout’s internal padding lines up with the article text on both edges, at all viewport widths.

Fixes #2967

  • fix: standardize mobile card padding across resource pages

Agents, Instructions, Skills, and Plugins catalog cards (.item) used the desktop 60px padding at every viewport, including phone widths, because their @media (max-width: 47.99rem) block never reduced it – unlike the Extension catalog, which drops to a 32px inset at that breakpoint. This made cards on those four catalogs look inconsistently over-indented on mobile compared to Extension cards.

Add the same .item { padding: var(--base-size-32); } override to the mobile media query in agents.module.css, instructions.module.css, and skills.module.css. plugins.module.css already had an override, but with an asymmetric 32px/24px padding – normalized it to the same 32px on all sides used everywhere else.

Fixes #2968

  • fix(website): address PR review feedback

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): preserve legacy resource links

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): bump transitive js-yaml to patched versions

Force astro’s js-yaml dependency to 4.3.2 and front-matter/gray-matter’s to 3.15.2 via npm overrides, fixing GHSA-52cp-r559-cp3m and GHSA-5p4m-2wfm-xmqj (quadratic-complexity DoS via YAML merge keys and !!omap resolution). Addresses github/vuln-mgmt#209786.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): address redesign follow-up issues

Fix light-mode favicon contrast with an adaptive SVG mark, allow YouTube embeds through the site CSP, and align resource catalog sort controls with the Playbook article sort treatment across Agents, Instructions, Skills, Plugins, and Extensions.

Addresses #3006, #3007, #3008.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): address PR review feedback

Respect reduced-motion preferences in detail TOC scrolling, restore default search indexes for bespoke Playbook pages, add pagination scroll/focus handling to the Agents catalog, sanitize contributor and cookbook URLs before rendering external links, index extension records in Pagefind, and restore install affordances for marketplace-backed external extensions.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): revert Learning Hub naming from Playbook rename

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • chore(website): update stale Playbook comments to Learning Hub

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): align source label in detail sidebar

Fixes #3207

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

  • fix(website): address security review feedback

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6


Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com Copilot-Session: 80686fef-efe3-4cdd-8cd6-bfa61a5d0af6

18小时前2344次提交

🤖 Awesome GitHub Copilot

Powered by Awesome Copilot GitHub contributors from allcontributors.org

A community-created collection of custom agents, instructions, skills, hooks, workflows, and plugins to supercharge your GitHub Copilot experience.

[!TIP] Explore the full collection on the website → awesome-copilot.github.com

The website offers full-text search and filtering across hundreds of resources, plus the Learning Hub for guides and tutorials.

Using this collection in an AI agent? A machine-readable llms.txt is available with structured listings of all agents, instructions, and skills.

📖 Learning Hub

New to GitHub Copilot customization? The Learning Hub on the website offers curated articles, walkthroughs, and reference material — covering everything from core concepts like agents, skills, and instructions to hands-on guides for hooks, agentic workflows, MCP servers, and the Copilot coding agent.

⬆ Back to Top

What’s in this repo

Resource Description Browse
🤖 Agents Specialized Copilot agents that integrate with MCP servers All agents →
📋 Instructions Coding standards applied automatically by file pattern All instructions →
🎯 Skills Self-contained folders with instructions and bundled assets All skills →
🔌 Plugins Curated bundles of agents and skills for specific workflows All plugins →
🍳 Cookbook Copy-paste-ready recipes for working with Copilot APIs

⬆ Back to Top

Install a Plugin

For most users, the Awesome Copilot marketplace is already registered in the Copilot CLI/VS Code, so you can install a plugin directly:

copilot plugin install <plugin-name>@awesome-copilot

If you are using an older Copilot CLI version or a custom setup and see an error that the marketplace is unknown, register it once and then install:

copilot plugin marketplace add github/awesome-copilot
copilot plugin install <plugin-name>@awesome-copilot

⬆ Back to Top

Contributing

See CONTRIBUTING.md · AGENTS.md for AI agent guidance · Security · Code of Conduct

The customizations here are sourced from third-party developers. Please inspect any agent and its documentation before installing.

⬆ Back to Top

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Aaron Powell

Matt Soucoup

Troy Simeon Taylor

Abbas

Peter Strömberg

Daniel Scott-Raynsford

John Haugabook

Pavel Simsa

Harald Kirschner

Muhammad Ubaid Raza

Tom Meschter

Aung Myo Kyaw

JasonYeMSFT

Jon Corbin

troytaylor-msft

Emerson Delatorre

Burke Holland

Kent Yao

Daniel Meppiel

Gordon Lam

Mads Kristensen

Shinji Takenaka

spectatora

Yohan Lasorsa

Vamshi Verma

James Montemagno

Alessandro Fragnani

Ambily

krushideep

devopsfan

Tugdual Grall

Oren Me

Mike Rousos

Justin Yoo

Guilherme do Amaral Alves

Griffin Ashe

Ashley Childress

Adrien Clerbois

ANGELELLI David

Mark Davis

Matt Vevang

Maximilian Irro

NULLchimp

Peter Karda

Saul Dolgin

Shubham Gaikwad

Theo van Kraay

Tianqi Zhang

Will 保哥

Yuta Matsumura

anschnapp

hizahizi-hizumi

黃健旻 Vincent Huang

Bruno Borges

Steve Magne

Shane Neuville

André Silva

Allen Greaves

Amelia Payne

BBoyBen

Brooke Hamilton

Christopher Harrison

Dan

Dan Wahlin

Debbie O'Brien

Ed Harrod

Genevieve Warren

Guillaume

Henrique Nunes

Jeremiah Snee

Kartik Dhiman

Kristiyan Velkov

msalaman

Per Søderlind

Peter Smulovics

Ravish Rathod

Rick Smit

Rob Simpson

Robert Altman

Salih

Sebastian Gräf

Sebastien DEGODEZ

Sergiy Smyrnov

SomeSolutionsArchitect

Stu Mace

Søren Trudsø Mahon

Tj Vita

Peli de Halleux

Paulo Morgado

Paul Crane

Pamela Fox

Oskar Thornblad

Nischay Sharma

Nikolay Marinov

Nik Sachdeva

Nick Taylor

Nick Brady

Nathan Stanford Sr

Máté Barabás

Mike Parker

Mike Kistler

Giovanni de Almeida Martins

이상현

Ankur Sharma

Wendy Breiding

voidfnc

shane lee

sdanzo-hrb

sauran

samqbush

pareenaverma

oleksiyyurchyna

oceans-of-time

kshashank57

Meii

factory-davidgu

dangelov-qa

BenoitMaucotel

benjisho-aidome

Yuki Omoto

Will Schultz

Waren Gonzaga

Vincent Koc

Victor Williams

Ve Sharma

Vasileios Lahanas

Udaya Veeramreddygari

Tài Lê

Tsubasa Ogawa

Troy Witthoeft (glsauto)

Gerald Versluis

George Dernikos

Gautam

Furkan Enes

Florian Mücke

Felix Arjuna

Eldrick Wega

Dobri Danchev

Diego Gamboa

Derek Clair

David Ortinau

Daniel Abbatt

CypherHK

Craig Bekker

Christophe Peugnet

Christian Lechner

Chris Harris

Artem Saveliev

Antoine Rey

Ankit Das

Aline Ávila

Alexander Martinkevich

Aleksandar Dunchev

Alan Sprecacenere

Akash Kumar Shaw

Abdi Daud

AIAlchemyForge

4regab

Miguel P Z

Michael Fairchild

Michael A. Volz (Flynn)

Michael

Mehmet Ali EROL

Max Prilutskiy

Matteo Bianchi

Mark Noble

Manish Jayaswal

Luke Murray

Louella Creemers

Sai Koumudi Kaluvakolanu

Kenny White

KaloyanGenev

Kim Skov Rasmussen

Julien Dubois

José Antonio Garrido

Joseph Gonzales

Jorge Balderas

John Papa

John

Joe Watkins

Jan de Vries

Jakub Jareš

Jackson Miller

Ioana A

Hunter Hogan

Hashim Warren

Gonzalo

Gisela Torres

Shibi Ramachandran

lupritz

Héctor Benedicte

Ted Vilutis

Anthony Shaw

Chris McKee

CASTResearchLabs

白水淳

Imran Siddique

共产主义接班人

Ivan Charapanau

Tadas Labudis

Alvin Ashcraft

Jan Krivanek

Gregg Cochran

Josh N

ian zhang

Garrett Siegel

Roberto Perez

Dan Velton

Lee Reilly

Daniel Coelho

Vahid Faraji

Ashley Wolf

Noah Jenkins

Jeremy Kohn

Harri Sipola

Toru Makabe

Pham Tien Thuan Phat

Benji Shohet

Amaury Levé

Tim Deschryver

Mohammad Asad Alahmadi

fondoger

Yuval Avidani

Csaba Iváncza

Tim Heuer

lance2k

Andrea Liliana Griffiths

Ajith Raghavan

Catherine Han

Igor Shishkin

Burrito Verde

Joseph Van der Wee

Luiz Bon

Sanjay Ramassery Babu

Russ Rimmerman [MSFT]

Roberto Perez

Shehab Sherif

Smit Patel

Steven Vore

Subhashis Bhowmik

Tim Mulholland

Niels Laute

Pavel Sulimau

PrimedPaul

Zhiqi Pu

Ramyashree Shetty

ZdaPhp

pigd0g

rahulbats

suyask-msft

tagedeep

tinkeringDev

Travis Hill

Utkarsh patrikar

Yauhen

Yiou Li

Yuki Omoto

Abhi Bavishi

augustus-0

Branislav Buna

connerlambden

David Raygoza

Diego Porto Ritzel

Eric Scherlinger

Fatih

Felipe Pessoto

François

Geoffrey Casaubon

Anddd7

Anders Eide

Aymen

Kevin van Zonneveld

Luis Cantero

MV Karan

Marcel Deutzer

Jon Galloway

Josh Beard

Julian

Simon Kurtz

Temitayo Afolabi

JoeVenner

Pasindu Premarathna

ecosystem

Punit

Onur Senturk

Andrew Stellman

Jeonghoon Lee

Satya K

Samik Roy

Simina Pasat

Tyler Garner

Vijay Chegu

DTIBeograd

Anmol Behl

Brad Kinnard

Chad Bentz

Marcello Cuoghi

Josh Johanning

jennyf19

Saravanan Rajaraman

Patel Dhruv

Renee Noble

jjpinto

moeyui1

mohammadali2549

Vladislav Guzey

aparna198809

Ed McAdams

Emil Andersson

Mikael

Mrigank Singh

Jim Bennett

Alishahzad1903

Antonio Villanueva

Tim Hanewich

ming

Scott O'Hara

Salih

Shailesh

Shubham Jiyani

Srinivas Vaddi

Philippe D

Rajesh Goldy

dstrupl

wuwen

Tilak Patel

Vijay Bandi

Zixuan Jiang

Dennis Lembree

Dev Shah

Falco

AJ

Anush

Ayush Saklani

Carlos Alexandro Becker

Mangokernel

Mario Codes

Gonzalo Fleming

Steve Magne

Sertxito

Rayner Zeng

ilderaj

mvanderbend-msoft

Parveen Sharma

pmorong

vinod kumar

Vidhart Bhatia

Xiaoyun Ding

denis-a-evdokimov

Adriano Nogueira

Aezan

Andy Anderson

Kweku Dzata

Marcel

Navaneeth Reddy

James

Joseph Counts

Neha Mandge

Srikanth Patchava

Thomas Ray

Nixon Kurian

Petr Stupka

Pieter de Bruin

sudeepghatak

tlietz

dawright22

Alejandro Fernando Suarez Gomez

Burak Bayır

MUHAMMAD SAMIULLAH

Nikola Metulev

Joseph Kasprzyk

Lovy Jain

kimtth

Akash Dwivedi

Suren K

Konstantinos Passadis | Azure MVP | MCT

Alex Sokol

Jiro Matsuzawa

Guo Cheng

Furkan Reha

Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!

⬆ Back to Top

📚 Additional Resources

⬆ Back to Top

™️ Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号