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.
    • Its 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 perfer, 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 a fzf or fzf equivalent for python cli list like i'm use 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!