Search Jira - Semantic Search for Jira Content
Search the jira-data collection for issues and comments using semantic similarity with advanced filtering.
Activation
# Basic semantic search
/aim-jira-search "authentication bug"
# Filter by project
/aim-jira-search "API errors" --project BMAD
# Filter by type (issue or comment)
/aim-jira-search "implementation details" --type jira_comment
# Filter by issue type
/aim-jira-search "bugs" --issue-type Bug
# Filter by status
/aim-jira-search "in progress work" --status "In Progress"
# Filter by priority
/aim-jira-search "critical issues" --priority High
# Filter by author (comments) or reporter (issues)
/aim-jira-search "alice's comments" --author alice@company.com
# Issue lookup mode (issue + all comments)
/aim-jira-search --issue BMAD-42
# Combine filters
/aim-jira-search "database" --project BMAD --issue-type Bug --status Done --limit 10
Options
--project <key> - Filter by Jira project key (e.g., BMAD, PROJ)
--type <type> - Filter by document type (jira_issue or jira_comment)
--issue-type <type> - Filter by issue type (Bug, Story, Task, Epic)
--status <status> - Filter by issue status (To Do, In Progress, Done, etc.)
--priority <priority> - Filter by priority (Highest, High, Medium, Low, Lowest)
--author <email> - Filter by comment author or issue reporter
--issue <key> - Lookup mode: retrieve issue + all comments (e.g., BMAD-42)
--limit <n> - Maximum results to return (default: 5)
Result Format
Each result includes:
- Jira URL - Direct link to issue/comment
- Metadata badges - Type, Status, Priority, Author/Reporter
- Content snippet - First ~300 characters
- Relevance score - Semantic similarity (0-100%)
Qdrant Connection Details
The jira-data collection is stored in the local Qdrant instance:
| Parameter |
Value |
| Host |
localhost |
| Port |
26350 (NOT the default 6333) |
| API Key |
Required. Read from env: QDRANT_API_KEY |
| Collection |
jira-data |
| URL |
http://localhost:26350 |
Qdrant Payload Schema
Every point in jira-data has the following payload fields. Use these exact names for filtering — do NOT guess field names like project_key or issue_key.
Common Fields (all points)
| Field |
Type |
Description |
Example |
content |
string |
Full text content of issue/comment |
"[PROJ-123] Fix login bug..." |
type |
string |
Document type |
"jira_issue" or "jira_comment" |
group_id |
string |
Jira instance hostname (tenant isolation) |
"hidden-history.atlassian.net" |
session_id |
string |
Always "jira_sync" |
"jira_sync" |
jira_project |
string |
Project key |
"BMAD" |
jira_issue_key |
string |
Full issue key |
"BMAD-42" |
jira_issue_type |
string |
Issue type name |
"Bug", "Story", "Task", "Epic" |
jira_status |
string |
Issue status |
"To Do", "In Progress", "Done" |
jira_priority |
string or null |
Priority level |
"High", "Medium", "Low", null |
jira_updated |
string |
ISO 8601 timestamp |
"2026-02-10T14:30:00.000+0000" |
jira_url |
string |
Full Jira URL |
"https://company.atlassian.net/browse/BMAD-42" |
Issue-Only Fields (type: "jira_issue")
| Field |
Type |
Description |
Example |
jira_reporter |
string |
Issue reporter display name |
"Alice Smith" |
jira_labels |
list[string] |
Issue labels |
["backend", "auth"] |
Comment-Only Fields (type: "jira_comment")
| Field |
Type |
Description |
Example |
jira_comment_id |
string |
Jira comment ID |
"10042" |
jira_author |
string |
Comment author display name |
"Bob Jones" |
Chunking Metadata (if content was chunked)
| Field |
Type |
Description |
chunk_index |
int |
Chunk sequence number (0-based) |
total_chunks |
int |
Total chunks for this document |
chunking_strategy |
string |
Strategy used (e.g., "topical") |
Direct Query Examples
Use query.py via run-with-env.sh for all direct Qdrant queries. Auth and
connection are handled by the standard memory.* config layer — no manual API
key export required.
INSTALL="${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}"
QUERY="$INSTALL/_ai-memory/skills/aim-jira-search/scripts/query.py"
# Search by project key (table output)
"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \
--project BMAD --limit 10
# Filter by issue type and status
"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \
--project BMAD --issue-type Bug --status Done --limit 20
# Count points and vectors in the collection
"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" --count
# Get all comments for a specific issue
"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \
--issue-key BMAD-42 --doc-type jira_comment --limit 50
# JSON output for programmatic use
"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \
--project BMAD --format json --limit 5
Available flags (use exact Qdrant payload field values — see schema above):
--project — project key (e.g., BMAD)
--issue-type — issue type (e.g., Bug, Story, Task, Epic)
--status — status (e.g., "In Progress", Done)
--issue-key — full issue key (e.g., BMAD-42)
--doc-type — document type (jira_issue or jira_comment)
--limit — max results (default: 10)
--format — table (default) or json
--count — return collection info counts instead of scroll
Python Implementation Reference
The src/memory/connectors/jira/search.py module is not importable from
external scripts — use query.py (above) for direct Qdrant access.
Technical Details
- Semantic Search: Uses jina-embeddings-v2-base-en for vector similarity
- Tenant Isolation: Mandatory group_id filter prevents cross-instance leakage
- Performance: < 2s for typical searches
- Collection: jira-data (issues and comments)
- 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
Notes
- Jira instance URL is auto-detected from project configuration
- Results sorted by relevance score (highest first)
- Issue lookup mode returns chronologically sorted comments
- All filters are optional except query (or --issue for lookup mode)
- Use exact field names from the schema above —
jira_project NOT project_key, jira_issue_key NOT issue_key
1---2name: aim-jira-search3description: Search Jira issues and comments with semantic search and filters4---56# Search Jira - Semantic Search for Jira Content78Search the jira-data collection for issues and comments using semantic similarity with advanced filtering.910## Activation1112```text13# Basic semantic search14/aim-jira-search "authentication bug"1516# Filter by project17/aim-jira-search "API errors" --project BMAD1819# Filter by type (issue or comment)20/aim-jira-search "implementation details" --type jira_comment2122# Filter by issue type23/aim-jira-search "bugs" --issue-type Bug2425# Filter by status26/aim-jira-search "in progress work" --status "In Progress"2728# Filter by priority29/aim-jira-search "critical issues" --priority High3031# Filter by author (comments) or reporter (issues)32/aim-jira-search "alice's comments" --author alice@company.com3334# Issue lookup mode (issue + all comments)35/aim-jira-search --issue BMAD-423637# Combine filters38/aim-jira-search "database" --project BMAD --issue-type Bug --status Done --limit 1039```4041## Options4243- `--project <key>` - Filter by Jira project key (e.g., BMAD, PROJ)44- `--type <type>` - Filter by document type (jira_issue or jira_comment)45- `--issue-type <type>` - Filter by issue type (Bug, Story, Task, Epic)46- `--status <status>` - Filter by issue status (To Do, In Progress, Done, etc.)47- `--priority <priority>` - Filter by priority (Highest, High, Medium, Low, Lowest)48- `--author <email>` - Filter by comment author or issue reporter49- `--issue <key>` - Lookup mode: retrieve issue + all comments (e.g., BMAD-42)50- `--limit <n>` - Maximum results to return (default: 5)5152## Result Format5354Each result includes:55- **Jira URL** - Direct link to issue/comment56- **Metadata badges** - Type, Status, Priority, Author/Reporter57- **Content snippet** - First ~300 characters58- **Relevance score** - Semantic similarity (0-100%)5960---6162## Qdrant Connection Details6364The jira-data collection is stored in the local Qdrant instance:6566| Parameter | Value |67|-----------|-------|68| **Host** | `localhost` |69| **Port** | `26350` (NOT the default 6333) |70| **API Key** | Required. Read from env: `QDRANT_API_KEY` |71| **Collection** | `jira-data` |72| **URL** | `http://localhost:26350` |7374---7576## Qdrant Payload Schema7778Every point in `jira-data` has the following payload fields. Use these **exact names** for filtering — do NOT guess field names like `project_key` or `issue_key`.7980### Common Fields (all points)8182| Field | Type | Description | Example |83|-------|------|-------------|---------|84| `content` | string | Full text content of issue/comment | `"[PROJ-123] Fix login bug..."` |85| `type` | string | Document type | `"jira_issue"` or `"jira_comment"` |86| `group_id` | string | Jira instance hostname (tenant isolation) | `"hidden-history.atlassian.net"` |87| `session_id` | string | Always `"jira_sync"` | `"jira_sync"` |88| `jira_project` | string | Project key | `"BMAD"` |89| `jira_issue_key` | string | Full issue key | `"BMAD-42"` |90| `jira_issue_type` | string | Issue type name | `"Bug"`, `"Story"`, `"Task"`, `"Epic"` |91| `jira_status` | string | Issue status | `"To Do"`, `"In Progress"`, `"Done"` |92| `jira_priority` | string or null | Priority level | `"High"`, `"Medium"`, `"Low"`, `null` |93| `jira_updated` | string | ISO 8601 timestamp | `"2026-02-10T14:30:00.000+0000"` |94| `jira_url` | string | Full Jira URL | `"https://company.atlassian.net/browse/BMAD-42"` |9596### Issue-Only Fields (`type: "jira_issue"`)9798| Field | Type | Description | Example |99|-------|------|-------------|---------|100| `jira_reporter` | string | Issue reporter display name | `"Alice Smith"` |101| `jira_labels` | list[string] | Issue labels | `["backend", "auth"]` |102103### Comment-Only Fields (`type: "jira_comment"`)104105| Field | Type | Description | Example |106|-------|------|-------------|---------|107| `jira_comment_id` | string | Jira comment ID | `"10042"` |108| `jira_author` | string | Comment author display name | `"Bob Jones"` |109110### Chunking Metadata (if content was chunked)111112| Field | Type | Description |113|-------|------|-------------|114| `chunk_index` | int | Chunk sequence number (0-based) |115| `total_chunks` | int | Total chunks for this document |116| `chunking_strategy` | string | Strategy used (e.g., `"topical"`) |117118---119120## Direct Query Examples121122Use `query.py` via `run-with-env.sh` for all direct Qdrant queries. Auth and123connection are handled by the standard `memory.*` config layer — no manual API124key export required.125126```bash127INSTALL="${AI_MEMORY_INSTALL_DIR:-$HOME/.ai-memory}"128QUERY="$INSTALL/_ai-memory/skills/aim-jira-search/scripts/query.py"129130# Search by project key (table output)131"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \132 --project BMAD --limit 10133134# Filter by issue type and status135"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \136 --project BMAD --issue-type Bug --status Done --limit 20137138# Count points and vectors in the collection139"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" --count140141# Get all comments for a specific issue142"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \143 --issue-key BMAD-42 --doc-type jira_comment --limit 50144145# JSON output for programmatic use146"$INSTALL/scripts/memory/run-with-env.sh" "$QUERY" \147 --project BMAD --format json --limit 5148```149150Available flags (use exact Qdrant payload field values — see schema above):151- `--project` — project key (e.g., `BMAD`)152- `--issue-type` — issue type (e.g., `Bug`, `Story`, `Task`, `Epic`)153- `--status` — status (e.g., `"In Progress"`, `Done`)154- `--issue-key` — full issue key (e.g., `BMAD-42`)155- `--doc-type` — document type (`jira_issue` or `jira_comment`)156- `--limit` — max results (default: 10)157- `--format` — `table` (default) or `json`158- `--count` — return collection info counts instead of scroll159160---161162## Python Implementation Reference163164The `src/memory/connectors/jira/search.py` module is **not importable from165external scripts** — use `query.py` (above) for direct Qdrant access.166167## Technical Details168169- **Semantic Search**: Uses jina-embeddings-v2-base-en for vector similarity170- **Tenant Isolation**: Mandatory group_id filter prevents cross-instance leakage171- **Performance**: < 2s for typical searches172- **Collection**: jira-data (issues and comments)173- **Score Threshold**: Configurable via SIMILARITY_THRESHOLD (default 0.7)174- **Port**: 26350 (NOT the Qdrant default of 6333)175- **API Key**: Required — stored in `~/.ai-memory/docker/.env` as `QDRANT_API_KEY`176177## Notes178179- Jira instance URL is auto-detected from project configuration180- Results sorted by relevance score (highest first)181- Issue lookup mode returns chronologically sorted comments182- All filters are optional except query (or --issue for lookup mode)183- Use **exact field names** from the schema above — `jira_project` NOT `project_key`, `jira_issue_key` NOT `issue_key`