SkillAgentSearch skills...

Scmpuff

šŸ”¢ Numeric file shortcuts for common git commands

Install / Use

/learn @mroth/Scmpuff
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

scmpuff šŸ”¢

Makes working with git from the command line quicker by substituting numeric shortcuts for files.

<img width="600" src="./docs/demo/demo.gif">

scmpuff is a minimalistic reinterpretation of the core functionality of SCM Breeze.

It is focused on simplicity, speed, robustness, and cross-platform support. The majority of the functionality is contained within a compiled binary, and the shell integration is under 100 lines of shell script.

scmpuff currently has built-in support for bash, zsh, and fish.

Installation

Download the binary for your platform, and copy it to somewhere in your default path.

Alternatively, if you use Homebrew, you can just: brew install scmpuff.

Setup

To initialize shell functions, add the following to your ~/.bash_profile or ~/.zshrc file:

eval "$(scmpuff init -s)"

For fish shell, add the following to your ~/.config/fish/config.fish file:

scmpuff init --shell=fish | source

This will define the scmpuff shell functions as well as some handy shortcuts.

Usage

Once things are loaded, the most important function you will want to know about is scmpuff_status, which is aliased to gs for short.

This is a replacement for git status that is pretty and shows you numbers next to each filename, for example:

$ gs
# On branch: master  |  +1  |  [*] => $e*
#
āž¤ Changes not staged for commit
#
#       modified:  [1] main.go
#
āž¤ Untracked files
#
#      untracked:  [2] HELLO.txt
#      untracked:  [3] features/shell_aliases.feature
#      untracked:  [4] mkramdisk.sh
#

You can now use these numbers in place of filenames when calling normal git commands, e.g. git add 2 3 or git checkout 1.

You can also use numeric ranges, e.g. git reset 2-4. Ranges can even be mixed with individual numeric operands.

Behind the scenes, scmpuff is assigning filenames to sequential environment variables, e.g. $e1, $e2, so you can refer to those with other commands too if needed.

By default, scmpuff will also define a few handy shortcuts to save your fingers, e.g. ga, gd, gco. Check your aliases to see what they are.

FAQ

How does it compare with SCM Breeze?

The short version: it does less, but is faster and should be more stable and reliable, especially across different platforms.

Can I disable or change the default git shortcut aliases?

You can disable them via passing --aliases=false to the scmpuff init call in your shell initialization. Then, if you wish to remap them, simply modify your default aliases wherever you normally do, but add aliases mapped to the scmpuff shell functions, e.g. alias gs='scmpuff_status'.

Can I use scmpuff with a custom git binary or wrapper?

By default, scmpuff will attempt to utilize the absolute path of whatever git it finds in your system PATH, ignoring existing shell aliases. If you want to use a different binary, set $SCMPUFF_GIT_CMD in your shell to the path, for example, export SCMPUFF_GIT_CMD=/usr/local/bin/my-git-wrapper.

Contributing

Interested in contributing? See docs/contributing.md for guidelines.

View on GitHub
GitHub Stars409
CategoryDevelopment
Updated23h ago
Forks26

Languages

Go

Security Score

100/100

Audited on Apr 6, 2026

No findings