Describe the bug
When an apm.yml dependency declares a skills: subset filter on a git dependency, apm install correctly deploys
only the named skills to harness directories (.agents/skills/, .claude/skills/, etc.). apm pack (default
--format plugin) does not respect the same filter: depending on local cache state, it either bundles the entire
upstream repository for that dependency, or silently omits the dependency's skills entirely.
To Reproduce
Manifest (apm.yml):
dependencies:
apm:
- git: mattpocock/skills
ref: bc4cf90
skills:
- productivity/grill-me
- productivity/grilling
Steps and results, all run against the same manifest:
apm install — correct. Only .agents/skills/grill-me and .agents/skills/grilling deployed (verified by listing
.agents/skills/ directly; also matches apm.lock.yaml's skill_subset field).
apm pack (no other commands in between) — bundles the entire mattpocock/skills repository under
build/<pkg>/skills/: every top-level category in the upstream repo (tdd, teach, deprecated, zoom-out,
writing-great-skills, handoff, triage, and roughly 20 others), not just the 2 declared skills.
apm install → manually rm -rf apm_modules → apm pack — bundles zero skills from mattpocock/skills. No
warning or error is emitted; the bundle is simply missing that dependency's content.
apm install → apm prune → apm pack — same result as step 2. apm prune does not remove or touch the cache for
this dependency, since it's still referenced in apm.yml (just with a narrower skills: list).
Expected behavior
apm pack should bundle exactly the skills recorded as deployed for the active target (matching what apm install
already deploys and what apm.lock.yaml's skill_subset / deployed_files record), regardless of whether the raw
apm_modules/<owner>/<repo>/ cache happens to be present.
Actual behavior
apm pack reads directly from the raw, unfiltered apm_modules/<owner>/<repo>/skills/ cache directory rather than from
the filtered, already-deployed output. When that cache is missing, there is no fallback, and the bundle silently omits
the dependency instead of erroring or re-resolving it.
Environment (please complete the following information):
apm --version reported 0.23.1
pyhton --version reported 3.14.6
- macOS, zsh.
Impact
Any package that declares a filtered skills: subset on a git dependency cannot produce a correct plugin bundle via
apm pack today. This blocks using apm pack as a distribution path for packages with OSS skill dependencies scoped to
a subset of a larger upstream repo.
Describe the bug
When an
apm.ymldependency declares askills:subset filter on a git dependency,apm installcorrectly deploysonly the named skills to harness directories (
.agents/skills/,.claude/skills/, etc.).apm pack(default--format plugin) does not respect the same filter: depending on local cache state, it either bundles the entireupstream repository for that dependency, or silently omits the dependency's skills entirely.
To Reproduce
Manifest (
apm.yml):Steps and results, all run against the same manifest:
apm install— correct. Only.agents/skills/grill-meand.agents/skills/grillingdeployed (verified by listing.agents/skills/directly; also matchesapm.lock.yaml'sskill_subsetfield).apm pack(no other commands in between) — bundles the entiremattpocock/skillsrepository underbuild/<pkg>/skills/: every top-level category in the upstream repo (tdd,teach,deprecated,zoom-out,writing-great-skills,handoff,triage, and roughly 20 others), not just the 2 declared skills.apm install→ manuallyrm -rf apm_modules→apm pack— bundles zero skills frommattpocock/skills. Nowarning or error is emitted; the bundle is simply missing that dependency's content.
apm install→apm prune→apm pack— same result as step 2.apm prunedoes not remove or touch the cache forthis dependency, since it's still referenced in
apm.yml(just with a narrowerskills:list).Expected behavior
apm packshould bundle exactly the skills recorded as deployed for the active target (matching whatapm installalready deploys and what
apm.lock.yaml'sskill_subset/deployed_filesrecord), regardless of whether the rawapm_modules/<owner>/<repo>/cache happens to be present.Actual behavior
apm packreads directly from the raw, unfilteredapm_modules/<owner>/<repo>/skills/cache directory rather than fromthe filtered, already-deployed output. When that cache is missing, there is no fallback, and the bundle silently omits
the dependency instead of erroring or re-resolving it.
Environment (please complete the following information):
apm --versionreported0.23.1pyhton --versionreported3.14.6Impact
Any package that declares a filtered
skills:subset on a git dependency cannot produce a correct plugin bundle viaapm packtoday. This blocks usingapm packas a distribution path for packages with OSS skill dependencies scoped toa subset of a larger upstream repo.