skills/git-atomic-commit/SKILL.md
Analyze git changes, group into atomic commits, generate conventional commit messages with proper type(scope) format. Use when committing changes, grouping staged/unstaged files, or generating commit messages. Enforces universal commit types + repo-specific scopes from .github/git-scope-constitution.md.
npx skillsauth add arisng/github-copilot-fc git-atomic-commitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill enables crafting clean, atomic git commits with conventional commit messages by analyzing all changes in the repository, intelligently grouping them into logical commits, and guiding the user through the process.
Commit messages follow the pattern type(scope): subject. Type and Scope are governed by a three-tier hierarchy:
| Tier | What it governs | Defined by | Stability |
|------|----------------|------------|-----------|
| 1. Universal | Standard Conventional Commits types | Industry convention | Fixed across all repos |
| 2. Author Preferences | Extended types + default file-path mappings | Skill author (opinionated) | Portable across repos; users may override |
| 3. Workspace-Specific | Scopes, additional types, file-path overrides | .github/git-scope-constitution.md per repo | Unique per repository |
Commit Types = Tier 1 + Tier 2. Types represent the intent of the change. Commit Scopes = Tier 3. Scopes represent the domain, module, or location of the change, tightly coupled to the repository's context.
Standard Conventional Commits — these are immutable and apply everywhere:
| Type | Use Case |
|------|----------|
| feat | New features |
| fix | Bug fixes |
| docs | Documentation changes |
| style | Formatting, whitespace, missing semi colons |
| refactor | Code restructuring (no behavior change) |
| perf | Performance improvements |
| test | Adding or updating tests |
| build | Build system or external dependencies |
| ci | CI configuration files and scripts |
| chore | Maintenance that doesn't modify src or test files |
| revert | Reverts a previous commit |
Note for other users: These extended types reflect the author's (
arisng) personal conventions for AI/DevTool-heavy repositories. You are free to modify, remove, or add your own extended types to suit your workflow.
Extended types take precedence over universal types when the file matches a known pattern:
| Extended Type | Replaces | Domain | Typical File Patterns |
|---------------|----------|--------|-----------------------|
| agent | feat, chore | AI agent assets (skills, instructions) | skills/*, **/AGENTS.md |
| copilot | feat, chore | GitHub Copilot assets | *.agent.md, *.prompt.md, instructions/*.md, .vscode/mcp.json, memory.json |
| devtool | chore, build | Developer tooling & editor config | scripts/*, .vscode/settings.json, .vscode/tasks.json |
| codex | chore | OpenAI Codex assets | .codex/* |
Rule: When a file matches an extended type pattern, always use the extended type instead of the universal one. Fall back to universal types for everything else.
Scopes are entirely repo-specific and governed by .github/git-scope-constitution.md. The file-path-to-scope mapping below is an example from the author's workspace. Each repository should define its own via the git-commit-scope-constitution skill.
Scope Granularity Principle: Scopes represent the artifact category, not a specific instance. When scanning git log --oneline, type(category) tells you what kind of thing changed; the commit subject tells you which one.
| File Path Pattern | Type (Tier 2) | Scope (Tier 3) | Rationale |
|-------------------|---------------|----------------|-----------|
| .issues/* | docs | issue | Issue documentation and tracking |
| .docs/changelogs/* | docs | changelog | Changelog files |
| .github/git-scope-constitution.md | docs | constitution | Scope constitution governance |
| instructions/*.md | copilot | instruction | Repository-level Copilot instructions |
| skills/* | agent | skill | Agent skill definitions and implementations |
| scripts/* | devtool | script | Automation scripts (PowerShell, Python, Bash) |
| *.agent.md | copilot | custom-agent | Custom agent definitions |
| **/AGENTS.md | agent | instruction | Standard AI agent custom instructions |
| *.prompt.md | copilot | prompt | Copilot prompt files |
| memory.json | copilot | memory | Knowledge graph memory systems |
| .codex/*.json | codex | config | Codex configuration files |
| .codex/*.md | codex | instruction | Codex instruction files |
| .vscode/mcp.json | copilot | mcp | MCP server configuration |
| .vscode/settings.json | devtool | vscode | VS Code workspace settings |
| .vscode/tasks.json | devtool | vscode | VS Code workspace task configurations |
MANDATORY STEP: Before any grouping or planning, assign a Commit Type and a Commit Scope to EACH changed file individually. Files with different types or unrelated scopes MUST be in separate commits — this is non-negotiable for atomicity.
Critical Rules:
Common Mistakes to Avoid:
docs(issue) is NOT a type. docs is the type, issue is the scope.feat(instructions) → ✅ copilot(instruction) — Use extended type copilot (Tier 2)feat(skill) → ✅ agent(skill) — Use extended type agent (Tier 2)ai(skill) → ✅ agent(skill) — ai type is deprecated; use agent for all AI model-facing behaviorai(agent) → ✅ agent(instruction) — deprecated ai type; the old agent scope maps to instruction under agentchore(issue) → ✅ docs(issue) — docs is the appropriate universal typedocs (no scope) → ✅ docs(issue) or docs(changelog) — Always include a scopeagent(pdf) → ✅ agent(skill) — Use category-level scope, put specific item in subjectcopilot(mcp) + devtool(vscode) in one commit → ✅ Separate commitsMANDATORY: For each changed file, determine its exact commit type AND scope using the mapping table above. Document this assignment - it drives the entire commit strategy.
MANDATORY: After types and scopes are assigned, validate scope choices.
Scope Validation Process:
.github/git-scope-constitution.mdgit-commit-scope-constitution skill to:
Scope Cross-Reference:
type(scope): subjectExample:
File: skills/pdf/SKILL.md
→ Type: agent [Tier 2 extended type for AI agent assets]
→ Scope: skill [Tier 3 category-level scope]
→ Result: agent(skill): add table extraction to pdf
MANDATORY: Complete this checklist before presenting any commit plan:
feat, fix, chore) when a Tier 2 extended type appliesIf any checklist item fails, revise the plan before proceeding.
CRITICAL CONSTRAINT: Files with different commit types CANNOT be grouped together - they must be in separate commits.
Group remaining related changes based on:
If grouping would mix commit types, split into separate commits immediately.
Create a todo list tracking each planned commit with their assigned types.
MANDATORY VALIDATION: Review each planned commit to ensure:
If validation fails, revise the grouping immediately.
For each group, generate a commit message following Conventional Commits format:
<type>(<scope>): <subject>
<body>
<footer>
MANDATORY: Conventional Commit Syntax Every commit MUST follow this exact structure:
<type>(<scope>): <subject><type>(<scope>)(<scope_2>) or <type>(<scope1,scope2>). Use ONE primary scope that best represents the change.<subject> part (e.g., <type>(primary-scope): [scope2] actual message or <type>(primary-scope): fix scope2 bug).Message Format Rules:
Type Selection: Refer to the Tier 1 and Tier 2 tables in the "Distinguish Commit Type vs. Commit Scope" section above.
CRITICAL: Use Tier 2 extended types (e.g., agent, copilot) instead of Tier 1 universal types (feat, chore) when the file matches an extended type pattern. Always pair the Type with a valid Scope from the repository's constitution.
Scope Selection:
.github/git-scope-constitution.md if availablegit-commit-scope-constitution skill if unclearKEY: Provide sufficient detail for accurate changelog generation and knowledge graph tracking. Vague messages lead to misleading summaries.
Quality Requirements:
Good Example (Specific):
copilot(custom-agent): remove unused agents - conductor, context7, implementation, microsoft-docs
Removes four specialized agents that were redundant.
Streamlines agent portfolio and reduces maintenance overhead.
Bad Example (Vague):
refactor: update agent definitions
Interactive Mode (User-Guided):
Autonomous Mode (Subagent):
Safety:
After all commits are done, show a summary of all commits created.
.github/git-scope-constitution.md if availableThis skill works in tandem with the git-commit-scope-constitution skill to ensure complete commit message consistency:
Division of Responsibility:
git-atomic-commit (this skill):
git-commit-scope-constitution:
Workflow Integration:
Changed Files
↓
git-atomic-commit: Map files → Commit types
↓
git-commit-scope-constitution: Select scopes for each type
↓
git-atomic-commit: Generate commit messages
↓
Final Commits: type(scope): subject
When to Use Each:
git-atomic-commit for every commit workflowgit-commit-scope-constitution when:
.github/git-scope-constitution.mdConstitution Location: .github/git-scope-constitution.md
Scopes Inventory: .github/git-scope-inventory.md
# View all changed files (staged + unstaged)
git status --short
# View diff for unstaged changes
git diff -- <filepath>
# View diff for staged changes
git diff --cached -- <filepath>
# Stage specific files
git add <filepath>
# Unstage specific files
git reset HEAD -- <filepath>
# Commit with message
git commit -m "<message>"
# Commit with multi-line message
git commit -m "<subject>" -m "<body>"
📦 Commit Plan (3 commits)
1. agent(skill): add vscode-docs skill for researching VS Code docs
Files: skills/vscode-docs/SKILL.md, skills/vscode-docs/assets/toc.md
2. copilot(instruction): update claude-skills orchestration guidelines
Files: instructions/claude-skills.instructions.md
3. docs(issue): remove deprecated copilot-skills design decision issue
Files: .issues/251210_copilot-skills.md
✅ Pre-commit verification: All file paths mapped to correct project-specific types
Ready to proceed with commit #1? (yes/no/edit)
devops
Programmatically create tldraw whiteboards and visualize them with a self-hosted tldraw instance. Create boards with shapes, text, and connectors, then deploy to a self-hosted server for collaborative editing and gallery management.
tools
Execute Google Cloud Platform operations using the gcloud CLI (and gsutil/bq where applicable). Use when the user wants to: authenticate with GCP, manage GCP resources, deploy applications, configure projects or IAM, view logs, run SQL/BigQuery, or interact with any GCP service from the command line. Triggers on phrases like "gcloud", "Google Cloud CLI", "deploy to GCP", "create a VM", "Cloud Run", "GKE cluster", "Cloud Storage bucket", "set GCP project", "service account", "Cloud Functions", "App Engine deploy", or any request to manage Google Cloud resources via command line.
testing
Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.
development
Session-scoped git commit orchestrator that commits only current-session changes and leaves unrelated dirty worktree edits untouched. Inherits git-atomic-commit for atomic grouping and commit message execution, and git-commit-scope-constitution for scope governance and validation. Use when asked to commit this session only or isolate commits from mixed worktree state.