skim

A fast, interactive fuzzy finder for the command line, written in Rust — a smarter alternative to grep.

Tool
Cargo
v5.6.5
6,930stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
88/100Excellent
Development Activity96
Maintenance96
Community60
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
84/100Excellent
Architecture84
Code Quality86
Innovation82
Learning Curve78

skim is a powerful fuzzy finder for the terminal, written in Rust and distributed as a single executable called sk. It lets you interactively filter large streams of text — files, lines, command history, process lists — narrowing results in real time as you type, much like fzf but built on the Rust ecosystem.

Beyond the standalone binary, skim is also published as a Rust crate that you can embed in your own applications to add an interactive fuzzy-selection interface. It works as a filter in shell pipelines, integrates with Vim and shell key bindings, and supports interactive mode where each keystroke can re-run an underlying command.

What You Get

  • The sk executable — an interactive fuzzy finder usable in any shell pipeline
  • An embeddable Rust crate exposing skim’s matching engine and terminal UI
  • Interactive mode that re-runs a command on each keystroke for live results
  • Vim plugin integration and shell key bindings for fuzzy history and file search

Common Use Cases

  • Fuzzy-filtering files, lines, or command output interactively from the terminal
  • Building fuzzy-selection prompts into a Rust CLI application via the crate
  • Fast in-editor and in-shell navigation through Vim and shell key-binding integrations

Under The Hood

Architecture — skim separates its reusable matching/UI engine (the skim library crate) from the sk binary that drives it. Input is read as a stream of items, fed through a fuzzy-matching engine, and rendered in an interactive terminal UI. Recent versions build the interface on Ratatui (as advertised by the project’s badge), and interactive mode wires keystrokes to re-run a configured command so results update live.

Tech Stack — Pure Rust, distributed via crates.io and numerous OS package managers. The project ships a Vim plugin and shell-binding scripts alongside the core crate, and uses GitHub Actions for build, test, and coverage reporting.

Code Quality — The repository is well-tested, with roughly five dozen source files containing unit tests plus a published coverage badge and CI-enforced build-and-test workflow. Development is very active with a consistent release cadence and a large contributor base.

API Design — For end users the CLI is immediately familiar: pipe text into sk and start typing. For developers the crate exposes a composable API to feed items and receive selections, making it straightforward to add a fuzzy picker to a Rust program without reimplementing terminal handling.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search