alber70g/skills

fsearch

Search local macOS files with the installed FSearch CLI by fuzzy name, path, indexed contents, symbol definition, size, type, or modification age.

Voir la source

Mode d’emploi

  1. Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
  2. Consultez le document original pour les outils, identifiants et environnements requis.
  3. Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/alber70g/skills --skill fsearch

Avant de commencer

  • L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
  • Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

FSearch

Use the installed fsearch CLI to locate files and folders on macOS. Searches start the daemon automatically and share its index. Ordinary searches need no build, installation, or login-item setup.

If fsearch isn't installed, read the repositories' README.md for installation instructions.

Choose the query type

Plain words search names, not contents. Choose the keyword by what the user wants to match:

IntentQueryMeaning
Find a file by namereadmeFuzzy matching; words of 5+ letters tolerate one typo
Literal name fragment'readmeCase-insensitive substring without fuzzy matching; not whole-name equality
Name starts/ends with^readme / .rs$Prefix / suffix matching
Exclude a name fragment!backupNegated literal name token
Regex on filenamere:^main\.rs$Case-insensitive filename regex; anchor for whole-name equality
Regex on full pathpath:/src/.*\.rs$Case-insensitive path regex
Literal text inside filesgrep:apply_dirContent search; regex metacharacters are literal
Regex inside filesregex:fn\s+\w+_dirContent regex; distinct from re: and path:
Symbol definitionsym:apply_dirDeclaration-pattern matching; use grep: for references/calls

sym: is a declaration heuristic, not language-server resolution, and is case-sensitive. Literal and regex content searches use smart-case: all-lowercase patterns ignore case; an uppercase character makes matching case-sensitive.

Use one of grep:, regex:, or sym: per query. Repeating these replaces the previous content pattern rather than combining patterns. Plain words in a content query still narrow names/paths; they do not become additional content patterns.

Narrow the results

Combine the search mode with metadata filters. A filter-only query is valid, especially for large or recent files.

KeywordValues and examples
in:Folder subtree, e.g. in:~/projects; ~ expands inside the query. Prefer an absolute path or ~ path for explicit scope.
ext:Extensions, optionally with a dot; comma-separated alternatives, e.g. ext:rs,py.
type:Extension groups: image, video, audio, doc, code, archive, font; app selects .app directories. These are not MIME/content detection.
kind:file, dir (or folder), link (or symlink).
size:>5mb, <1gb, 10mb..100mb, or an exact size. Units: bytes (b or none), kb, mb, gb, tb; decimal multiples.
mtime:Modification age: <7d means within seven days; >30d means older than thirty days; 7d..30d means that age range. Units: s, m/min, h, d (default), w, mo, y.
limit:Maximum returned results/files, e.g. limit:20; default 50. Not a size sort or a total count.

Use one range expression per size: or mtime:; repeating these replaces the previous range. In the inspected implementation, >/>= share an inclusive lower bound and </<= share an inclusive upper bound. Verify boundary values when strict inequalities matter.

Use the requested folder as in: when known; omit it for whole-disk discovery. Results are ranked by relevance, not largest-first. For largest files, retrieve enough candidates with kind:file size:..., sort their JSON size fields descending, and qualify the ranking if limit: may have truncated candidates. Directory sizes are not recursive disk usage; use a disk-usage tool for largest folders.

Quote and run

Pass the whole query as one shell argument so >, <, !, $, and backslashes reach FSearch intact. Inside that argument, FSearch double quotes group values containing spaces. Shell quoting and FSearch quoting are separate layers; the leading apostrophe in 'exact is a query operator.

bash
fsearch 'readme in:~/projects limit:20' --json
fsearch "'readme in:~/projects limit:20" --json
fsearch 're:^main\.rs$ in:~/projects' --json
fsearch 'type:image size:>5mb mtime:<7d limit:20' --json
fsearch 'kind:file size:>1gb limit:100' --json
fsearch 'ext:rs grep:apply_dir in:~/projects' --json
fsearch 'ext:rs regex:fn\s+\w+_dir in:~/projects' --json
fsearch 'sym:apply_dir in:~/projects' --json
fsearch 'grep:"connection refused" in:"~/projects/My Project"' --json

Prefer --json for interpreting results programmatically. Name responses contain ok and hits with path, kind, size (bytes), mtime (Unix seconds), and score. Content responses contain files with path and matches (line, text), plus complete, indexing, and source (index or scan). Check ok; errors are not empty results. Preserve returned paths exactly, including spaces.

For awkward quoting or structured batches, use fsearch stdio: send one JSON object per line and close stdin after a finite batch. Serialize arbitrary strings instead of hand-escaping them.

json
{"q":"readme","in":"~/projects/My Project","limit":20}
{"op":"grep","pattern":"connection refused","mode":"literal","in":"~/projects/My Project","limit":20}
{"op":"grep","pattern":"fn\\s+\\w+_dir","mode":"regex","in":"~/projects","limit":20}

Coverage and follow-up

Name and metadata search reach more files than content search. The inspected build indexes eligible text files under the home directory up to 1 MiB (1,048,576 bytes), with a smaller cap for extensionless files. It excludes some formats, generated files, and trees such as build/ and vendor/. Explicit in: outside the content-index scope can use a scan, but that scan also caps candidate sizes at 1 MiB. A size: filter does not bypass content-size limits.

For contents of large files, locate paths with FSearch first, then stream-search relevant text files with rg -n -F -- 'literal' /absolute/file or rg -n -- 'regex' /absolute/file. Use the same targeted fallback when content coverage omits a relevant file. Read useful matching lines and surrounding context instead of loading a whole large file. Finding a PDF, archive, or image by type does not imply FSearch can extract its contents.

For empty or incomplete results, check the query mode and scope before broadening. complete:false, pending indexing, and result limits can explain partial results; even complete:true does not prove all disk files were covered. Name and content updates can have different indexing delays.

Use fsearch status when coverage or readiness is in doubt. Without Full Disk Access, protected macOS folders are skipped. If those folders matter, explain the gap: terminal-launched indexing needs a terminal with Full Disk Access; a login item needs a grant for ~/.local/bin/fsearch, renewed after rebuilds. Do not reconfigure installation or permissions as part of an ordinary search.

Return relevant paths, content line numbers/snippets, or file sizes, and state material scope or coverage limits. Inspect relevant files before drawing conclusions about their contents.

Tâches connexes

du même dépôt

Autres Skills

Tous les Skills
alber70g
Communauté

general-guidelines

Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, define verifiable success criteria, keep a WORKLOG.md so work can be continued across sessions, and write research to research/ and plans for review to docs/.

Installations / 1h
2
GitHub Stars
0
Mis à jour
18 oct.
alber70g
Communauté

orchestrator

Session mode where the main thread orchestrates: subagents on a cheaper model do research and execution, the main thread plans and validates. Use when the user runs /orchestrator, asks you to act as an orchestrator, asks to keep the main thread token-efficient, requests a large implementation plan or a large research task, or wants you to work toward an overarching goal.

Installations / 1h
1
GitHub Stars
0
Mis à jour
18 oct.
alber70g
Communauté

turn-based-discovery

Use the AskUserQuestion tool (the same multiple-choice mechanism plan mode uses) to get clarity from the user. Each question is multiple-choice plus a free-format "Other" escape. Ask in small batches — up to 4 questions per call (the tool's max), more if needed across calls. Use when scoping work, resolving ambiguity, or surfacing answers a research pass already raised. Triggers: /turn-based, ask me, clarify, discovery mode, interview me.

Installations / 1h
2
GitHub Stars
0
Mis à jour
18 oct.
alber70g
Communauté

autoresearch

Autonomous experimentation skill — agent interviews the user, sets up a lab, then explores freely (think, test, reflect) until stopped or a target is hit. Works for any domain where you can measure or evaluate a result.

Installations / 1h
1
GitHub Stars
0
Mis à jour
18 oct.