# Safe Commit

> Stage all changes and create a conventional commit with a generated message. Use when ready to commit and want automated staging and commit message generation.

- Skill: `davila7/safe-commit` (Agent Skill)
- Install (CLI): `npx skillmds@latest add davila7/safe-commit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/davila7/safe-commit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: davila7 (https://skillmd.com/u/davila7)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/davila7/safe-commit

---


## Safe commit workflow

### Step 1: Check current state

Run:
```
git status
```

Show the output. If there is nothing to commit (working tree clean), stop and report that there are no changes to commit.

### Step 2: Review what will be committed

If there are staged changes, run:
```
git diff --staged
```

If there are no staged changes but there are unstaged changes, run:
```
git add -A
```

Then confirm: "Staged all changes. Run `git diff --staged` to review."

Run `git diff --staged` and show the output.

### Step 3: Generate a conventional commit message

Analyze the staged diff and write a commit message following the Conventional Commits format:

```
<type>(<scope>): <short summary>

<body — optional, only if the why is not obvious from the diff>
```

Types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `perf`, `style`.

Rules:
- Summary line: 72 characters maximum, imperative mood ("add" not "adds" or "added")
- Scope: the module, component, or file area affected (optional but recommended)
- Body: explain why, not what — the diff already shows what

Present the proposed commit message to the user before committing.

### Step 4: Commit

After presenting the message, run:
```
git commit -m "<generated message>"
```

If the commit fails (for example, a pre-commit hook rejects it), report the hook output verbatim and stop. Do not retry with a different message unless the user asks.

### Step 5: Confirm

Show the result:
```
git status
```

Report the commit hash from the output of the commit command and confirm the working tree is clean.

