Skip to main content

Github Expert - Agentic tools for github

Project description

ge — GitHub Engineering for AI Agents

Tools and skills that let AI coding agents work on GitHub issues, PRs, and discussions intelligently.

Most GitHub engineering can be done from an AI agent console with gh and Python. But some tasks — fetching an issue with all its comments, downloading screenshots, extracting video frames, checking if the issue is stale or already fixed — burn tokens every time, with a different improvised solution each time. ge crystallizes these into deterministic tools with CLI and Python interfaces. More importantly, it wraps them into AI skills that agents can use directly, so you just say "work on issue #42" and the agent knows exactly what to do.

So that's the order here: skills first (the intended interface), then the tools underneath (for when you want direct control).

pip install ge
ge install-skills   # register skills with Claude Code

Skills — the main interface

ge ships Claude Code skills that teach the agent how to work on GitHub issues. After installing the package, register them globally:

ge install-skills

This creates symlinks in ~/.claude/skills/ pointing to the skills bundled with ge. From then on, tell your agent "work on THIS" — where THIS can be:

  • A GitHub URL: work on https://github.com/owner/repo/issues/42
  • A bare number: work on issue #42 (assumes the current repo)
  • A repo+number: work on owner/repo#42
  • A pre-prepared context folder: work on ~/.cache/ge/owner/repo/issue_42

The agent resolves whatever you give it, confirms what it understood before proceeding, then:

  1. Loads or prepares full context (body, comments, media, cross-references)
  2. Analyzes freshness — is it stale? already fixed? has related merged PRs?
  3. Describes images via the Claude API (or asks you to paste them as fallback)
  4. Asks you before working on ambiguous or likely-resolved issues
  5. Works on the issue — creates a branch, makes changes, submits a PR

Three skills are installed:

Skill Purpose
ge Full workflow — resolve target, confirm, prepare context, analyze, work
ge-analyze Quick triage — check if an issue is worth working on
ge-context Context preparation — fetch and assemble structured documents

To remove the skills: ge uninstall-skills

Tools — what the skills use under the hood

Everything below is what the skills orchestrate automatically. You can use any of it directly via CLI or Python.

What ge prepare does

Fetches an issue or PR and assembles everything an agent needs:

  • Issue/PR body and all comments — with media URLs rewritten to local paths
  • Images downloaded — screenshots, mockups, error captures (auto-detected from content)
  • Video frames extracted — via ffmpeg scene detection
  • AI image descriptions — images described via Claude API, embedded in the context document
  • Freshness analysis — staleness, related merged PRs, resolution signals
  • Cross-references — commits and PRs that mention this issue

All via gh CLI, so private repos just work.

Quick start

ge prepare owner/repo --number 42
ge prepare https://github.com/owner/repo/pull/7
ge analyze-issue owner/repo 42

Requirements

  • gh CLI — installed and authenticated (gh auth login)
  • Python 3.10+
  • ffmpeg — optional, for video frame extraction
  • anthropic — optional, for AI-powered image descriptions (pip install anthropic + set ANTHROPIC_API_KEY)
  • ImageMagick — optional, for clipboard montage (brew install imagemagick on macOS)

CLI commands

ge prepare <repo> --number <N>              Full context (auto-detects issue/PR/discussion)
ge prepare <url>                           Full context from a GitHub URL
ge prepare-discussion <repo> --number <N>  Full context for a GitHub Discussion
ge analyze-issue <repo> <N>                Freshness analysis (JSON, no download)
ge analyze-pr <repo> <N>                   PR review analysis with CI status (JSON)
ge fetch-issue <repo> <N>                  Raw issue JSON
ge fetch-pr <repo> <N>                     Raw PR JSON
ge fetch-discussion <repo> <N>             GitHub Discussion JSON
ge media <file.md>                 Download media from markdown
ge video-frames <video>            Extract frames (scene detection by default)
ge describe-images <img>...        Describe images via Claude API (vision)
ge copy-images <img>...            Create montage + copy to clipboard (macOS)
ge resolve <target>                Resolve a URL, folder, or number to structured target
ge install-skills                  Register skills with Claude Code (~/.claude/skills/)
ge uninstall-skills                Remove ge skill symlinks

Python API

import ge

# Prepare full context
ctx = ge.prepare('https://github.com/owner/repo/issues/42')
ctx = ge.prepare_issue('owner/repo', 42)
ctx = ge.prepare_pr('owner/repo', 7)
ctx = ge.prepare_discussion('owner/repo', 5)

# Just analysis (no download)
analysis = ge.analyze_issue('owner/repo', 42)

# Resolve flexible input
target = ge.resolve_target('#42', current_repo='owner/repo')

# Image tools
from ge.media import describe_images, copy_images_to_clipboard
text = describe_images('screenshot.png', 'error.jpg')
path = copy_images_to_clipboard('img1.png', 'img2.png')

Image analysis

When ge prepare runs, it downloads images and — if anthropic is installed — automatically sends them to the Claude API for visual analysis. The descriptions are embedded in the context document under "Image Descriptions (AI-generated)".

pip install anthropic
export ANTHROPIC_API_KEY=sk-ant-...

To disable: ge prepare owner/repo --number 42 -d

Standalone:

ge describe-images screenshot.png error.jpg
ge describe-images frame1.jpg frame2.jpg --prompt "What changed between these frames?"
ge copy-images screenshot1.png screenshot2.png   # montage + clipboard (macOS)

Project structure

ge/
├── __init__.py      # Facade: prepare(), resolve_target(), install_skills(), etc.
├── __main__.py      # CLI via argh (SSOT: _cli_commands list)
├── github.py        # GitHub API via `gh` CLI subprocess
├── media.py         # Image download, video frames, describe_images, clipboard montage
├── analysis.py      # Staleness/freshness/relevance analysis
├── context.py       # Assembles everything into context docs
├── util.py          # Internal helpers: gh wrapper, URL parsing, resolve_target
└── data/skills/     # Claude Code skills (symlinked by install-skills)
    ├── ge/          # Full workflow skill
    ├── ge-analyze/  # Triage/staleness skill
    └── ge-context/  # Context preparation skill

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ge-0.1.9.tar.gz (49.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ge-0.1.9-py3-none-any.whl (28.7 kB view details)

Uploaded Python 3

File details

Details for the file ge-0.1.9.tar.gz.

File metadata

  • Download URL: ge-0.1.9.tar.gz
  • Upload date:
  • Size: 49.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ge-0.1.9.tar.gz
Algorithm Hash digest
SHA256 40c1fc80bfd17451828b525addf7a76782c881f959fb9a792ea96c0283a01997
MD5 a10b2081b14f3203613260a805f8a341
BLAKE2b-256 9201ffcb58b0b5163f390baca02093abd6ff3fe3cdfec635ebb720388e8f1b86

See more details on using hashes here.

File details

Details for the file ge-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: ge-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 28.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ge-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 8baac06554ff945e204fa516303936184c2fb0d51605d8bcfc149ed6b625a6e3
MD5 aa27e9b5a77a9523079d53fcc369e3e8
BLAKE2b-256 b2f0f03a390c6678b849805716cfef2bf5be305649881be533f574f2265bb48e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page