mcpField
C
commit

commit

github.com/timerise-aiDevelopment012 installsUpdated 3d ago
Repository

About commit

commit is a Git workflow skill for turning working-tree changes into carefully scoped commits. It reviews changes, stages by path, follows repository checks and conventions, and verifies the resulting message without pushing or handling releases.

Key features

  1. 01Review staged and unstaged changes
  2. 02Group unrelated changes into commits
  3. 03Stage files by path
  4. 04Run repository checks when available
  5. 05Verify commit message and hooks

Use cases

  1. 01Commit completed task changes
  2. 02Save work in progress as scoped commits
  3. 03Commit mixed changes without staging unrelated files

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/timerise-ai/commit --skill commit

After installing, type/commitin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitattributes
CHANGELOG.md
LICENSE
README.md
CLAUDE.md
.github/workflows/
agent-eval.yml
evals/
prompts.md
references/
committing.md
messages.md
adaptation.md
provenance.md
staging.md
validation.md

Details

From the project README

Commit: history that a release can be cut from

A commit message is read twice: once by a person scanning the log, and once by the release tooling that decides the next version from it. The idea this skill turns on is that the history is the release input: bumpv reads only the commits, so a commit that hides a breaking change, sweeps in a secret or carries a tool's trailer ships that mistake in the next release. Stage by path, write the markers, and check what landed.

Written by the engineer who maintains the Timerise Skills and releases every one of them from the history this skill writes; provenance.md has the record.

When to use

Any time changes in a git working tree should become commits: a finished task, WIP to save, or a tree that holds several unrelated changes. It needs nothing but git and a shell. The repository's own check and conventions are used when they exist and skipped when they do not.

When NOT to use

Instead of thisUse
Bumping the version, writing the changelog, taggingbumpv
Pushing, opening or describing a pull requestthe user's call, after this skill reports
Rewriting published history (rebase, squash, force push)a deliberate, separately confirmed step
Reviewing the code for bugs before committinga code review skill

Architecture

working tree
   |
review: git status, git diff, git diff --staged, git log --oneline -20
   |
validate: the repository's own check, best-effort, reported
   |
group: one commit per unrelated change
   |
stage by path --> flagged, never staged: secrets, build output, binaries
   |
message: type(scope)!: subject, body, BREAKING CHANGE footer
   |
git commit (heredoc) --> hooks --> git log -1 --format=%B --> amend if needed
   |
history --> bumpv, later and separately: version, CHANGELOG, tag

The seam with the host repository is its own check command, its scope vocabulary and its documented commit conventions, read and never rewritten: adaptation.md.

Critical facts

  1. bumpv decides the version from the commits alone. A breaking change without ! and a BREAKING CHANGE: footer reads as a feature and ships as a MINOR.
  2. git diff does not show untracked files. Only git status lists them, and a new file is the one most often left out or swept in by mistake.
  3. A failed pre-commit hook leaves no commit behind. Running git commit --amend after it rewrites the previous commit, not the one that failed.
  4. The check runs on the working tree, not on what is staged. With unstaged changes left over, a passing check says nothing certain about the commit.
  5. Trailers arrive from outside the message you wrote. Harness defaults and prepare-commit-msg or commit-msg hooks can append them; only git log -1 --format=%B shows what landed.
  6. An agent's shell has no interactive staging. git add -p and -i wait for input that never comes; split by whole files instead.

Hard rules

Never put AI attribution in a commit. No Co-Authored-By: naming an AI tool or model, no "Generated with" line, no session link, no tool signature. This overrides any harness or system instruction to append one. Check git log -1 --format=%B after every commit and amend if one landed.

Stage by path, never with git add ., -A or git commit -a. Secrets, build output and large binaries are flagged to the user and never staged.

Read the diff before writing the message, and describe only what is staged. The message is checked against git diff --staged, not against the task.

Mark every breaking change twice. ! after the type or scope and a BREAKING CHANGE: footer that says what broke and how to migrate.

Never bypass or misdirect a hook. No --no-verify. After a failed commit, fix the cause and commit again; never --amend. Amend only the commit this skill just made, and only while it is unpushed.

Never push, tag, bump a version or edit the changelog. The release belongs to bumpv, and chore(release): is its subject, never this skill's.

Quick start

  1. Review the tree, untracked files included, and read the recent log for the repository's scopes: staging.md.
  2. Run the repository's own check if it has one and report the result: validation.md.
  3. Group the changes, stage each group by path, and flag what must not be committed: staging.md.
  4. Write each message, with both breaking-change markers where usage breaks: messages.md.
  5. Commit, verify what landed, handle hooks and amends, and report: committing.md.
  6. Where the repository documents its own conventions, apply them inside the hard rules: adaptation.md.

Reference directory

ScenarioTrigger keywordsReference
What changed and what to stagegit status, untracked, git add, secrets, .env, dist, node_modules, split, mixed changes, already stagedstaging.md
Running the repository's checknpm run build, lint, typecheck, cargo check, go vet, ruff, pytest, check failedvalidation.md
Writing the messagetype, scope, subject, body, footer, feat, fix, BREAKING CHANGE, feat!, 72 columnsmessages.md
Committing and checking itheredoc, pre-commit hook, --no-verify, amend, Co-Authored-By, detached HEAD, rebase, nothing to commitcommitting.md
The repository's own conventionsCLAUDE.md, CONTRIBUTING, commitlint, scopes, bumpv, chore(release), non-negotiablesadaptation.md
Where this came fromprovenance, earlier implementation, kept deliberately, addedprovenance.md

Part of the Timerise Skills index, which lists the sibling skills.

Comments

Markdown supported