fd-file-finding
fd fast file finding: smart defaults, gitignore-aware, parallel. Use when searching for files by name, extension, or pattern across directories.
What this skill does
# fd File Finding
Expert knowledge for using `fd` as a fast, user-friendly alternative to `find` with smart defaults and powerful filtering.
## When to Use This Skill
| Use this skill when... | Use rg-code-search instead when... |
|---|---|
| Finding files by name, extension, or path pattern | Searching inside file contents for text or regex |
| Filtering by mtime (`--changed-within`) or size (`--size`) | Filtering matches by file type (`-t py`, `-t js`) |
| Locating files to feed into `-x` / `-X` execution | Auditing source code for patterns across many files |
| Use this skill when... | Use jq-json-processing instead when... |
|---|---|
| Discovering JSON, YAML, or other files on disk | Querying or transforming the contents of those files |
| Building a file list for downstream batch processing | Extracting fields, filtering arrays, or reshaping JSON |
## Core Expertise
**fd Advantages**
- Fast parallel execution (written in Rust)
- Colorized output by default
- Respects `.gitignore` automatically
- Smart case-insensitive search
- Simpler syntax than `find`
- Regular expression support
## Basic Usage
### Simple File Search
```bash
# Find all files named config
fd config
# Find files with extension
fd -e rs # All Rust files
fd -e md # All Markdown files
fd -e js -e ts # JavaScript and TypeScript
# Case-sensitive search
fd -s Config # Only exact case match
```
### Pattern Matching
```bash
# Regex patterns
fd '^test_.*\.py$' # Python test files
fd '\.config$' # Files ending in .config
fd '^[A-Z]' # Files starting with uppercase
# Glob patterns
fd '*.lua' # All Lua files
fd 'test-*.js' # test-*.js files
```
## Advanced Filtering
### Type Filtering
```bash
# Search only files
fd -t f pattern # Files only
fd -t d pattern # Directories only
fd -t l pattern # Symlinks only
fd -t x pattern # Executable files
# Multiple types
fd -t f -t l pattern # Files and symlinks
```
### Depth Control
```bash
# Limit search depth
fd -d 1 pattern # Only current directory
fd -d 3 pattern # Max 3 levels deep
fd --max-depth 2 pattern # Alternative syntax
# Minimum depth
fd --min-depth 2 pattern # Skip current directory
```
### Hidden and Ignored Files
```bash
# Include hidden files
fd -H pattern # Include hidden files (starting with .)
# Include ignored files
fd -I pattern # Include .gitignore'd files
fd -u pattern # Unrestricted: hidden + ignored
# Show all files
fd -H -I pattern # Show everything
```
### Size Filtering
```bash
# File size filters
fd --size +10m # Files larger than 10 MB
fd --size -1k # Files smaller than 1 KB
fd --size +100k --size -10m # Between 100 KB and 10 MB
```
### Modification Time
```bash
# Files modified recently
fd --changed-within 1d # Last 24 hours
fd --changed-within 2w # Last 2 weeks
fd --changed-within 3m # Last 3 months
# Files modified before
fd --changed-before 1y # Older than 1 year
```
## Execution and Processing
### Execute Commands
```bash
# Execute command for each result
fd -e jpg -x convert {} {.}.png # Convert all JPG to PNG
# Parallel execution
fd -e rs -x rustfmt # Format all Rust files
# Execute with multiple results
fd -e md -X wc -l # Word count on all Markdown files
```
### Output Formatting
```bash
# Custom output format using placeholders
fd -e tf --format '{//}' # Parent directory of each file
fd -e rs --format '{/}' # Filename without directory
fd -e md --format '{.}' # Path without extension
# Placeholders:
# {} - Full path (default)
# {/} - Basename (filename only)
# {//} - Parent directory
# {.} - Path without extension
# {/.} - Basename without extension
```
### Integration with Other Tools
```bash
# Prefer fd's native execution over xargs when possible:
fd -e log -x rm # Delete all log files (native)
fd -e rs -X wc -l # Count lines in Rust files (batch)
# Use with rg for powerful search
fd -e py -x rg "import numpy" {} # Find numpy imports in Python files
# Open files in editor
fd -e md -X nvim # Open all Markdown in Neovim (batch)
# When xargs IS useful: complex pipelines or non-fd inputs
cat filelist.txt | xargs rg "TODO" # Process file from external list
```
## Common Patterns
### Development Workflows
```bash
# Find test files
fd -e test.js -e spec.js # JavaScript tests
fd '^test_.*\.py$' # Python tests
fd '_test\.go$' # Go tests
# Find configuration files
fd -g '*.config.js' # Config files
fd -g '.env*' # Environment files
fd -g '*rc' -H # RC files (include hidden)
# Find source files
fd -e rs -e toml -t f # Rust project files
fd -e py --exclude __pycache__ # Python excluding cache
fd -e ts -e tsx src/ # TypeScript in src/
```
### Cleanup Operations
```bash
# Find and remove
fd -e pyc -x rm # Remove Python bytecode
fd node_modules -t d -x rm -rf # Remove node_modules
fd -g '*.log' --changed-before 30d -X rm # Remove old logs
# Find large files
fd --size +100m -t f # Files over 100 MB
fd --size +1g -t f -x du -h # Size of files over 1 GB
```
### Path-Based Search
```bash
# Search in specific directories
fd pattern src/ # Only in src/
fd pattern src/ tests/ # Multiple directories
# Exclude paths
fd -e rs -E target/ # Exclude target directory
fd -e js -E node_modules -E dist # Exclude multiple paths
# Full path matching
fd -p src/components/.*\.tsx$ # Match full path
```
### Find Directories Containing Specific Files
```bash
# Find all directories with Terraform configs
fd -t f 'main\.tf$' --format '{//}'
# Find all directories with package.json
fd -t f '^package\.json$' --format '{//}'
# Find Go module directories
fd -t f '^go\.mod$' --format '{//}'
# Find Python project roots (with pyproject.toml)
fd -t f '^pyproject\.toml$' --format '{//}'
# Find Cargo.toml directories (Rust projects)
fd -t f '^Cargo\.toml$' --format '{//}'
```
**Note:** Use `--format '{//}'` instead of piping to xargs - it's faster and simpler.
## Best Practices
**When to Use fd**
- Finding files by name or pattern
- Searching with gitignore awareness
- Fast directory traversal
- Type-specific searches
- Time-based file queries
**When to Use find Instead**
- Complex boolean logic
- POSIX compatibility required
- Advanced permission checks
- Non-standard file attributes
**Performance Tips**
- Use `-j 1` for sequential search if order matters
- Combine with `--max-depth` to limit scope
- Use `-t f` to skip directory processing
- Leverage gitignore for faster searches in repos
**Integration with rg**
```bash
# Prefer native execution over xargs
fd -e py -x rg "class.*Test" {} # Find test classes in Python
fd -e rs -x rg "TODO" {} # Find TODOs in Rust files
fd -e md -x rg "# " {} # Find headers in Markdown
```
**Use fd's Built-in Execution**
```bash
# fd can execute directly — no need for xargs
fd -t f 'main\.tf$' --format '{//}' # Find dirs containing main.tf
fd -e log -x rm # Delete all .log files
```
## Quick Reference
### Essential Options
| Option | Purpose | Example |
|--------|---------|---------|
| `-e EXT` | Filter by extension | `fd -e rs` |
| `-t TYPE` | Filter by type (f/d/l/x) | `fd -t d` |
| `-d DEPTH` | Max search depth | `fd -d 3` |
| `-H` | Include hidden files | `fd -H .env` |
| `-I` | Include ignored files | `fd -I build` |
| `-u` | Unrestricted (no ignore) | `fd -u pattern` |
| `-E PATH` | Exclude path | `fd -E node_modulesRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.