Context
The async uninstall path always reports success after attempting cleanup, even when the CLI fails. Directory and lockfile cleanup errors are also swallowed, so the UI can mark a skill removed while files or lock state remain.
Evidence:
src/marketplace.ts:419-424 returns success: true unconditionally.
src/marketplace.ts:299-320 swallows cleanup and lockfile errors.
src/views/marketplace-view.ts:216-223 trusts the returned success value.
Task
Track CLI removal, filesystem cleanup, and lockfile updates independently. Return success only when the verified final state is uninstalled, and expose partial failures to the UI.
Acceptance criteria
- CLI failure plus failed cleanup returns failure.
- Successful fallback cleanup is distinguishable from CLI success.
- Partial failures identify the remaining paths or lock state.
- The UI does not mark a skill removed on failure.
- Tests cover success, fallback cleanup, and partial failure.
Context
The async uninstall path always reports success after attempting cleanup, even when the CLI fails. Directory and lockfile cleanup errors are also swallowed, so the UI can mark a skill removed while files or lock state remain.
Evidence:
src/marketplace.ts:419-424returnssuccess: trueunconditionally.src/marketplace.ts:299-320swallows cleanup and lockfile errors.src/views/marketplace-view.ts:216-223trusts the returned success value.Task
Track CLI removal, filesystem cleanup, and lockfile updates independently. Return success only when the verified final state is uninstalled, and expose partial failures to the UI.
Acceptance criteria