<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Brittany Joiner - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Brittany Joiner - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 17 May 2026 04:37:33 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/author/brittanyjoiner/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Create an Automated Pull Request Checklist in GitHub ]]>
                </title>
                <description>
                    <![CDATA[ If you've ever contributed to a project, whether it's your app at work or an open-source tool, you've likely created a pull request. This requests that your code changes to merged into the main codebase. We use pull requests to ensure only quality co... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/create-a-pr-checklist-in-github/</link>
                <guid isPermaLink="false">66be201d54818f9fb5f54f50</guid>
                
                    <category>
                        <![CDATA[ automation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Brittany Joiner ]]>
                </dc:creator>
                <pubDate>Mon, 11 Jul 2022 23:06:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/07/Pink-Money-Making-Apps-YouTube-Thumbnail.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you've ever contributed to a project, whether it's your app at work or an open-source tool, you've likely created a pull request. This requests that your code changes to merged into the main codebase.</p>
<p>We use pull requests to ensure only quality code is merged into our main branches. But sometimes we miss the little things after a grueling coding session developing a new feature. </p>
<p>At worst the, those mistakes can be missed by teammates and merged into the main codebase and create bugs or inefficiencies. At best, finding those tiny nits can take up other team members' time to notice and point out.</p>
<p>I am particularly susceptible to opening a lazy pull request, so I did what any developer would do... I found a way to automate a PR checklist and force myself to do the work!</p>
<p>This tutorial shows you how to build an extension in your browser that will automatically generate a pull request checklist and hide the Create Pull Request button until you check every item on that list. </p>
<h2 id="heading-grab-your-tools">Grab Your Tools</h2>
<p>Before you get started, you'll want to get a few things together.</p>
<h3 id="heading-make-a-list-of-what-to-check-in-your-code">Make a list of what to check in your code</h3>
<p>Forget any tools or any automation... for a few minutes, think about <strong>what makes a good pull request</strong>, and list those items out. </p>
<p>What makes it easy for you to review other pull requests? Or what's a common mistake you often find people commenting on?</p>
<p>If you need some ideas, here is what I've incorporated in my own list.</p>
<ul>
<li>Everything sorted alphabetically</li>
<li>Instructions for how reviewers can test the code locally</li>
<li>Tests have been added</li>
<li>Screenshot of the feature/bug fix (if applicable)</li>
<li>If any new text is added, it's internationalized</li>
<li>Any new elements have aria labels</li>
<li>No unintentional <code>console.logs</code> left behind after debugging</li>
<li>Did I use the clear and concise names for variables and functions?</li>
<li>Did I explain all possible solutions and why I chose the one I did?</li>
<li>Added any comments to make new functions clearer</li>
<li>Added PR labels</li>
<li>Update any history/changelog file</li>
</ul>
<p>If you're still not sure, talk to more senior developers on your team and see what they are looking for when they review pull requests.</p>
<h3 id="heading-create-a-pixiebrix-account-your-browser-automation-tool">Create a PixieBrix account (your browser automation tool)</h3>
<p>There are a handful of browser extensions that let you create automations, but I've found <a target="_blank" href="https://pixiebrix.com/">PixieBrix</a> to be extremely powerful and the community is friendly and helpful.</p>
<blockquote>
<p>PixieBrix offers the most versatile low-code platform for extending the web applications you and your teams already use. The result? You get the productive, personalized experience you need... and deserve. (Source: <a target="_blank" href="https://www.pixiebrix.com/">PixieBrix</a> website)</p>
</blockquote>
<p>In order to create the automation that I describe below, you'll need to sign up for a free PixieBrix account.</p>
<p>Just select "Start for Free" on their website, and follow the wizard to create an account. You'll be prompted to install the <a target="_blank" href="https://chrome.google.com/webstore/detail/pixiebrix/mpjjildhmpddojocokjkgmlkkkfjnepo">PixieBrix Chrome Extension</a>.</p>
<p>Now you're ready to go!</p>
<h2 id="heading-how-to-build-the-pull-request-checklist-automation">How to Build the Pull Request Checklist Automation</h2>
<p>Alright, you're all set. Now it's time to build.</p>
<p>If you want to take the most straightforward route, you can just <a target="_blank" href="https://app.pixiebrix.com/activate?id=@brittany-joiner/gh-on-a-pr">activate the extension I already built</a>, and edit as you please. </p>
<p>But if you want to build it from scratch and get more familiar with how browser automation works, follow these steps.</p>
<h3 id="heading-step-1-open-the-page-editor-in-pixiebrix">Step 1 – Open the Page Editor in PixieBrix</h3>
<p>To build extensions in PixieBrix, you don't need VSCode or any other editor. You can do everything entirely in your browser. </p>
<p>I like to start by going to the page that I want the action to happen on, in this case, <code>github.com</code>.</p>
<p>To access the editor, right click on any webpage to open the Context Menu and select <code>Inspect</code>. Scroll through your tabs <em>(you know, the ones that say things like <code>Elements</code>, <code>Console</code>, <code>Network</code>, etc)</em> until you see <code>PixieBrix</code>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/open-page-editor.gif" alt="demonstration-of-opening-inspector-and-choosing-pixiebrix-tab" width="600" height="400" loading="lazy">
<em>Right click to Inspect, then go to PixieBrix tab</em></p>
<p>You might be prompted to grant some permissions, but then you'll find a blank page with a button in the top left that says "Add". That's where we'll get started.</p>
<h3 id="heading-step-2-add-a-trigger-brick">Step 2 – Add a trigger brick</h3>
<p>To build an extension in PixieBrix, you need to chain bricks together. You can think of bricks as functions and an extension is the main function that executes the smaller functions in the sequence you configure. </p>
<p>You have multiple options to trigger this extension.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-2.33.29-PM.png" alt="pixiebrix-trigger-options-menu" width="600" height="400" loading="lazy">
<em>Extension Trigger Options in PixieBrix</em></p>
<p>You can choose a manual action, like adding a button to a page, or a context menu (which is when you right click on a webpage – that same menu where you got to your inspector!) Or you could use a quickbar command (a keyboard shortcut). </p>
<p>The sidebar panel opens a panel on the right side of your browser and is not actually a trigger but instead used to create a display for another trigger.</p>
<p>For this specific workflow, use the <code>Trigger</code> option, which runs the extension whenever you load a specific webpage and additional criteria that you configure are met.</p>
<p>This is what it looks like at first:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-2.51.09-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can change the name at the top to be whatever you'd like to call this, such as <code>Github PR Checklist</code>.</p>
<p>To configure the Trigger, think about when you want to see your checklist. You could make it launch anytime you go to GitHub, but that's probably more frequent than you want since you don't need the checklist when you're reading through issues or searching for something in a repo.</p>
<p>I decided to trigger whenever a <code>create pull request</code> button element is on the page, which is indicative that I'm about to open a pull request. So that's probably a good time to go through my checklist! </p>
<p>So go through the motions of opening a pull request and navigate to a page that has that green button (while keeping your page editor open).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-5.12.04-PM.png" alt="github-create-pull-request-button" width="600" height="400" loading="lazy">
<em>GitHub Create pull request button</em></p>
<p>Once you've got that button in view, scroll to the <code>Advanced: Match Rules</code> section of the Trigger brick, and look for the <code>Selectors</code> field.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-5.13.46-PM.png" alt="selector-field-in-pixiebrix-trigger-brick" width="600" height="400" loading="lazy">
<em>Selector section in PixieBrix trigger brick configuration</em></p>
<p>From there, you can use the mouse button to open an element selector view and click to select the button, or you can copy this class directly in the field.</p>
<pre><code>.hx_create-pr-button
</code></pre><p>So now you've created a trigger that says anytime you load a page hosted on <code>github.com</code>.</p>
<p>Alright, so we've identified the class for that button, so the hardest part is behind us! Now we just need to hide it, show the checklist, and then display it again when the checklist has been completed.</p>
<h3 id="heading-step-3-hide-the-create-pull-request-button">Step 3 – Hide the <code>create pull request</code> button</h3>
<p>Select the plus button below the Trigger brick to add another brick. You'll see a marketplace open allowing you to search for all the available bricks. Search for <code>hide</code> and you'll see this brick.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-5.16.07-PM.png" alt="pixiebrix-marketplace-with-hide-brick" width="600" height="400" loading="lazy">
<em>Hide brick in PixieBrix marketplace</em></p>
<p>Mouse over the "Hide" brick and to see more options, then select  "Add" to bring it into your extension.</p>
<p>The only configuration this brick needs is <strong>which element to hide</strong>. In this case, it will be exactly the same element we used in our trigger – the create pull request button. So you can copy that same class and set it as the value for the selector.</p>
<h3 id="heading-step-4-open-a-sidebar">Step 4 – Open a sidebar</h3>
<p>Add another brick called <code>Show Sidebar</code>. This will open a panel on the right side of your browser to display content in.</p>
<p>I set the <code>panelHeading</code> field to <code>PR</code> to specify that it should load the <code>PR</code> tab. If you don't already have other sidepanels set up, you won't need to place anything here and you can skip to the next step.</p>
<h3 id="heading-step-5-assign-yourself-to-the-issue">Step 5 – Assign yourself to the issue</h3>
<p>Before we get to the checklist, I added one more piece of automation to this besides displaying the checklist and hiding the button.</p>
<p>I created an action to assign myself to the issue. It's just a click, but why not make the robots do it? 😊</p>
<p>To do this, add another brick called the <code>Simulate a DOM event</code> brick. This brick does exactly what it sounds like... it pretends to do something to a specific element, such as click it.</p>
<p>Provide a selector for the element you wish to interact with, and an event.</p>
<p>Just like in the trigger and hide bricks, you can use the mouse button to open a selector picker on your screen and select the <code>assign yourself</code> link to automatically apply those classes to the selector field. </p>
<p>You can also manually apply the class by copying and pasting this into the <code>selector</code> field:</p>
<pre><code>#new_pull_request .js-issue-assign-self
</code></pre><p>Make sure to select <code>click</code> for the <code>event</code>, and you're all set!</p>
<h3 id="heading-step-6-create-your-checklist">Step 6 – Create your checklist</h3>
<p>Now we're in the meat of our extension. Time to build out the checklist. Select the plus button and add the <code>Show a modal or sidebar form</code> brick.</p>
<p>This is the brick that designs a form, and for each item we want to acknowledge or think about before submitting a pull request will be a checkbox field.</p>
<h4 id="heading-set-a-form-title-and-description">Set a form title and description</h4>
<p>These are purely cosmetic, so set them to whatever you'd like.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-3.09.11-PM-1.png" alt="form-settings-for-pixiebrix-form-brick" width="600" height="400" loading="lazy">
<em>Form settings for PixieBrix Show form brick</em></p>
<h4 id="heading-configure-your-first-field">Configure your first field</h4>
<p>Grab your list of what items to review before opening a pull request, and pick your first one. This will be our first form field, and you'll need to set the following fields in PixieBrix:</p>
<ul>
<li><code>name</code></li>
<li><code>label</code></li>
<li><code>input type</code></li>
</ul>
<p>Name and label can be whatever you want. <strong>Keep the name simple</strong> as you'll need to reference that in the next step when you check for if it's true or not. <strong>Label is what appears visually next to the checkbox</strong>. For input type, select <strong>checkbox</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-5.29.30-PM.png" alt="pixiebrix-form-field-configured" width="600" height="400" loading="lazy">
<em>PixieBrix form field configuration</em></p>
<p>You can preview how it looks on the right side panel of the PixieBrix page editor.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-5.30.21-PM.png" alt="previewed-form-in-pixiebrix" width="600" height="400" loading="lazy">
<em>Preview form in PixieBrix preview panel</em></p>
<h4 id="heading-add-the-rest-of-the-items-as-new-fields">Add the rest of the items as new fields</h4>
<p>Scroll above the field to select the blue button that says "Add new field", and do it all again for as many items as you have.</p>
<h4 id="heading-final-form-configuration">Final form configuration</h4>
<p>Almost done! Scroll <strong>below the form field options</strong> until you see <code>Submit Button Text</code>. You can leave it as is, but I customized mine to say <code>Ready to Open</code> to make the button action more clear.</p>
<p>Most importantly, change the <code>Location</code> value to <code>sidebar</code> instead of <code>modal</code> by selecting the dropdown. This sets the form to appear in the sidebar we opened in the previous step.</p>
<h3 id="heading-step-7-show-the-create-pull-request-button-when-the-checklist-is-completed">Step 7 – Show the <code>create pull request</code> button when the checklist is completed</h3>
<p>Add one final brick to this extension called <code>Show</code>. This is similar to Hide, and we'll pass it that same class we've been referencing this whole time for the <code>create pull request</code> button.</p>
<p>Here it is once again if you need a refresher:</p>
<pre><code>.hx_create-pr-button
</code></pre><p>There's one more piece to configure because we want to control when this brick executes since we only want to show the button if every item was checked in the form submission.</p>
<p>We could have just made each field in the form required so you couldn't submit the form until everything was checked. But another way to do this is to edit the <code>Condition</code> field under Advanced Options on this brick.</p>
<p>This is where you can specify when this specific brick should run. You'll build a statement that returns true if every field in the checklist is true. </p>
<p>This is what the syntax looks like, although you'll need to swap the <code>item</code> value with the name of each item.</p>
<pre><code>{{ <span class="hljs-string">"true"</span> <span class="hljs-keyword">if</span> @form.item1 and @form.item2 and @form.item3 and @form.item4 and @form.item5 and @form.item6 and @form.item7 and @form.item8 and @form.item9 and @form.item10 and@form.item11 }}
</code></pre><p>When you're done, your brick should look like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/Screen-Shot-2022-07-10-at-5.35.44-PM.png" alt="show-brick-configuration" width="600" height="400" loading="lazy">
<em>Show brick configuration</em></p>
<p>Select the blue save button at the top right of the PixieBrix page editor to save your extension.</p>
<h2 id="heading-take-it-for-a-spin">Take it for a spin</h2>
<p>Now give it a try! Whether you've <a target="_blank" href="https://app.pixiebrix.com/activate?id=@brittany-joiner/gh-on-a-pr">activated the prebuilt extension</a>, or followed the tutorial and built it on your own, you're ready to test.</p>
<p>Open a pull request and you'll see the sidebar form and no green button. Check off all the items in the list, and submit, then suddenly your button appears, and you're already assigned to the PR!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/07/demo-pr-checklist.gif" alt="demo-of-pr-checklist" width="600" height="400" loading="lazy">
<em>Demo of PR Checklist</em></p>
<p>If you have any trouble getting started with building this or it's not working as intended, the PixieBrix community is active and the maintainers are always willing to jump in and help. </p>
<p>But if you're more of a visual learner and prefer to watch, I created a video that shows you how to <a target="_blank" href="https://youtu.be/cpZ1J2s-2jk">build this automated PR checklist</a>.</p>
<p>Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
