Files
awesome-copilot/eng
Aaron Powell 17b174fb0a Canvas manifest implementation for extensions (#2029)
* Add keyword display to extension cards on website

- Add .resource-keywords and .keyword-tag CSS styles for rendering keyword badges
- Update renderExtensionsHtml() to display keywords below extension description
- Keywords now visible on the website extensions page with styled badges
- Regenerate website data to include keyword metadata

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

* Canvas manifest implementation for all extensions

Add per-extension canvas manifests with:
- Structured canvas metadata (name, description, version, keywords)
- Screenshot definitions (icon and gallery with path/type)
- Relative paths for images within each extension directory

Enhance extension metadata:
- Generate meaningful descriptions from source analysis
- Extract and assign keywords for discoverability
- Store metadata in package.json and extension source files

Update website rendering and data generation:
- Include keywords in extension cards and search index
- Add per-extension canvas.json files for independent evolution
- Support screenshot metadata in manifest structure
- Generate extensions.json with full canonical paths for website

All 9 local canvas extensions now have complete manifests with descriptions, keywords, and screenshot references.

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

* Tweaking some descriptions

* Fix description priority to prefer package.json over in-source metadata

Reverse the priority in canvasDescription so that package.json descriptions
(which contain the enhanced, manually-curated descriptions) take precedence
over older in-source descriptions extracted from createCanvas(...) calls.

This prevents regression when npm run website:data regenerates outputs,
ensuring that committed canvas.json files maintain the current descriptions.

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

* Fix canvas validation to skip external.json file

The validation script was treating extensions/external.json as if it were
a directory, causing false validation failures. Added check to skip files
(identified by presence of dot in filename) and only validate actual
canvas extension directories.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-17 15:28:15 +10:00
..
2025-12-18 09:53:16 -08:00

Contributor Reporting (Maintainers) 🚧

This directory contains build scripts and utilities for maintaining the repository.

Build Scripts

update-readme.mjs

Generates the main README.md and documentation files from the repository content (agents, prompts, instructions, skills, hooks, collections).

generate-marketplace.mjs

Automatically generates .github/plugin/marketplace.json from all plugin directories in the plugins/ folder. This file is used by the GitHub Copilot CLI to discover and install plugins from this repository.

How it works:

  • Scans all directories in plugins/
  • Reads each plugin's .github/plugin/plugin.json for metadata
  • Generates a consolidated marketplace.json with all available plugins
  • Runs automatically as part of npm run build

To run manually:

npm run plugin:generate-marketplace

generate-website-data.mjs

Generates JSON data files for the website from repository content.

Contributor Tools

  • contributor-report.mjs — generates a markdown report of merged PRs for missing contributors (includes shared helpers).
  • add-missing-contributors.mjs — on-demand maintainer script to automatically add missing contributors to .all-contributorsrc (infers contribution types from merged PR files, then runs the all-contributors CLI).

Key notes for maintainers

  • Reports are generated on-demand and output to reports/contributor-report.md for human review.
  • The report output is intentionally minimal: a single list of affected PRs and one command to add missing contributor(s).
  • This repository requires full git history for accurate analysis. In CI, set fetch-depth: 0.
  • Link: all-contributors CLI documentation

On-demand scripts (not CI)

These are maintainer utilities. They are intentionally on-demand only (but could be wired into CI later).

add-missing-contributors.mjs

  • Purpose: detect missing contributors, infer contribution types from their merged PR files, and run npx all-contributors add ... to update .all-contributorsrc.
  • Requirements:
    • GitHub CLI (gh) available (used to query merged PRs).
    • .all-contributorsrc exists.
    • Auth token set to avoid the anonymous GitHub rate limits:
      • Set GITHUB_TOKEN (preferred), or GH_TOKEN for the gh CLI.
      • If you use PRIVATE_TOKEN locally, contributor-report.mjs will map it to GITHUB_TOKEN.

Graceful shutdown

  • contributor-report.mjs calls setupGracefulShutdown('script-name') from eng/utils/graceful-shutdown.mjs early in the file to attach signal/exception handlers.

Testing & maintenance

  • Helper functions have small, deterministic behavior and include JSDoc comments.
  • The getMissingContributors function in contributor-report.mjs is the single source of truth for detecting missing contributors from all-contributors check output.