Autonomous backup agent for GitHub Copilot CLI skills. Watches, syncs,
and pushes skill changes to GitHub in real time. One-line install,
survives reboots, zero interaction after setup.
Co-authored-by: DUBSOpenHub <DUBSOpenHub@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Some layout tweaks
* SSR resource listing pages
Render resource listing pages in Astro for first paint and hydrate client filtering/search behavior on top.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fixing font path
* removing feature plugin reference as we don't track that anymore
* button alignment
* rendering markdown
* Improve skills modal file browsing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Improving the layout of the search/filter section
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: show external plugins on the website
Read plugins/external.json during website data generation and include
external plugins alongside local ones in plugins.json. External plugins
are flagged with external:true and carry metadata (author, repository,
homepage, license, source).
On the website:
- Plugin cards show a '🔗 External' badge and author attribution
- The 'Repository' button links to the source path within the repo
- The modal shows metadata (author, repo, homepage, license) and a
'View Repository' CTA instead of an items list
- External plugins are searchable and filterable by tags
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: address PR #937 security and UX review comments
- Add sanitizeUrl() function to validate URLs and prevent XSS via javascript:/data: schemes
- Add rel="noopener noreferrer" to all target="_blank" links to prevent reverse-tabnabbing
- Change external plugin path from external/<name> to plugins/<name> for proper deep-linking
- Track actual count of external plugins added (after filtering/deduplication) in build logs
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Initial plan
* feat: add contributors page to website
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
* feat: add footer with contributors link and fix emoji-only display
- Add custom Starlight Footer component with 'Made with ❤️ by our
amazing contributors' linking to /contributors/
- Filter out contribution types without emoji mappings in the
contributor data generation so only emojis (🎭🎁🧭⌨️🧰) are
shown on the contributors page, not text labels like 'code' or 'doc'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: use all-contributors HTML output for contributors page
- Restyle all-contributors generated table as a responsive card grid
using CSS grid on tbody with card-styled td cells
- Remove old custom JS search/filter UI and contributors.ts script
- Remove generateContributorsData from data pipeline (no longer needed)
- Keep all-contributors markers for bot regeneration
- Include updated contributor data from .all-contributorsrc
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: CSS fixes for contributors page Starlight compatibility
- Override Starlight table width/overflow to prevent clipping
- Force td width: 100% to counteract HTML width="14.28%" attribute
- Set emoji links to display: inline to prevent vertical stacking
- Improve border visibility with lighter gray color
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Co-authored-by: Aaron Powell <me@aaron-powell.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fixing the action link
* Fix sidebar navigation text contrast in light mode
- Use --sl-color-text-invert instead of --sl-color-white for active
sidebar item, fixing near-black text on dark purple background
(contrast ~2.5:1 → ~7.1:1)
- Bump inactive sidebar links to font-weight 500 for better readability
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add instrumentation script for pageview analytics
* Only include analytics tags in production builds
Wrap hydro-marketing analytics meta tag and script in an
import.meta.env.PROD conditional so they are excluded during
local development and only rendered in production builds.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add production-only analytics tags to Starlight Head component
Add hydro-marketing analytics meta tag and script to the custom
Head.astro component override, gated behind import.meta.env.PROD
so they only render in production builds (GitHub Pages deploy).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add search functionality to Learning Hub index page
Add a client-side search bar that filters articles by title, description,
and tags. Sections with no matching results are hidden automatically.
Uses the existing .search-bar CSS pattern from the cookbook page.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chore: remove deprecated layouts, theme script, and learning-hub config
Phase 5 cleanup of Starlight migration:
- Delete BaseLayout.astro (replaced by StarlightPage)
- Delete ArticleLayout.astro (replaced by Starlight docs rendering)
- Delete theme.ts (Starlight has built-in theme toggle)
- Delete src/config/learning-hub.ts (sidebar order now in astro.config.mjs)
- Replace learning-hub glob collection with Starlight docs collection in content.config.ts
- Keep search.ts (still used by homepage and all resource page scripts)
Build verified: 23 pages, no errors.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate website to Starlight with full-text resource search
- Replace bespoke Astro layouts with Starlight integration
- Homepage and resource pages use StarlightPage wrapper
- Learning Hub articles rendered via Starlight docs collection
- Starlight provides search, theme toggle, sidebar, ToC, a11y
- Add custom Pagefind integration for resource search
- All 614 agents/skills/instructions/hooks/workflows/plugins
indexed as custom records with deep-link URLs
- Type filter pills (horizontal pill toggles) above results
- Search results link directly to resource modals via #file= hash
- Move global.css to src/styles/ for Vite processing
- Scope CSS reset to #main-content to avoid Starlight conflicts
- Full-width page gradient via body:has(#main-content)
- Light/dark theme support with Starlight gray scale inversion
- Delete old layouts (BaseLayout, ArticleLayout), theme.ts, config
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review feedback
- Fix pagefind-resources.ts header comment (pagefind:true not false)
- Remove unused base variable in cookbook/index.astro
- Replace hardcoded /awesome-copilot/ paths with relative links in index.md
- Delete stale public/styles/global.css (source of truth is src/styles/)
- Replace fragile getBasePath() with Astro config base in pagefind integration
- Document pagefind:true reasoning in astro.config.mjs
- Use proper visually-hidden pattern + :focus-visible ring for filter pills
- Remove dead header/nav/theme CSS from global.css (~160 lines)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(schema): add external recipe fields to cookbook schema
Add optional external, url, and author fields to the recipe schema
in cookbook.schema.json. When external is true, url is required via
conditional validation. Author supports name (required) and url
(optional) for attribution.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(data): support external recipes in data generator
- External recipes (external: true) skip local file validation
- Validate URL format for external recipes
- Pass through external, url, and author fields to output JSON
- Add per-recipe languages array: derived from resolved variant keys
for local recipes, and from tags matching known language IDs for
external recipes
- Collect language IDs in a first pass before processing recipes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(website): render external recipe cards on cookbook page
- Extend Recipe interface with external, url, author, and languages
- Render external recipes with Community badge, author attribution,
and View on GitHub link instead of View Recipe/View Example buttons
- Language filter uses per-recipe languages array uniformly
- Remove Nerd Font icons from select dropdown options (native selects
cannot render custom web fonts)
- Add CSS for external recipe cards (dashed border, badge, author)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(cookbook): add community samples section with first external recipe
Add a Community Samples cookbook section to cookbook.yml with the
Node.js Agentic Issue Resolver as the first external recipe entry,
linking to https://github.com/Impesud/nodejs-copilot-issue-resolver.
Resolves the use case from PR #613 for supporting external samples.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(cookbook): add Copilot SDK Web App to community samples
Add aaronpowell/copilot-sdk-web-app — a full-stack chat app built with
the GitHub Copilot SDK, .NET Aspire, and React.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add contribution CTA to all listing/search pages
Add a reusable ContributeCTA component that encourages visitors to
contribute their own resources. The CTA appears at the bottom of every
resource listing page (agents, instructions, skills, hooks, workflows,
plugins, tools) with:
- Contextual text that adapts to the resource type
- 'Contribute yours' primary button linking to CONTRIBUTING.md
- 'Request a resource' outline button linking to new issue creation
- Gradient top bar matching existing card design patterns
- Responsive layout that stacks on mobile
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Contribute button to page header on all listing pages
Place an outlined Contribute button in each page-header section so it's
immediately visible without scrolling. Uses accent purple border that
fills on hover with a glow effect. Stacks below description on mobile
via a 600px breakpoint.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add screenshots for contribution CTA PR
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* didn't mean to commit them
* Extract PageHeader component to deduplicate header markup
Address PR review feedback: the header Contribute link (URL, SVG icon,
classes) was duplicated across all 7 listing pages. Extract into a
reusable PageHeader.astro component that accepts title and description
props, with a slot for rich HTML descriptions (used by workflows page).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move duplicated fundamentalsOrder and referenceOrder arrays from
index.astro and ArticleLayout.astro into a shared config file at
src/config/learning-hub.ts. Both consumers now import from the
single source of truth.
Addresses PR review comment about maintenance burden of keeping
two copies in sync.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- New article covering plugin concepts, finding/installing/managing plugins,
marketplace browsing, and how this repo serves as a plugin marketplace
- Add 'installing-and-using-plugins' to fundamentalsOrder in index.astro
and ArticleLayout.astro
- Add Plugin entry to terminology glossary
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Expand 'Specifying an Agent' into full 'Using Custom Agents' section
with agent profile format, storage locations, and selection methods
- Add 'Agent Skills and the Coding Agent' section covering how skills
are automatically loaded, directory structure, and SKILL.md format
- Add comparison table: Instructions vs Skills vs Custom Agents
- Add 'Leveraging Community Resources' section linking to this repo's
agents, skills, and hooks directories
- Update best practices with skills and agent recommendations
- Update FAQ to cover both agents and skills
- Add skills article to related articles and Next Steps
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tables in article content were invisible due to no border styles.
Add collapsed borders, a tinted header row, and a subtle hover effect
scoped to .article-content table elements.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a left sidebar to the Learning Hub index page matching the pattern
already used on individual article pages. The sidebar lists all articles
grouped by section (Fundamentals, Reference, Hands-on) and stays sticky
while scrolling, reducing vertical scroll for the now 10-article list.
Also update ArticleLayout.astro fundamentalsOrder to include the 4 new
articles added in the previous commit.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace 'Building Custom Agents (coming soon)' with real links
- Add Hook and Coding Agent entries to the glossary
- Add MCP Servers learning hub link to glossary MCP entry
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add four high-priority articles identified by gap analysis against
nishanil/copilot-guide:
- Building Custom Agents: personas, tools, MCP integration, patterns
- Understanding MCP Servers: what MCP is, configuration, agent usage
- Automating with Hooks: lifecycle events, hooks.json, practical examples
- Using the Copilot Coding Agent: setup steps, issue assignment, PR workflow
Update index.astro fundamentalsOrder to include all 10 articles.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add card-with-count class to the Learning Hub card so its emoji icon
aligns horizontally with the title, matching all other cards in the
grid. Previously it used the base card class which stacked the icon
above the content.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace all prompt file references with skills guidance throughout the
Learning Hub. Skills are the preferred customization primitive because
they support agent discovery via extended frontmatter, can bundle
reference files and scripts, and are portable across coding agent
systems via the Agent Skills specification.
- Create what-are-agents-skills-instructions.md (replaces prompts article)
- Create creating-effective-skills.md (replaces prompts tutorial)
- Delete what-are-agents-prompts-instructions.md and creating-effective-prompts.md
- Update copilot-configuration-basics.md directory structure and examples
- Update defining-custom-instructions.md comparisons and cross-references
- Update glossary: deprecate Prompt entry, add Skill definition
- Update understanding-copilot-context.md and before-after examples
- Update learning-hub index.astro slugs
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add og:image:width, og:image:height, og:image:type, and
twitter:image:alt meta tags so Twitter/X can properly display
the social card image when links are shared.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add og:type, og:url, og:title, og:description, og:image, og:site_name meta tags
- Add twitter:card, twitter:title, twitter:description, twitter:image meta tags
- Add canonical URL link element
- Use social-image.png for social preview image
- Update document.title dynamically when modal opens/closes
- Resolve resource titles from JSON data files instead of raw filenames
- Handle skill/hook folder path mismatches for title lookup
- Change title separator from '-' to '|' for consistency
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update parseWorkflowMetadata to extract triggers from the 'on'
property keys (e.g. schedule, issue_comment) instead of a separate
'triggers' field. Remove tags support from workflows since workflows
don't use tags.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use 'type' modifier on SearchItem imports to satisfy
verbatimModuleSyntax. Without this, esbuild strips the interface
export but leaves the value import, causing a runtime error.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a new /workflows/ page for browsing agentic workflow definitions
with search, trigger/tag filters, and sorting. Follows the same
patterns as the existing hooks page.
New files:
- website/src/pages/workflows.astro
- website/src/scripts/pages/workflows.ts
Updated files:
- BaseLayout.astro: add Workflows nav link
- index.astro: add Workflows card to homepage
- pages/index.ts: add workflows to counts
- utils.ts: add workflow type to icons, labels, and getResourceType
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add tsconfig.json extending astro/tsconfigs/base and env.d.ts with
Astro client type references to resolve import.meta.env type errors.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the prompts page, navigation link, homepage card, and all
references to prompts across the website source code. The repo no
longer contains prompt files, so the website should not reference them.
Files removed:
- website/src/pages/prompts.astro
- website/src/scripts/pages/prompts.ts
Files updated:
- BaseLayout.astro: remove nav link and update description
- index.astro: remove prompts card and update text
- llms.txt.ts: remove prompts import and section
- plugins.astro: update description text
- utils.ts: remove prompt type from install config, icons, labels
- pages/index.ts: remove prompts from counts
- modal.ts: update JSDoc comment
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>