Scaffold a new plugin and prepare it for distribution. WHEN: 'create a new plugin', 'scaffold a new plugin'
This skill provides the end-to-end steps for onboarding a new plugin to this repo. Follow the steps to scaffold a new plugin and make it ready for distribution.
Install dependencies at the repo root, in tests/ and in scripts/.
# At repo root
npm i# In tests/
cd tests
npm i# In scripts/
cd scripts/
npm iAsk the skill author to provide a name for the new plugin. Then in <repo-root>/scripts/, run this command to scaffold the common files for a new plugin.
# At <repo-root>/scripts/
cd scripts
npm run plugin:new -- --plugin {plugin-name}This command creates a plugins/{plugin-name} directory and files in it. Refer to the Plugin Structure section of Onboarding.md to understand what each file is for.
This command adds an entry for the new plugin in tests/skills.json. Nightly scheduled integration tests use this file to discover the plugins and skills to test.
This command adds a new set of path patterns in the pluginPathAllowPattern scripts. The shared telemetry hook script uses these patterns to prevent the script from attempting to send telemetry for skills outside this repo.
Ask the skill author for the names of the skills they plan to add and then scaffold them by running this script for each skill. Try running this command in <repo-root>/scripts with {plugin-name} from the previous step. If the plugin doesn't exist, it may have been renamed. Ask the skill author what plugin name to use.
# At <repo-root>/scripts/
cd scripts
npm run plugin:new-skill -- --plugin {plugin-name} --skill {skill-name}This command creates a plugins/{plugin-name}/skills/{skill-name}/SKILL.md file and an evals/{plugin-name}/{skill-name}/eval.yaml file. Refer to the Skill Structure section of Onboarding.md to understand what each file is for and what files can be added. It adds two placeholder codeowners and Rick Winter as the codeowner of the corresponding directories. Every new plugin must have at least two distinct codeowner and Rick Winter as a fallback owner.
This command also adds the skill to tests/skills.json nightly integration test schedule.
IMPORTANT: Leave the scaffolded skill as is and don't implement them. Skill authors must implement and test the skills themselves.
The scaffolded skill includes one example routing test that prompts the agent to load the skill and describe what it does. Do a test run.
First build the plugin from the repo root;
# IMPORTANT: Run this command at the <repo-root>
npm run buildThen use this command in <repo-root>/tests/.
# At <repo-root>/tests/
cd tests
npm run test:vally -- --plugin {plugin-name} --skill {skill-name}The test should pass. If it fails, ask the skill author to report a bug to microsoft/github-copilot-for-azure.
The scaffolded plugin and skill files are ready for release by default. Refer to the Releasing section of Onboarding.md for how releases work.
Notify the skill author about these next steps to finish onboarding the new plugin.
plugin.json files.plugin.json filesREADME.mdTell the skill author that they can host integration tests in a separate GitHub or Azure DevOps repository. This is useful when tests need a dedicated Azure subscription, custom result processing, or extra dependencies.
If they want a separate workflow:
<repo-root>/workflow-templates/Readme.md and follow its user setup
instructions.evaluation-main.yaml starter into the evaluation
repository:
workflow-templates/github/evaluation-main.yamlworkflow-templates/azure-devops/evaluation-main.yamlmain. For GitHub
Actions, use the same SHA for the action reference and test-harness-ref.
For Azure Pipelines, set the evaluationTemplates repository ref to the
SHA.evals/<plugin-name>/<skill-name>/ in the evaluation
repository unless the starter's evaluation-directory option is changed.The starter workflows upload reports and raw Vally results as artifacts. They also identify where to add dependency setup and result post-processing steps.
8fbd59d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.