mcpbeat

Hive Terminal Tools Fs Search

aden-hive/hive.terminal-tools-fs-search

Use terminal_rg / terminal_find when you need raw filesystem search outside the project tree — system configs, /var/log, /etc, archive contents — or when files-tools.search_files is too project-scoped. Teaches the rg vs find vs terminal_exec("ls/du/tree") split, common rg flag combos for code/logs/configs, find predicates for mtime/size/type queries, and the rule that for tree views or single-file stat info you should just use terminal_exec instead of inventing a tool. Read before reaching for raw shell to grep or find anything.

2k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
10839
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/aden-hive/hive --skill hive.terminal-tools-fs-search

What comes with it

4 460 bytes besides the instruction
references/find_predicates.md
references/ripgrep_cheatsheet.md

The instruction itself

8 sections, as written by the author

terminal-tools provides two structured search tools: terminal_rg (ripgrep for content) and terminal_find (find for predicates). Everything else (tree, stat, du) is just terminal_exec.

When to use what

| Task | Tool |

|---|---|

| Find code/text matching a pattern in your project | files-tools.search_files (project-aware, ranks by relevance) |

| Find code/text matching a pattern in /var/log, /etc, archives, system dirs | terminal_rg |

| Find files matching name/glob/predicate | terminal_find |

| List a directory | terminal_exec("ls -la /path") |

| Tree view | terminal_exec("tree -L 2 /path") |

| Single-path stat | terminal_exec("stat /path") |

| Disk usage | terminal_exec("du -sh /path") or terminal_exec("du -h --max-depth=2 /") |

| Count matches across files | terminal_rg(pattern, count=True via extra_args=["-c"]) |

ripgrep is fast, gitignore-aware, and has a deep flag surface. The structured wrapper exposes the most useful flags directly; extra_args covers the rest.

Common patterns

# All Python files containing "TODO"
terminal_rg(pattern="TODO", path=".", type_filter="py")

# Case-insensitive, with context
terminal_rg(pattern="error", path="/var/log", ignore_case=True, context=2)

# Search hidden files (rg ignores them by default)
terminal_rg(pattern="api_key", path="~", hidden=True)

# Don't respect .gitignore (find files git would ignore)
terminal_rg(pattern="generated", path=".", no_ignore=True)

# Multi-line pattern (e.g., function definitions spanning lines)
terminal_rg(pattern=r"def\s+\w+\(.*\n.*\n", path="src", extra_args=["--multiline"])

# Specific filename glob
terminal_rg(pattern="version", path=".", glob="*.toml")

rg flag idioms

| Flag | Effect |

|---|---|

| -tpy (type_filter="py") | Only Python files |

| -uu | Don't respect any ignores (incl. .git/) |

| --multiline (extra_args) | Allow regex spanning lines |

| --max-count (max_count) | Stop after N matches per file |

| --max-depth (max_depth) | Limit recursion |

| -w (extra_args) | Whole word match |

| -F (extra_args) | Fixed string (no regex) |

See references/ripgrep_cheatsheet.md for the long form.

find excels at "files matching N criteria". The wrapper surfaces the most common predicates; combine via the structured arguments.

# All .log files modified in the last 7 days, larger than 1MB
terminal_find(path="/var/log", iname="*.log", mtime_days=7, size_kb_min=1024)

# All directories named ".git" (find Git repos under a tree)
terminal_find(path="~/projects", name=".git", type_filter="d")

# Only the top three levels
terminal_find(path="/etc", max_depth=3, type_filter="f")

# Symlinks
terminal_find(path=".", type_filter="l")

See references/find_predicates.md for combinations not directly exposed.

Output truncation

Both tools return truncated: true when their output exceeded the inline cap. For terminal_rg, this means matches were dropped (refine the pattern or narrow the path); for terminal_find, results past max_results (default 1000) are dropped. Tighten predicates rather than raising the cap.

Anti-patterns

  • Don't terminal_rg your project treefiles-tools.search_files is project-aware and ranks results.
  • Don't reach for terminal_find to list one directoryterminal_exec("ls -la /path") is shorter.
  • Don't use terminal_exec("grep ...") when terminal_rg exists — rg is faster, gitignore-aware, and returns structured matches.
  • Don't use terminal_exec("find ...") to invent your own predicate combinations — use terminal_find and report missing capabilities.

How to use it

Copy the folder

Take aden-hive/hive.terminal-tools-fs-search from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.