feat(cli): update skills safely - #450
Draft
christso wants to merge 10 commits into
Draft
Conversation
Deploying allagents with
|
| Latest commit: |
c9c7db1
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://c02a7850.allagents.pages.dev |
| Branch Preview URL: | https://feat-skills-update.allagents.pages.dev |
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
Adds
allagents skill update [skills...], with safe handling for skills that disappeared upstream. The command preflights updates in disposable checkouts, warns before removing managed local copies, updates surviving skills, and reconciles project/user configuration without silently crossing ownership boundaries.The design was based on
vercel-labs/skillsPR #1218 and commit6b29809, then adapted for AllAgents marketplace graphs, shared caches, scope isolation, and offline sync.User behavior
allagents skill updatesupports project, user, or all scopes and optional case-insensitive skill filters.--yes, JSON, CI, and other non-interactive runs never authorize deletion; affected sources are retained and skipped.Safety and implementation notes
offline: true.simple-gittest mocks cannot alter real update behavior.The reviewed design is in
docs/plans/2026-08-10-001-feat-skill-update-deletion-handling-plan.md.Automated verification
bun test— 1,416 passed, 5 skipped, 0 failed across 133 files.bun run test:e2e— 130 passed, 4 skipped, 0 failed across 12 files.bun test tests/e2e/skill-update.test.ts— 7 passed, 63 assertions using the builtdist/index.jsCLI and disposable project/home/remotes.bun run typecheck— passed.bun run lint— passed.bun run build— passed.bun run docs:build— passed.git diff --check— passed.The dedicated E2E run initially exposed an unrelated existing test at the default 5-second limit. Its five real CLI subprocesses took 5.77 seconds on this host, so that one test now has an explicit 10-second timeout; the final prescribed E2E run is green.
Isolated dogfood / UAT
The manual pass used only a disposable project, fake home, local bare Git remote, and local Git config. It did not read or mutate the real AllAgents home or this repository's workspace configuration.
Setup and command sequence:
Observed interaction:
Assertions and results:
a1135e09b113d48afcde597f2d6d0725cdb2d396and finished at inspected v2 SHA3673a8986c17bf21b8f747b3a086758349ec693b.workspace.yamlchanged only fromskills: [keep, gone]toskills: [keep]..claude/skills/gone/SKILL.mdwas removed..claude/skills/keep/SKILL.mdand the cached copy both contained# keep v2.find "$uat_root" -depth -deleteafter verification.The reproducible automated fixture, including Yes, No, cancel, shared-scope, marketplace, non-interactive, and partial-failure branches, is in
tests/e2e/skill-update.test.ts.Post-deploy validation
This is a local CLI feature with no server-side rollout. After release, maintainers should watch the Publish/CI workflows and reports containing
skill update,deleted upstream,Refusing to update, orOffline ... sync failed. Any report that No/cancel/non-interactive mode changed a cache, config, or managed artifact is a rollback-level safety issue; otherwise failures remain isolated and actionable in the CLI result.