From hatch3r
Provides interactive fuzzy finding via `fzf` for TTY sessions; degrades gracefully to headless `--filter` mode in CI/agent contexts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hatch3r:hatch3r-cli-fzfThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
Interactive fuzzy finder for TTY pickers
Before invoking fzf, resolve these via agents/shared/user-question-protocol.md (default behavior, not exception-driven):
fzf is the intended candidate set; a wrong upstream command silently changes what gets ranked.fzf only selects — it never mutates files. The real hazard is invoking interactive fzf (no --filter) in a non-TTY context (CI, agent loop): it blocks on stdin forever. Always use --filter headless mode from an autonomous agent; treat any downstream action on the selection (the command you pipe the pick into) under its own irreversibility check.--filter … | head -1 rather than relying on interactive choice.Tier 1 reference card — no fan-out. This skill is a single-tool usage reference an agent consults inline; it spawns no sub-agents. Fan-out is owned by the calling workflow per its own Fan-out Discipline block. Source: rules/hatch3r-fan-out-discipline.md (P8 B2).
Reach for fzf when the task is in the interactive category and the agent would otherwise call an MCP tool or read large outputs into context.
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB. Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
fzf --filter 'auth' < paths.txt
Headless mode — ranks lines by fuzzy match score and prints them in order; no TTY needed. This is the agent-safe entrypoint.
git branch --format='%(refname:short)' | fzf --filter main
Score branch names against main; pipe to head -1 to pick the best match deterministically.
rg -l 'TODO' . | fzf --filter 'src/cli'
Re-rank a ripgrep file list by proximity to a fuzzy hint; combine with head for a deterministic top pick.
fzf --filter 'auth' --print0 < paths.txt | xargs -0 wc -l
Stream NUL-delimited matches to a downstream pipeline — safe across filenames with spaces.
fzf < paths.txt
Interactive picker — only useful in a human TTY; do not call this form from an autonomous agent.
fzf will hang on stdin; always use --filter headless mode.fzf is character-level fuzzy; reach for an embedding-based tool.grep -F or rg --files | head would already return the right answer — no need to layer scoring on top.| Tool | When to prefer |
|---|---|
skim (sk) | Need a Rust binary with similar fuzzy scoring and the same --filter headless mode. |
rg --files | head | Already filtered; want stable lexicographic order rather than fuzzy ranking. |
grep -F | Exact substring match; no scoring needed. |
Verify with:
command -v fzf
Install (macOS — default for this machine):
# brew
brew install fzf
Install (Linux):
# apt
sudo apt install fzf
Install (Windows):
# scoop
scoop install fzf
Homepage: https://github.com/junegunn/fzf
npx claudepluginhub hatch3r/hatch3r --plugin hatch3rEmulates terminal using libghostty-vt library: parses VT sequences for C0 controls, cursor movement/positioning, erase/display/line, SGR, OSC titles/hyperlinks. Includes tmux+zsh+fzf+ripgrep.
Gitignore-aware file and directory search using `fd`. Use when locating files by glob, extension, or regex with parallel walking. Outputs newline-separated results; bound with `-c`.
Finds files quickly using fd CLI tool with gitignore awareness, parallel execution, regex, glob patterns, and filters like size or time. Use for searching by name, extension, or pattern in directories.