Use But

SkillDev tools

Commit all current working-copy changes with plain Git, split into logical commits.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Use But skill

What this skill tells your AI

The instructions your AI receives, as published by yspreen/dotfiles in .agents/skills/but/SKILL.md and read by ahel’s review.

This skill means: clean up the current Git working copy by committing every intended change into one or more logical commits.

Use plain git. Do not use GitButler or the but CLI.

Prefer MANY SMALL commits over ONE LARGE commit.

Default Intent

If the user only invokes this skill, treat it as:

Review all dirty work in the current repo, split it into coherent groups, and create descriptive Git commits until the working copy is clean.

Rules

  • Inspect before staging: git status --short, git diff, and git diff --stat.
  • Preserve user work. Do not discard, reset, checkout, or overwrite changes unless explicitly asked.
  • Make multiple commits when the changes represent different concerns.
  • Keep each commit internally consistent: related files, tests, docs, migrations, and generated updates belong with the behavior they support.
  • Use conventional, descriptive commit messages when possible, such as fix: ..., feat: ..., refactor: ..., test: ..., docs: ..., or chore: ....
  • Stage and commit each group in one shell instruction. Never run git add and defer git commit; another agent may change the shared index between those commands.
  • For clean groups of tracked files, use git commit --only -m "..." -- <paths>. This selects and commits only those paths.
  • For unrelated hunks, use the private-index instruction below with git add -p. Do not stage hunks in the shared index.
  • For groups containing untracked files, use one shell instruction with a temporary private index. Keep the repository's shared index out of the operation:
index=$(mktemp)
rm -f "$index"
trap 'rm -f "$index"' EXIT
GIT_INDEX_FILE="$index" git read-tree HEAD && \
GIT_INDEX_FILE="$index" git add -- <paths> && \
GIT_INDEX_FILE="$index" git diff --cached && \
GIT_INDEX_FILE="$index" git commit -m "type: concise description"
  • Do not amend, squash, rebase, or rewrite existing commits unless the user explicitly asks.
  • If any dirty change is unclear, risky, secret-looking, or unrelated to the apparent task, stop and ask before committing it.
  • After committing, verify with git status --short. The goal is no remaining intended dirty changes.

Workflow

git status --short
git diff --stat
git diff

Decide the commit groups. For each group:

git diff -- <paths>
git commit --only -m "type: concise description" -- <paths>
git status --short

For mixed files or untracked files, select, stage, inspect, and commit in one instruction. Use git add -p <path> for mixed files. Use git add -- <paths> for untracked files:

index=$(mktemp)
rm -f "$index"
trap 'rm -f "$index"' EXIT
GIT_INDEX_FILE="$index" git read-tree HEAD && \
GIT_INDEX_FILE="$index" git add -p <path> && \
GIT_INDEX_FILE="$index" git diff --cached && \
GIT_INDEX_FILE="$index" git commit -m "type: concise description"

Repeat until all intended working-copy changes are committed.

Signals

GitHub stars
33
Forks
2
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
but-yspreen
Source
github.com/yspreen/dotfiles