Commit-Me Skill Guide
This skill guides the agent in staging and committing files across active git workspaces, splitting changes into logical, functional commit groups with Conventional Commit messages, utilizing a Preview & Confirm workflow.
When to Use
- When committing changes across single or multiple active git workspaces.
- When multiple unrelated or loosely related changes need to be split into atomic, logical commits.
- When drafting clear Conventional Commit messages (
feat, fix, refactor, build, etc.).
When NOT to Use
- When the user explicitly instructs to run a raw
git commit -a without grouping or confirmation.
- When committing changes without user authorization.
Execution Workflow
Follow this systematic step-by-step workflow:
Step 1: Scan and Detect Changes
- Identify all active workspaces/repositories.
- For each workspace, run
git status to find all unstaged modified files, staged files, and untracked files.
- If there are no changes across all workspaces, report: "No modifications detected in any active workspace." and terminate.
Step 2: Group Changes Functionally
Analyze the diffs and file purposes. Group the changes into cohesive functional units:
- Tightly Coupled Files: If a change in a core model file requires updates in the view controller/screen, they MUST be grouped together in the same commit.
- Separate Features: If changes relate to distinct features (e.g., ads integration vs. color theme updates), they MUST be placed in separate commits.
- Configurations: Separate configuration files (e.g.,
.gitignore, build.gradle, config manifests) from functional source code changes when they are not directly required by the new feature code.
Step 3: Format Conventional Commit Messages
For each group, draft a Conventional Commit message:
- Format:
<type>(<scope>): <intent-focused description in lowercase>
- Types:
feat: New feature/mechanic
fix: Bug fix
style: Theme/style updates, color palette changes, layout styling (no logic change)
refactor: Code restructuring without adding features or fixing bugs
build: Build system, Gradle configs, dependency catalog/version updates
chore: Gitignore updates, tooling, repo maintenance
docs: Documentation updates
- Intent-First Principle (Crucial):
- Focus on WHY and WHAT subsystem is affected, rather than listing mechanical changes or raw variable names.
- Never generate generic messages like "update dependencies", "fix bugs", or "update files".
- For dependency updates, identify the functional objective/domain:
- E.g., for auth/credential upgrades:
build(auth): upgrade google auth and credential manager dependencies
- E.g., for ads SDK:
build(ads): upgrade google admob sdk dependencies
- For code changes, describe the capability or behavioral impact.
- Examples:
feat(ads): integrate Google AdMob rewarded revive callback
build(auth): upgrade google auth and credential manager dependencies
style(theme): update LightPalette hex color codes
chore(git): ignore local material-theme.json file
Step 4: Preview Plan and Request Approval
Present the proposed commit plan to the user in a clean markdown table. The preview MUST contain:
- Workspace: The path/name of the repository.
- Commit Message: The proposed Conventional Commit message.
- Target Files: List of files to be included in this specific commit.
Ask the user: "Should I proceed with this commit plan?"
CRITICAL: You must wait for the user's explicit confirmation before running any commit command.
Step 5: Execution
Once the user approves the plan:
- For each planned commit group:
- Run
git reset on the workspace to ensure a clean staging state.
- Run
git add <file1> <file2> ... for files belonging to the current commit.
- Run
git commit -m "<message>" to commit the staged files.
- After all commits are made, print a summary showing the commit SHAs, messages, and target workspaces.
Common Mistakes to Avoid
- Auto-committing without user confirmation: Always preview first and get explicit permission.
- Vague commit messages: Avoid commit messages like "updated files" or "wip".
- Bundling unrelated changes: Do not combine configuration chores with core business logic changes in a single commit.
1---2name: commit-me3description: Use when staging and committing changes across one or multiple git repositories/workspaces, needing conventional commit messages, or grouping uncommitted changes into logical atomic commits.4---56# Commit-Me Skill Guide78This skill guides the agent in staging and committing files across active git workspaces, splitting changes into logical, functional commit groups with Conventional Commit messages, utilizing a Preview & Confirm workflow.910## When to Use11- When committing changes across single or multiple active git workspaces.12- When multiple unrelated or loosely related changes need to be split into atomic, logical commits.13- When drafting clear Conventional Commit messages (`feat`, `fix`, `refactor`, `build`, etc.).1415## When NOT to Use16- When the user explicitly instructs to run a raw `git commit -a` without grouping or confirmation.17- When committing changes without user authorization.1819---2021## Execution Workflow2223Follow this systematic step-by-step workflow:2425### Step 1: Scan and Detect Changes261. Identify all active workspaces/repositories.272. For each workspace, run `git status` to find all unstaged modified files, staged files, and untracked files.283. If there are no changes across all workspaces, report: "No modifications detected in any active workspace." and terminate.2930### Step 2: Group Changes Functionally31Analyze the diffs and file purposes. Group the changes into cohesive functional units:32- **Tightly Coupled Files**: If a change in a core model file requires updates in the view controller/screen, they MUST be grouped together in the same commit.33- **Separate Features**: If changes relate to distinct features (e.g., ads integration vs. color theme updates), they MUST be placed in separate commits.34- **Configurations**: Separate configuration files (e.g., `.gitignore`, `build.gradle`, config manifests) from functional source code changes when they are not directly required by the new feature code.3536### Step 3: Format Conventional Commit Messages37For each group, draft a Conventional Commit message:38- Format: `<type>(<scope>): <intent-focused description in lowercase>`39- Types:40 - `feat`: New feature/mechanic41 - `fix`: Bug fix42 - `style`: Theme/style updates, color palette changes, layout styling (no logic change)43 - `refactor`: Code restructuring without adding features or fixing bugs44 - `build`: Build system, Gradle configs, dependency catalog/version updates45 - `chore`: Gitignore updates, tooling, repo maintenance46 - `docs`: Documentation updates47- **Intent-First Principle (Crucial)**:48 - Focus on WHY and WHAT subsystem is affected, rather than listing mechanical changes or raw variable names.49 - Never generate generic messages like "update dependencies", "fix bugs", or "update files".50 - For dependency updates, identify the functional objective/domain:51 * E.g., for auth/credential upgrades: `build(auth): upgrade google auth and credential manager dependencies`52 * E.g., for ads SDK: `build(ads): upgrade google admob sdk dependencies`53 - For code changes, describe the capability or behavioral impact.54- Examples:55 - `feat(ads): integrate Google AdMob rewarded revive callback`56 - `build(auth): upgrade google auth and credential manager dependencies`57 - `style(theme): update LightPalette hex color codes`58 - `chore(git): ignore local material-theme.json file`5960### Step 4: Preview Plan and Request Approval61Present the proposed commit plan to the user in a clean markdown table. The preview MUST contain:621. **Workspace**: The path/name of the repository.632. **Commit Message**: The proposed Conventional Commit message.643. **Target Files**: List of files to be included in this specific commit.6566Ask the user: "Should I proceed with this commit plan?"67**CRITICAL**: You must wait for the user's explicit confirmation before running any commit command.6869### Step 5: Execution70Once the user approves the plan:711. For each planned commit group:72 - Run `git reset` on the workspace to ensure a clean staging state.73 - Run `git add <file1> <file2> ...` for files belonging to the current commit.74 - Run `git commit -m "<message>"` to commit the staged files.752. After all commits are made, print a summary showing the commit SHAs, messages, and target workspaces.7677---7879## Common Mistakes to Avoid80- **Auto-committing without user confirmation**: Always preview first and get explicit permission.81- **Vague commit messages**: Avoid commit messages like "updated files" or "wip".82- **Bundling unrelated changes**: Do not combine configuration chores with core business logic changes in a single commit.