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.

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

Now, from any project, tell your AI agent "work on issue #42" — it will prepare full context, check freshness, download media, and proceed with informed decisions.

Install skills for Claude Code

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

ge install-skills

This creates symlinks in ~/.claude/skills/ pointing to the skills bundled with ge. From then on, when you ask Claude Code to work on a GitHub issue in any project, it will automatically:

  1. Verify the issue belongs to the current project
  2. Fetch the full issue context (body, comments, media, cross-references)
  3. Analyze freshness — is it stale? already fixed? has related merged PRs?
  4. Ask you before working on ambiguous or likely-resolved issues
  5. Request you paste images when visual context matters

Three skills are installed:

Skill Purpose
ge Full workflow — verify, prepare, 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

What it does

ge 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
  • Video frames extracted — via ffmpeg scene detection, capturing actual visual changes
  • Freshness analysis — is this issue stale? already fixed? has related merged PRs?
  • Cross-references — commits and PRs that mention this issue
  • Code file checks — do the files mentioned in the issue still exist?

All via gh CLI, so private repos just work.

Quick start

# Install
pip install ge

# Prepare context for an issue
ge prepare owner/repo 42

# Or from a URL
ge prepare https://github.com/owner/repo/pull/7

# Just check freshness (no download)
ge analyze-issue owner/repo 42

Requirements

  • gh CLI — installed and authenticated (gh auth login)
  • ffmpeg — optional, for video frame extraction
  • Python 3.10+

Commands

ge prepare <repo> <N>              Full context (auto-detects issue/PR/discussion)
ge prepare-discussion <repo> <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 install-skills                  Register skills with Claude Code (~/.claude/skills/)
ge uninstall-skills                Remove ge skill symlinks

Project structure

ge/
├── __init__.py      # Facade: prepare(), 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 frame extraction (ffmpeg)
├── analysis.py      # Staleness/freshness/relevance analysis
├── context.py       # Assembles everything into context docs
├── util.py          # Internal helpers: gh wrapper, URL parsing, media extraction
└── data/skills/     # Claude Code skills (symlinked by install-skills)
    ├── ge/          # Full workflow skill
    ├── ge-analyze/  # Triage/staleness skill
    └── ge-context/  # Context preparation skill

Python API

import ge

ctx = ge.prepare_issue('owner/repo', 42)
ctx = ge.prepare_pr('owner/repo', 7)
ctx = ge.prepare_discussion('owner/repo', 5)

# Or from any GitHub URL (auto-detects type)
ctx = ge.prepare('https://github.com/owner/repo/issues/42')
ctx = ge.prepare('https://github.com/owner/repo/discussions/5')

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

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.2.tar.gz (40.5 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.2-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ge-0.1.2.tar.gz
  • Upload date:
  • Size: 40.5 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.2.tar.gz
Algorithm Hash digest
SHA256 73b09944454cae3c73b785a3b6da2ac89c095995f42e0844735efd083baa71e9
MD5 71d623fa840112c760a8c03dc3c82106
BLAKE2b-256 3134d1d0d9385bdaafe838fec8fbc7fb1bf0338c7c91232f37c7f9c778f32ab5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ge-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 28.5 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 70184042fc1d9ac1ddd0dc519d8422a3e8d893138b4511a3d0ea4f2b08438116
MD5 5b944afe26a8af6a59ea5c2143f6e15d
BLAKE2b-256 966d640ff98746aecde29ea1f3d3c9af5b83cf5a555b6b887b1842e4f10fe7f9

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