Skip to content

Add pr-dashboard skill and plugin#1444

Merged
aaronpowell merged 9 commits intogithub:stagedfrom
jamcgrath:feat/pr-dashboard
Apr 29, 2026
Merged

Add pr-dashboard skill and plugin#1444
aaronpowell merged 9 commits intogithub:stagedfrom
jamcgrath:feat/pr-dashboard

Conversation

@jamcgrath
Copy link
Copy Markdown
Contributor

PR Dashboard

Adds a self-contained skill and plugin that generates and opens a rich HTML pull request dashboard in the browser.

What it does

  • Accepts a natural-language date range (e.g. last 2 weeks, march 2026) and role filter (Authored by me, Requested reviews, Assigned to me, All)
  • Uses the GitHub CLI (gh) to search PRs and fetch details (status, review state, CI status)
  • Renders a self-contained HTML dashboard and opens it in the browser

Files added

  • skills/pr-dashboard/SKILL.md, pr-dashboard-cli.mjs, dashboard.html, lib/utils.mjs
  • plugins/pr-dashboard/ — installable via copilot skill install pr-dashboard@awesome-copilot

Prerequisites

GitHub CLI (gh) installed and authenticated (gh auth login).

Validation

  • npm run skill:validate
  • npm run plugin:validate
  • npm run build

Adds a self-contained PR dashboard skill that generates and opens a
rich HTML dashboard in the browser showing GitHub pull requests for a
given date range and role filter.

- Skill: skills/pr-dashboard/ — bundles pr-dashboard-cli.mjs,
  dashboard.html, and lib/utils.mjs
- Plugin: plugins/pr-dashboard/ — makes it installable via
  `copilot skill install pr-dashboard@awesome-copilot`

Requires GitHub CLI (gh) installed and authenticated.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 19, 2026 09:48
@jamcgrath jamcgrath requested a review from aaronpowell as a code owner April 19, 2026 09:48
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 19, 2026

🔍 Skill Validator Results

⚠️ Warnings or advisories found

Scope Checked
Skills 1
Agents 1
Total 2
Severity Count
--- ---:
❌ Errors 0
⚠️ Warnings 1
ℹ️ Advisories 0

Summary

Level Finding
ℹ️ Found 1 skill(s)
ℹ️ [pr-dashboard] 📊 pr-dashboard: 589 BPE tokens [chars/4: 524] (detailed ✓), 5 sections, 1 code blocks
ℹ️ [pr-dashboard] ⚠ No numbered workflow steps — agents follow sequenced procedures more reliably.
ℹ️ ✅ All checks passed (1 skill(s))
Full validator output ```text Found 1 skill(s) [pr-dashboard] 📊 pr-dashboard: 589 BPE tokens [chars/4: 524] (detailed ✓), 5 sections, 1 code blocks [pr-dashboard] ⚠ No numbered workflow steps — agents follow sequenced procedures more reliably. ✅ All checks passed (1 skill(s)) ```

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new PR Dashboard skill (plus installable plugin metadata) that uses gh to discover PRs for a user/date range, generates a self-contained HTML dashboard, and opens it in a browser.

Changes:

  • Added a Node.js CLI (pr-dashboard-cli.mjs) to query PRs via gh api, enrich with review/CI status, and render an HTML dashboard.
  • Added a dashboard HTML template and date-range parsing utilities for natural-language ranges.
  • Registered the new skill/plugin in the repo docs and plugin marketplace metadata.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
skills/pr-dashboard/pr-dashboard-cli.mjs CLI implementation: GH API calls, PR enrichment, HTML generation, browser open.
skills/pr-dashboard/lib/utils.mjs Natural-language date range parsing helpers (plus unused exports).
skills/pr-dashboard/dashboard.html HTML/CSS/JS template for the dashboard UI.
skills/pr-dashboard/SKILL.md Skill definition + instructions for invoking the bundled CLI.
plugins/pr-dashboard/README.md Plugin-level README with requirements and install instructions.
plugins/pr-dashboard/.github/plugin/plugin.json Plugin metadata referencing the pr-dashboard skill.
docs/README.skills.md Adds the skill to the skills index.
docs/README.plugins.md Adds the plugin to the plugins index.
docs/README.instructions.md Reorders an existing row (unrelated to PR dashboard).
.github/plugin/marketplace.json Adds marketplace entry for pr-dashboard.

Comment thread skills/pr-dashboard/lib/utils.mjs Outdated
Comment thread skills/pr-dashboard/lib/utils.mjs Outdated
Comment thread skills/pr-dashboard/pr-dashboard-cli.mjs Outdated
Comment thread skills/pr-dashboard/lib/utils.mjs Outdated
Comment thread skills/pr-dashboard/lib/utils.mjs Outdated
Comment thread skills/pr-dashboard/dashboard.html Outdated
Comment thread skills/pr-dashboard/dashboard.html Outdated
Comment thread skills/pr-dashboard/pr-dashboard-cli.mjs Outdated
Comment thread skills/pr-dashboard/pr-dashboard-cli.mjs Outdated
Comment thread skills/pr-dashboard/pr-dashboard-cli.mjs Outdated
jamcgrath and others added 6 commits April 19, 2026 18:56
macOS locale sorts Japanese/Korean C# entries differently than Linux CI.
Restore to the upstream/staged version since we don't add any instructions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix regex character class bug: [-to]+ → (?:-|to) alternation in utils.mjs
- Fix 'last week' to return previous calendar week (Mon–Sun) not last 7 days
- Remove unused formatHumanDate and buildMarkdown exports from utils.mjs
- Fix ghApi error handling: rethrow with helpful message instead of silently
  returning parsed JSON on failure (prevents silent auth errors)
- Add pagination to searchIssues (up to 1000 results across pages)
- Add rel="noopener noreferrer" to target=_blank links in generated rows
- HTML-escape fallback template content in renderHtml to prevent injection
- Move escapeHtml to module level so it's available before renderHtml body
- Neutralise dashboard.html template: placeholder title/h1/meta/stats/tbody
- Empty __md and filename in template (CLI populates at runtime)
- Add aria-label to search input and status/review selects

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

@aaronpowell aaronpowell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a need to have this as a plugin, or was that done to simplify the install process? We've recently added gh skills to the GitHub CLI that means you can easily install a skill without a plugin, so would it make sense to remove the plugin part and leverage gh skills install github/awesome-copilot pr-dashboard?

For the additional files in the skill, they should be in the scripts folder, per the skills spec.

jamcgrath and others added 2 commits April 29, 2026 21:11
…lugin

- Move pr-dashboard-cli.mjs and lib/utils.mjs into scripts/ per skills spec
- Move dashboard.html into assets/ per skills spec
- Update CLI template path and SKILL.md script path reference
- Remove plugins/pr-dashboard (redundant now that gh skills install works)
- Clean up marketplace.json and docs/README.plugins.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jamcgrath
Copy link
Copy Markdown
Contributor Author

Thanks for the feedback, agreed a plugin was overkill here.

Both points have been addressed:

  • Dropped the plugin, gh skills install github/awesome-copilot pr-dashboard is the cleaner install path now that gh skills is available
  • Reorganised the bundled files into scripts/ and assets/ per the skills spec. CLI and utils are under scripts/, HTML template under assets/

@jamcgrath jamcgrath requested a review from aaronpowell April 29, 2026 12:27
@aaronpowell aaronpowell merged commit 4beca2f into github:staged Apr 29, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants