Code Relations
Quickly discover file relationships in a codebase using semantic analysis.
Prerequisites
Ensure gossiphs binary is available:
which gossiphs || echo "Install: cargo install gossiphs"
Core Command
gossiphs relate --file <PATH> [--json]
Output is JSON array with:
name: source filerelated[]: related files withname,score,refs,defs,related_symbols
Usage Patterns
Find related files
gossiphs relate --file src/auth/login.rs | jq '.[0].related[].name'
Get top N related files by score
gossiphs relate --file src/lib.rs | jq '.[0].related | sort_by(-.score) | .[0:5][] | {name, score}'
Find shared symbols between files
gossiphs relate --file src/lib.rs | jq '.[0].related[] | select(.name | contains("auth")) | .related_symbols[].symbol.name' | sort -u
Impact analysis for a file change
gossiphs relate --file <FILE> | jq '.[0].related[] | "\(.name) (score: \(.score), refs: \(.refs))"'
Parameters
| Flag | Description |
|---|---|
-p, --project-path |
Project root (default: .) |
--file |
Target file to analyze |
--depth |
Git history depth (default: 100) |
--strict |
Precise-first analysis |
--exclude-file-regex |
Exclude files matching pattern |
Example Scenarios
Scenario 1: Impact Analysis
User: "I want to refactor User class. What should I check?"
1. gossiphs relate --file src/models/user.py
2. Parse JSON output for related files
3. Report: "These files reference User symbols and may need updates..."
Scenario 2: Find implementation
User: "Where is the authentication logic?"
1. Start from known entry: gossiphs relate --file src/routes/auth.rs
2. Follow related files to trace the flow
3. Report: "Auth flow: routes/auth.rs -> middleware/jwt.rs -> services/auth.rs"
Scenario 3: Dependency discovery
User: "What does payment module depend on?"
1. gossiphs relate --file src/payment/
2. List incoming/outgoing connections
3. Summarize dependency graph
Tips
- First run may be slow - builds index from git history
- Subsequent runs are fast - cached in
.gossiphs/ - Semantic over textual - connections based on symbol semantics
- Git history matters - files changed together get stronger connections
Source: williamfzc/gossiphs — distributed by TomeVault.