Style & Commit Skill
When you are asked to commit changes, you MUST use the Conventional
Commits specification.
Format
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Pre-commit Workflow
Before staging and committing files, you MUST ensure that all repository
formatting and styling guidelines are met by running the unified pre-commit
script:
- Locate and run the
pre_commit.sh script. Depending on where this skill is
installed, it will be at one of these paths:
./.agents/skills/style_and_commit/scripts/pre_commit.sh (Local Repo)
~/.gemini/config/skills/style_and_commit/scripts/pre_commit.sh (Global)
Execute the path that exists. This script automatically:
- Formats code (Swift, Obj-C, etc.)
- Checks and adds copyright headers
- Wraps markdown text at 80 characters and removes trailing whitespace
- Runs
shellcheck on any modified shell scripts
- If the script fails (e.g., shellcheck reports an error), you MUST read the
error, fix the issues, and re-run the script until it succeeds.
- Once the script passes, stage the intended changes (
git add ...) and
commit using git commit -m "...".
Rules
- Types: Use one of the following types:
feat: A new feature
fix: A bug fix
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space,
formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug nor adds a feature
perf: A code change that improves performance
test: Adding missing tests or correcting existing tests
build: Changes that affect the build system or external dependencies
(example scopes: gulp, broccoli, npm)
ci: Changes to our CI configuration files and scripts (example scopes:
Travis, Circle, BrowserStack, GitHub Actions)
chore: Other changes that don't modify src or test files
revert: Reverts a previous commit
- Scope: A scope may be provided to a commit's type, to provide additional
contextual information and is contained within parenthesis, e.g.,
feat(parser): add ability to parse arrays.
- Description:
- Use the imperative, present tense: "change" not "changed" nor "changes".
- Don't capitalize the first letter.
- No dot (.) at the end.
- Body:
- Just as in the description, use the imperative, present tense.
- The body should include the motivation for the change and contrast this
with previous behavior.
- Separate logical changes: If the user's working directory has multiple
unrelated changes (e.g. CI changes and Dependency updates), you should
create separate commits for each logical change unless the user explicitly
asks for a single commit.
- CI Fixes: When making fixes to CI configuration files or workflows (e.g.
GitHub Actions), use
fix as the commit type and ci as the scope (e.g.
fix(ci): <description>), rather than using ci as the type.
1---2name: style-and-commit3description: Ensure code is styled and commits follow Conventional Commits.4---56# Style & Commit Skill78When you are asked to commit changes, you MUST use the [Conventional9Commits](https://www.conventionalcommits.org/) specification.1011## Format12```13<type>[optional scope]: <description>1415[optional body]1617[optional footer(s)]18```1920## Pre-commit Workflow21Before staging and committing files, you MUST ensure that all repository22formatting and styling guidelines are met by running the unified pre-commit23script:241. Locate and run the `pre_commit.sh` script. Depending on where this skill is25 installed, it will be at one of these paths:26 - `./.agents/skills/style_and_commit/scripts/pre_commit.sh` (Local Repo)27 - `~/.gemini/config/skills/style_and_commit/scripts/pre_commit.sh` (Global)28 Execute the path that exists. This script automatically:29 - Formats code (Swift, Obj-C, etc.)30 - Checks and adds copyright headers31 - Wraps markdown text at 80 characters and removes trailing whitespace32 - Runs `shellcheck` on any modified shell scripts332. If the script fails (e.g., shellcheck reports an error), you MUST read the34 error, fix the issues, and re-run the script until it succeeds.353. Once the script passes, stage the intended changes (`git add ...`) and36 commit using `git commit -m "..."`.3738## Rules391. **Types**: Use one of the following types:40 - `feat`: A new feature41 - `fix`: A bug fix42 - `docs`: Documentation only changes43 - `style`: Changes that do not affect the meaning of the code (white-space,44 formatting, missing semi-colons, etc)45 - `refactor`: A code change that neither fixes a bug nor adds a feature46 - `perf`: A code change that improves performance47 - `test`: Adding missing tests or correcting existing tests48 - `build`: Changes that affect the build system or external dependencies49 (example scopes: gulp, broccoli, npm)50 - `ci`: Changes to our CI configuration files and scripts (example scopes:51 Travis, Circle, BrowserStack, GitHub Actions)52 - `chore`: Other changes that don't modify src or test files53 - `revert`: Reverts a previous commit542. **Scope**: A scope may be provided to a commit's type, to provide additional55 contextual information and is contained within parenthesis, e.g.,56 `feat(parser): add ability to parse arrays`.573. **Description**:58 - Use the imperative, present tense: "change" not "changed" nor "changes".59 - Don't capitalize the first letter.60 - No dot (.) at the end.614. **Body**:62 - Just as in the description, use the imperative, present tense.63 - The body should include the motivation for the change and contrast this64 with previous behavior.655. **Separate logical changes**: If the user's working directory has multiple66 unrelated changes (e.g. CI changes and Dependency updates), you should67 create separate commits for each logical change unless the user explicitly68 asks for a single commit.696. **CI Fixes**: When making fixes to CI configuration files or workflows (e.g.70 GitHub Actions), use `fix` as the commit type and `ci` as the scope (e.g.71 `fix(ci): <description>`), rather than using `ci` as the type.