GitLab search operations via API. ALWAYS use this skill when user wants to: (1) search across GitLab globally, (2) find issues/MRs/code/commits, (3) search within a group or project, (4) find users or projects by keyword.
Scanned 5/27/2026
Install via CLI
openskills install grandcamel/GitLab-Assistant-Skills---
name: "gitlab-search"
description: "GitLab search operations via API. ALWAYS use this skill when user wants to: (1) search across GitLab globally, (2) find issues/MRs/code/commits, (3) search within a group or project, (4) find users or projects by keyword."
version: "1.0.0"
author: "GitLab-Assistant-Skills"
license: "MIT"
allowed-tools: ["Bash", "Read", "Glob", "Grep"]
---
# Search Skill
Search operations for GitLab using `glab api` raw endpoint calls.
## Quick Reference
| Operation | Command Pattern | Risk |
|-----------|-----------------|:----:|
| Search projects | `glab api "search?scope=projects&search=..."` | - |
| Search issues | `glab api "search?scope=issues&search=..."` | - |
| Search MRs | `glab api "search?scope=merge_requests&search=..."` | - |
| Search code | `glab api "search?scope=blobs&search=..."` | - |
| Search commits | `glab api "search?scope=commits&search=..."` | - |
| Search users | `glab api "search?scope=users&search=..."` | - |
| Search wiki | `glab api "search?scope=wiki_blobs&search=..."` | - |
| Project search | `glab api "projects/:id/search?scope=...&search=..."` | - |
| Group search | `glab api "groups/:id/search?scope=...&search=..."` | - |
**Risk Legend**: - Safe | ⚠️ Caution | ⚠️⚠️ Warning | ⚠️⚠️⚠️ Danger
## When to Use This Skill
**ALWAYS use when:**
- User wants to search or find something across GitLab
- User mentions "search", "find", "query", "look for"
- User asks "where is", "which project has", "find all"
- User wants to search code, issues, MRs, commits, or wikis
**NEVER use when:**
- User wants to list all items (use specific skill: gitlab-issue, gitlab-mr, etc.)
- User knows the exact project/issue/MR ID
- User wants to search local files (use grep/find locally)
## API Prerequisites
**Required Token Scopes:** `read_api` or `api`
**Note:** Search results are limited to resources the authenticated user can access.
## Search Scopes
| Scope | Description | Available At |
|-------|-------------|--------------|
| `projects` | Search project names/descriptions | Global, Group |
| `issues` | Search issue titles/descriptions | Global, Group, Project |
| `merge_requests` | Search MR titles/descriptions | Global, Group, Project |
| `milestones` | Search milestone titles | Global, Group, Project |
| `snippet_titles` | Search snippet titles | Global |
| `wiki_blobs` | Search wiki content | Global, Group, Project |
| `commits` | Search commit messages | Global, Group, Project |
| `blobs` | Search code/file content | Global, Group, Project |
| `notes` | Search comments | Global, Group, Project |
| `users` | Search usernames/names | Global |
## Available Commands
### Global Search
```bash
# Search projects by name
glab api "search?scope=projects&search=api+gateway" --method GET
# Search issues globally
glab api "search?scope=issues&search=authentication+bug" --method GET
# Search merge requests
glab api "search?scope=merge_requests&search=refactor" --method GET
# Search code (blobs)
glab api "search?scope=blobs&search=TODO+fixme" --method GET
# Search commits
glab api "search?scope=commits&search=fix+security" --method GET
# Search wiki content
glab api "search?scope=wiki_blobs&search=installation" --method GET
# Search users
glab api "search?scope=users&search=john" --method GET
# Search milestones
glab api "search?scope=milestones&search=v2.0" --method GET
# Search comments/notes
glab api "search?scope=notes&search=approved" --method GET
```
### Project-Scoped Search
```bash
# Search issues in specific project
glab api "projects/123/search?scope=issues&search=bug" --method GET
# Search code in project
glab api "projects/123/search?scope=blobs&search=function+authenticate" --method GET
# Search commits in project
glab api "projects/123/search?scope=commits&search=fix" --method GET
# Search wiki in project
glab api "projects/123/search?scope=wiki_blobs&search=setup" --method GET
# Search MRs in project
glab api "projects/123/search?scope=merge_requests&search=feature" --method GET
# Search notes in project
glab api "projects/123/search?scope=notes&search=LGTM" --method GET
# Search milestones in project
glab api "projects/123/search?scope=milestones&search=sprint" --method GET
# Using project path (URL-encoded)
glab api "projects/$(echo 'mygroup/myproject' | jq -Rr @uri)/search?scope=blobs&search=TODO"
```
### Group-Scoped Search
```bash
# Search issues in group
glab api "groups/456/search?scope=issues&search=urgent" --method GET
# Search code across group
glab api "groups/456/search?scope=blobs&search=api+key" --method GET
# Search projects in group
glab api "groups/456/search?scope=projects&search=backend" --method GET
# Search MRs in group
glab api "groups/456/search?scope=merge_requests&search=hotfix" --method GET
# Using group path (URL-encoded)
glab api "groups/$(echo 'mygroup' | jq -Rr @uri)/search?scope=issues&search=bug"
```
### Pagination
```bash
# Get more results per page
glab api "search?scope=issues&search=bug&per_page=50" --method GET
# Get specific page
glab api "search?scope=issues&search=bug&per_page=50&page=2" --method GET
# Auto-paginate all results
glab api "search?scope=projects&search=api" --paginate
```
### Advanced Search Syntax
```bash
# Exact phrase search (use quotes, URL-encoded)
glab api "search?scope=blobs&search=%22exact+phrase%22" --method GET
# Filename filter in code search
glab api "search?scope=blobs&search=authenticate+filename:auth.py" --method GET
# Extension filter
glab api "search?scope=blobs&search=class+extension:java" --method GET
# Path filter
glab api "search?scope=blobs&search=config+path:src/main" --method GET
```
## Output Processing
### Extract Key Fields
```bash
# Get issue IDs and titles
glab api "search?scope=issues&search=bug" | \
jq -r '.[] | "\(.project_id)#\(.iid): \(.title)"'
# Get project names and URLs
glab api "search?scope=projects&search=api" | \
jq -r '.[] | "\(.path_with_namespace): \(.web_url)"'
# Get code matches with file paths
glab api "search?scope=blobs&search=TODO" | \
jq -r '.[] | "\(.project_id):\(.path):\(.startline) \(.data)"'
# Get commit info
glab api "search?scope=commits&search=fix" | \
jq -r '.[] | "\(.short_id): \(.title)"'
```
### Count Results
```bash
# Count matching issues
glab api "search?scope=issues&search=bug" --paginate | jq 'length'
# Count by project
glab api "search?scope=issues&search=bug" --paginate | \
jq 'group_by(.project_id) | map({project: .[0].project_id, count: length})'
```
## Common Workflows
### Workflow 1: Find All TODOs in Codebase
```bash
# Search for TODO comments across all accessible projects
glab api "search?scope=blobs&search=TODO" --paginate | \
jq -r '.[] | "\(.project_id):\(.path):\(.startline)"'
```
### Workflow 2: Find Issues Across Team Projects
```bash
# Get group ID
group_id=$(glab api "groups/$(echo 'myteam' | jq -Rr @uri)" | jq -r '.id')
# Search for critical issues in group
glab api "groups/$group_id/search?scope=issues&search=critical" --paginate | \
jq -r '.[] | "\(.references.full): \(.title)"'
```
### Workflow 3: Find Who Worked on Feature
```bash
# Search commits mentioning feature
glab api "projects/123/search?scope=commits&search=authentication" | \
jq -r '.[] | "\(.author_name): \(.title)"'
```
### Workflow 4: Find Security-Related Code
```bash
# Search for potential security patterns
for term in "password" "secret" "api_key" "token"; do
echo "=== Searching for: $term ==="
glab api "projects/123/search?scope=blobs&search=$term" | \
jq -r '.[] | "\(.path):\(.startline)"'
done
```
### Workflow 5: Find Related MRs
```bash
# Search MRs by feature name
glab api "search?scope=merge_requests&search=oauth+integration" | \
jq -r '.[] | "!\(.iid) [\(.state)]: \(.title)"'
```
## Search Tips
### Effective Search Terms
| For | Search Examples |
|-----|-----------------|
| Bug fixes | `fix bug`, `resolve issue`, `patch` |
| Features | `add feature`, `implement`, `new` |
| Refactoring | `refactor`, `cleanup`, `improve` |
| Security | `security`, `vulnerability`, `CVE` |
| Performance | `performance`, `optimize`, `speed` |
| Documentation | `docs`, `readme`, `documentation` |
### URL Encoding Special Characters
```bash
# Space -> +
glab api "search?scope=issues&search=fix+bug"
# Quotes (for exact match) -> %22
glab api "search?scope=blobs&search=%22exact+phrase%22"
# Hash -> %23
glab api "search?scope=issues&search=issue%231234"
```
## Troubleshooting
| Issue | Cause | Solution |
|-------|-------|----------|
| Empty results | No matches or no access | Verify search term, check permissions |
| Partial results | Pagination needed | Use `--paginate` flag |
| 400 Bad Request | Invalid scope | Check scope is valid for endpoint |
| Slow search | Large result set | Add filters or narrow scope |
| No code results | Basic search disabled | Contact admin to enable advanced search |
## Search Limitations
- Basic search searches titles/descriptions only
- Advanced search (Elasticsearch) required for code search
- Results limited to accessible resources
- Rate limits apply for large searches
## Related Documentation
- [API Helpers](../shared/docs/API_HELPERS.md)
- [Safeguards](../shared/docs/SAFEGUARDS.md)
- [Quick Reference](../shared/docs/QUICK_REFERENCE.md)
- [GitLab Search API](https://docs.gitlab.com/ee/api/search.html)
No comments yet. Be the first to comment!