skills/agent-skill-deploy/SKILL.md
Deploys agent skill collections from any GitHub repository with a /skills folder to one or more distribution surfaces: GitHub releases, Claude Code marketplace, VS Code plugin marketplace, and Copilot CLI plugin marketplace. Handles pre-flight validation, conventional commit analysis, version bumping across surface configs, and surface-specific publishing with dry-run support. Use when releasing, publishing, or deploying a skills collection to any supported marketplace or creating a GitHub release for a skills repository. Don't use for deploying non-skill packages, npm modules, Docker images, or Azure resources.
npx skillsauth add webmaxru/ai-native-dev agent-skill-deployInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automate multi-surface deployment of agent skill collections:
Use this skill when the user:
Do not use for npm packages, Docker deployments, Azure resource provisioning, or repositories without a /skills directory.
| Surface | Config Files | Deploy Action | Tool Required |
| ---------------- | ------------------------------------------------------------------ | -------------------------------- | ------------------- |
| github | Git remote URL | Create tag + GitHub release | gh |
| claude-code | .claude-plugin/plugin.json (required), .claude-plugin/marketplace.json (optional) | Bump plugin version, commit, push | git |
| vscode | package.json | Bump version, commit, push | git |
| copilot-cli | package.json, .github/plugin/plugin.json, .github/plugin/marketplace.json (optional) | Bump plugin version, commit, push | git |
This skill includes three Node.js helper scripts in scripts/ for cross-platform operation (Windows and macOS):
Run scripts from the skill directory:
node scripts/deploy-preflight.mjs
node scripts/deploy-analyze.mjs
node scripts/deploy-execute.mjs 1.2.0 --surfaces github,claude-code --dry-run
Marketplace.json files contain two distinct version fields with different semantics:
plugins[].version (plugin version) — Tracks the version of each listed plugin. Bumped during releases for local plugins (where source is ".").metadata.version (marketplace version) — Tracks the version of the marketplace collection itself. Never bumped during skill/plugin releases. Managed independently.Cross-file sync rules:
plugin.json, package.json, plugins[].version in marketplace files, and the git tag.metadata.version values across marketplace.json files (.claude-plugin/marketplace.json and .github/plugin/marketplace.json) must stay in sync with each other.Follow these steps in order. Stop immediately if any step fails.
Run the preflight script to validate readiness:
node scripts/deploy-preflight.mjs
This checks:
master or main/skills directory exists and contains at least one skill.claude-plugin/plugin.json and .github/plugin/plugin.json exist; warns if either is missing (auto-created during deploy)If checks fail, report the problem and suggest a fix. Do not proceed.
Run the analysis script to understand what changed:
node scripts/deploy-analyze.mjs
This will:
/skills with their namestype!: suffix or BREAKING CHANGE in body)Version bump criteria:
| Bump | When |
| --------- | --------------------------------------------------------------- |
| Major | Breaking changes — type!: prefix or BREAKING CHANGE body |
| Minor | New features — any feat: commits |
| Patch | Everything else — fix:, docs:, refactor:, chore:, etc. |
When the github surface is selected, build a concise, human-readable changelog grouped by skill. This replaces GitHub's auto-generated notes.
Procedure:
deploy-analyze.mjs output (the Last release tag line). If this is the first release, compare against the root commit.Skills Changed output, run:
git diff v{{PREVIOUS}}..HEAD -- skills/{{SKILL_NAME}}/
## skill-name).Example output format:
## agent-package-manager
- Added subdirectory path and pinned tag dependency examples to template
- Expanded manifest reference with Azure DevOps and GitLab guidance
- Added "APM not installed" troubleshooting section
## agent-skill-deploy
- Made marketplace.json optional for Claude Code surface detection
- Simplified version bump recommendation logic
## github-agentic-workflows
- Added install.md URL reference for agent-assisted setup
If only a single skill changed, omit the heading and use a flat bullet list.
Present the analysis summary and ask the user to choose a version and target surfaces.
Use the AskUserQuestion tool for version:
AskUserQuestion:
question: "Recommended: {{RECOMMENDATION}}. Which version bump for v{{CURRENT}} → v{{NEXT}}?"
header: "Version"
options:
- label: "Major (v{{MAJOR}})"
description: "Breaking changes — skill removals, renames, config restructuring"
- label: "Minor (v{{MINOR}})"
description: "New features — new skills, significant enhancements"
- label: "Patch (v{{PATCH}})"
description: "Fixes, docs, refactoring, chore, CI, tests"
- label: "Cancel"
description: "Abort the deployment"
Replace {{CURRENT}} with current version, compute {{MAJOR}}, {{MINOR}}, {{PATCH}} by incrementing the relevant segment (reset lower segments to 0).
If user selects Cancel, stop the workflow.
Use the AskUserQuestion tool for surfaces:
AskUserQuestion:
question: "Detected surfaces: {{DETECTED_SURFACES}}. Which surfaces to deploy to?"
header: "Surfaces"
options:
- label: "All detected ({{DETECTED_SURFACES}})"
description: "Deploy to every surface that has config files"
- label: "GitHub release only"
description: "Create tag and GitHub release"
- label: "Marketplaces only"
description: "Update marketplace configs without GitHub release"
- label: "Custom selection"
description: "Specify exact surfaces"
- label: "Cancel"
description: "Abort the deployment"
Before making changes, perform a dry run to verify what will happen:
node scripts/deploy-execute.mjs {{VERSION}} --surfaces {{SURFACES}} --dry-run
Present the dry-run output to the user. The dry run shows:
If the dry run reveals issues, address them before proceeding.
Execute the version bump across all detected surface configs:
node scripts/deploy-execute.mjs {{VERSION}} --surfaces {{SURFACES}} --bump-only
IMPORTANT — version sync invariant: The script always bumps every detected config file (plugin.json, marketplace.json, package.json) regardless of which surfaces were selected via --surfaces. This prevents version drift between surfaces. The --surfaces flag only controls which deployment actions run in --push mode.
Auto-creation of missing plugin.json: Before bumping, the script checks that both .claude-plugin/plugin.json (claude-code surface) and .github/plugin/plugin.json (copilot-cli surface) exist. If either file is missing, it is automatically created from the sibling plugin.json (preferred) or from package.json metadata (name, description, version, author, repository, license, keywords) as a fallback. The copilot-cli variant also gets "skills": "skills/".
This updates version fields in:
.claude-plugin/plugin.json → .version (claude-code surface).claude-plugin/marketplace.json → .plugins[0].version (claude-code surface, only if the file exists)package.json → .version (vscode and copilot-cli surfaces).github/plugin/plugin.json → .version (copilot-cli surface, only if the file exists).github/plugin/marketplace.json → .plugins[0].version and .metadata.version (copilot-cli surface, only if the file exists)If marketplace.json is absent, the plugin is assumed to be listed by a marketplace defined in another repository. Only plugin.json is bumped.
Verify all files were updated correctly by reading them back.
Stage and commit all modified config files:
git add -A
git commit -m "Release v{{VERSION}}"
Tag the release commit:
git tag v{{VERSION}}
CRITICAL: Always pause here for user approval.
Present a summary and ask for confirmation.
Use the AskUserQuestion tool:
AskUserQuestion:
question: "Ready to push v{{VERSION}} and deploy to {{SURFACES}}?"
header: "Deploy"
options:
- label: "Yes — push and deploy"
description: "Push commits, tags, and run surface-specific deployments"
- label: "Push only — skip surface deploys"
description: "Push commits and tags but skip marketplace-specific actions"
- label: "No — keep local"
description: "Keep local commit and tag, do not push"
If user selects No, inform them:
git reset --hard HEAD~1 && git tag -d v{{VERSION}}Only after user approves:
echo '{{CHANGELOG}}' > /tmp/release-notes.md
node scripts/deploy-execute.mjs {{VERSION}} --surfaces {{SURFACES}} --push --notes-file /tmp/release-notes.md
This performs:
git push && git push --tags for all surfacesgh release create v{{VERSION}} --title "v{{VERSION}}" --notes-file /tmp/release-notes.md
If --notes-file is not provided, the script falls back to --generate-notes. Always prefer providing the per-skill changelog.After pushing, print the remote URL and relevant marketplace links.
/skills directory: Report that the repository does not follow the expected skill collection layout and stop.tools
Authors, reviews, installs, and debugs GitHub Agentic Workflows in repositories, including workflow markdown, frontmatter, gh aw compile and run flows, safe outputs, security guardrails, and operational patterns. Use when creating or maintaining GH-AW automation. Don't use for standard deterministic GitHub Actions YAML, generic CI pipelines, or non-GitHub automation systems.
tools
Installs, configures, audits, and operates Agent Package Manager (APM) in repositories. Use when initializing apm.yml, installing or updating packages, validating manifests, managing lockfiles, compiling agent context, browsing MCP servers, setting up runtimes, or packaging resolved context for CI and team distribution. Don't use for writing a single skill by hand, generic package managers like npm or pip, or non-APM agent configuration systems.
development
Authors and structures professional-grade agent skills following the agentskills.io spec. Use when creating new skill directories, drafting procedural instructions, or optimizing metadata for discoverability. Don't use for general documentation, non-agentic library code, or README files.
tools
Authors, reviews, installs, and debugs GitHub Agentic Workflows in repositories, including workflow markdown, frontmatter, gh aw compile and run flows, safe outputs, security guardrails, and operational patterns. Use when creating or maintaining GH-AW automation. Don't use for standard deterministic GitHub Actions YAML, generic CI pipelines, or non-GitHub automation systems.