github-cli-queries · git:20260424.d50cf5a · 2026-04-24 · sha256 1e7fbcf4b838ba3c

github-cli-queries git:20260424.d50cf5aA

Immutable. This exact content never changes and is served at /api/v1/blob/1e7fbcf4b838ba3c.

---
name: github-cli-queries
description: Query GitHub repositories for PRs and issues using gh CLI with date filtering and structured output.
---

# GitHub CLI Query Skill

## Overview
Use the `gh` CLI tool to efficiently query GitHub pull requests and issues with filtering, date range support, and structured JSON output.

## Installation & Setup
```bash
# gh CLI is typically pre-installed on most systems
gh --version

# Ensure you're authenticated
gh auth status

# If not authenticated
gh auth login
```

## Basic Patterns

### Query Pull Requests by Date Range
```bash
# List PRs created in December 2024 with JSON output
gh pr list --repo cli/cli --state all --created "2024-12-01..2024-12-31" --json number,title,createdAt,mergedAt,closedAt,author --limit 500

# Key fields in JSON output:
# - number: PR number
# - title: PR title
# - createdAt: when PR was created (ISO 8601)
# - mergedAt: when PR was merged (null if not merged)
# - closedAt: when PR was closed (null if still open)
# - author: {login: string, name: string}
```

### Query Issues by Date Range
```bash
# List issues created in December 2024
gh issue list --repo cli/cli --state all --created "2024-12-01..2024-12-31" --json number,title,createdAt,closedAt,labels --limit 500

# Key fields:
# - number: issue number
# - title: issue title
# - createdAt: when issue was created (ISO 8601)
# - closedAt: when issue was closed (null if still open)
# - labels: array of label objects with name and description
```

## Date Format
- Use ISO 8601 format: `YYYY-MM-DD`
- Date ranges: `YYYY-MM-DD..YYYY-MM-DD`
- The range is inclusive on both ends

## State Filtering
- `--state all`: Include open, closed, and merged (for PRs)
- `--state open`: Only open items
- `--state closed`: Only closed items (for issues) or merged/closed (for PRs)

## Common Flags
- `--limit N`: Set maximum results (default 30, max typically 500)
- `--json <fields>`: Request specific fields as JSON
- `--repo owner/repo`: Specify repository

## Date Parsing Tips
- Always capture both `createdAt` and `mergedAt`/`closedAt` to calculate deltas
- Handle null values when calculating metrics
- Parse ISO 8601 timestamps in your processing language

## Example: Full PR Data Export
```bash
gh pr list --repo cli/cli --state all --created "2024-12-01..2024-12-31" \
  --json number,title,createdAt,mergedAt,closedAt,author,labels \
  --limit 500 > prs.json
```

## Performance Notes
- Large result sets (500+ items) may take time to process
- Use `--limit` to control result size
- JSON output is faster than parsing text output
- Paginate if needed by using multiple queries with different date ranges