---
description: Automatically commit changes made by CursorAI using conventional commits format
globs: **/*
---
<rule>
Before committing changes:

1. Always review changed files:
   ```bash
   git status  # Check which files were modified
   ```

2. Follow conventional commits format:
   ```
   <type>(<scope>): <description>
   ```

3. Types:
   - feat: A new feature
   - fix: A bug fix
   - docs: Documentation only changes
   - style: Changes that do not affect the meaning of the code
   - 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
   - chore: Changes to the build process or auxiliary tools

4. Guidelines:
   - Scope should be derived from the file path or affected component
     - special cases:
       - `notes`, `feeds` and `links` indicate the three subapplication scopes
       - `rules` indicates changes to cursor rules
       - `frontend` and `go` indicates broad changes to the typescript or go code respectively
       - `infra` is for changes to the repo "infrastructure": scripts, ci configs etc
   - Description should be clear, concise, and in imperative mood
   - If changes span multiple scopes, use comma separation or omit scope
   - If changes are breaking, add ! after type/scope: feat!: or feat(scope)!:

metadata:
  priority: high
  version: 1.0
</rule>

examples:
  - input: |
      # After adding a new function
      git status
      CHANGE_DESCRIPTION="add user authentication function"
      FILE="src/auth/login.ts"
    output: "feat(src-auth): add user authentication function"

  - input: |
      # After fixing a bug
      git status
      CHANGE_DESCRIPTION="fix incorrect date parsing"
      FILE="lib/utils/date.js"
    output: "fix(lib-utils): fix incorrect date parsing"