Install
$ agentstack add skill-softspark-ai-toolkit-git-mastery ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Git Mastery Skill
🛡️ Safety First Protocol
- Never force push to
main/master/develop. - Always use
--force-with-leaseinstead of--force. - Always create a backup branch before complex operations:
git branch backup/feature-xyz-pre-rebase
Advanced Workflows
1. Automated Bug Hunting (Git Bisect)
Find the specific commit that introduced a bug.
# Start
git bisect start
git bisect bad # Current version is broken
git bisect good # Version that worked
# Automate with test script
git bisect run pytest tests/test_failing_feature.py
2. Interactive Interactive Rebase
Clean up commit history before merge.
git rebase -i HEAD~n
- squash: Combine commits.
- reword: Fix messages.
- dropped: Remove junk commits.
3. Log Analysis
Visualize branch topology.
git log --graph --oneline --decorate --all
4. Recovery (Reflog)
Recover "lost" commits after a bad reset/rebase.
git reflog
git reset --hard HEAD@{n}
5. Cherry Picking
Pick specific commits from other branches.
git cherry-pick
# If valid conflict
git add .
git cherry-pick --continue
Commit Message Standard (Conventional Commits)
feat:New featurefix:Bug fixdocs:Documentation onlystyle:Formatting (white-space, etc)refactor:Code change that neither fixes a bug nor adds a featureperf:Performance improvementtest:Adding missing testschore:Build process/auxiliary tools
Common Rationalizations
| Excuse | Why It's Wrong | |--------|----------------| | "I'll clean up commits later" | Later means never — write clean commits as you go | | "Force push is fine on my branch" | Others may have fetched your branch — use --force-with-lease | | "One big commit is simpler" | Big commits are impossible to review, bisect, or revert — keep them atomic | | "Merge conflicts mean someone else's problem" | Conflicts mean you diverged too long — rebase frequently to stay aligned | | "Commit messages don't matter" | Messages are documentation — future you needs to understand why, not just what |
Rules
- MUST use
--force-with-leaseinstead of--forcefor any force operation on a shared branch - MUST create a backup branch before interactive rebase, reset --hard, or filter-repo:
git branch backup/-pre-rebase - NEVER force-push to
main,master, ordevelop— these are shared trunk branches by convention - NEVER rewrite history that has already been pushed AND consumed by others — you will orphan their clones
- CRITICAL: the reflog is a 90-day safety net (
gc.reflogExpire) — tag anything you want to keep longer. Do not rely on reflog for multi-month recovery. - MANDATORY: commit messages follow Conventional Commits (
feat:,fix:,docs:,refactor:,test:,chore:) — drift defeats automated changelog and release tooling
Gotchas
git bisectrelies on each commit being testable. Flaky tests corrupt the bisection silently — a flaky "bad" mark sendsbisectdown the wrong half. Run the test 3× at the boundary commits if flakiness is known.git cherry-pickof a merge commit fails without--mainline 1(or 2). The error is cryptic ("commit is a merge but no -m option was given"); the fix is simple but non-obvious.git reflogentries expire by default in 90 days (gc.reflogExpire) and unreferenced commits get garbage-collected after 30 days (gc.reflogExpireUnreachable). Long-term recovery of "lost" commits from reflog is not guaranteed.git rebase -i --rootis supposed to include the very first commit, but on shallow clones (--depth N) the "root" is the shallow boundary, not the actual initial commit. Rungit fetch --unshallowbefore rebasing --root.git filter-branchis deprecated and slow (shell-based, re-forks per commit). Usegit filter-repofor history rewriting — it is a separate tool (pip install git-filter-repo) but 100× faster and endorsed by the Git maintainers.git pull --rebaseon a branch with unpushed merge commits rewrites those merges into linear history, silently losing the merge metadata. If a merge was intentional (e.g., to preserve feature-branch context), usegit pull --no-rebaseor setpull.ff=onlyglobally.
When NOT to Load
- For simple commits on a ready branch — use
/commit - For opening a PR after commits are clean — use
/pr - For a specific failed operation needing root-cause analysis — use
/debugon the git output - For CI-specific git behavior (shallow clones, LFS on runners) — use
/ci-cd-patterns - For the in-repo
.git/hooks/*content — this skill is user-facing Git; hook mechanics live in/hook-creatorandinstall_git_hooks.py
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: softspark
- Source: softspark/ai-toolkit
- License: MIT
- Homepage: https://softspark.eu
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.