
Ce Commit
Turn messy working-tree changes into one clear git commit that follows repo conventions or conventional commit format.
Overview
ce-commit is a journey-wide agent skill that creates a single well-structured git commit from your current changes—usable whenever a solo builder needs to save work with a clear, convention-aware message.
Install
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-commitWhat is this skill?
- Triggers on natural phrases: commit, save my changes, create a commit
- Uses pre-gathered git status, full HEAD diff, branch, last 10 commits, and default branch on Claude Code
- Falls back to a single bundled shell command on Cursor, Codex, and other agents
- Prefers existing repo commit conventions; defaults to conventional commit format when none are detected
- Inspects last 10 oneline commits for style
- Bundles five git context sections on Claude Code (status, diff HEAD, branch, log, default branch)
Adoption & trust: 1.5k installs on skills.sh; 20.5k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have uncommitted changes but dread writing a commit message that matches the repo’s style and actually explains the value of the diff.
Who is it for?
Solo builders using Claude Code, Cursor, or Codex who commit frequently and want consistent, readable history without a separate commit-msg linter setup.
Skip if: Repos where you only want empty or automated CI commits with no agent involvement, or when you have not initialized git.
When should I use this skill?
User says commit, commit this, save my changes, create a commit, or wants to commit staged or unstaged work.
What do I get? / Deliverables
You get one git commit with a structured message aligned to repo conventions or conventional commits, based on status, HEAD diff, branch context, and recent history.
- Single git commit with structured message
- Commit subject (and body when needed) following detected conventions
Recommended Skills
Journey fit
Useful at every journey phase - explore requirements and options before committing to a direction.
Where it fits
Commit an API change set with a subject line that states user-visible behavior, not just file names.
Create a clean commit before opening a PR so reviewers read intentional history.
Checkpoint a release branch tweak with a message suitable for changelog generation.
Commit a production hotfix with scope and rollback hints in the body.
How it compares
Use instead of asking the model to “write a commit message” without repo context—it bakes in status, diff, log, and default-branch detection first.
Common Questions / FAQ
Who is ce-commit for?
Individual developers and tiny teams who use agent-assisted coding and want every save point documented with conventional or repo-specific commit messages.
When should I use ce-commit?
Use during Build after finishing a feature slice; during Ship before opening a PR; during Operate after a hotfix; and anytime you say commit or save my changes with a dirty working tree.
Is ce-commit safe to install?
It runs git read and write operations on your repository—check the Security Audits panel on this page and review diff scope before confirming the commit the agent proposes.
SKILL.md
READMESKILL.md - Ce Commit
# Git Commit Create a single, well-crafted git commit from the current working tree changes. ## Context **On platforms other than Claude Code**, skip to the "Context fallback" section below and run the command there to gather context. **In Claude Code**, the five labeled sections below (Git status, Working tree diff, Current branch, Recent commits, Remote default branch) contain pre-populated data. Use them directly throughout this skill -- do not re-run these commands. **Git status:** !`git status` **Working tree diff:** !`git diff HEAD` **Current branch:** !`git branch --show-current` **Recent commits:** !`git log --oneline -10` **Remote default branch:** !`git rev-parse --abbrev-ref origin/HEAD 2>/dev/null || echo '__DEFAULT_BRANCH_UNRESOLVED__'` ### Context fallback **In Claude Code, skip this section — the data above is already available.** Run this single command to gather all context: ```bash printf '=== STATUS ===\n'; git status; printf '\n=== DIFF ===\n'; git diff HEAD; printf '\n=== BRANCH ===\n'; git branch --show-current; printf '\n=== LOG ===\n'; git log --oneline -10; printf '\n=== DEFAULT_BRANCH ===\n'; git rev-parse --abbrev-ref origin/HEAD 2>/dev/null || echo '__DEFAULT_BRANCH_UNRESOLVED__' ``` --- ## Workflow ### Step 1: Gather context Use the context above (git status, working tree diff, current branch, recent commits, remote default branch). All data needed for this step is already available -- do not re-run those commands. The remote default branch value returns something like `origin/main`. Strip the `origin/` prefix to get the branch name. If it returned `__DEFAULT_BRANCH_UNRESOLVED__` or a bare `HEAD`, try: ```bash gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' ``` If both fail, fall back to `main`. If the git status from the context above shows a clean working tree (no staged, modified, or untracked files), report that there is nothing to commit and stop. If the current branch from the context above is empty, the repository is in detached HEAD state. Explain that a branch is required before committing if the user wants this work attached to a branch. Ask whether to create a feature branch now. Use the platform's blocking question tool: `AskUserQuestion` in Claude Code (call `ToolSearch` with `select:AskUserQuestion` first if its schema isn't loaded), `request_user_input` in Codex, `ask_user` in Gemini, `ask_user` in Pi (requires the `pi-ask-user` extension). Fall back to presenting options in chat only when no blocking tool exists in the harness or the call errors (e.g., Codex edit modes) — not because a schema load is required. Never silently skip the question. - If the user chooses to create a branch, derive the name from the change content, create it with `git checkout -b <branch-name>`, then run `git branch --show-current` again and use that result as the current branch name for the rest of the workflow. - If the user declines, continue with the detached HEAD commit. ### Step 2: Determine commit message convention Follow this priority order: 1. **Repo conventions already in context** -- If project instructions (AGENTS.md, CLAUDE.md, or similar) are already loaded and specify commit message conventions, follow those. Do not re-read these files; they are loaded at session start. 2. **Recent commit history** -- If no explicit convention is documented, examine the 10 most recent commits from Step 1. If a clear pattern emerges (e.g., conventional commits, ticket prefixes, emoji prefixes), match that pattern. 3. **Default: conventional commits** -- If neither source provides a pattern, use conv