82 Commits

Author SHA1 Message Date
Aaron Powell
f12b83cf1b skills readme was getting junk files (#967) 2026-03-11 10:44:46 +11:00
Aaron Powell
3efc4f3a5b feat: show external plugins on the website (#937)
* 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>
2026-03-10 10:13:16 +11:00
Copilot
cf2a5470a2 feat: add contributors page to website (#928)
* 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>
2026-03-09 14:47:20 +11:00
Copilot
1b15663c46 Update docs to reflect awesome-copilot as default plugin marketplace in CLI and VS Code (#901)
* Initial plan

* docs: update plugin discovery for default marketplace in CLI and VS Code

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* docs: revert README.md changes (covered by #900), update README.plugins.md

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* fix: update plugin template in constants.mjs so README.plugins.md survives rebuilds

Co-authored-by: aaronpowell <434140+aaronpowell@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>
2026-03-06 16:26:26 +11:00
Tom Meschter
d4dcc676e4 Support external plugins in marketplace.json generation (#876)
The marketplace currently only includes plugins that live as local
directories in plugins/. This makes it impossible to list plugins
hosted in external GitHub repos, npm packages, or other git URLs.

Add plugins/external.json as a hand-curated list of external plugin
entries following the Claude Code plugin marketplace spec. The
generate-marketplace script now reads this file and merges external
entries as-is into the generated marketplace.json, sorted by name.

Changes:
- Add plugins/external.json (empty array, ready for entries)
- Update eng/generate-marketplace.mjs to load, merge, and sort
  external plugins; warn on duplicate names; log counts
- Document the external plugin workflow in CONTRIBUTING.md and
  AGENTS.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-05 10:08:54 +11:00
Aaron Powell
a998c2d38c feat: support external recipes in cookbook (#831)
* 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>
2026-03-02 19:36:10 +11:00
Aaron Powell
83aed9e974 Extract workflow triggers from 'on' frontmatter field, drop tags
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>
2026-02-25 16:23:49 +11:00
Aaron Powell
d144ab626a fix: copilot comments 2026-02-25 15:27:36 +11:00
Aaron Powell
1c67e92cd2 Merge branch 'staged' into copilot/combine-prompts-and-skills 2026-02-25 15:01:00 +11:00
Aaron Powell
0a0f387abd Merge pull request #805 from brunoborges/fix-aw-readme
docs: improve CONTRIBUTING.md and add "How to Contribute" links across docs
2026-02-25 14:37:42 +11:00
Aaron Powell
3145f777d2 fix: rewrite plugin.json paths to folders during publish
During the staged→main publish, after materializing files into plugin
directories, rewrite each plugin.json to replace individual file paths
with folder references so consumers on main get directory-level entries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 10:22:04 +11:00
Bruno Borges
6103b17ba2 chore: update documentation and add contribution guidelines for agents, hooks, instructions, plugins, skills, and workflows; enhance actions-lock.json with additional actions 2026-02-24 12:53:43 -05:00
Aaron Powell
12fa8592d7 fixing js file from bad merge 2026-02-24 15:29:20 +11:00
copilot-swe-agent[bot]
1ad2b3a24c Remove prompts from website generation and contributor scripts
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-24 14:44:00 +11:00
copilot-swe-agent[bot]
f96a900e13 Remove prompts infrastructure from build scripts
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-24 14:40:36 +11:00
copilot-swe-agent[bot]
caab1f623b Convert all prompts to skills and update plugin manifests
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-24 14:39:33 +11:00
Bruno Borges
dbaa8f6e3c Merge branch 'staged' into agentic-workflows-staged 2026-02-23 19:06:34 -05:00
Aaron Powell
941aced1f3 Add script to clean materialized plugin files
Adds eng/clean-materialized-plugins.mjs which removes agents/, commands/,
and skills/ subdirectories from plugin folders. These are generated by CI
via eng/materialize-plugins.mjs during publish and should not be tracked on
the staged branch.

Runnable via: npm run plugin:clean

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-24 10:34:26 +11:00
Bruno Borges
53401cb560 Simplify workflows to flat .md files instead of folders
Workflows are now standalone .md files in workflows/ — no subfolders
or README.md needed. Each file contains both the metadata frontmatter
(name, description, triggers, tags) and the agentic workflow definition
(on, permissions, safe-outputs) in a single file.

Updated all build scripts, CI workflows, docs, and review checklists.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-20 17:09:55 -08:00
Bruno Borges
997d6302bd Add Agentic Workflows as a new resource type
Add support for contributing Agentic Workflows — AI-powered repository
automations that run coding agents in GitHub Actions, defined in markdown
with natural language instructions (https://github.github.com/gh-aw).

Changes:
- Create workflows/ directory for community-contributed workflows
- Add workflow metadata parsing (yaml-parser.mjs)
- Add workflow README generation (update-readme.mjs, constants.mjs)
- Add workflow data to website generation (generate-website-data.mjs)
- Update README.md, CONTRIBUTING.md, and AGENTS.md with workflow docs,
  contributing guidelines, and code review checklists

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-20 17:09:55 -08:00
Allen Greaves
6951523c6e fix: update plugin source paths in marketplace.json generation 2026-02-20 14:44:09 -08:00
Aaron Powell
9d1df57ebc refactor: migrate plugins to Claude Code spec format
- Move plugin manifests from .github/plugin/ to .claude-plugin/
- Convert items[] to Claude Code spec fields (agents, commands, skills)
- Rename tags to keywords, drop display/featured/instructions from plugins
- Delete all symlinks and materialized files from plugin directories
- Add eng/materialize-plugins.mjs to copy source files into plugin dirs at publish time
- Add .github/workflows/publish.yml for staged->main publishing
- Update CI triggers to target staged branch
- Update validation, creation, marketplace, and README generation scripts
- Update CONTRIBUTING.md and AGENTS.md documentation
- Include all new content from main (polyglot-test-agent, gem-browser-tester,
  fabric-lakehouse, fluentui-blazor, quasi-coder, transloadit-media-processing,
  make-repo-contribution hardening, website logo/gradient changes)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:22:50 +11:00
Aaron Powell
6ecd0098cf Remove collections folder and migrate remaining references to plugins
- Remove rug-agentic-workflow collection files (already migrated to plugin)
- Remove collections.instructions.md (no longer applicable)
- Remove suggest-awesome-github-copilot-collections prompt and plugin command
- Update awesome-copilot plugin.json to reference skills prompt instead of collections
- Update contributor-report.mjs to track plugins instead of collections
- Remove unused collection constants from constants.mjs
- Update rug-agentic-workflow plugin.json with tags and items from collection
- Regenerate README docs and marketplace.json
2026-02-16 12:05:48 +11:00
Aaron Powell
5ae51cba94 Merge main: resolve conflicts, keep plugin-first approach
- Removed re-added collections/ path triggers from CI
- Merged plugin checklist improvements from both branches
- Kept plugin:generate-marketplace script from main
- Removed new ospo-sponsorship collection file (plugin already exists)
- Dropped obsolete plugin:migrate and plugin:refresh scripts
2026-02-13 15:55:42 +11:00
Aaron Powell
7a003fc75a Deprecate Collections in favour of Plugins
Replace Collections with Plugins as first-class citizens in the repo.
With the Copilot CLI v0.409 release making plugins an on-by-default
marketplace, collections are redundant overhead.

## What changed

### Plugin Infrastructure
- Created eng/validate-plugins.mjs (replaces validate-collections.mjs)
- Created eng/create-plugin.mjs (replaces create-collection.mjs)
- Enhanced all 42 plugin.json files with tags, featured, display, and
  items metadata from their corresponding collection.yml files

### Build & Website
- Updated eng/update-readme.mjs to generate plugin docs
- Updated eng/generate-website-data.mjs to emit plugins.json with full
  items array for modal rendering
- Renamed website collections page to plugins (/plugins/)
- Fixed plugin modal to use <div> instead of <pre> for proper styling
- Updated README.md featured section from Collections to Plugins

### Documentation & CI
- Updated CONTRIBUTING.md, AGENTS.md, copilot-instructions.md, PR template
- Updated CI workflows to validate plugins instead of collections
- Replaced docs/README.collections.md with docs/README.plugins.md

### Cleanup
- Removed eng/validate-collections.mjs, eng/create-collection.mjs,
  eng/collection-to-plugin.mjs
- Removed entire collections/ directory (41 .collection.yml + .md files)
- Removed parseCollectionYaml from yaml-parser.mjs
- Removed COLLECTIONS_DIR from constants.mjs

Closes #711
2026-02-13 15:38:37 +11:00
copilot-swe-agent[bot]
c8c907815d Add documentation for marketplace.json generation
- Document generate-marketplace.mjs in eng/README.md
- Add plugin folder documentation to AGENTS.md
- Update setup commands to include marketplace generation
- Add plugin checklist to code review guidelines

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-13 01:51:52 +00:00
copilot-swe-agent[bot]
ec3e0e6651 Add missing plugins to marketplace.json and create automation script
- Add context-engineering, gem-team, and ospo-sponsorship to marketplace.json
- Create eng/generate-marketplace.mjs to automatically generate marketplace.json
- Update package.json build script to include marketplace generation
- Update GitHub workflow to trigger on plugin changes

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-13 01:49:59 +00:00
Aaron Powell
e80e20b5ec Address PR review comments for hooks implementation
- Fix getResourceType() to match relative paths like hooks/<name>/README.md
  and skills/<name>/SKILL.md using regex instead of string includes
- Extract hook events from hooks.json via parseHookMetadata() instead of
  non-existent frontmatter.event field in plugin README generation
- Update AGENTS.md to describe hooks as folder-based (README.md + hooks.json)
  instead of .hook.md files
- Update session-logger README to accurately reflect what scripts log
  (remove references to sessionId, duration, prompt content)
2026-02-10 14:37:45 +11:00
Aaron Powell
6210128ab1 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-10 14:31:07 +11:00
Aaron Powell
4ddc77bb36 Update eng/validate-collections.mjs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-10 14:28:47 +11:00
Aaron Powell
99a48a4020 Adding hooks to the website 2026-02-09 17:02:33 +11:00
Aaron Powell
acb5ad4ce8 feat: add hooks functionality with automated workflows
- Introduced hooks to enable automated workflows triggered by specific events during GitHub Copilot sessions.
- Added documentation for hooks in AGENTS.md and README.md.
- Created a new directory structure for hooks, including README.md and hooks.json files.
- Implemented two example hooks: Session Auto-Commit and Session Logger.
- Developed scripts for logging session events and auto-committing changes.
- Enhanced validation and parsing for hook metadata.
- Updated build and validation scripts to accommodate new hooks functionality.
2026-02-09 16:44:53 +11:00
Aaron Powell
4f9e20b13a Merge pull request #655 from github/copilot-plugins
Add plugins for all collections
2026-02-06 10:05:33 +11:00
Aaron Powell
9c4b267576 Adding script to convert collections to plugins 2026-02-05 13:52:59 +11:00
Aaron Powell
5e329d41c0 Merge pull request #649 from github/feature/last-updated-dates
feat(website): Add last updated dates for resources
2026-02-04 08:30:02 +11:00
Aaron Powell
9a2dbf276b Move llms.txt generation to Astro endpoint
- Create website/src/pages/llms.txt.ts as an Astro static endpoint
- Remove generateLlmsTxt function from generate-website-data.mjs
- llms.txt is now generated at build time by Astro alongside other pages
2026-02-03 14:51:28 +11:00
Aaron Powell
42f5dc950a Merge pull request #652 from github/combine-llms-txt-generation
Combine llms.txt generation with website data generation
2026-02-03 14:39:16 +11:00
Aaron Powell
07bc765948 Update eng/generate-website-data.mjs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-03 14:36:53 +11:00
Aaron Powell
b0b5bf9339 Merge pull request #651 from github/naming-normalisation
Cleaning up the name of a lot of agents
2026-02-03 14:31:21 +11:00
Aaron Powell
dc1b93354c Combine llms.txt generation with website data generation
- Move llms.txt generation into generate-website-data.mjs
- Remove standalone generate-llms-txt.mjs script
- Remove llms:generate npm script
- llms.txt now outputs to website/public/data/ alongside other generated files
2026-02-03 14:30:19 +11:00
Aaron Powell
9afab17e01 Cleaning up the name of a lot of agents 2026-02-03 14:11:03 +11:00
copilot-swe-agent[bot]
fd509d2f0d Link skills to SKILL.md files instead of directories
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-03 02:50:08 +00:00
Aaron Powell
a2bd4fda47 Update eng/generate-llms-txt.mjs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-03 12:48:47 +11:00
copilot-swe-agent[bot]
7e23ac9527 Generate llms.txt in website/public for GitHub Pages
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-03 01:46:18 +00:00
copilot-swe-agent[bot]
2d996d8ab2 Address code review feedback: improve code quality
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-03 01:37:35 +00:00
copilot-swe-agent[bot]
3d1d2c1aa0 Fix multiline descriptions in llms.txt to be single-line
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-03 01:36:00 +00:00
copilot-swe-agent[bot]
fbc72656ab Add llms.txt file generation script and output
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-03 01:35:13 +00:00
Aaron Powell
46256b3a50 feat(website): Add last updated dates for agents, prompts, instructions, and skills
- Add git-dates.mjs utility to extract file modification dates from git history
- Include lastUpdated field in JSON data for all resource types
- Display relative time (e.g., '3 days ago') with full date on hover
- Add 'Recently Updated' sort option to agents, prompts, instructions, and skills pages
- Update deploy-website.yml to use fetch-depth: 0 for full git history

CI overhead: ~20-30s additional for full git checkout
2026-02-03 12:14:45 +11:00
Aaron Powell
79b5c649b5 fix: use skillFile path in search index for skills
When searching for skills on the homepage, clicking a result would fail
to load because the search index stored the folder path (e.g., skills/my-skill)
instead of the SKILL.md file path. This caused fetchFileContent() to fail.

Changed path property to use skill.skillFile which contains the correct
path to the SKILL.md file that can be fetched and displayed in the modal.
2026-02-03 11:27:45 +11:00
Aaron Powell
a1da290d10 Refactor code for consistency and readability
- Standardized string quotes to double quotes across multiple files.
- Improved formatting and indentation for better readability.
- Added a function to format multiline text in tools rendering.
- Enhanced dropdown and action button handlers for better event management.
- Updated the theme application logic to initialize on page load.
- Refactored utility functions for consistency and clarity.
- Improved error handling and user feedback in download and share functionalities.
2026-02-02 16:42:22 +11:00