~/arifin
GitHub ↗
~/arifin · Indonesia
WorkWritingAbout
GitHub ↗LinkedIn ↗Email
← work
2026·Solo build·oss

PR Please

OSS ↗
backgroundWriting a clear PR title and description every time is friction — most engineers either skip it or copy a template by hand.
goalBuild a Chrome extension that generates structured PR titles and descriptions from the diff context using pluggable AI providers.
outcomePR Please — a Chrome extension I use in my own workflow, supporting Gemini, OpenAI, Anthropic, and local Ollama.
TypeScriptChrome ExtensionDeveloper ToolsOpen SourceAIMulti-providerGeminiOpenAIAnthropicOllama

Writing a good PR description is friction I was consistently skipping. I'd open a pull request, look at the blank title field, and type something generic like "fix bug" or "update component." The diff was right there — everything needed to write a proper description already existed, just not in readable form. I built PR Please to close that gap: one click, structured title and description, done.

The extension injects into GitHub's PR creation and edit pages. When you click "Generate," it reads the commit history and diff context, sends it to your configured AI provider, and streams the response back as a preview you can edit before applying. Provider support covers Google Gemini, OpenAI, Anthropic, and local Ollama — each with separate API key storage. Configurable glob patterns let you exclude lockfiles and environment files from the diff before it's sent, both for privacy and to keep the context focused on actual code changes.

Security design took real thought. Chrome extensions have a history of being used to exfiltrate credentials, and an extension that handles AI API keys and reads code diffs is a meaningful attack surface. I used an explicit Content Security Policy, minimal permissions (storage and activeTab only), and avoided innerHTML entirely in favor of safe DOM manipulation APIs. API keys are stored XOR+base64 obfuscated in chrome.storage.local — not encryption, but meaningfully better than plaintext storage and sufficient to prevent casual extraction.

The streaming preview turned out to be the most useful feature. You can watch the description form in real time and stop generation the moment the model misunderstands the change, before applying anything to GitHub's form. Ollama support means it works without sending diffs to external APIs at all, which matters in environments where code can't leave the machine.

← all workwriting →
OSS ↗
TypeScriptChrome ExtensionDeveloper ToolsOpen SourceAIMulti-providerGeminiOpenAIAnthropicOllama
← all workwriting →