Skip to main content

smart-commits

Organize and create atomic git commits with intelligent change grouping Use when this capability is needed.

Zur Installation springen

Quellinformationen

Repository
tomevault-io/skills-registry
Letzte Quellaktivität
28. April 2026 um 22:53
Erkannte Sprache von SKILL.md
Englisch
Sterne
1
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
smart-commits
description
Organize and create atomic git commits with intelligent change grouping Use when this capability is needed.
metadata
{"author":"akachida"}
Analyze changes, group them into coherent atomic commits, and create signed commits following repository conventions. This command transforms a messy working directory into a clean, logical commit history. ### Grouping Principles | Principle | Description | | ------------------- | ----------------------------------------------- | | **Feature + Tests** | Implementation and its tests go together | | **Config Changes** | package.json, tsconfig, etc. grouped separately | | **Documentation** | README, docs/ changes grouped together | | **Refactoring** | Pure refactors (no behavior change) separate | | **Bug Fixes** | Each fix is atomic with its test | ### Process Overview 1. **Analyze** - Run `git status` and `git diff` to understand all changes 2. **Group** - Cluster related changes into logical commits 3. **Order** - Determine optimal commit sequence (deps before features, etc.) 4. **Confirm** - Present grouping plan to user for approval 5. **Execute** - Create signed commits in sequence ### Single vs Multiple Commits **Single commit when:** - All changes are for one coherent feature/fix - User provides a specific message via argument - Changes are minimal and related **Multiple commits when:** - Changes span different concerns (feature + docs + deps) - Mix of features, fixes, and chores - Better git history benefits future archaeology ### User Confirmation Before creating commits, present the plan: ``` Proposed Commit Plan: ───────────────────── 1. feat(auth): add OAuth2 refresh token support - src/auth/oauth.ts (modified) - src/auth/oauth.test.ts (modified) 2. chore(deps): update authentication dependencies - package.json (modified) - package-lock.json (modified) 3. docs: update OAuth2 setup guide - docs/auth/oauth-setup.md (modified) Proceed with this plan? [Yes / Modify / Single commit] ``` ## MANDATORY RULES (NON-NEGOTIABLE) **These rules MUST be followed for EVERY commit:** 1. **ALWAYS USE conventional commits v1.0.0 to write the messages:** - you can find the reference into `../../docs/convetional-commits.md` 2. **Commit message body must be clean and professional:** - Only the actual commit description - No metadata, signatures, hashtags, or internal references in the body ## Commit Process ### Step 1: Gather Context Run these commands in parallel to understand the current state: ```bash # Check staged and unstaged changes git status # View ALL changes (staged and unstaged) git diff git diff --cached # View recent commits for style reference git log --oneline -10 ``` ### Step 2: Analyze and Group Changes **For each changed file, determine:** 1. **Type**: feat, fix, chore, docs, refactor, test, style, perf, ci, build 2. **Scope**: Component or area affected (auth, api, ui, etc.) 3. **Logical group**: What other files belong with this change? **Grouping heuristics:** **IMPORTANT NOTE:** This example is only for illustration purposes. The actual grouping should be based on the actual changes and programming language standards. | File Pattern | Likely Group | | ----------------------------- | ------------------------------ | | `*.test.ts`, `*.spec.ts` | Group with implementation file | | `package.json`, `*-lock.json` | Dependency changes | | `*.md`, `docs/*` | Documentation | | `*.config.*`, `tsconfig.*` | Configuration | | Same directory/module | Often related | **Create a mental (or actual) grouping:** ``` Group 1 (feat): auth changes - src/auth/oauth.ts - src/auth/oauth.test.ts Group 2 (chore): dependencies - package.json - package-lock.json Group 3 (docs): documentation - README.md ``` ### Step 3: Determine Commit Order **Order matters for bisectability:** 1. **Dependencies first** - So subsequent commits can use them 2. **Core changes** - Implementation before consumers 3. **Tests with implementation** - Keep them atomic 4. **Documentation last** - Documents the final state ### Step 4: Present Plan and Confirm **MANDATORY: Get user confirmation before executing.** - "I've analyzed your changes and propose this commit plan. How should I proceed?", 1. Execute plan 2. Single commit 3. Let me review it If user selects "Let me review", show the full plan with files per commit. ### Step 5: Execute Commits (Signed) **For each commit group, in order:** **Stage only the files for this commit:** ```bash git add <file1> <file2> ... ``` ### Step 6: Verify Commits After all commits, verify the result: ```bash # Show all new commits git log --oneline -<number_of_commits> # Confirm clean state git status ``` ## Important Notes 1. **Smart grouping** - Analyzes changes and proposes atomic commits for clean history 2. **No visible markers** - The message body stays clean and professional 3. **Transparent** - System tracing is documented, just not prominently displayed 4. **Do not use --no-verify** - Always run pre-commit hooks unless user explicitly requests 5. **User confirmation** - Always present commit plan before executing ## When User Provides Message If the user provides a commit message as argument: 1. **Single commit mode** - Skip grouping analysis, use provided message 2. Use their message as the subject/body 3. Ensure proper formatting (50 char subject, etc.) 4. Create signed commit with trailer ## Step 7: Offer Push (Optional) After successful commit, ask the user if they want to push: - Validate if the branch is already tracking a remote branch then: ```bash git push ``` - If branch has no upstream, use: ```bash git push -u origin <current-branch> ``` --- > Converted and distributed by [TomeVault](https://tomevault.io/claim/akachida) — claim your Tome and manage your conversions. <!-- tomevault:4.0:skill_md:2026-04-15 -->
Auf GitHub ansehen