Basic semantic code search with GrepAI. Use this skill to learn fundamental search commands and concepts.
This skill covers the fundamentals of semantic code search with GrepAI.
grepai init)grepai watch)Unlike traditional text search (grep, ripgrep), GrepAI searches by meaning:
| Type | How it Works | Example |
|---|---|---|
| Text search | Exact string match | "login" ā finds "login" |
| Semantic search | Meaning similarity | "authenticate user" ā finds login, auth, signin code |
grepai search "your query here"
grepai search "user authentication flow"
Output:
Score: 0.89 | src/auth/middleware.go:15-45
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
func AuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
token := c.GetHeader("Authorization")
if token == "" {
c.AbortWithStatus(401)
return
}
claims, err := ValidateToken(token)
if err != nil {
c.AbortWithStatus(401)
return
}
c.Set("user", claims.UserID)
c.Next()
}
}
Score: 0.82 | src/auth/jwt.go:23-55
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
func ValidateToken(tokenString string) (*Claims, error) {
token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {
return []byte(secretKey), nil
})
if err != nil {
return nil, err
}
if claims, ok := token.Claims.(*Claims); ok && token.Valid {
return claims, nil
}
return nil, errors.New("invalid token")
}
Score: 0.76 | src/handlers/login.go:10-35
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
func HandleLogin(c *gin.Context) {
var req LoginRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(400, gin.H{"error": "invalid request"})
return
}
user, err := userService.Authenticate(req.Email, req.Password)
// ...
}
Score: 0.89 | src/auth/middleware.go:15-45
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
[code content]
| Component | Meaning |
|---|---|
| Score | Similarity (0.0 to 1.0, higher = more relevant) |
| File path | Location of the code |
| Line numbers | Start-end lines of the chunk |
| Content | The actual code |
| Score | Meaning |
|---|---|
| 0.90+ | Excellent match |
| 0.80-0.89 | Good match |
| 0.70-0.79 | Related |
| 0.60-0.69 | Loosely related |
| <0.60 | Weak match |
By default, GrepAI returns 10 results. Adjust with --limit:
# Get only top 3 results
grepai search "database queries" --limit 3
# Get more results
grepai search "error handling" --limit 20
Before searching, verify your index:
grepai status
Output:
ā
GrepAI Status
Index:
- Files: 245
- Chunks: 1,234
- Last updated: 2 minutes ago
Ready for search.
grep -r "authenticate" .
grepai search "authenticate user credentials"
Describe the intent or behavior:
grepai search "validate user credentials"
grepai search "handle HTTP request errors"
grepai search "connect to the database"
grepai search "send email notification"
grepai search "parse JSON configuration"
Too short or generic:
grepai search "auth" # Too vague
grepai search "function" # Too generic
grepai search "getUserById" # Exact name (use grep)
GrepAI understands natural language:
# Ask questions
grepai search "how are users authenticated"
grepai search "where is the database connection configured"
# Describe behavior
grepai search "code that sends emails to users"
grepai search "functions that validate input data"
Both work, but phrases often get better results:
# Multiple words (OR-like behavior)
grepai search "login password validation"
# Phrase (describes specific intent)
grepai search "validate user login credentials"
grepai search "main entry point"
grepai search "application startup"
grepai search "HTTP server initialization"
grepai search "error handling and logging"
grepai search "exception handling"
grepai search "error response to client"
grepai search "database query execution"
grepai search "fetch user from database"
grepai search "save data to storage"
grepai search "calculate order total"
grepai search "process payment transaction"
grepai search "validate business rules"
ā Problem: No results ā Solutions:
grepai statusgrepai watch if index is emptyā Problem: Irrelevant results ā Solutions:
ā Problem: Missing expected code ā Solutions:
rm .grepai/index.gob && grepai watchSuccessful basic search:
Query: "user authentication flow"
Results: 5 matches
Score: 0.89 | src/auth/middleware.go:15-45
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
[relevant code...]
Score: 0.82 | src/auth/jwt.go:23-55
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
[relevant code...]
[additional results...]
Tip: Use --limit to adjust number of results
Use --json for machine-readable output