GitGuide

browser extension · github · llm

github ↗︎ try it here ↗︎

i built gitguide because i wanted to contribute to more open source projects, but i kept running into the same problem. i’d find an interesting issue, spend twenty minutes reading discussions and jumping between files, and still not know where to start.

it’s built with react and typescript, with a small node.js backend that talks to the github api and the model.

the first version was just a chrome extension that explained github issues and suggested a way to approach them. after i started using it myself, i kept adding the things i wished github already had: repository summaries, file explanations, good first issue discovery, and eventually a chat that stays inside github so i could ask follow-up questions without opening another tab. every answer is grounded in whatever repository, file, or issue i actually had open, not a generic explanation.

Browser Extension Backend GitHub API LLM one small backend in the middle, everything grounded in repo context

one thing i didn’t expect was how much work it would take just to make the extension feel like part of github. github is a single-page application, so normal page load events aren’t enough. i ended up watching navigation changes so the extension always knows when you’ve moved to a different repository, issue, or file without needing a refresh.

route changes (spa, no reload) mutation observer watches the dom continuously panel re-injects for the new page

branch detection turned out to be another surprisingly annoying problem. github urls don’t always tell you whether something is part of a branch or just a nested file path. instead of relying on the url, i read github’s page data when it’s available and fall back to the github api when it isn’t. that made repository navigation much more reliable.

github url ambiguous path page data available? yes read page data no call github api

the backend is intentionally small. it validates every request, collects the repository context, and sends only the information needed to answer the question. responses are validated before they’re returned, requests are cancelled if you leave the page, and explanations stay grounded in the current repository instead of answering in the abstract.

extension sends request + context backend validates request and response cancelled if you leave the page mid-request github api + llm, grounded answer

the feature i probably use the most is still the issue assistant. instead of only summarizing an issue, it explains what’s being asked, points me toward the files that are worth reading first, and suggests a place to start. if i still have questions, i can ask them directly in the chat without leaving github.

i still use gitguide whenever i’m looking through a repository i haven’t seen before. most of the features weren’t planned from the beginning. they came from using the extension while contributing to open source and adding whatever i found myself missing.