Repository navigation
fix(plugin): apply skill selection before syncing - #613
Merged
Merged
Conversation
Discover and validate requested skills before saving the plugin declaration or synchronizing client files. Preserve existing allowlists after resolving marketplace aliases and remove the preliminary unfiltered synchronization.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
plugin install --skill archifypreserves existing, unselected skill directories instead of temporarily installing and then deleting them. Unknown requested names now fail before saving the plugin declaration or synchronizing client files.The installer uses existing source resolution and skill discovery to validate the selection, saves the final allowlist, and synchronizes once. Reinstallation extends an existing allowlist, including when a marketplace repository alias resolves to a different canonical name. Plugin settings are preserved. Selected skill directories remain installed copies of their declared source; this change adds no new ownership policy or dependency.
Validation
GitHub CI — all seven jobs passed, including the full test suite and Windows checks.
Full suite:
bun test --timeout 30000— 2,692 passed, 7 skipped, 0 failed across 213 files. The longer runner timeout accommodates subprocess-heavy CLI tests on this machine.Regression tests reproduced unselected-directory deletion at project and user scope before the fix, then passed after it.
Built-CLI alias tests reproduced loss of an earlier selected skill, then passed after canonical declaration merging was corrected.
Coverage includes multiple clients, invalid names without config/file changes, existing allowlists and plugin fields, marketplace component roots, both scopes, and blocklist rejection before writes.
bun run typecheck,bun run lint,bun run build, andgit diff --checkpass. Lint retains the existing Biome schema notice and four unrelated warnings.Built CLI verification
The original Archify reproduction used a local engineering plugin and isolated project/home directories under
/tmp. Each target contained a fictionalgithub-attention/SKILL.mdand an extrapersonal.txt. The command was run at both project and user scope:ENGINEERING_PLUGINpoints to the engineering directory from the Archify plugin branch;ALLAGENTS_CLIis this worktree's builtdist/index.js. Each scope used its own temporary home and project. Before the fix, the unselected directory disappeared. The final verification passed: both scopes copied Archify to five clients, reportedpurgedPaths: [], preserved every unselected file byte-for-byte, and passed Archify'sdoctorin all ten installed copies. The tested bundle corresponds to commitdc3e649. A separate universal-client check also passed at both scopes under.agents/skills/, preserving the unselected files and passing both installeddoctorchecks.Independent correctness and adversarial review passed after the canonical marketplace alias regression was corrected.
Related
Related: allagentsdev/agent-plugins#14