GitHub Scanning
Search Query Patterns by Intent
Issues
| Intent |
Query Pattern |
Scope |
| Assigned to you |
is:open assignee:USERNAME |
All repos |
| You were @mentioned |
is:open mentions:USERNAME |
All repos |
| Authored by you |
is:open author:USERNAME |
All repos |
| Specific repo |
repo:owner/repo is:open |
Single repo |
| By keyword |
{keyword} is:open |
All repos |
| Org-wide |
org:ORGNAME is:open |
Org repos |
| Closed (for recap) |
is:closed author:USERNAME |
All repos |
Pull Requests
| Intent |
Query Pattern |
Scope |
| Awaiting your review |
review-requested:USERNAME state:open |
All repos |
| Your open PRs |
author:USERNAME state:open |
All repos |
| Assigned to you |
assignee:USERNAME state:open |
All repos |
| You reviewed, check for updates |
reviewed-by:USERNAME state:open |
All repos |
| Specific PR |
Fetch directly with owner, repo, number |
Single repo |
| Org-wide |
org:ORGNAME state:open |
Org repos |
Discussions
| Intent |
Action |
| You're mentioned |
Search with mentions:USERNAME |
| You're participating |
Search discussions you've commented on |
| High activity |
Filter for 10+ comments in last 24h |
| Linked to your issues |
Scan description/comments for issue references |
Releases
- Use
github_list_releases per repo - check for recent, draft, and pre-releases.
- Cross-reference merged PRs against release notes to identify unreleased work.
- Compare issue milestones against release schedules to flag upcoming deadline items.
Security
- Dependabot alerts: critical and high severity across monitored repos.
- Security advisories affecting dependencies.
- Pending dependency update PRs from
dependabot[bot] or renovate[bot].
CI/CD
- Fetch recent workflow runs - identify failing workflows, long jobs, and flaky tests.
- For failing workflows: note repo, workflow name, branch, failure reason, and link to run.
- Cross-reference user's open PRs against CI results.
Date Range Handling
Convert natural language to GitHub query qualifiers:
| User Says |
GitHub Qualifier |
| "last week" |
created:>YYYY-MM-DD (7 days ago) |
| "this month" |
created:>YYYY-MM-01 |
| "today" |
closed:YYYY-MM-DD |
| "this week" |
closed:>YYYY-MM-DD (7 days ago) |
| "between X and Y" |
created:X..Y |
| Not specified |
Use search.default_window from preferences (default: updated:>YYYY-MM-DD 30 days) - mention this assumption |
| "for current month" (a11y tracker) |
milestone:"{Month} {Year}" |
Scope Narrowing
Add qualifiers to narrow by scope when the user specifies one:
| Scope |
Qualifier |
| Single repo |
repo:owner/name |
| All org repos |
org:orgname |
| All repos by user |
user:username |
| Everything (default) |
No qualifier - searches all accessible repos |
Preferences File Integration
Read .github/agents/preferences.md and apply these filters before and after searching:
repos.discovery - determines the default search scope (all / starred / owned / configured / workspace).
repos.include - always include these repos even in restricted modes.
repos.exclude - skip these repos in all searches.
repos.overrides - per-repo settings:
track.issues: false -> skip issue searches for this repo
track.pull_requests: false -> skip PR searches for this repo
track.discussions: false -> skip discussions for this repo
track.releases: false -> skip release checks for this repo
track.security: false -> skip security alerts for this repo
track.ci: false -> skip CI status for this repo
labels.include / labels.exclude -> filter results by label
paths -> only trigger for changes touching these file paths (for PRs/CI)
assignees -> filter to specific assignees (empty = all)
search.default_window - default time range if the user doesn't specify one.
briefing.sections - which sections to include in the daily briefing.
accessibility_tracking - config for the a11y tracker (repos, labels, channels).
Cross-Repo Intelligence
When results arrive from different repos, look for and surface these patterns:
| Pattern |
Action |
| Cross-repo references |
When issue A contains owner/repo#N, fetch and surface item N |
| Shared label patterns |
Group items in different repos tagged P0 together in triage |
| Related PRs in different repos |
Flag: "This issue depends on PR #N in repo-B which is still open" |
| Merged PR not yet released |
Note: "Your PR #N is merged but not in any release yet" |
| Issue with merged fix PR |
Flag: "This may be resolved - PR #N that closes it was merged on {date}" |
| Branch naming patterns |
Group PRs in different repos using the same branch naming convention |
Parallel Stream Collection Model
For agents that collect from multiple data streams, run independent streams simultaneously. Don't serialize operations with no dependencies.
Example: Daily Briefing - 3 Parallel Batches
Batch 1 - fully independent, run simultaneously:
- Issues (assigned, mentioned, authored)
- Pull requests (review-requested, authored)
- Releases & deployments
- Accessibility updates
Batch 2 - run after Batch 1 (CI needs PR list from Batch 1):
- GitHub Discussions
- CI/CD health (cross-references PR list)
- Security alerts
Batch 3 - can overlap with Batch 2:
- Project board status
- Recently closed/merged work
Example: Analytics - 2 Parallel Batches
Batch 1 - collection (all independent):
- Closed/merged PRs in period
- Opened issues in period
- CI workflow runs in period
- Security alerts in period
Batch 2 - analysis (depends on Batch 1 data):
- Health score computation
- Velocity metrics calculation
- Bottleneck detection
Announcement Template for Parallel Work
Running {N} searches in parallel... ({scope})
Batch 1 complete - {X} items found
Running {N} additional searches...
Batch 2 complete - {Y} items found
Scoring and prioritizing...
Done - {Z} items need action, {W} to monitor
Auto-Recovery for Empty Results
If a search returns 0 results:
- Automatically broaden: remove date filter, expand scope to
all, or remove label filters.
- Tell the user exactly what changed: "No results in last 7 days - broadened to last 30 days and found 3 items."
- Never return 0 results without trying at least one broader query first.
Recovery cascade:
- First try: Remove date qualifier
- Second try: Expand scope (add org: or remove repo: qualifier)
- Third try: Remove label filters
- Report 0 results only if all three attempts return nothing
Pagination
- Paginate large result sets in batches of 10.
- Ask before loading more: "Showing 10 of 47. Load more?"
- Never silently truncate results - always disclose the total count.
Result Deduplication
When the same item appears in multiple searches (e.g., an issue you're both assigned to AND mentioned in):
- Show it once, with all context combined.
- In the Signal column, combine signals: "Assigned, @mentioned".
- In priority calculations, apply the highest-scoring signal, not additive.
Rate Limiting
- If rate-limited (403/429), tell the user the reset time in one sentence.
- Do not retry the same query - wait if reset is <60 seconds; otherwise report and move on.
- For multi-stream collection, skip rate-limited streams and complete them in a follow-up.
1---2name: github-scanning3description: Search GitHub for issues, PRs, discussions, releases, and alerts. Includes query construction, date range handling, repo scoping, and cross-repo intelligence.4---56# GitHub Scanning78## Search Query Patterns by Intent910### Issues1112| Intent | Query Pattern | Scope |13|--------|--------------|-------|14| Assigned to you | `is:open assignee:USERNAME` | All repos |15| You were @mentioned | `is:open mentions:USERNAME` | All repos |16| Authored by you | `is:open author:USERNAME` | All repos |17| Specific repo | `repo:owner/repo is:open` | Single repo |18| By keyword | `{keyword} is:open` | All repos |19| Org-wide | `org:ORGNAME is:open` | Org repos |20| Closed (for recap) | `is:closed author:USERNAME` | All repos |2122### Pull Requests2324| Intent | Query Pattern | Scope |25|--------|--------------|-------|26| Awaiting your review | `review-requested:USERNAME state:open` | All repos |27| Your open PRs | `author:USERNAME state:open` | All repos |28| Assigned to you | `assignee:USERNAME state:open` | All repos |29| You reviewed, check for updates | `reviewed-by:USERNAME state:open` | All repos |30| Specific PR | Fetch directly with owner, repo, number | Single repo |31| Org-wide | `org:ORGNAME state:open` | Org repos |3233### Discussions3435| Intent | Action |36|--------|--------|37| You're mentioned | Search with `mentions:USERNAME` |38| You're participating | Search discussions you've commented on |39| High activity | Filter for 10+ comments in last 24h |40| Linked to your issues | Scan description/comments for issue references |4142### Releases4344- Use `github_list_releases` per repo - check for recent, draft, and pre-releases.45- Cross-reference merged PRs against release notes to identify unreleased work.46- Compare issue milestones against release schedules to flag upcoming deadline items.4748### Security4950- Dependabot alerts: critical and high severity across monitored repos.51- Security advisories affecting dependencies.52- Pending dependency update PRs from `dependabot[bot]` or `renovate[bot]`.5354### CI/CD5556- Fetch recent workflow runs - identify failing workflows, long jobs, and flaky tests.57- For failing workflows: note repo, workflow name, branch, failure reason, and link to run.58- Cross-reference user's open PRs against CI results.5960---6162## Date Range Handling6364Convert natural language to GitHub query qualifiers:6566| User Says | GitHub Qualifier |67|-----------|-----------------|68| "last week" | `created:>YYYY-MM-DD` (7 days ago) |69| "this month" | `created:>YYYY-MM-01` |70| "today" | `closed:YYYY-MM-DD` |71| "this week" | `closed:>YYYY-MM-DD` (7 days ago) |72| "between X and Y" | `created:X..Y` |73| Not specified | Use `search.default_window` from preferences (default: `updated:>YYYY-MM-DD` 30 days) - mention this assumption |74| "for current month" (a11y tracker) | `milestone:"{Month} {Year}"` |7576---7778## Scope Narrowing7980Add qualifiers to narrow by scope when the user specifies one:8182| Scope | Qualifier |83|-------|-----------|84| Single repo | `repo:owner/name` |85| All org repos | `org:orgname` |86| All repos by user | `user:username` |87| Everything (default) | No qualifier - searches all accessible repos |8889---9091## Preferences File Integration9293Read `.github/agents/preferences.md` and apply these filters before and after searching:94951. **`repos.discovery`** - determines the default search scope (all / starred / owned / configured / workspace).962. **`repos.include`** - always include these repos even in restricted modes.973. **`repos.exclude`** - skip these repos in all searches.984. **`repos.overrides`** - per-repo settings:99 - `track.issues: false` -> skip issue searches for this repo100 - `track.pull_requests: false` -> skip PR searches for this repo101 - `track.discussions: false` -> skip discussions for this repo102 - `track.releases: false` -> skip release checks for this repo103 - `track.security: false` -> skip security alerts for this repo104 - `track.ci: false` -> skip CI status for this repo105 - `labels.include` / `labels.exclude` -> filter results by label106 - `paths` -> only trigger for changes touching these file paths (for PRs/CI)107 - `assignees` -> filter to specific assignees (empty = all)1085. **`search.default_window`** - default time range if the user doesn't specify one.1096. **`briefing.sections`** - which sections to include in the daily briefing.1107. **`accessibility_tracking`** - config for the a11y tracker (repos, labels, channels).111112---113114## Cross-Repo Intelligence115116When results arrive from different repos, look for and surface these patterns:117118| Pattern | Action |119|---------|--------|120| Cross-repo references | When issue A contains `owner/repo#N`, fetch and surface item N |121| Shared label patterns | Group items in different repos tagged `P0` together in triage |122| Related PRs in different repos | Flag: _"This issue depends on PR #N in repo-B which is still open"_ |123| Merged PR not yet released | Note: _"Your PR #N is merged but not in any release yet"_ |124| Issue with merged fix PR | Flag: _"This may be resolved - PR #N that closes it was merged on {date}"_ |125| Branch naming patterns | Group PRs in different repos using the same branch naming convention |126127---128129## Parallel Stream Collection Model130131For agents that collect from multiple data streams, run independent streams simultaneously. Don't serialize operations with no dependencies.132133### Example: Daily Briefing - 3 Parallel Batches134135**Batch 1 - fully independent, run simultaneously:**136137- Issues (assigned, mentioned, authored)138- Pull requests (review-requested, authored)139- Releases & deployments140- Accessibility updates141142**Batch 2 - run after Batch 1 (CI needs PR list from Batch 1):**143144- GitHub Discussions145- CI/CD health (cross-references PR list)146- Security alerts147148**Batch 3 - can overlap with Batch 2:**149150- Project board status151- Recently closed/merged work152153### Example: Analytics - 2 Parallel Batches154155**Batch 1 - collection (all independent):**156157- Closed/merged PRs in period158- Opened issues in period159- CI workflow runs in period160- Security alerts in period161162**Batch 2 - analysis (depends on Batch 1 data):**163164- Health score computation165- Velocity metrics calculation166- Bottleneck detection167168### Announcement Template for Parallel Work169170```text171 Running {N} searches in parallel... ({scope})172 Batch 1 complete - {X} items found173174 Running {N} additional searches...175 Batch 2 complete - {Y} items found176177 Scoring and prioritizing...178 Done - {Z} items need action, {W} to monitor179```180181---182183## Auto-Recovery for Empty Results184185If a search returns 0 results:1861871. Automatically broaden: remove date filter, expand scope to `all`, or remove label filters.1882. Tell the user exactly what changed: _"No results in last 7 days - broadened to last 30 days and found 3 items."_1893. Never return 0 results without trying at least one broader query first.190191Recovery cascade:1921931. First try: Remove date qualifier1942. Second try: Expand scope (add org: or remove repo: qualifier)1953. Third try: Remove label filters1964. Report 0 results only if all three attempts return nothing197198---199200## Pagination201202- Paginate large result sets in batches of 10.203- Ask before loading more: _"Showing 10 of 47. Load more?"_204- Never silently truncate results - always disclose the total count.205206---207208## Result Deduplication209210When the same item appears in multiple searches (e.g., an issue you're both assigned to AND mentioned in):211212- Show it once, with all context combined.213- In the Signal column, combine signals: _"Assigned, @mentioned"_.214- In priority calculations, apply the highest-scoring signal, not additive.215216---217218## Rate Limiting219220- If rate-limited (403/429), tell the user the reset time in one sentence.221- Do not retry the same query - wait if reset is <60 seconds; otherwise report and move on.222- For multi-stream collection, skip rate-limited streams and complete them in a follow-up.