Skip to content

perf(cli): run outdated candidate searches in parallel - #119

Merged
harlan-zw merged 3 commits into
mainfrom
perf/outdated-parallel-search
Aug 21, 2026
Merged

perf(cli): run outdated candidate searches in parallel#119
harlan-zw merged 3 commits into
mainfrom
perf/outdated-parallel-search

Conversation

@harlan-zw

Copy link
Copy Markdown
Collaborator

Summary

  • skilld outdated --system ran one HTTPS search per unmanaged Skill sequentially. 16 unmanaged Skills measured 10.1s wall; the same scan now measures 1.9s on up to 8 worker threads. WASI keeps the sequential path because it has no thread support.
  • Compact output: no-match Skills collapse into one line and search failures group per message. The same scan went from 17 lines to 4.

Testing

  • 177 workspace tests pass, clippy and fmt clean.
  • New test proves the concurrency bound (max 8 in flight) and that 16 delayed searches finish far faster than the sequential time.
  • Live binary timing before and after on this repository.

Unmanaged Skill candidate searches ran one HTTPS round trip each, so a
system scan with many unmanaged Skills waited on every response.
- Run candidate searches on up to 8 worker threads; WASI keeps the
sequential path because it has no thread support.
- Group no-match Skills into one line and search failures per message,
so a scan reads as one block instead of one line per Skill.
- skilld outdated reports each found Skill as a line, then rewrites one
spinner line while it verifies the latest source, and erases it before
the results. Non-terminal hosts keep the silent path through a no-op
progress reporter.
- skilld outdated --system also walks from the current directory up to
the home directory, so Skills installed in a parent project directory
are reported. Roots a failed store scope owns stay suppressed so the
scan never advises deleting copies it cannot verify.
@harlan-zw

Copy link
Copy Markdown
CollaboratorAuthor

Follow-up pushed in 5da2e82.

Scan width
outdated --system now also walks from the current directory up to the home directory, so Skills in a parent project directory are found. If the current directory is outside home, the walk stops at the filesystem root. Roots owned by a store scope that failed to read stay suppressed, so the ancestor walk cannot advise deleting copies it cannot verify.

Progressive output
outdated now reports each found Skill immediately (• name (agents, unmanaged)), rewrites a single ⠋ Checking name… spinner line while remote verification runs, and erases it before the final results. Non-terminal contexts and --json/--plain keep the silent path through a no-op reporter.

The scan never leaves the user account, so --system overpromised. --all
matches the behavior: both scopes and every Agent target directory.
@harlan-zw
harlan-zw merged commit 907431b into mainAug 21, 2026
2 checks passed
Sign up for freeto 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

@harlan-zw