Skip to content

feat(plugin): support Copilot CLI plugin generation from collection manifests#496

Merged
agreaves-ms merged 12 commits intomainfrom
feat/cli-plugin-support
Feb 12, 2026
Merged

feat(plugin): support Copilot CLI plugin generation from collection manifests#496
agreaves-ms merged 12 commits intomainfrom
feat/cli-plugin-support

Conversation

@agreaves-ms
Copy link
Copy Markdown
Collaborator

@agreaves-ms agreaves-ms commented Feb 12, 2026

feat(plugin): support Copilot CLI plugin generation from collection manifests

Description

Fixes #476
Fixes #392

Added Copilot CLI plugin support, enabling HVE Core agents, prompts, instructions, and skills to be packaged as installable CLI plugins. This feature introduces YAML collection manifests that define artifact bundles, PowerShell scripts that generate plugin directories with symlinked content, a validation pipeline, and an auto-generated artifact catalog with VS Code install badges.

  • feat(plugin): added 10 collection manifests (collections/*.collection.yml) defining artifact bundles for ado, coding-standards, data-science, git, github, hve-core-all, project-planning, prompt-engineering, rpi, and security-planning

  • feat(plugin): implemented Generate-Plugins.ps1 to create plugin directories from collection manifests with symlinked agents, commands, instructions, and skills

    • Each plugin directory includes .github/plugin/plugin.json, a generated README.md, and symlinks to source artifacts
  • feat(plugin): implemented Validate-Collections.ps1 to validate collection manifest structure, required fields, and referenced file paths against collection-manifest.schema.json

  • feat(plugin): implemented Generate-Badges.ps1 to produce docs/catalog.md with browsable tables of all agents, prompts, instructions, and skills with one-click VS Code install badges

  • feat(plugin): created PluginHelpers.psm1 shared PowerShell module with utility functions for path resolution, manifest parsing, CI annotation output, symlink creation, and README generation

  • ci(plugin): added plugin-validation.yml reusable workflow that validates collection manifests and checks plugin directory freshness against generated output

  • ci(plugin): integrated plugin validation into the existing pr-validation.yml pipeline as a required job

  • feat(plugin): added plugin:generate, plugin:validate, and plugin:badges npm scripts to package.json

  • docs(plugin): added CLI plugins installation guide at docs/getting-started/methods/cli-plugins.md with prerequisites, registration, and usage instructions

  • docs(plugin): updated docs/getting-started/README.md to include Copilot CLI Plugins as the eighth installation method

  • docs(plugin): generated docs/catalog.md artifact catalog with 21 agents, 27 prompts, 24 instructions, and 1 skill listed with install badges

  • feat(plugin): generated 10 plugin directories under plugins/ with symlinked content from .github/agents/, .github/prompts/, .github/instructions/, and .github/skills/

  • refactor(plugin): reordered version and description fields in plugin.json files for consistency

  • style(instructions): standardized table formatting across 20+ agent, instruction, and prompt files for consistent column alignment

  • feat(plugin): added collection-manifest.schema.json for validating collection YAML manifest structure

Related Issue(s)

Type of Change

Select all that apply:

Code & Documentation:

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Infrastructure & Configuration:

  • GitHub Actions workflow
  • Linting configuration (markdown, PowerShell, etc.)
  • Security configuration
  • DevContainer configuration
  • Dependency update

AI Artifacts:

  • Reviewed contribution with prompt-builder agent and addressed all feedback
  • Copilot instructions (.github/instructions/*.instructions.md)
  • Copilot prompt (.github/prompts/*.prompt.md)
  • Copilot agent (.github/agents/*.agent.md)
  • Copilot skill (.github/skills/*/SKILL.md)

Note for AI Artifact Contributors:

  • Agents: Research, indexing/referencing other project (using standard VS Code GitHub Copilot/MCP tools), planning, and general implementation agents likely already exist. Review .github/agents/ before creating new ones.
  • Skills: Must include both bash and PowerShell scripts. See Skills.
  • Model Versions: Only contributions targeting the latest Anthropic and OpenAI models will be accepted. Older model versions (e.g., GPT-3.5, Claude 3) will be rejected.
  • See Agents Not Accepted and Model Version Requirements.

Other:

  • Script/automation (.ps1, .sh, .py)
  • Other (please describe):

Sample Prompts (for AI Artifact Contributions)

AI artifact changes in this PR are limited to table formatting standardization (style-only). No new agents, prompts, or instructions were introduced.

Testing

Plugin Generation and Validation

  • Ran npm run plugin:validate — all 10 collection manifests passed validation (0 errors)
  • Ran npm run plugin:generate — generated 10 plugin directories with 41 agents, 54 commands, 71 instructions, and 1 skill
  • Verified plugin freshness: git diff --quiet plugins/ confirmed generated output matches committed state

Copilot CLI Plugin Usage

Once installed via the plugin marketplace, artifacts become available in Copilot CLI:

Marketplace registration and plugin install:

copilot plugin marketplace add microsoft/hve-core
copilot plugin install rpi@hve-core

Agents — Available via /agent slash command or --agent flag:

# Non-interactive (one-shot)
copilot --agent=task-researcher -p "Research authentication patterns"

# Interactive (switch agents mid-session)
copilot
> /agent task-researcher
> Research authentication patterns
> /agent task-planner
> Plan based on the research

Commands — Prompts from commands/ become namespaced slash commands:

copilot
> /rpi:task-research          # runs the task-research prompt
> /git:git-commit-message     # from the git plugin bundle
> /ado:ado-get-build-info     # from the ado plugin bundle

Instructions — Included in plugin directories but not natively consumed by the CLI plugin system. Instructions apply when using the direct file approach (cloning hve-core and letting CLI auto-discover from .github/). For plugin installs, agent files reference instructions internally, so instruction guidance carries through agent behavior.

Known CLI Limitations

  • ${input:variableName} template variables are VS Code-only; CLI users pass parameters as natural language
  • #file: context references are VS Code-only; CLI agents use file-read tools instead
  • MCP servers require separate configuration at ~/.copilot/mcp-config.json

Automated Checks

All required automated checks passed (see Required Automated Checks section below).

Checklist

Required Checks

  • Documentation is updated (if applicable)
  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable)
  • Tests added for new functionality (if applicable)

AI Artifact Contributions

  • Used /prompt-analyze to review contribution
  • Addressed all feedback from prompt-builder review
  • Verified contribution follows common standards and type-specific requirements

Required Automated Checks

The following validation commands must pass before merging:

  • Markdown linting: npm run lint:md
  • Spell checking: npm run spell-check
  • Frontmatter validation: npm run lint:frontmatter
  • Link validation: npm run lint:md-links
  • PowerShell analysis: npm run lint:ps

GHCP Artifact Maturity

All modified GHCP artifacts (agents, instructions, prompts) are existing stable files with style-only table formatting changes. No non-stable maturity levels detected.

File Type Maturity Notes
Multiple .agent.md files Agent ✅ stable Table formatting only
Multiple .instructions.md files Instructions ✅ stable Table formatting only
pull-request.prompt.md Prompt ✅ stable Table formatting only
risk-register.prompt.md Prompt ✅ stable Table formatting only

Security Considerations

  • This PR does not contain any sensitive or NDA information
  • Any new dependencies have been reviewed for security issues
  • Security-related scripts follow the principle of least privilege

Additional Notes

  • Plugin directories under plugins/ use symlinks to source artifacts, enabling zero-copy installation and automatic content synchronization.
  • The plugin-validation.yml workflow checks both manifest validity and plugin freshness (whether generated output matches current manifests).
  • Collection manifests support display.ordering (manual or alpha) and display.show_badge settings for catalog generation.
  • The scripts/README.md was updated to document the new scripts/plugins/ directory and its scripts.

🔧 - Generated by Copilot

@agreaves-ms agreaves-ms requested a review from a team as a code owner February 12, 2026 19:10
Copilot AI review requested due to automatic review settings February 12, 2026 19:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 12, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/checkout de0fac2e4500dabe0009e67214ff5f5447ce83dd 🟢 6.5
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained🟢 57 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Packaging⚠️ -1packaging workflow not detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
Vulnerabilities🟢 82 existing vulnerabilities detected
SAST🟢 8SAST tool detected but not run on all commits
actions/actions/setup-node 6044e13b5dc448c55e2357c09f80417699197238 🟢 6
Details
CheckScoreReason
Maintained🟢 911 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 9
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 9binaries present in source code
Code-Review🟢 10all changesets reviewed
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 1branch protection is not maximal on development and all release branches
Vulnerabilities🟢 64 existing vulnerabilities detected
SAST🟢 9SAST tool is not run on all commits -- score normalized to 9

Scanned Files

  • .github/workflows/plugin-validation.yml

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

This PR introduces comprehensive Copilot CLI plugin support for HVE Core, enabling agents, prompts, instructions, and skills to be packaged as installable CLI plugins through YAML collection manifests.

Changes:

  • Added plugin generation pipeline with PowerShell scripts and YAML collection manifests
  • Implemented automated validation and catalog generation workflows
  • Standardized table formatting across 20+ agent and instruction files

Reviewed changes

Copilot reviewed 242 out of 242 changed files in this pull request and generated no comments.

Show a summary per file
File Description
scripts/plugins/Validate-Collections.ps1 Collection manifest validation with path existence and kind-suffix checks
scripts/plugins/Generate-Plugins.ps1 Plugin directory generation from collection manifests with symlinks
scripts/plugins/Generate-Badges.ps1 VS Code install badge catalog generator for artifacts
scripts/plugins/Modules/PluginHelpers.psm1 Shared utilities for YAML parsing, symlink creation, and README generation
scripts/linting/schemas/collection-manifest.schema.json JSON schema for collection YAML manifest validation
collections/*.collection.yml 10 collection manifests defining artifact bundles
plugins/**/ Generated plugin directories with symlinked content
.github/workflows/plugin-validation.yml Reusable workflow for plugin validation
.github/workflows/pr-validation.yml Integrated plugin validation into PR checks
docs/getting-started/methods/cli-plugins.md Installation guide for CLI plugins
docs/catalog.md Auto-generated artifact catalog with install badges
Multiple .agent.md, .instructions.md, .prompt.md files Table formatting standardization
Comments suppressed due to low confidence (4)

scripts/plugins/Modules/PluginHelpers.psm1:1

  • The -NoNewline parameter prevents a trailing newline in the JSON output. However, most JSON formatting conventions and Git workflows expect files to end with a newline character. Consider removing -NoNewline or adding an explicit newline after serialization to maintain consistency with standard JSON formatting practices.
    scripts/plugins/Modules/PluginHelpers.psm1:1
  • Similar to the plugin.json issue, markdown files conventionally end with a newline character. The -NoNewline parameter may cause issues with Git diff display and standard text editor expectations. Consider removing this parameter to ensure generated README files follow markdown formatting conventions.
    .github/workflows/plugin-validation.yml:1
  • The soft-fail input is defined but its implementation at line 51 only affects the plugin freshness check exit behavior, not the collection validation step at line 44. If collection validation fails, the workflow will exit regardless of the soft-fail setting. Consider applying the soft-fail behavior consistently to both validation steps or clarifying in the description that it only applies to plugin freshness checks.
    docs/catalog.md:1
  • The warning comment indicates this file is auto-generated and should not be edited manually, but there's no corresponding entry in .gitattributes to mark it as generated. Consider adding docs/catalog.md linguist-generated=true to .gitattributes to prevent this file from affecting repository language statistics and to clearly identify it as generated content in the GitHub UI.

@agreaves-ms agreaves-ms force-pushed the feat/cli-plugin-support branch from dbe3cef to a496f50 Compare February 12, 2026 19:13
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Feb 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.43%. Comparing base (497d2fe) to head (96295ab).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #496   +/-   ##
=======================================
  Coverage   83.43%   83.43%           
=======================================
  Files          20       20           
  Lines        3507     3507           
=======================================
  Hits         2926     2926           
  Misses        581      581           
Flag Coverage Δ
pester 83.43% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI review requested due to automatic review settings February 12, 2026 19:31
@WilliamBerryiii
Copy link
Copy Markdown
Member

@agreaves-ms can you link that CLI backlog bug and maybe the symlink one too (cause I think this mostly closes them)

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

Copilot reviewed 243 out of 243 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (3)

scripts/plugins/Generate-Badges.ps1:1

  • The file has a UTF-8 BOM (Byte Order Mark) at the beginning, indicated by the '' character before the shebang. This can cause issues with script execution on some systems. Remove the BOM from the file.
    scripts/plugins/Modules/PluginHelpers.psm1:1
  • The -NoNewline parameter on Set-Content will create a JSON file without a trailing newline, which violates common file format conventions and may cause issues with version control systems that expect files to end with a newline. Remove the -NoNewline parameter.
    scripts/plugins/Modules/PluginHelpers.psm1:1
  • The -NoNewline parameter on Set-Content will create a README file without a trailing newline, which violates common file format conventions and may cause issues with version control systems that expect files to end with a newline. Remove the -NoNewline parameter.

Copy link
Copy Markdown
Member

@WilliamBerryiii WilliamBerryiii left a comment

Choose a reason for hiding this comment

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

Welp ... looks good. Can't wait to try this out.

Copilot AI review requested due to automatic review settings February 12, 2026 23:06
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

Copilot reviewed 300 out of 379 changed files in this pull request and generated no new comments.

…lity across multiple instruction files

- Align table headers and content for consistency
- Enhance clarity in documentation structure
- Ensure uniformity in Markdown style across various files

📚 - Generated by Copilot
…ation and validation

- implement Generate-Plugins.ps1 for creating plugin directories from manifests
- add Validate-Collections.ps1 to validate collection manifest structure and paths
- create PluginHelpers.psm1 for shared functions used in plugin generation
- update README.md with usage instructions and script descriptions
- ran scripts to produce plugins for Copilot CLI

🔧 - Generated by Copilot
…idelines for consistency

feat(prompts): correct relative links in README for agents section

style(scripts): refine ignore patterns in markdown link check configuration

🔗 - Generated by Copilot
…consistency

- Standardize table formatting for agents, commands, and instructions
- Improve descriptions for better understanding of functionalities
- Add missing instructions and enhance existing ones across multiple plugins

🔧 - Generated by Copilot
- delete Generate-Badges.ps1 script
- update package.json to remove badge generation command
- modify Validate-MarkdownFrontmatter.ps1 to exclude docs/catalog.md
- remove show_badge from collection-manifest.schema.json

🔧 - Generated by Copilot
- register marketplace source for HVE Core
- update installation commands for full suite and individual collections

🔧 - Generated by Copilot
@agreaves-ms agreaves-ms force-pushed the feat/cli-plugin-support branch from e1e9183 to c34a2e2 Compare February 12, 2026 23:12
…og planning and triage instructions

🔧 - Generated by Copilot
Copilot AI review requested due to automatic review settings February 12, 2026 23:14
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

Copilot reviewed 300 out of 379 changed files in this pull request and generated no new comments.

…adge

- add installation badge for VS Code Marketplace
- update installation instructions for clarity

🔧 - Generated by Copilot
@agreaves-ms agreaves-ms merged commit e6cee85 into main Feb 12, 2026
18 checks passed
@agreaves-ms agreaves-ms deleted the feat/cli-plugin-support branch February 12, 2026 23:26
WilliamBerryiii pushed a commit that referenced this pull request Feb 13, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.3.0](hve-core-v2.2.0...hve-core-v2.3.0)
(2026-02-13)


### ✨ Features

* **agents:** add GitHub backlog management pipeline
([#448](#448))
([2b4d123](2b4d123))
* **docs:** define inactivity closure policies for issues and PRs
([#452](#452))
([5e710fd](5e710fd))
* **extension:** implement collection-based plugin distribution system
([#439](#439))
([3156d98](3156d98))
* **instructions:** replace EVEN/ODD hardcoding with runtime milestone
discovery protocol
([#486](#486))
([ae95eb2](ae95eb2))
* **plugin:** support Copilot CLI plugin generation from collection
manifests ([#496](#496))
([e6cee85](e6cee85))
* **scripts:** enhance on-create.sh to install actionlint and PowerShell
modules ([#500](#500))
([67585f5](67585f5))


### 🐛 Bug Fixes

* **docs:** replace broken relative link with inline code reference
([#465](#465))
([8133b36](8133b36))
* **instructions:** prevent local-only paths from leaking into GitHub
issues ([#489](#489))
([497d2fe](497d2fe))
* **workflows:** prevent release-please infinite loop on main branch
([#470](#470))
([134bdd6](134bdd6))
* **workflows:** remove release-please skip guard that prevents tag
creation ([#511](#511))
([5e53271](5e53271))


### 📚 Documentation

* **agents:** add GitHub Backlog Manager documentation and agent catalog
([#503](#503))
([5e818ce](5e818ce))
* align CONTRIBUTING.md with docs/contributing/ guides
([#445](#445))
([73ef6aa](73ef6aa))


### ♻️ Refactoring

* **scripts:** refactor dev-tools and lib scripts to use CIHelpers
module ([#482](#482))
([fdf9145](fdf9145))
* **scripts:** standardize PowerShell entry point guard pattern
([#477](#477))
([6b84a8e](6b84a8e))


### 🔧 Maintenance

* **config:** standardize action mappings in artifact-retention.yml
([#487](#487))
([7927db2](7927db2))
* **deps-dev:** bump cspell from 9.6.2 to 9.6.4 in the npm-dependencies
group ([#461](#461))
([c788095](c788095))
* **deps:** bump actions/setup-python from 5.1.1 to 6.2.0 in the
github-actions group
([#462](#462))
([69ef3c9](69ef3c9))
* **security:** add SBOM artifact retention policy
([#479](#479))
([8031557](8031557)),
closes [#453](#453)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: hve-core-release-please[bot] <254602402+hve-core-release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants