Awesome-omni-skill commit
Complete git workflow - initialize repo if needed, stage and commit everything, push if remote exists, then run /improve and /compact. Use for clean checkpoint commits.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/commit-darrenoakey" ~/.claude/skills/diegosouzapw-awesome-omni-skill-commit-c16448 && rm -rf "$T"
skills/tools/commit-darrenoakey/SKILL.mdCommit Skill
A complete git workflow skill that ensures a clean repository state after every commit.
What This Skill Does
- Initialize git (if not already a git repo)
- Stage everything (
)git add -A - Commit with an auto-generated or user-provided message
- Verify clean state (
must be empty)git status --porcelain - Push (only if a remote exists)
- Run /improve (knowledge capture and tool discovery)
- Run /compact (context compression)
Usage
/commit /commit -m "your commit message"
Workflow Steps
Step 1: Initialize Git (if needed)
Check if the current directory is inside a git repository:
git rev-parse --is-inside-work-tree 2>/dev/null
If this fails (exit code non-zero), initialize a new repo:
git init
Step 2: Stage All Changes
Add all files (tracked, untracked, and deletions):
git add -A
Step 3: Generate Commit Message
If no message was provided via
-m, generate one by:
- Running
to see what's stagedgit diff --cached --stat - Creating a concise summary of the changes
The commit message should:
- Be concise (under 72 characters for the subject line)
- Describe what changed, not how
- Use imperative mood ("Add feature" not "Added feature")
Step 4: Commit
git commit -m "$(cat <<'EOF' Your commit message here Co-Authored-By: Claude <noreply@anthropic.com> EOF )"
CRITICAL: Never use
--no-verify. Pre-commit hooks must run.
Step 5: Verify Clean State
After commit, verify the repository is completely clean:
git status --porcelain
This must return empty output. If anything remains:
- Investigate why files weren't committed
- Stage and commit any remaining files
- Repeat until
returns nothinggit status --porcelain
Step 6: Push (if remote exists)
Check if a remote exists:
git remote -v
If output is non-empty AND the current branch has an upstream:
git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null
If upstream exists, push:
git push
If no upstream but remote exists, set upstream and push:
git push -u origin $(git branch --show-current)
If no remote exists, skip pushing silently.
Step 7: Run /improve
Invoke the improve skill to capture learnings:
/improve
This runs knowledge capture and tool discovery.
Step 8: Run /compact
Invoke the compact command to compress context:
/compact
This summarizes the conversation and reduces token usage.
Error Handling
Pre-commit Hook Failures
If the commit fails due to pre-commit hooks:
- Fix the issues reported by the hooks
- Re-stage the fixed files
- Try committing again (new commit, not amend)
- Never use
--no-verify
Nothing to Commit
If
git status shows nothing to commit:
- Report "Nothing to commit - working tree clean"
- Still run /improve and /compact
Push Failures
If push fails:
- Report the error to the user
- Do not retry automatically
- Continue with /improve and /compact
Output Format
## Commit Summary ### Repository [Repo path or "Initialized new repo at: path"] ### Changes Committed [Brief summary of staged changes] ### Commit [Commit hash and message] ### Push [Push result or "No remote configured"] ### Post-Commit Running /improve... Running /compact...