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.

gitguide explains repositories, files, and issues directly inside github, then lets me ask follow-up questions about the codebase without opening another tab. every answer is grounded in the repository’s actual source code and includes citations back to github, so it’s explaining what’s really there instead of making educated guesses.

it’s built with react and typescript, with a small node.js backend that indexes repositories, retrieves relevant code, validates requests, and streams responses from the model.

the first version was just an issue assistant. after i started using it myself, i kept adding the things i wished github already had: repository overviews, file explanations, good first issue discovery, and eventually a repository-aware chat that remembers the current conversation while staying grounded in the codebase.

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

one thing i didn’t expect was how much work it would take to make the extension feel like part of github. because github is a single-page application, normal page load events aren’t enough. the extension has to detect navigation changes instantly so it always knows which repository, file, or issue you’re looking at 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 only on the url, gitguide reads github’s page data when it’s available and falls back to the github api when it isn’t, making repository navigation much more reliable.

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

the backend stays intentionally small. it validates every request, retrieves only the repository context needed for the current question, streams responses back to the extension, and cancels work automatically if you navigate away. conversations stay scoped to the current repository, so follow-up questions never accidentally mix information from somewhere else.

extension sends request + context validate request retrieve context stream response cancel if abandoned github api + llm, grounded answer

retrieval isn’t a single lookup either. gitguide indexes each repository with both bm25 and local embeddings, then fuses the two rankings with reciprocal rank fusion before handing the top code chunks to the model. when local embeddings aren’t available, it falls back to bm25 alone, so answers stay grounded either way.

query bm25 keyword search embeddings semantic search rrf rank top code chunks llm

the feature i probably use the most is still the chat. instead of reading dozens of files trying to understand how something works, i can ask follow-up questions, jump directly to the cited source, and keep exploring without ever 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 slowly adding everything i kept wishing github already had.