Pack GitHub Issues & Pull Requests into a single AI-ready context file.
AI coding agents understand your code — but they have no idea what bugs are open, which PRs are in flight, or what discussions are happening in your issue tracker. repissue fills that gap.
One command produces a structured, signal-dense file you can drop straight into any LLM's context window alongside a Repomix code snapshot:
npx repissue facebook/react
# → repissue-output.md (~28,400 tokens of structured issue/PR context)- Why repissue?
- Installation
- Quickstart
- CLI Flags
- Configuration File
- Output Styles
- Composing with Repomix
- Using with AI Agents
- Rate Limits & Authentication
- Security Scanning
- License
When you feed a codebase to an AI agent with Repomix, the agent knows everything about the source — but nothing about the live project state. It might:
- Suggest a fix for a bug that's already being worked on in an open PR.
- Duplicate effort on a feature that's halfway through review.
- Miss the discussion in issue #312 that explains why a particular design decision was made.
repissue is the complementary tool. Together they give an agent complete situational awareness:
repomix output → everything the code is
repissue output → everything that needs to change
Zero-install via npx (recommended)
npx repissue owner/repoGlobal install
npm install -g repissue
repissue owner/repoAs a project dependency
npm install --save-dev repissueRequires Node.js ≥ 18.
# Set your token first (see Rate Limits & Authentication below)
export GITHUB_TOKEN=ghp_your_token_here # bash/zsh
$env:GITHUB_TOKEN="ghp_your_token_here" # PowerShell
# Fetch open issues and PRs
npx repissue facebook/react
# XML output — pairs perfectly with a Repomix XML snapshot
npx repissue owner/repo --style xml
# Issues only, no PRs
npx repissue owner/repo --no-prs
# Include PRs merged in the last 14 days
npx repissue owner/repo --include-merged-days 14
# Print to stdout
npx repissue owner/repo --stdout
# Append directly to an existing Repomix output
repomix && npx repissue owner/repo --append-to repomix-output.xmlAfter running, repissue prints a summary:
✓ Packed 47 issues and 12 PRs
Issues: 47
PRs: 12
Tokens: ~28,400
→ repissue-output.md
Warning
Always set a GITHUB_TOKEN before running repissue.
Without a token, GitHub allows only 60 requests per hour — shared across your entire machine. A single run against a repo with 50+ issues will exhaust that quota immediately, locking you out for up to an hour. With a token, the limit rises to 5,000 requests per hour, which is enough for any repo.
See Rate Limits & Authentication for full setup instructions.
| Flag | Default | Description |
|---|---|---|
<owner/repo> |
(required) | GitHub repository, e.g. facebook/react |
-o, --output <path> |
auto | Output file path. Defaults to repissue-output.{md,txt,xml} based on style |
--style <format> |
markdown |
Output style: markdown, plain, or xml |
--token <token> |
$GITHUB_TOKEN |
GitHub personal access token |
--no-issues |
— | Skip issues; output PRs only |
--no-prs |
— | Skip PRs; output issues only |
--include-merged-days <n> |
— | Also include PRs merged within the last N days |
--include-closed-days <n> |
— | Also include issues closed within the last N days |
--label-priority <labels> |
bug,security,P0 |
Comma-separated labels to float to the top |
--max-comments <n> |
50 |
Maximum comments to include per issue or PR |
--no-bots |
— | Filter out all bot-authored issues, PRs, and comments |
--header-text <text> |
— | Custom text embedded at the top of the output |
-c, --config <path> |
auto | Path to repissue.config.json |
--init |
— | Create a starter repissue.config.json in the current directory |
--stdout |
— | Print output to stdout instead of writing a file |
--append-to <file> |
— | Append the issues/PRs block to an existing file |
--split-output <bytes> |
— | Split output into multiple files if it exceeds N bytes |
--copy |
— | Copy output to clipboard after writing |
--security-check |
— | Warn if the output appears to contain secrets or credentials |
--quiet |
— | Suppress all output except errors |
File extension auto-selection — when --output is not specified, repissue picks the right extension for the chosen style: .md for markdown, .txt for plain, .xml for xml. If you pass --output explicitly, the extension is left as-is.
--append-to and --split-output cannot be combined with --stdout, and cannot be combined with each other.
--copy with --split-output — when output is split into multiple files, --copy is skipped with a warning.
Run repissue --init to generate a starter config in the current directory:
npx repissue --init{
"output": {
"filePath": "repissue-output.md",
"style": "markdown",
"fileSummary": true
},
"github": {
"includeIssues": true,
"includePRs": true,
"labelPriority": ["bug", "security", "P0"],
"ignoreBots": true,
"knownBots": [
"dependabot[bot]",
"renovate[bot]",
"github-actions[bot]"
],
"maxCommentsPerItem": 50
},
"security": {
"enableCheck": false
}
}CLI flags always take precedence over the config file.
| Field | Type | Default | Description |
|---|---|---|---|
filePath |
string | "repissue-output.md" |
Output file path |
style |
"markdown" | "plain" | "xml" |
"markdown" |
Output format |
fileSummary |
boolean | true |
Include a short summary section at the top of the file |
headerText |
string | — | Optional custom text inserted at the very top |
| Field | Type | Default | Description |
|---|---|---|---|
token |
string | — | GitHub PAT. Prefer the GITHUB_TOKEN env var over storing a token in the file |
includeIssues |
boolean | true |
Fetch and include open issues |
includePRs |
boolean | true |
Fetch and include open pull requests |
includeMergedDays |
number | — | Include PRs merged within the last N days |
includeClosedDays |
number | — | Include issues closed within the last N days |
labelPriority |
string[] | ["bug","security","P0"] |
Labels whose items appear first. Order matters — first label = highest priority |
ignoreBots |
boolean | true |
Filter out issues, PRs, and comments by bot accounts |
knownBots |
string[] | ["dependabot[bot]",…] |
Extra bot logins to filter. Any login ending in [bot] is always treated as a bot |
maxCommentsPerItem |
number | 50 |
Maximum comments per issue or PR, after noise filtering |
| Field | Type | Default | Description |
|---|---|---|---|
enableCheck |
boolean | false |
Scan output for secret-like patterns and warn before writing |
Structured Markdown with collapsible <details> blocks per issue and PR. Readable by humans, ideal for LLMs. Here's what the output looks like when rendered:
Example output (illustrative)
| 🕐 Generated | 2026-04-03T14:22:00Z |
| 📁 Repository | facebook/react |
| 🐛 Open Issues | 47 |
| 🔀 Open PRs | 12 |
🐛 Issues (47)
⚠️ bug #312 — Auth token not refreshed on 401 📅 2026-03-15 · 👤 alice · 💬 8
🔗 URL: facebook/react#312 🔁 Closes: #318
When the access token expires mid-session, the client throws an unhandled promise rejection rather than refreshing…
👤 bob · 📅 2026-03-16
Confirmed on v2.x as well.
👤 alice · 📅 2026-03-17
Root cause is in
refreshToken()— the promise chain drops the error.
Plain text with ASCII dividers — no Markdown interpretation, safe for any toolchain.
📋 repissue — facebook/react
🕐 Generated : 2026-04-03T14:22:00Z
🐛 Issues : 47 open
🔀 PRs : 12 open
================================================================================
🐛 ISSUES (47)
================================================================================
#312 — Auth token not refreshed on 401
⚠️ bug
📅 Opened : 2026-03-15
👤 Author : alice
🔗 URL : https://github.com/facebook/react/issues/312
Structured XML — well-suited for programmatic parsing and for feeding into tools that already consume XML (like Repomix's XML output).
<?xml version="1.0" encoding="UTF-8"?>
<repissue>
<metadata>
<repository>facebook/react</repository>
<open_issues>47</open_issues>
<open_prs>12</open_prs>
</metadata>
<issues count="47">
<issue number="312">
<title>Auth token not refreshed on 401</title>
...
</issue>
</issues>
</repissue>repissue is designed to be used alongside Repomix. Repomix packs the code; repissue packs the live project state. Feed both to an agent for complete context.
repomix
npx repissue owner/repo
claude --file repomix-output.xml --file repissue-output.xml \
"Fix the bug described in issue #312"The --append-to flag inserts a <repissue_append> block before the closing root tag of an existing XML file, keeping the document well-formed:
repomix # → repomix-output.xml
npx repissue owner/repo --append-to repomix-output.xml # appends inside </repomix>
claude --file repomix-output.xml "Implement the feature in issue #88"For Markdown, --append-to appends a ## repissue section to the end of the file:
repomix --style markdown
npx repissue owner/repo --append-to repomix-output.mdclaude --file repissue-output.md "What are the most critical open bugs?"
# Combined with Repomix
repomix && npx repissue owner/repo --append-to repomix-output.xml
claude --file repomix-output.xml "Fix the highest-priority open issue"- name: Generate issue context
run: npx repissue ${{ github.repository }} --output repissue-output.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run agent
run: my-agent --context repissue-output.mdDrop repissue-output.md into your workspace and reference it in chat:
@repissue-output.md What bugs are blocking the v2.0 release?
| Mode | Limit | Reality |
|---|---|---|
| ❌ Unauthenticated | 60 requests / hour | Exhausted by a single mid-sized repo. Cooldown is up to 1 hour. |
✅ Authenticated (GITHUB_TOKEN) |
5,000 requests / hour | Enough for any repo, including large ones with hundreds of issues. |
GitHub's unauthenticated limit is shared across all processes on your machine using the same IP address. Running repissue without a token against a repo with 50+ issues will hit the cap in seconds — and you won't be able to run it again until the hour resets. A token is not optional in practice.
1. Create a token
GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token.
- Public repos: no scopes needed.
- Private repos: select the
reposcope.
2. Set the environment variable
# bash/zsh — add to ~/.bashrc or ~/.zshrc to make it permanent
export GITHUB_TOKEN=ghp_your_token_here
npx repissue owner/repo
# PowerShell
$env:GITHUB_TOKEN="ghp_your_token_here"
npx repissue owner/repoYou can also pass it inline for a one-off run, though the token will be visible in your process list:
GITHUB_TOKEN=ghp_xxx npx repissue owner/repoOr store it in repissue.config.json — though the env var is strongly preferred to avoid accidentally committing credentials.
repissue automatically waits and retries up to 3 times using the reset time from GitHub's response headers. If all retries are exhausted, it exits with a clear error message telling you exactly when the limit resets.
Enable with --security-check or in your config:
{ "security": { "enableCheck": true } }Detected patterns include: GitHub tokens, AWS access keys, API secret keys (sk- prefix), PEM private key headers, Slack tokens, Stripe keys, SendGrid API keys, and generic password/secret assignments.
Note: repissue always writes the output file regardless of scan hits. It warns you so you can review and rotate credentials — it does not block or redact content.
MIT License
