Extending GitHub Beyond the Basics
GitHub’s API and automation tools open up a lot of possibilities for customizing workflows. A few lesser-known features and community projects make it easier to hook into repository events, pull dynamic data, and keep things tidy without much extra effort.
Automation: Actions vs. Probot
Two complementary projects—GitHub Actions and Probot—let you build integrations without dealing with boilerplate like authentication and webhook parsing. Actions gives you a runtime for running arbitrary code in a GitHub-hosted virtual machine when repository events occur. While CI is the most obvious use, more interesting applications include routine workflow improvements, such as using the JasonEtco/create-an-issue Action to open a weekly meeting notes issue every Monday.
If you’re building your own Actions from scratch, the actions-toolkit project provides an opinionated starting point. For simpler automation, actions/github-script lets you write JavaScript directly in your workflow YAML file with an authenticated GitHub API client already available.
Probot, on the other hand, is a framework for building full GitHub Apps driven by webhooks. It’s a good choice when your integration handles more complex event-driven logic, and it has some well-known production uses: the official GitHub/Slack integration is built with Probot. Small-scope examples include congratulating first-time contributors, auto-drafting release notes from merged PRs, and turning TODO comments in code into open issues.
Useful URL Shortcuts
Fetch any user or organization avatar
You don't need an API call to pull a profile image. Simply visit https://github.com/<username>.png and GitHub returns the avatar for that account. This is handy for any interface that renders GitHub users—like contributor acknowledgment tables or app marketplace listings. One quirk: the endpoint actually serves a JPEG, but the extension doesn't break anything in practice.
Grab a commit or pull request diff
Appending .diff or .patch to the end of a commit page URL returns the raw changes for that commit in your browser. The same trick works for pull requests, making it trivial to grab a patch file or diff when you need it without switching to the API.
Pinned Gists as Dynamic Profile Content
Gists can be pinned to your profile, and with the Gist API plus a scheduled GitHub Action, that space can become a live display. Several open-source projects automate this: activity-box updates a pin with recent GitHub activity, bird-box pulls in your latest tweets, and waka-box shows coding stats. If you want to write your own, the gist-box helper library and the awesome-pinned-gists collection are good starting points.
Clean Up Branches Automatically
To avoid a buildup of stale branches after pull requests merge, enable Automatically delete head branches in repository settings. The branch is still recoverable if needed, so there is no real downside—just less manual housekeeping.
One GraphQL Query for Any Resource
The GraphQL API supports a top-level resource query that takes a URL. Pass any GitHub URL and get back an object whose type and fields vary: for a repository, you’ll receive it with properties like nameWithOwner; for an issue or pull request, you’ll get its title. This is very useful when your only input is a plain URL. Note that not every GitHub URL is supported—check the API docs for the UniformResourceLocatable interface for the full details.
To experiment, the GraphQL Explorer in GitHub’s API documentation is a practical way to test queries before writing integration code.



