Skip to content

fix(plugin): apply skill selection before syncing - #613

Merged
christso merged 1 commit into
mainfrom
fix/plugin-skill-selection
Nov 10, 2026
Merged

christso merged 1 commit into
mainfrom
fix/plugin-skill-selection

Conversation

@christso

@christso christso commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

plugin install --skill archify preserves 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, and git diff --check pass. 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 fictional github-attention/SKILL.md and an extra personal.txt. The command was run at both project and user scope:

ALLAGENTS_TEST_HOME="$fixture/home" node "$ALLAGENTS_CLI" plugin install "$ENGINEERING_PLUGIN" \
  --scope project --client codex,cursor,claude,opencode,copilot \
  --skill archify --yes --json

ENGINEERING_PLUGIN points to the engineering directory from the Archify plugin branch; ALLAGENTS_CLI is this worktree's built dist/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, reported purgedPaths: [], preserved every unselected file byte-for-byte, and passed Archify's doctor in all ten installed copies. The tested bundle corresponds to commit dc3e649. A separate universal-client check also passed at both scopes under .agents/skills/, preserving the unselected files and passing both installed doctor checks.

Independent correctness and adversarial review passed after the canonical marketplace alias regression was corrected.

Related

Related: allagentsdev/agent-plugins#14


Compound Engineering

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.
@christso
christso merged commit 1045f7e into main Nov 10, 2026
8 checks passed
@christso
christso deleted the fix/plugin-skill-selection branch November 10, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant