| name | aim-github-search |
| description | Search GitHub issues, PRs, commits, and CI results with semantic search and filters |
| allowed-tools | Read, Bash |
Search GitHub - Semantic Search for GitHub Content
Search the github collection for GitHub-sourced content using semantic similarity with advanced filtering.
Activation
# Basic semantic search
/aim-github-search "authentication bug"
# Filter by type
/aim-github-search "API refactoring" --type github_pr
/aim-github-search "CI failures" --type github_ci_result
# Filter by state
/aim-github-search "deployment fix" --state merged
# Combine filters
/aim-github-search "security" --type github_issue --limit 10
Options
--type <type> - Filter by GitHub document type: github_issue, github_pr, github_commit, github_ci_result, github_code_blob, github_issue_comment, github_pr_review, github_pr_diff
--state <state> - Filter by state: open, closed, merged
--limit <n> - Maximum results to return (default: 5)
Result Format
Each result includes:
- GitHub URL - Direct link
- Metadata badges - Type, State, Date
- Content snippet - First ~300 characters
- Relevance score - Semantic similarity with decay (0-100%)
Qdrant Connection Details
GitHub content is stored in the github collection:
| Parameter | Value |
|---|
| Host | localhost |
| Port | 26350 (NOT the default 6333) |
| API Key | Required. Read from env: QDRANT_API_KEY |
| Collection | github |
| URL | http://localhost:26350 |
Qdrant Payload Schema
Every GitHub point in github has the following payload fields. Use these exact names for filtering.
Common Fields (all GitHub points)
| Field | Type | Description | Example |
|---|
content | string | Composed document text | "[PR #42] Add decay scoring..." |
type | string | Document type | "github_pr", "github_issue" |
source | string | Always "github" | "github" |
group_id | string | normalized lowercase owner/repo | "hidden-history/ai-memory" |
github_id | int | Issue/PR number | 42 |
state | string | Current state | "open", "closed", "merged" |
url | string | GitHub URL | "https://github.com/..." |
github_updated_at | string | ISO 8601 from GitHub API | "2026-02-16T..." |
files_changed | list[string] | Files touched (PRs, commits) | ["src/memory/decay.py"] |
labels | list[string] | Issue/PR labels | ["bug", "v2.0.6"] |
merged_at | string or null | PR merge timestamp | "2026-02-16T..." |
is_current | bool | Versioning: latest version | true |
Direct Query Examples
Use query.py for direct Qdrant queries. The script applies source=github automatically
and accepts optional --type, --state, --limit, and --format flags.
Search by source
bash "${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/scripts/memory/run-with-env.sh" \
"${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/_ai-memory/skills/aim-github-search/scripts/query.py" \
--group-id "owner/repo-name"
Filter by type and state
bash "${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/scripts/memory/run-with-env.sh" \
"${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/_ai-memory/skills/aim-github-search/scripts/query.py" \
--group-id "owner/repo-name" --type github_pr --state merged --limit 20
Count GitHub points in collection
bash "${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/scripts/memory/run-with-env.sh" \
"${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/_ai-memory/skills/aim-github-search/scripts/query.py" \
--group-id "owner/repo-name" --format count
Query Script Reference
The parameterized query script at _ai-memory/skills/aim-github-search/scripts/query.py implements
the source=github + group_id filter pattern. It accepts:
python3 query.py \
--group-id GROUP_ID # required; e.g. "hidden-history/ai-memory"
[--type TYPE] # github_issue | github_pr | github_commit |
# github_ci_result | github_code_blob |
# github_issue_comment | github_pr_review | github_pr_diff
[--state STATE] # open | closed | merged
[--limit N] # default: 10
[--format table|json|count] # default: table; count uses Qdrant count endpoint (exact=true)
[--collection COLL] # default: github; use to query a different collection
Run via run-with-env.sh so memory.* imports and QDRANT_API_KEY are resolved automatically:
bash "${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/scripts/memory/run-with-env.sh" \
"${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}/_ai-memory/skills/aim-github-search/scripts/query.py" \
--group-id "hidden-history/ai-memory" --type github_pr --state merged
Technical Details
- Semantic Search: Uses jina-embeddings-v2-base-en for vector similarity
- Tenant Isolation: Mandatory group_id filter prevents cross-repo leakage
- Performance: < 2s for typical searches
- Collection: github (dedicated collection for GitHub-sourced content, per PLAN-010)
- Score Threshold: Configurable via SIMILARITY_THRESHOLD (default 0.7)
- Port: 26350 (NOT the Qdrant default of 6333)
- API Key: Required -- stored in
~/.ai-memory/docker/.env as QDRANT_API_KEY
- Decay Scoring: Applied to results via existing search path
Notes
- GitHub repo is auto-detected from project configuration
- Results sorted by relevance score (highest first)
- All filters are optional except the search query
- Use exact field names from the schema above --
source NOT namespace, type NOT doc_type
- The
source="github" filter is always applied to restrict results to GitHub content
- The
group_id filter is always applied for mandatory tenant isolation (prevents cross-repo leakage)