Skip to content

[BUG] #1395

@bertverbessem

Description

@bertverbessem

[BUG] --skill filter not persisted to apm.yml during install (regression since v0.11.0)

Description

apm install <repo> --skill <name> no longer persists the --skill filter to apm.yml from v0.11.0 onwards. The dependency is recorded as a bare repo reference without the skills: subset. Since the integration step reads the subset from apm.yml, all skills in the package are deployed instead of the specified subset.

Important: if apm.yml already contains a correct skills: subset (e.g. written by v0.10.0), the integration step in all versions correctly filters and deploys only those skills. The bug is specifically in persisting --skill flags to apm.yml during initial install.

Steps to Reproduce

# Clean slate — no existing apm.yml
rm -rf apm.yml apm.lock.yaml apm_modules .claude/skills

# Install with --skill filter (repo has 8 skills, requesting 3)
apm install git@bitbucket.org:example/skills-repo.git \
  --skill skill-a --skill skill-b --skill skill-c

Expected Behavior (v0.10.0 — works correctly)

apm.yml records the skill subset:

dependencies:
  apm:
  - git: bitbucket.org/example/skills-repo
    skills:
    - skill-a
    - skill-b
    - skill-c

Only 3 skills deployed:

  |-- 3 skill(s) integrated -> .claude/skills/
[*] Persisted skill subset for example/skills-repo: [skill-a, skill-b, skill-c]

Actual Behavior (v0.11.0 through v0.14.0)

apm.yml records bare repo reference — skills: subset is lost:

dependencies:
  apm:
  - bitbucket.org/example/skills-repo

All 8 skills deployed:

  |-- Skill integrated -> .claude/skills/
  |-- 8 skill(s) integrated -> .claude/skills/

Workaround

Manually edit apm.yml to add the skills: subset, then re-run apm install. The integration step respects the subset when present in the manifest.

Bisect

Version --skillapm.yml Integration from apm.yml skills:
v0.10.0 ✅ Persisted ✅ Filters correctly
v0.11.0 ❌ Lost ✅ Filters correctly
v0.12.0 ❌ Lost ✅ Filters correctly
v0.13.0 ❌ Lost ✅ Filters correctly
v0.14.0 ❌ Lost ✅ Filters correctly

Regression introduced in v0.11.0.

Environment

  • APM version: tested on v0.10.0, v0.11.0, v0.13.0, v0.14.0
  • OS: macOS (Darwin arm64)
  • Target: Claude Code (auto-detected from .claude/, CLAUDE.md)
  • Source: Bitbucket private repo via SSH

Metadata

Metadata

Assignees

No one assigned

    Labels

    status/needs-triageNew, awaiting maintainer review.type/bugSomething does not work as documented.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions