install
source · Clone the upstream repo
git clone https://github.com/not-matthias/dotfiles-nix
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/not-matthias/dotfiles-nix "$T" && mkdir -p ~/.claude/skills && cp -r "$T/modules/home/programs/cli-agents/shared/skills/commit" ~/.claude/skills/not-matthias-dotfiles-nix-commit && rm -rf "$T"
manifest:
modules/home/programs/cli-agents/shared/skills/commit/SKILL.mdsource content
<!-- Source: https://github.com/mitsuhiko/agent-stuff/blob/main/skills/commit/SKILL.md -->
Create a git commit for the current changes using a concise Conventional Commits-style subject.
Format
<type>(<scope>): <summary>
REQUIRED. Usetype
for new features,feat
for bug fixes. Other common types:fix
,docs
,refactor
,chore
,test
.perf
OPTIONAL. Short noun in parentheses for the affected area (e.g.,scope
,api
,parser
).ui
REQUIRED. Short, imperative, <= 72 chars, no trailing period.summary
Notes
- Body is strongly encouraged — always include one unless the change is trivially obvious (e.g., fixing a typo). The body should explain what changed, why it changed, the approach taken, and any notable decisions. A reader of
should understand the change without looking at the diff.git log - Do NOT include breaking-change markers or footers.
- Do NOT add sign-offs (no
).Signed-off-by - Only commit; do NOT push.
- If it is unclear whether a file should be included, ask the user which files to commit.
- Treat any caller-provided arguments as additional commit guidance. Common patterns:
- Freeform instructions should influence scope, summary, and body.
- File paths or globs should limit which files to commit. If files are specified, only stage/commit those unless the user explicitly asks otherwise.
- If arguments combine files and instructions, honor both.
Examples
Good commit messages are specific about why the change matters, not just what changed:
fix: keep keyboards and mice awake despite powertop autosuspend fix(ida-pro): fix plugin loading errors for bindiff and binsync fix: pin docker container images to specific versions instead of latest fix: tune ZFS txg_sync and zrepl retention to reduce CPU overhead feat: add agent-browser with versioned npm cache and corruption recovery feat(niri): add shortcuts for focusing on columns
Bad — vague, just restates the diff
feat: update config fix: fix bug feat: add pi-mono Nix package with extension system chore: update flake fix: soulsync stuff
Context
- Working tree status: !
git status --short - Staged diff: !
git diff --cached - Unstaged diff: !
git diff - Recent commit style: !
git log -n 20 --pretty=format:%s
Steps
- Infer from the prompt if the user provided specific file paths/globs and/or additional instructions.
- Review the embedded context above to understand the current changes (limit to argument-specified files if provided).
- If there are ambiguous extra files, ask the user for clarification before committing.
- Stage only the intended files (all changes if no files specified).
- Run
(andgit commit -m "<subject>"
if needed).-m "<body>"