gitlab-search

Original🇺🇸 English
Translated

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.

2installs
Added on

NPX Install

npx skill4agent add grandcamel/gitlab-assistant-skills gitlab-search

Search Skill

Search operations for GitLab using
glab api
raw endpoint calls.

Quick Reference

OperationCommand PatternRisk
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

ScopeDescriptionAvailable At
projects
Search project names/descriptionsGlobal, Group
issues
Search issue titles/descriptionsGlobal, Group, Project
merge_requests
Search MR titles/descriptionsGlobal, Group, Project
milestones
Search milestone titlesGlobal, Group, Project
snippet_titles
Search snippet titlesGlobal
wiki_blobs
Search wiki contentGlobal, Group, Project
commits
Search commit messagesGlobal, Group, Project
blobs
Search code/file contentGlobal, Group, Project
notes
Search commentsGlobal, Group, Project
users
Search usernames/namesGlobal

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

ForSearch 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

IssueCauseSolution
Empty resultsNo matches or no accessVerify search term, check permissions
Partial resultsPagination neededUse
--paginate
flag
400 Bad RequestInvalid scopeCheck scope is valid for endpoint
Slow searchLarge result setAdd filters or narrow scope
No code resultsBasic search disabledContact 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