I've been using a tool that I've been developing myself (with GPT assitance lol) to basically monitor issues in a list of Github repositories, make the requested changes, and open a pull request to close the issue. It can also monitor comments on a pull request, and classify them as "question" (respond with answer) or "request" (update PR with requested changes and respond with additional info).<p>It's not perfect but it's at a point now where it is allowing me to make significant progress on personal projects that I would not otherwise have time to do. I already sit in front of a computer at work all day. I want to minimize doing that outside of work, but I still have lots of code projects I want to do on the side.<p>Main repo: <a href="https://github.com/mobyvb/pull-pal">https://github.com/mobyvb/pull-pal</a><p>Examples:<p>- Drafting an action plan and coming up with open questions based on specific requirements (issue: <a href="https://github.com/mobyvb/download-simulator-2023/issues/1">https://github.com/mobyvb/download-simulator-2023/issues/1</a>, PR created by bot: <a href="https://github.com/mobyvb/download-simulator-2023/pull/2/files">https://github.com/mobyvb/download-simulator-2023/pull/2/fil...</a>)<p>- See also asking the bot to write code based on a step in the generated action plan: <a href="https://github.com/mobyvb/download-simulator-2023/issues/3">https://github.com/mobyvb/download-simulator-2023/issues/3</a> and PR <a href="https://github.com/mobyvb/download-simulator-2023/pull/4">https://github.com/mobyvb/download-simulator-2023/pull/4</a>. In this PR, pay attention to the comments I left; the bot takes feedback from the comments and will update the code accordingly, allowing you to iterate on a single PR before merging code<p>- Basic updates to existing HTML file (issue: <a href="https://github.com/mobyvb/pull-pal/issues/4">https://github.com/mobyvb/pull-pal/issues/4</a>, PR: <a href="https://github.com/mobyvb/pull-pal/pull/5/files">https://github.com/mobyvb/pull-pal/pull/5/files</a>)<p>- Writing an Arduino script from scratch based on specific requirements (issue: <a href="https://github.com/mobyvb/midi-looper/issues/1">https://github.com/mobyvb/midi-looper/issues/1</a>, PR: <a href="https://github.com/mobyvb/midi-looper/pull/2/files">https://github.com/mobyvb/midi-looper/pull/2/files</a>)<p>Still lots of improvement to go but I'm having a lot of fun.<p>Exposition if you want:<p>My experience using GPT4 for programming has been pretty fun. First I was experimenting with prompts like
"Given <this code>, how do I accomplish <this task>?"
I have been discovering things about what types of tasks it's particularly good at (generating action plans, breaking tasks down into subtasks, writing simple-ish code). The code is usually stuff I could figure out myself, but it's still (sometimes) more efficient than me trying to write it, then do some google searching, update it, etc... The chat format also makes iterative improvement fairly easy, e.g. "you forgot to use <some variable>" or "please add comments explaining what the code does" or "replace this text in the html with some generated content about a digital assistant tool"<p>I'm a manager and team lead so I find myself writing a lot of tickets based on high-level product requirements for my team to work on. Because I am very familiar with the code base, I often provide a lot of technical detail, e.g. providing links to specific files, functions, and PRs relevant to the issue. I found that prompting GPT4 with a similar level of detail resulted in success. However, it was still really good at more general tasks.<p>An example of a task that GPT performs pretty well at: "write an index.html landing page with a content section that is vertically and horizontally centered using flexbox. In the content section, generate a heading and paragraph talking about an AI-powered digital assistant for programmers. Add some basic styling to the page, with soft colors. The font of the heading and paragraph should be different. Serve index.html from a main.go file on port 8080. Also add an endpoint to the server at POST /api/number which returns a random integer between 14 and 37. In index.html, add a button that calls this endpoint and displays the number on the page"<p>(GPT4 can handle this prompt easily with no errors in the code; GPT3 will struggle, so it needs to be broken down more)<p>I could do all of the stuff in that example myself. But so can AI. I prefer to write out what I want and get some code that's usually 90%-100% perfect, make some slight modifications, maybe ask for some different color options, etc..
Point is, that's probably 30 mins saved for the same end result (honestly, better, considering my design skills are nonexistent).<p>I work a lot with Github repos already, so it was straightforward to me to replace the ChatGPT interface with a "Github interface" which I'm already familiar with and like (open issue, reference issue from PR, merge PR, issue auto closed). I also like being able to iterate on a "pending" change in a PR by leaving comments before merge. Also, I can do it from my phone!<p>To see the specific prompts this tool is using as the foundation (at the moment), see<p>* <a href="https://github.com/mobyvb/pull-pal/blob/main/llm/prompts/code-change-request.tmpl">https://github.com/mobyvb/pull-pal/blob/main/llm/prompts/cod...</a><p>* <a href="https://github.com/mobyvb/pull-pal/blob/main/llm/prompts/comment-diff-request.tmpl">https://github.com/mobyvb/pull-pal/blob/main/llm/prompts/com...</a><p>If you have read this far, I hope it sounds interesting to you. The tool is GPL licensed, and I would love if other people tried it out so that I can get feedback on the best improvements to make/bugs to fix.