lasantosr/intelli-shell
IntelliShell is a powerful command template and snippet manager for your shell.
Like IntelliSense, but for shells
lasantosr.github.io/intelli-shell/
- Rust93.4%
- Shell4.0%
- PowerShell1.5%
- Nushell0.5%
- Dockerfile0.3%
- Nix0.3%
3 Reviews
IntelliShell makes a useful distinction between shell history and a deliberate command library. Users can bookmark reusable recipes, add {{variables}}, search by descriptions or tags, load workspace-specific commands, import examples, and use optional AI to generate or repair commands. Support for Bash, Zsh, Fish, Nushell, and PowerShell across major operating systems is impressive. Destructive-command highlighting and secret variable handling also show good safety awareness.
The security model around AI and shared snippets should be strengthened. Generated or imported commands should default to explanation and preview, clearly mark substitutions, and never imply that warning patterns make execution safe. Provenance, checksums for remote libraries, secret scanning, and an offline-only mode would help cautious teams. Quoting tests must cover every supported shell because identical templates can behave differently. IntelliShell is best for terminal-heavy users who repeat parameterized workflows and want a curated, workspace-aware command system; it complements normal history but still requires users to understand every command before execution.
this reminds me of my messup in early days of my career. the guy who built the data pipelines left for vacation and i was tasked to run it in his absence. but the guy never documented the process. all he said was watch how i do it today and you will understand the process. It was clear. but what je didn't tell was there was 2 flows. 1 for full run and another for delta. i just know the delta flow and i ran it. it's was a catastrophe. if only i had this intellishell back then which told me hey this is dangerous and there is a second command..
i assume something like this will have helped right?
Clean re-trigger starts fresh, always safe
pipeline trigger --service {{service-name}} --clean #deploy #safe
Resume in-place. only if the pipeline stopped cleanly
pipeline trigger --service {{service-name}} --resume #deploy
What Works Well
The TLDR integration alone justifies the install. One command pulled in 21,178 community-vetted templates, which means you actually have something useful to search on day one, before you've manually bookmarked anything.
The export format is also genuinely good. It's plain text, human-readable, and structured in a way that makes sharing via Gist feel natural.
Search modes are actually different from each other, which sounds obvious but isn't always true. auto picked up "find files" as intent and surfaced the right commands. regex matched ^ssh cleanly. relaxed found the curl HTTP checker from "http check." These aren't the same algorithm with different labels.
Hashtags on descriptions (#devops, #git, #debug) let you filter your library without building a folder structure. It's a small thing but it works exactly how you'd want it to.
The alias system is one of the nicer design choices. If your search matches an alias exactly, it resolves instantly with no UI. But if the command has {{variables}}, the replacement prompt still fires. That's the right call and it's not obvious to get right.
Gaps and Concerns
The fix command is a bit overpromised. Hit ctrl+x on a failing command with no AI configured and you get a hard error. There's no typo correction, no "did you mean commit?"
Variable replacement only works interactively. If you try to run intelli-shell replace "ssh {{user}}@{{host}}" from a script or pass values via flags, it errors out. That's technically fine but it'll trip people up who find the CLI first and expect to pipe values through.
The install script throws red errors on Windows even when everything succeeds. It's a $LASTEXITCODE reference before the variable is set, but new users are going to see red terminal output and assume something broke.
Thanks for the honest review! Regarding the replace command on the cli, it should work if you pass in the values or allow to read it from the environment, as documented. Let me know with an issue if it's not working properly. Also, the install script was working fine, I'll test it again as soon as I get some time, but if you could open a bug report with the output that would be great!
