# Commit

> Commit current changes with a clear, descriptive message

- Skill: `majiayu000/commit-44` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/commit-44`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/commit-44/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/commit-44

---


# Commit Changes

Commit the current staged/unstaged changes with a well-crafted commit message.

## Arguments

`$ARGUMENTS` can be used for special instructions, such as:
- Guiding the message: "emphasize the breaking change"
- Adding context: "this fixes issue #123"
- Requesting amend: "amend the previous commit"

## Step 1: Gather Information

Run these commands in parallel to understand the changes:

1. **Git status**: `git status --porcelain` (check for staged/unstaged changes)
2. **Staged diff**: `git diff --cached` (what will be committed if there are staged changes)
3. **Unstaged diff**: `git diff` (what's modified but not staged)
4. **Recent commits**: `git log -5 --oneline` (to match existing commit style)

**Important checks:**
- If no changes exist (nothing staged or unstaged), inform the user there's nothing to commit
- If there are unstaged changes but nothing staged, stage all changes with `git add -A` (or ask user if they want to selectively stage)
- If there are both staged and unstaged changes, ask user if they want to include unstaged changes

## Step 2: Analyze Changes

Review the diff to understand:
- **What** changed (files, functions, features)
- **Why** it changed (bug fix, new feature, refactor, etc.)
- **Impact** (breaking changes, dependencies, configuration)

## Step 3: Generate Commit Message

### Message Guidelines

1. **Subject line**:
   - Use imperative mood ("add feature" not "added feature")
   - Keep under 50 characters (hard limit: 72)
   - Don't end with a period
   - Use lowercase for the first letter

2. **Body** (if needed for complex changes):
   - Separate from subject with blank line
   - Wrap at 72 characters
   - Explain *what* and *why*, not *how*
   - Use bullet points for multiple items

3. **Footer** (if needed):
   - Reference issues: `Fixes #123`, `Closes #456`

### Examples

**Simple change:**
```
add user authentication endpoint
```

**Change with body:**
```
add rate limiting to public endpoints

- Implement token bucket algorithm
- Add configurable limits per endpoint
- Include rate limit headers in responses

Closes #234
```

## Step 4: Create the Commit

1. **Stage changes** (if needed):
   ```bash
   git add -A
   ```
   Or stage specific files if user requested selective staging.

2. **Create commit** using HEREDOC for proper formatting:
   ```bash
   git commit -m "$(cat <<'EOF'
   <description>

   <body if needed>

   <footer if needed>
   EOF
   )"
   ```

3. **Verify** the commit was created:
   ```bash
   git log -1 --oneline
   ```

4. **Report** the commit hash and message to the user.

## Edge Cases

- **No changes**: Inform user there's nothing to commit
- **Amend requested**: Use `git commit --amend` (only if explicitly requested in arguments)
- **Large changes**: Suggest breaking into multiple commits if changes span unrelated areas
- **Merge conflicts**: Inform user and provide guidance on resolution
- **Pre-commit hooks fail**: Report the failure and suggest fixes

