AI Tools·

Creating my own CLI Tool - Towles Tool

Info about creating my own CLI tool and best practices
Screenshot of VS Code configured for prompt engineering at a desk

Starting this post as the kick off of again re-creating towles-tool, my public best practices or DIY repo. I've had private repos for years with my alias or helper scripts and notes but never made them public. After a few conversations with my brother Patrick and my wife, I decided to make this one public.

Why Python?

I wanted to use Python instead of Typescript for this project for a few reasons:

  • At work, I am the Principal Architect on the Cloud AI services team at GE Aerospace and we use Python for most of our AI/ML work. And while I'm a super fan of TypeScript and Anthony Fu, Daniel Roe, Evan You, and Boshen have done an amazing job with the ecosystem, Python has a few advantages for AI/ML work:
    • More popular in the AI/ML community - Python is the most popular language for AI/ML and has a large community of developers and researchers.
    • Better support for scientific computing - Python has a number of libraries for scientific computing that are not available in other languages.
  • uv An extremely fast Python package and project manager, written in Rust.
    • It's like Poetry but faster. It has a number of features that make it a great choice for managing Python projects.
    • Previously, I tried Poetry and pyenv virtualenv, but uv is way easier to use and faster.
  • The number of peers that have Python as their primary language means getting them to install Node and npm is a barrier to entry.
  • While I should likely use Rust like my brother Patrick would prefer, Python still has the edge when it comes to AI/ML work.

Why a CLI tool?

I wanted to create a CLI tool for a few reasons:

  • I use the command line a lot and wanted to create a tool that would make my life easier.
  • I already have a number of alias and helper scripts that I use on a regular basis, but in TypeScript or Bash.
  • I already use Python for a number of tasks.
  • I'll find an fzf or fzf equivalent for Python CLI lists like I'm used to in my TypeScript CLI tools.

First Steps

After pushing this repo the first steps are the following:

  • create github issues
  • create pypi project
  • publish first version
  • setup github actions for ci/cd
  • test and document usage
  • create version cli commands
  • publish first version

Release

The repo is now public:

https://github.com/ChrisTowles/towles-tool

Excited to get started on this journey and share my best practices with the world. Stay tuned for more updates!