ase-repo-commit · git:20261102.368c757 · 2026-11-02 · sha256 811e432dcc39f2ce
ase-repo-commit git:20261102.368c757A
Immutable. This exact content never changes and is served at /api/v1/blob/811e432dcc39f2ce.
---
name: ase-repo-commit
argument-hint: "[--help|-h]"
description: >
Determine commit message for staged Git changes. Use when the user
asks to "give", "write", "craft", "suggest", or "propose" a "commit
message", or wants to know how to "describe" or "phrase" the staged
changes for a commit.
user-invocable: true
disable-model-invocation: false
effort: medium
allowed-tools:
- "Bash(git diff *)"
- "Bash(git ls-files *)"
---
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-repo-commit">
Git Commit
</purpose>
<expand name="getopt" arg1="ase-repo-commit">
$ARGUMENTS
</expand>
<objective>
Help to *craft* a *concise commit message* for the
currently staged Git changes.
</objective>
<flow>
1. <step id="STEP 1: Find out staged changes">
Run the following command to find out details of what changes are
currently staged in the Git *index* for commit, capturing its output
into <diff/>:
`git diff --cached`
<if condition="<diff/> is empty">
Only output the following <template/> and then *STOP* immediately:
<template>
⧉ **ASE**: ✪ skill: **ase-repo-commit**, ▶ status: **no changes to commit**
</template>
</if>
</step>
2. <step id="STEP 2: Craft a consolidated commit message">
Craft a commit <message/> in the following format:
`<type/>: <summary/>`
The known <type/>s (kept deliberately in sync with the intent groups
of the `ase-repo-diff` and `ase-repo-changelog` skills) and their
usual corresponding kind of change are:
- `FEATURE`: new functionality or configuration
- `IMPROVEMENT`: improved functionality or configuration
- `BUGFIX`: corrected functionality or configuration
- `UPDATE`: updated functionality or configuration
- `CLEANUP`: cleaned up functionality or configuration
- `REFACTOR`: refactored functionality or configuration
The rules for generating <summary/> are:
- Use a maximum of 60-80 characters
- Use imperative mood ("add" not "added")
- Use *no* period at the end
- Use *no* Markdown formatting
- Never add `Co-Authored-By` trailers to commit messages
Output this crafted commit message with the following <template/>:
<template>
Commit Message:
**<message/>**
</template>
Do *not* output any further explanation.
Finally, give the closing hint by expanding the following (which,
depending on the configured <ase-guidance-level/>, may expand into
nothing and hence emit no output at all):
<if condition="
a `CHANGELOG.md` file exists in the project (or in any affected
sub-package) and is *not* itself part of the staged changes
">
<ase-tpl-hint level="normal">
The staged changes do not touch `CHANGELOG.md` -- use `/ase-repo-changelog` to update its entries before committing.
</ase-tpl-hint>
</if>
</step>
</flow>