-
Notifications
You must be signed in to change notification settings - Fork 49
Description
Feature
Allow APM packages to ship multiple independently-discoverable skills within a single package. Sub-skills placed under .apm/skills/<name>/SKILL.md should be promoted to top-level entries in .github/skills/<name>/ during apm install, so that Copilot can discover and invoke each one independently.
Motivation
Copilot only scans direct children of .github/skills/ for SKILL.md files — it does not recurse into nested directories. Today, if a package contains sub-skills (e.g., a monorepo package shipping both modernization agents and an Azure naming skill), only the parent package's SKILL.md is discoverable. The sub-skills are buried inside the parent tree and invisible to the IDE.
Proposed behavior
Given a package with this structure:
agent-library/
└── acme-bookstore/
├── SKILL.md
├── apm.yml
└── .apm/
└── skills/
└── azure-naming/
└── SKILL.md
After apm install org/agent-library/acme-bookstore, the resulting layout should be:
.github/skills/
├── acme-bookstore/ # Parent skill
│ └── SKILL.md
└── azure-naming/ # Promoted sub-skill
└── SKILL.md
This way Copilot discovers both skills and can invoke azure-naming independently.
Design notes
- Sub-skills live under
.apm/skills/to match the existing authoring convention (all primitives under.apm/). - Only directories containing a
SKILL.mdare promoted — other files/dirs are ignored. - Name collisions with existing top-level skills produce a warning and overwrite.
- Promoted sub-skills are also synced to
.claude/skills/when a.claude/directory exists. apm deps syncpreserves promoted sub-skills (does not mark them as orphaned).
Context
Per the VS Code agent skills spec, skill discovery scans .github/skills/<name>/SKILL.md — only direct children. This feature closes the gap for monorepo-style agent libraries shipping multiple skills per package.