Replace shell commands with bun shell typescript scripts
Shell history manipulation for script iteration is genuinely clever DX.
A lightning fast shell linter/formatter/LSP server
Clean-room Rust implementation runs 20x faster than ShellCheck with compatible output.
DevOps engineers and maintainers of large shell script repositories
ShellCheck
ShellCheck is excellent project and set the bar for this space. However, it's very slow and take up a far amount of resources. shuck is conservatively 20x faster than shellcheck and uses a fraction of the resources.
shuck should mostly be a drop in replacement for shellcheck but it is not a port since shellcheck is GPL. It is s clean-room implementation with its own parser and analysis engine, so behavior may differ in some cases. shuck is tested against shellcheck on a large number of open source projects with a lot of shell scripts and has very few variations.
That said, I’ve tried to make migration easy: shuck supports ShellCheck-style suppression 2) you can run shuck in shellcheck compatibility mode where it has all the same CLI args and output.
This is still early, and I’d especially love feedback from people who maintain large monorepos, CI-heavy projects, or lots of shell scripts. I’m interested in places where ShellCheck compatibility matters, places where it does not, and which classes of shell bugs people most want lint/fix support for next.
Shell history manipulation for script iteration is genuinely clever DX.
Yet another Lua linter when selene and luacheck already exist.
CLI for managing shell aliases, but editing .zshrc directly is usually faster.
Forces devs to justify NOLINT comments before tech debt goes silent.
Neatify exposes AST-level formatting as live Rhai scripts, so you write real code to shape output instead of tweaking a dozen JSON flags. The Tree-sitter backbone means any language with a grammar can be targeted, and the repo-first flavoring plus LLM-assisted script generation is a smart, practical twist. It's clearly early-stage (defaults modify files in-place and coverage is limited), but the architecture is an interesting alternative to opinionated, black-box formatters.
Forces Vim bindings and blocks shell access for safer Rust-only AI coding.