A zero-dependency CLI for fuzzy searching and executing scripts from JSON, TOML, and YAML config files. Works with package.json, Cargo.toml, pyproject.toml, Taskfile.yml, and more.
Stop typing full script names. Type fjsf, fuzzy search, press Enter.
Works wherever scripts live — npm, Cargo, Python tasks, Go taskfiles — no config needed.
You start here.
Lost. In a sea of config files trying to remember the script you need,
you type fjsf and...
graph TD
A[CLI Entry] --> B{Parse Mode}
B -->|default| C[Find Config Files]
B -->|find| D[Find by Filename]
B -->|path| E[Load Single File]
B -->|help/quit| F[Exit]
C --> G[Extract scripts/tasks/jobs]
D --> G
G --> H[Fuzzy Search UI]
H --> I[Execute Script]
E --> J[Flatten All Keys]
J --> H
You end here.
Just as lonely as before.
But you executed that script you needed lickety-split!
- Multi-format: reads
package.json,Cargo.toml,pyproject.toml,Taskfile.yml, GitHub Actions, and any JSON/TOML/YAML config - Nested task discovery: finds
[tool.taskipy.tasks],jobs:, and other non-standard task paths automatically - Default mode: scans the current directory tree and collects all scripts
- Find mode: locates every copy of a filename across a monorepo
- Path mode: explores any config file with fuzzy search
- Zero dependencies — compiled to a native binary via QuickJS
- Interactive terminal UI with keyboard navigation
fjsf # Search all scripts in current directory tree
fjsf find Cargo.toml # Find all Cargo.toml files and search their scripts
fjsf path pyproject.toml # Explore a specific filefjsf
# Type to fuzzy filter, arrows to navigate, Enter to run, Esc/Ctrl+C to quitfjsf find package.json
# Shows scripts from every package.json found in the treefjsf path Taskfile.yml
# Type: "build"
# Shows all entries with "build" in the key or valuefjsf path pyproject.toml
# Finds tasks under [tool.taskipy.tasks] automatically# Default — scan directory for config files and extract scripts
fjsf
# Find mode — locate all files with that name and extract scripts
fjsf find <filename>
fjsf f <filename>
# Path mode — load a single file and fuzzy search all entries
fjsf path <file>
fjsf p <file>
# Other
fjsf help / fjsf --help # Show usage
fjsf --version / fjsf -v # Show version
fjsf quit / fjsf q # Exit
# Keyboard controls
# Type to fuzzy search, ↑/↓ to navigate, Enter to execute
# q to quit (when search is empty), Esc or Ctrl+C to exit anytimebrew tap yowainwright/tap
brew install fjsfbun install -g fjsf
# or: npm install -g fjsfDownload the latest binary from the releases page:
- macOS (Apple Silicon):
fjsf-qjs-darwin-arm64 - Linux x64:
fjsf-qjs-linux-x64
chmod +x fjsf-qjs-*
sudo mv fjsf-qjs-* /usr/local/bin/fjsfMIT