<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: cameron turner</title>
    <description>The latest articles on Forem by cameron turner (@cturner8).</description>
    <link>https://forem.com/cturner8</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3773100%2F30851e3f-0679-48a7-abb1-ee8edbd54c39.png</url>
      <title>Forem: cameron turner</title>
      <link>https://forem.com/cturner8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cturner8"/>
    <language>en</language>
    <item>
      <title>binmate - a binary version manager</title>
      <dc:creator>cameron turner</dc:creator>
      <pubDate>Sun, 15 Feb 2026 21:33:19 +0000</pubDate>
      <link>https://forem.com/cturner8/binmate-a-binary-version-manager-13cb</link>
      <guid>https://forem.com/cturner8/binmate-a-binary-version-manager-13cb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/cturner8/copilot-cli-challenge" rel="noopener noreferrer"&gt;binmate&lt;/a&gt;&lt;/strong&gt; is a CLI/TUI application for managing binary installations from GitHub releases. It provides an easy way to install, manage, and switch between different versions of command-line tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I Built It
&lt;/h3&gt;

&lt;p&gt;Depending on which platform you are working with, especially Linux, many of the common public package manager repositories such as apt may be several versions behind the latest available for software you want to install forcing you to install manually. This can be particularly problematic in project development when working with different toolchains which may not be available in runtime specific package managers such as &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;go.pkg.dev&lt;/code&gt; or &lt;code&gt;pypi&lt;/code&gt;. This then leads to having to manually maintain updates to new versions which could get tedious depending on the volume of packages you need to upgrade.&lt;/p&gt;

&lt;p&gt;Additionally, unlike tools such as &lt;a href="https://github.com/nvm-sh/nvm" rel="noopener noreferrer"&gt;nvm&lt;/a&gt; for Node.js version management, there is often no straightforward way to switch between different installation versions for troubleshooting or rollback purposes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive TUI&lt;/strong&gt;: Browse and manage binaries with a Terminal User Interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI Commands&lt;/strong&gt;: Automate binary management with command-line interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version Management&lt;/strong&gt;: Install multiple versions and switch between them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Integration&lt;/strong&gt;: Automatically fetch releases from GitHub repositories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database Tracking&lt;/strong&gt;: SQLite database tracks all installations and versions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checksum Verification&lt;/strong&gt;: Ensures integrity of downloaded binaries&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;Bubble Tea&lt;/li&gt;
&lt;li&gt;Lip Gloss&lt;/li&gt;
&lt;li&gt;Cobra&lt;/li&gt;
&lt;li&gt;Viper&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;This short recording demonstrates the following functionality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;first check current version of the &lt;code&gt;gh&lt;/code&gt; CLI (initially not installed)&lt;/li&gt;
&lt;li&gt;launch &lt;code&gt;binmate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;install non-latest version&lt;/li&gt;
&lt;li&gt;verify installed version&lt;/li&gt;
&lt;li&gt;re-launch &lt;code&gt;binmate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;update to latest version&lt;/li&gt;
&lt;li&gt;verify latest version is installed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/i0yZUVkNmwQ"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Screenshots for remaining features are available on &lt;a href="https://github.com/cturner8/copilot-cli-challenge/blob/main/DEMO.md" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/cturner8" rel="noopener noreferrer"&gt;
        cturner8
      &lt;/a&gt; / &lt;a href="https://github.com/cturner8/copilot-cli-challenge" rel="noopener noreferrer"&gt;
        copilot-cli-challenge
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Submission for the 2026 DEV Copilot CLI challenge
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DEV GitHub Copilot CLI Challenge&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/cturner8/copilot-cli-challenge/actions/workflows/test.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/cturner8/copilot-cli-challenge/actions/workflows/test.yml/badge.svg" alt="Tests"&gt;&lt;/a&gt;
&lt;a href="https://github.com/cturner8/copilot-cli-challenge/actions/workflows/release.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/cturner8/copilot-cli-challenge/actions/workflows/release.yml/badge.svg" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/cturner8/copilot-cli-challenge" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/335eef2c8e818f39bcca6e3e2b73e65807d30310b09b15fa562eebbde30d4756/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f637475726e6572382f636f70696c6f742d636c692d6368616c6c656e6765" alt="Go Report Card"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Submission for the &lt;a href="https://dev.to/devteam/join-the-github-copilot-cli-challenge-win-github-universe-tickets-copilot-pro-subscriptions-and-50af" rel="nofollow"&gt;2026 DEV GitHub Copilot CLI challenge&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About binmate&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;binmate&lt;/strong&gt; is a CLI/TUI application for managing binary installations from GitHub releases. It provides an easy way to install, manage, and switch between different versions of command-line tools.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/cturner8/copilot-cli-challenge/./images/cover.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fcturner8%2Fcopilot-cli-challenge%2F.%2Fimages%2Fcover.png" alt="cover image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Key Features&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive TUI&lt;/strong&gt;: Browse and manage binaries with a Terminal User Interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI Commands&lt;/strong&gt;: Automate binary management with command-line interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version Management&lt;/strong&gt;: Install multiple versions and switch between them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Integration&lt;/strong&gt;: Automatically fetch releases from GitHub repositories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database Tracking&lt;/strong&gt;: SQLite database tracks all installations and versions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checksum Verification&lt;/strong&gt;: Ensures integrity of downloaded binaries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="https://github.com/cturner8/copilot-cli-challenge/./DEMO.md" rel="noopener noreferrer"&gt;demo.md&lt;/a&gt; for a demo and screenshots.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Using the Install Script (Recommended)&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Unix (Linux/macOS)&lt;/h4&gt;

&lt;/div&gt;
&lt;p&gt;Install the latest version using our install script:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl -fsSL https://raw.githubusercontent.com/cturner8/copilot-cli-challenge/main/install.sh &lt;span class="pl-k"&gt;|&lt;/span&gt; bash&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;By default, the installer now auto-imports the installed &lt;code&gt;binmate&lt;/code&gt; binary for self-management using its resolved release URL…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/cturner8/copilot-cli-challenge" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;Development of the application used the following GitHub Copilot CLI capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent instructions&lt;/strong&gt; for baseline codebase structure and standards, later extended to also heavily utilise &lt;a href="https://github.com/steveyegge/beads" rel="noopener noreferrer"&gt;beads&lt;/a&gt; for improved task tracking and persistent agent memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom agents&lt;/strong&gt; to provide more focused and specialised agents. The following were originally sourced from the &lt;a href="https://github.com/github/awesome-copilot/blob/main/docs/README.agents.md" rel="noopener noreferrer"&gt;awesome-copilot&lt;/a&gt; repository:

&lt;ul&gt;
&lt;li&gt;Critical Thinking, see &lt;a href="https://github.com/cturner8/copilot-cli-challenge/blob/main/.github/agents/critical-thinking.agent.md" rel="noopener noreferrer"&gt;critical-thinking.agent.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Go Development Expert, revised from "Go MCP Server Development Expert" to be a generic go agent, see &lt;a href="https://github.com/cturner8/copilot-cli-challenge/blob/main/.github/agents/go-expert.agent.md" rel="noopener noreferrer"&gt;go-expert.agent.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SQLite Database Administrator, revised from "PostgreSQL Database Administrator" agent, see &lt;a href="https://github.com/cturner8/copilot-cli-challenge/blob/main/.github/agents/sqlite-dba.agent.md" rel="noopener noreferrer"&gt;sqlite-dba.agent.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;MCP&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;context7&lt;/code&gt; for providing up to date documentation for packages and libraries.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;GitHub MCP&lt;/code&gt; built into Copilot CLI was ideal for allowing the agent direct access to search public codebases, access to action workflow logs for troubleshooting, allowing follow up tasks and recommendations to be extracted from PR comments.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Plan mode&lt;/strong&gt; to refine and improve the following implementations:

&lt;ul&gt;
&lt;li&gt;initial application architecture and structure&lt;/li&gt;
&lt;li&gt;database schema&lt;/li&gt;
&lt;li&gt;TUI functionality based on existing CLI functionality&lt;/li&gt;
&lt;li&gt;build and release action workflows&lt;/li&gt;
&lt;li&gt;end-to-end testing workflow (still in progress)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Delegate to cloud agent&lt;/strong&gt; once an implementation plan is finalised, allowing Copilot to continue working on a task freeing me up to focus on something else. It was also useful in allowing development to continue in moments where I had less time available to spend at my desk.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Code review&lt;/strong&gt; to identify any potential issues or areas for improvement in code changes, particularly helpful given I worked alone on the project.&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
