Skills DirectorySearch all skills ↗

AI agent skill · by @ovh

Repo Analysis

Analyze uncommitted changes in the repository, group them into logical commits, and determine the appropriate version bump

Archived 2026-10-23 · Source updated 2026-10-09 · License: Apache-2.0. Check the original repository for the latest version.

SKILL.md instructions

# Repository Change Analysis

## Purpose
Analyze uncommitted changes in the repository, group them into logical commits, determine the appropriate version bump, and guide the user through committing each group cleanly.

## Procedure

### 1. Gather All Changes
- Run `git status` to see the full list of modified, staged, deleted, and untracked files.
- Run `git diff` and `git diff --staged` to inspect the actual changes.
- If the diff is large, review files one by one using `git diff -- <file>` or `git diff --staged -- <file>`.

### 2. Identify Logical Change Groups
Analyze the changes and group them into logical features/fixes. Each group should:
- Represent a single coherent concern (e.g., "add TUI status bar", "refactor session persistence", "fix pty leak").
- Be independently committable without breaking the build.
- Map to a conventional commit type (`feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`, `ci:`).

Present the proposed grouping to the user in a structured format:

```
## Proposed Commits

### Commit 1 — feat: <short description>
- **Files:** list of files
- **Rationale:** why these belong together

### Commit 2 — fix: <short description>
- **Files:** list of files
- **Rationale:** why these belong together

...
```

Wait for user confirmation before proceeding.

### 3. Determine Version Bump
Based on the full set of changes, determine the appropriate version bump following [Semantic Versioning](https://semver.org/):

| Change Type | Version Bump | Examples |
|-------------|---------------|---------|
| **Major** (`X.0.0`) | Breaking changes, API removals, incompatible behavioral changes | Renaming/removing public APIs, changing config format, removing features |
| **Minor** (`x.Y.0`) | New features, backward-compatible additions | New tools, new commands, new config options, new capabilities |
| **Patch** (`x.y.Z`) | Bug fixes, refactors, docs, chores | Fixes, code cleanup, dependency updates, documentation |

#### Decision Guidelines
- If **any** change introduces a breaking change → **major** bump.
- Else if **any** change adds a new feature → **minor** bump.
- Else → **patch** bump.
- When in doubt, prefer the **lower** bump unless the user specifies otherwise.

Present the recommendation:
```
## Version Recommendation
- **Current version:** x.y.z
- **Proposed version:** x.y.z+1 (or X+1.0.0 / x.Y+1.0)
- **Bump type:** major/minor/patch
- **Rationale:** <brief explanation>
```

Wait for user confirmation before proceeding.

### 4. Stage and Commit Each Group
For each logical change group:
1. Stage the relevant files: `git add <files>` (or `git add -p` for partial staging).
2. Commit with a clear conventional-commit message:
   ```bash
   git commit -m "feat: short description" -m "Detailed explanation of what and why."
   ```
3. Verify the commit succeeded with `git log --oneline -1`.

### 5. Update Version Numbers
If a version bump is needed:
1. Check the current version: `grep '^version' shai-cli/Cargo.toml | head -1`
2. Update the version in **all** crate manifests:
   - `shai-cli/Cargo.toml`
   - `shai-core/Cargo.toml`
   - `shai-llm/Cargo.toml`
   - `shai-macros/Cargo.toml`
   - Also update `Cargo.lock` with `cargo check` or `cargo build`.
3. Commit the version bump:
   ```bash
   git add -A
   git commit -m "chore: release vX.Y.Z"
   ```

### 6. Final Verification
- Run `cargo fmt` and `cargo clippy` to ensure code quality.
- Run `cargo test` to verify everything compiles and passes.
- Show the final `git log --oneline` to confirm the commit history is clean.

## Guidelines
- **Never** commit secrets, credentials, or `.env` files.
- **Always** confirm the grouping and version bump with the user before committing.
- Keep commit messages under 72 characters for the subject line.
- Use the imperative mood in commit messages (e.g., "Add feature X", not "Added feature X").
- If changes are interdependent, note the order in which commits should be applied.
- If a single file contains changes belonging to multiple groups, use `git add -p` to stage hunks selectively.
- Do not push unless explicitly asked by the user.
- If the working tree has merge conflicts, resolve them before attempting to commit.

Related skills