# Git Commit Assistant

> Stages and commits changes safely in any repository. Use when the user asks to commit, or when a commit would include untracked or sensitive files (credentials, MCP configs, personal settings). Writes Conventional Commits messages with a Japanese explanation. Do not use to merely inspect git status or a diff.

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

---


# Git Commit Assistant Skill

Safe, high-quality Git commits. Sensitive file exclusion, .gitignore management, Conventional Commits message generation.

## Activation Triggers

- "commit", ".gitignore", push-related requests

## Workflow

### Phase 1: Repository Analysis

1. `git status --porcelain` + `git branch --show-current` to check state
2. Read `.gitignore`, suggest missing required patterns

### Phase 2: File Classification

**AUTO_EXCLUDE (never commit)**:
- Secrets: `*.key`, `*.pem`, `*credentials*`, `*secret*`, `*password*`, `.env*`
- MCP config: `.claude.json`, `.mcp.json*`
- Personal settings: `settings.json`, `settings.local.json`, IDE configs
- Build artifacts: `node_modules/`, `dist/`, `build/`, `vendor/`, `*.log`, `*.cache`
- OS: `.DS_Store`, `Thumbs.db`

**AUTO_COMMIT (generally safe)**:
- Source code (`src/**`, `internal/**`, `lib/**`), tests, docs (`*.md`)
- Shared config (`.gitignore`, `package.json`, `tsconfig.json`, `go.mod`, `.github/workflows/*`)
- Skills (`~/.claude/skills/**`)

**CONFIRM (user decision)**: Files > 1MB, new directories, executables, unclassified config files

### Phase 3: Commit Message Generation

1. Analyze changes from `git diff --cached` and `git status`
2. Generate Conventional Commits message:
   ```
   <type>(<scope>): <subject>  ← English, max 50 chars, imperative

   - <description (Japanese OK)>
   ```
   - 3-5 bullets explaining what/why/impact. No file lists
   - Attribution trailer comes from `attribution.commit` in settings.json — do not write it manually
3. Confirm with the user only when Phase 2 turned up a CONFIRM-class file, a file that
   should be excluded, or an ambiguous commit scope. Invoking this skill already expresses
   intent to commit, so an unambiguous commit proceeds without a separate approval step.

### Phase 4: Commit & Push

1. Stage with `git add` / `git rm`
2. Commit using heredoc, verify success
3. Push only after user confirmation

## Sensitive Content Scan

Scan diff before commit:
- API keys: `[A-Za-z0-9_-]{20,}`
- Passwords: `password.*=.*`
- URLs with credentials: `://.*:.*@`

Warn and abort commit on detection.

## Error Handling

| Error | Action |
|-------|--------|
| Merge conflict | Prompt resolution, show conflict files |
| Detached HEAD | Suggest `git switch -c <branch>` |
| Nothing to commit | Report clearly |

## Supporting Files

- `templates/commit-message.md`: Message template and examples

