commit-push skill
Commits local changes using Conventional Commits format and pushes them to a remote repository.
- GitHub stars
- 87
- Files
- 1
- Last commit
- Sep 15, 2026
- License
- Apache-2.0
- Allowed tools
- —
What does the commit-push skill do?
commit-push commits local changes using Conventional Commits format and pushes them to a remote repository.
Summary generated from the skill's SKILL.md.
About the commit-push skill
Automating the process of staging, committing, and pushing code changes is what this skill enables for developers working in terminal-based environments. An agent should load this tool when it has completed coding tasks and needs to synchronize local modifications with a remote repository. The process follows a strict sequence of gates to ensure that the diff is understood, the commit message follows the Conventional Commits format, and the staging area matches the intended changes.
By utilizing standard git commands like git status, git diff, and git log, the skill analyzes whether a change is a feat, fix, docs, refactor, test, chore, perf, or ci. It produces a structured commit message that includes a type, an optional scope, and a description, while also handling multi-line bodies and issue references. The workflow concludes by verifying that the local branch is up to date with its upstream after the git push command is executed.
What an agent can do with it
- 1Standardize commit historyAn AI agent can format all local changes into the Conventional Commits specification to maintain a clean project log.
- 2Document breaking changesThe agent can identify and flag backward-incompatible updates by adding the appropriate exclamation mark to the commit scope.
- 3Synchronize local work with remotesAn agent can push completed features to a remote repository and confirm the branch is successfully updated.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the commit-push skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the commit-push skill in Plugin
/plugin marketplace add existential-birds/beagle /plugin install beagle-core@existential-birds
Install the commit-push skill in Claude Code
~/.claude/skills/commit-push/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-core/skills/commit-push ~/.claude/skills/commit-pushInstall the commit-push skill in Claude Code (project)
.claude/skills/commit-push/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-core/skills/commit-push .claude/skills/commit-pushInstall the commit-push skill in Codex
~/.agents/skills/commit-push/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-core/skills/commit-push ~/.agents/skills/commit-pushInstall the commit-push skill in Gemini CLI
~/.gemini/skills/commit-push/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-core/skills/commit-push ~/.gemini/skills/commit-pushInstall the commit-push skill in Claude.ai
npx degit existential-birds/beagle/plugins/beagle-core/skills/commit-push commit-push && zip -r commit-push.zip commit-push # claude.ai → Customize → Skills → + → Create skill → Upload a skill → commit-push.zip
SKILL.md
View on GitHubCommit and Push
Commit all local changes following Conventional Commits format and push to remote.
Gates
Complete in order. Do not run the next action until the Pass condition is satisfied (use command output as evidence, not memory).
- Diff understood — Pass when: Outputs from
git status,git diff, andgit diff --cachedare consistent with your one-sentence description of what changed (or you recorded that there is nothing to commit). - Commit line chosen — Pass when: You have a draft first line
type(scope): description(ortype: descriptionif omitting scope) that matches the change set you intend to ship. - Staging matches intent — Pass when: After
git add,git diff --cached --stat(and spot-checkgit diff --cachedif needed) shows only the paths you meant to include; adjust staging before committing if not. - Push target confirmed — Pass when: Current branch and remote are the ones you intend (
git branch -vv,git remote -v); then push. - Remote caught up — Pass when:
git statusis clean andgit status -sbshows the branch is up to date with its configured upstream (no unexpected unpushed commits left for this task).
Step 1: Gather Context
Run these commands in parallel to understand the changes:
# See all untracked and modified files
git status
# See staged and unstaged changes
git diff
git diff --cached
# See recent commit messages for style reference
git log --oneline -10
Step 2: Analyze Changes
Review the changes and determine:
-
Type: What kind of change is this?
feat- New feature or capabilityfix- Bug fixdocs- Documentation onlyrefactor- Code restructure without behavior changetest- Adding or updating testschore- Maintenance, dependency updatesperf- Performance improvementci- CI/CD changes
-
Scope: Which component is affected?
- Examine the changed files and determine the appropriate scope
- Use consistent scope names within the project (check
git logfor patterns) - (omit scope for cross-cutting changes)
-
Breaking: Does this break backward compatibility? If yes, add ! after scope.
Step 3: Write Commit Message
Format:
type(scope): description
[optional body explaining why, not what]
[optional footer with issue references]
Rules:
- Use imperative mood: "add feature" not "added feature"
- Keep first line under 72 characters
- Focus on why in the body, the diff shows what
- Reference issues:
Closes #123orFixes #456
Step 4: Stage, Commit, and Push
Satisfy Gates 1–3 before git commit; satisfy Gate 4 before git push; satisfy Gate 5 after push.
# Stage all changes (or selectively stage)
git add -A
# Gate 3: confirm staged set before committing
git diff --cached --stat
# Commit with message (use HEREDOC for multi-line)
git commit -m "$(cat <<'EOF'
type(scope): description
Optional body explaining the motivation.
Closes #123
EOF
)"
# Push to remote
git push
Examples
# Simple feature
git commit -m "feat(api): add pagination support to list endpoints"
# Bug fix with body
git commit -m "$(cat <<'EOF'
fix(auth): handle token expiration during long requests
The previous implementation did not account for tokens expiring
during the processing of long-running requests.
Fixes #42
EOF
)"
# Breaking change
git commit -m "$(cat <<'EOF'
feat!(api): change response format for user endpoints
BREAKING CHANGE: The `status` field is now an object with `state` and
`message` properties instead of a plain string.
EOF
)"
Optionally append a co-author or footer trailer per project convention (e.g. a Co-Authored-By: line or a tool-attribution footer). Omit it when the project has no such convention.
Step 5: Verify
After pushing, satisfy Gate 5: run git status and git status -sb and confirm a clean tree and upstream sync (or an expected ahead/behind you can explain, e.g. fork workflow).
Files in this skill
1commit-push skill questions
How do I install the commit-push skill in Claude Code?
Run npx degit existential-birds/beagle/plugins/beagle-core/skills/commit-push ~/.claude/skills/commit-push. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the commit-push skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
What commit format does this skill use?
The skill follows the Conventional Commits format, which includes a type, an optional scope, and a description.
How should I write the commit message description?
You should use the imperative mood, such as 'add feature' instead of 'added feature', and keep the first line under 72 characters.