AI-powered GitHub issue automation framework
Project description
BeneIssue
AI-Agentic issue automation for GitHub.
Drowning in GitHub issues? Install beneissue once, and it handles the rest automatically.
Who is this for?
- Open source maintainers with 100+ issues piling up
- Small teams who can't afford to manually label every issue
- Solo developers who want typo fixes handled automatically
What changes after you install it?
| Before | After |
|---|---|
| Issue opened → check it days later | Issue opened → instantly classified + labeled |
| Manually comment "need more info" | Auto-asks specific follow-up questions |
| Fix simple bugs yourself | Auto-eligible issues get auto-PR via Claude Code |
How it works
Three stages:
| Stage | What it does | Model |
|---|---|---|
| Triage | Classify issue → valid / invalid / duplicate / needs-info | Haiku (fast, ~$0.02) |
| Analyze | Find affected files, plan fix approach, check eligibility | Sonnet |
| Fix | Create branch, apply fix, open PR | Claude Code |
Install once, runs forever
1. Install the package
pip install beneissue
2. Set up GitHub repository
Secrets: Go to Settings → Secrets and variables → Actions:
| Secret | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
Yes | Your Claude API key |
LANGCHAIN_API_KEY |
No | LangSmith for tracing |
Permissions: Go to Settings → Actions → General → Workflow permissions:
- Enable "Allow GitHub Actions to create and approve pull requests"
3. Initialize in your repo
cd your-repo
beneissue init
git push
This creates:
your-repo/
├── .github/workflows/
│ └── beneissue-workflow.yml # Triggers on issue events
└── .claude/skills/beneissue/
├── SKILL.md # Claude Code instructions
└── beneissue-config.yml # Your settings
That's it. From now on:
- New issue opened → automatically triaged and labeled
- Auto-eligible issues → Claude Code creates a PR
- Need manual control? → just comment on the issue
Control via issue comments
@beneissue triage # Re-classify this issue
@beneissue analyze # Run full analysis
@beneissue fix # Attempt auto-fix now
No CLI needed. Just talk to the bot in the issue thread.
GitHub Actions triggers
| Event | Trigger | Action |
|---|---|---|
| Issue opened/reopened | Automatic | Runs analyze (triage → analyze) |
@beneissue triage |
Comment | Re-classify the issue |
@beneissue analyze |
Comment | Run full analysis |
@beneissue fix |
Comment | Attempt auto-fix now |
@beneissue run |
Comment | Full pipeline: triage → analyze → fix |
Verify it's working
When issues get these labels automatically, you're set:
triage/valid— Valid issue, ready for workfix/auto-eligible— Will be auto-fixed
Configuration
Edit .claude/skills/beneissue/beneissue-config.yml:
version: "1.0"
models:
triage: claude-haiku-4-5 # Fast, cheap (~$0.02/call)
limits:
daily:
triage: 50 # ~$1/day
analyze: 20 # ~$2-10/day
fix: 5 # ~$5-25/day
team:
- github_id: "your-github-id"
available: true
specialties: ["backend", "python"]
observability:
langsmith:
enabled: true
project: "beneissue"
Labels
| Label | Meaning |
|---|---|
triage/valid |
Valid issue, ready for analysis |
triage/invalid |
Out of scope or spam |
triage/duplicate |
Already reported |
triage/needs-info |
Waiting for more details |
fix/auto-eligible |
Passes checklist, will be auto-fixed |
fix/manual-required |
Needs human review |
fix/completed |
Auto-fix PR created |
CLI (optional)
For manual runs or debugging:
| Command | Description |
|---|---|
beneissue triage <repo> --issue <n> |
Classify issue only |
beneissue analyze <repo> --issue <n> |
Analyze issue only (no triage, no fix) |
beneissue fix <repo> --issue <n> |
Fix issue only (no triage, no analysis) |
beneissue run <repo> --issue <n> |
Full workflow: triage → analyze → fix |
beneissue init |
Initialize beneissue in current repo |
beneissue labels |
Sync labels to repository |
beneissue test |
Run policy tests |
Add --dry-run to triage/analyze to skip GitHub actions.
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file beneissue-1.0.12.tar.gz.
File metadata
- Download URL: beneissue-1.0.12.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dc018a14a072661b4270d7d59c0bd166399997f18541bc2cde1644bccedb95b
|
|
| MD5 |
776a6045c5bb76d65b63f7eb62ee813b
|
|
| BLAKE2b-256 |
26d5fd821528b3cd8805edbb26d09e361cd9e41add90efd5c0080ea2d90f44fd
|
Provenance
The following attestation bundles were made for beneissue-1.0.12.tar.gz:
Publisher:
publish.yml on opendataloader-project/beneissue
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beneissue-1.0.12.tar.gz -
Subject digest:
5dc018a14a072661b4270d7d59c0bd166399997f18541bc2cde1644bccedb95b - Sigstore transparency entry: 779423116
- Sigstore integration time:
-
Permalink:
opendataloader-project/beneissue@78ddd2991e02fd9eaa613fdcfd979a95dd3596be -
Branch / Tag:
refs/tags/v1.0.12 - Owner: https://github.com/opendataloader-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@78ddd2991e02fd9eaa613fdcfd979a95dd3596be -
Trigger Event:
push
-
Statement type:
File details
Details for the file beneissue-1.0.12-py3-none-any.whl.
File metadata
- Download URL: beneissue-1.0.12-py3-none-any.whl
- Upload date:
- Size: 33.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4048813085e9f4737cdb5530f6253dd88101ab941936e7b138893100e22b4bd9
|
|
| MD5 |
44faeca4e5d3166e148043472f550371
|
|
| BLAKE2b-256 |
3f828b9c51db54b1d04367dbddea7693ece57528b305c001a7d300378c17c63d
|
Provenance
The following attestation bundles were made for beneissue-1.0.12-py3-none-any.whl:
Publisher:
publish.yml on opendataloader-project/beneissue
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beneissue-1.0.12-py3-none-any.whl -
Subject digest:
4048813085e9f4737cdb5530f6253dd88101ab941936e7b138893100e22b4bd9 - Sigstore transparency entry: 779423117
- Sigstore integration time:
-
Permalink:
opendataloader-project/beneissue@78ddd2991e02fd9eaa613fdcfd979a95dd3596be -
Branch / Tag:
refs/tags/v1.0.12 - Owner: https://github.com/opendataloader-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@78ddd2991e02fd9eaa613fdcfd979a95dd3596be -
Trigger Event:
push
-
Statement type: