Kitman is a personal automation CLI written in Go that gathers personal and professional tasks behind a single command (aliased as kit). Built to grow into a unified, extensible toolkit for streamlining routine workflows.
  • Go 72.9%
  • Makefile 27.1%
Find a file
Josh Butler f04b9732ce Initial Kitman CLI scaffolding with hello-world automation
Set up a Go-based personal automation CLI using Cobra with:
- Module: git.emkaytec.com/josh/kitman
- Primary binary: kitman (with kit alias)
- Command families: run (executing automations), with init/create/delete planned
- Sample automation: kitman run hello-world

Includes Makefile with build/install/test/vet targets, README with
extension patterns, and .gitignore for Go artifacts and binaries.
2026-06-17 13:29:01 +00:00
cmd Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00
.gitignore Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00
go.mod Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00
go.sum Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00
main.go Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00
Makefile Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00
README.md Initial Kitman CLI scaffolding with hello-world automation 2026-06-17 13:29:01 +00:00

Kitman

Kitman is a personal automation CLI written in Go. It collects "a number of automated tasks" for personal and professional use, organized into command families. The run family executes automations; additional families such as init, create, and delete are planned.

The primary binary is kitman; kit is a shorter alias for the exact same program (created as a symlink by the build).

Requirements

  • Go 1.26+

Build

make build      # produces ./kitman and the ./kit alias symlink
# or, just the primary binary:
go build -o kitman .

Install both names onto your PATH (into $GOBIN):

make install

Usage

./kitman run hello-world   # -> Hello world!
./kit run hello-world      # identical (alias)

./kitman --help            # top-level help
./kitman run --help        # list available automations

Adding commands

Commands are grouped into families. To add an automation under the existing run family:

  1. Create cmd/run_<name>.go defining a *cobra.Command.
  2. Register it under runCmd in that file's init(): runCmd.AddCommand(<name>Cmd).

This yields kitman run <name> (and kit run <name>). See cmd/run_helloworld.go for the template.

To add a new family (e.g. init, create, delete), define its parent in cmd/<family>.go, register it on rootCmd, then add cmd/<family>_<name>.go files that register under it — mirroring how run.go and run_helloworld.go are wired.

Keep command files thin — put reusable logic (shelling out to other tools, integrations) under an internal/ package as the project grows.

Layout

main.go                  entrypoint -> cmd.Execute()
cmd/root.go              root command (kitman/kit), Execute()
cmd/run.go               the "run" automation family
cmd/run_helloworld.go    sample automation: hello-world