Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 34 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
alias: metool
---

# MeTool (mt) – A Propagation tray for Ideas
# MeTool (mt) – A Propagation Tray for Ideas

![A place for my code](docs/images/20250721011600.png)

MeTool (`mt`) is a lightweight, modular system designed to capture, organize,
and evolve my shell environment. Like a gardener's propagation tray for
seedlings, it provides the perfect environment where scripts, functions, and
tools can take root and grow before being transplanted into standalone
projects.
MeTool (`mt`) is a modular system for organizing all my code, scripts, and configuration. Each piece of functionality lives in its own package with a clear structure, making it easy to find, edit, share, and evolve my tools over time.

Whether capturing a quick shell hack, building a complete application, or managing system services, metool keeps everything organized and accessible—for both humans and AI assistants.

Packages can include a `SKILL.md` file that gives AI assistants like Claude Code the knowledge to help work with that package's tools and workflows.

## Key Features

Expand All @@ -21,34 +21,46 @@ projects.

## Core Commands

- `cd` - Change to mt root or specified target
- `components` - List all package components (bin, shell, config, etc.)
- `cd` - Change to MT_ROOT, module, package, or executable
- `deps` - Check metool dependencies (--install to auto-install on macOS)
- `disable` - Disable systemd service(s) while preserving service files
- `doctor` - Run system health diagnostics
- `edit` - Edit function, executable or file
- `enable` - Enable systemd service(s) from a package
- `git` - Git repository management commands:
- `clone` - Clone a git repository to a canonical location (or show status if already cloned)
- `add` - Add repository to .repos.txt manifest
- `clone` - Clone a git repository to a canonical location
- `pull` - Pull repositories from repos.txt manifest file
- `push` - Push local commits for repositories in manifest
- `repos` - List git repositories
- `sync` - Sync repositories from repos.txt manifest file
- `trusted` - Check if repository is trusted or list patterns
- `install` - Symlink package directories: bin, config, shell
- `modules` - List all metool modules (collections of packages)
- `packages` - List all metool packages with their parent modules
- `trusted` - Check if repository is trusted
- `module` - Module management commands:
- `list` - List modules in working set
- `add` - Add module to working set
- `remove` - Remove module from working set
- `edit` - Edit module
- `update` - Update module(s) from git remote
- `package` - Package management commands:
- `list` - List packages in working set
- `add` - Add package to working set
- `remove` - Remove package from working set
- `edit` - Edit package
- `install` - Install package components
- `uninstall` - Uninstall package (remove symlinks)
- `new` - Create new package from template
- `service` - Manage package services
- `reload` - Reload metool
- `update` - Update metool from git

Use `-h` or `--help` for command usage.


## Real-World Value

- **Capture Ideas Fast**: Turn quick shell hacks into organized, reusable tools
- **Share Selectively**: Keep private scripts private, share what's useful
- **Evolve Naturally**: Start simple, refactor safely, extract when ready
- **Stay Organized**: Never lose track of where that useful function lives
- **Capture Ideas Fast**: Turn quick hacks into organized, reusable packages
- **Share Selectively**: Keep private packages private, share what's useful
- **Stay Organized**: Never lose track of where useful code lives
- **Works at Any Scale**: From shell functions to complete applications with systemd/launchd services

MeTool brings structure to shell creativity while keeping everything accessible
and hackable.
MeTool brings structure to code while keeping everything accessible and hackable.

## Prerequisites

Expand Down
4 changes: 2 additions & 2 deletions SKILL.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
name: metool
description: Package management system for organizing, installing, and managing shell scripts, dotfiles, and development tools. This skill should be used when creating, modifying, reviewing, or installing metool packages, working with metool commands and package structure, or creating Claude Code skills for metool packages.
description: Package management for modular code organization. This skill should be used when creating, installing, or modifying metool packages, working with package structure conventions, or adding Claude Code skills to packages.
---

# Metool Package Management

## Overview

Metool (mt) is a modular system for managing shell environments through packages. It provides a "propagation tray for ideas" - a place where scripts, functions, and tools can be organized, tested, and evolved before becoming standalone projects.
Metool (mt) organizes code through packages - self-contained units with scripts, functions, configuration, and documentation. Packages are organized in modules and installed via GNU Stow symlinks. From shell utilities to complete applications, all code follows the same structure.

## When to Use This Skill

Expand Down
2 changes: 1 addition & 1 deletion shell/completions/mt.bash
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ _mt_completions() {
local prev="${COMP_WORDS[COMP_CWORD - 1]}"

# Get all mt commands from libexec
local mt_commands="cd edit git module package reload update deps"
local mt_commands="cd deps doctor edit git module package reload update"
if [[ -d "${MT_ROOT}/libexec" ]]; then
local libexec_cmds=$(find "${MT_ROOT}/libexec" -type f -name "mt-*" -exec basename {} \; | sed 's/^mt-//')
mt_commands+=" ${libexec_cmds}"
Expand Down
6 changes: 3 additions & 3 deletions shell/mt
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ mt() {
echo
echo "Core Commands:"
echo " cd [TARGET] Change to MT_ROOT, module, package, or executable"
echo " deps [--install] Check metool dependencies (--install to auto-install on macOS)"
echo " doctor [OPTIONS] Run system health diagnostics"
echo " edit TARGET Edit function, executable or file"
echo " git <subcommand> Git repository management"
echo " add [REPO] [ALIAS] Add repository to .repos.txt manifest"
Expand All @@ -177,10 +179,8 @@ mt() {
echo " uninstall PKG [OPTS] Uninstall package (remove symlinks)"
echo " new NAME [PATH] Create new package from template"
echo " service CMD PKG Manage package services"
echo " update Update metool from git"
echo " reload Reload metool"
echo " deps [--install] Check metool dependencies (--install to auto-install on macOS)"
echo " doctor [OPTIONS] Run system health diagnostics"
echo " update Update metool from git"
echo " -h, --help Show this help message and exit"
echo
;;
Expand Down