-
Notifications
You must be signed in to change notification settings - Fork 247
Clarify or make additive --skill behavior when installing from existing skill bundles #1862
Copy link
Copy link
Open
Labels
area/cliCLI command surface, flags, help text (cross-cutting).CLI command surface, flags, help text (cross-cutting).area/docs-sitedocs/src/content (Starlight), README, doc generation.docs/src/content (Starlight), README, doc generation.status/needs-designDirection approved, design discussion required before code.Direction approved, design discussion required before code.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).Initial agentic triage complete; pending maintainer ratification (silence = approval).type/featureNew capability, new flag, new primitive.New capability, new flag, new primitive.
Description
Metadata
Metadata
Assignees
Labels
area/cliCLI command surface, flags, help text (cross-cutting).CLI command surface, flags, help text (cross-cutting).area/docs-sitedocs/src/content (Starlight), README, doc generation.docs/src/content (Starlight), README, doc generation.status/needs-designDirection approved, design discussion required before code.Direction approved, design discussion required before code.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).Initial agentic triage complete; pending maintainer ratification (silence = approval).type/featureNew capability, new flag, new primitive.New capability, new flag, new primitive.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Projects
StatusShow more project fields
Todo
Summary
When installing a subset of skills from the same skill-bundle dependency,
apm install --skill ...appears to replace the previously configured skill subset instead of adding to it. This is surprising for an install command and makes the workflow for incrementally adding skills confusing.Reproduction
Start with a user-scope install of one skill from a bundle:
This installs the skill and writes a user-scope dependency entry similar to:
Then try to add another skill from the same dependency:
The resulting
~/.apm/apm.ymlreplaces the previous subset:APM then treats the previously installed skill as stale and attempts to clean it up.
Why this is confusing
From a user perspective,
apm install <package> --skill <skill-name>reads like "install this additional skill from this package", especially when the package is already configured.Instead, the current behavior is closer to "set the exact selected skill subset for this package to only these
--skillvalues". That behavior is understandable once known, but it was not obvious from the CLI flow.This was especially confusing in user scope with the
agent-skillstarget because the first command successfully created:Then the second command updated
~/.apm/apm.ymlto the new skill only and cleaned the old skill as stale.Workaround
To keep both skills, the user must pass all desired skill selections every time:
Or edit
~/.apm/apm.ymlmanually so the dependency has the full desired subset, then run:If the dependency is floating on a branch and the new skill exists only on a newer commit, the user may also need:
Suggested friendlier behavior
I think one of these would be much easier to understand:
Make repeated
apm install <existing-package> --skill <new-skill>additive by default, merging the new skill into the existingskills:list.If replacement is intentional, print an explicit warning before changing the subset, for example:
Add explicit flags so intent is unambiguous:
At minimum, the help text for
--skillcould say that it sets/replaces the package's selected skill subset.Related observation
In the same flow,
--refreshstill installed from the cached resolved commit:The user had to reason separately about
--updateversus--refresh. That may be working as designed, but it compounded the confusion because the config listed two skills while only one appeared in~/.agents/skills/.