git-mcp-workflow — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited git-mcp-workflow (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP-first workflow skill for repositories exposed through git-mcp.
This skill adapts common Git guidance for a world where the preferred interface is the server's tool catalog, not ad-hoc shell commands. It covers both everyday Git work and the spicier recovery and history-editing cases.
Using `git` directly via the shell is highly error-prone for LLMs and should be considered forbidden except as a narrow last resort.
The root cause is structural: Git commands frequently require commit messages, branch names, file paths, and other string arguments that contain spaces, quotes, special characters, or newlines. Shell interpreters handle quoting through multiple layers (single quotes, double quotes, $'...' escapes, heredocs) and the rules differ between sh, bash, and zsh. LLMs routinely produce subtly malformed quoting that causes:
- becomes a flag)$ or backtick characters in messages accidentally triggering command substitutionThese errors are often silent: the command appears to succeed, but the result is wrong (e.g., a commit message of "fix" instead of "fix: resolve null pointer in auth handler"). LLMs typically cannot observe the actual error because the shell may not surface it clearly in the tool output.
The `git-mcp` server solves all of this. Every tool parameter is a typed, validated field that the server passes directly to simple-git as an argument array, bypassing shell interpretation entirely. There are no quoting problems, no interpolation hazards, and no silent truncation.
Rule: Always use `git-mcp` MCP tools for git operations. Never invoke `git` via shell unless the specific operation is genuinely not available through any `git-mcp` tool.
Use this skill when you need to:
git-mcp tool surfaceFor any non-trivial task, begin with:
git_context action=summarygit_status action=statusgit_history action=log, git_status action=diff, git_history action=show, or git_branches action=listgit_context action=summary is the default entry point. It reports branch, upstream, pending changes, and in-progress operations (rebase, cherry-pick, merge, bisect).
Prefer read-only calls first:
git_context action=summary — repo state snapshotgit_status action=status — working tree detailsgit_history action=log — commit historygit_history action=show ref=<SHA> — one commit inspectiongit_status action=diff mode=unstaged — unstaged changesgit_history action=blame file_path=<path> — line attributiongit_history action=reflog — recovery ledgergit_branches action=list — local branchesgit_remotes action=list — configured remotesgit_context action=search query=<terms> — history/code searchgit_docs action=man query=<command> — official docsOnly mutate after you understand:
Safety order for undo and recovery:
git_commits action=restore for uncommitted file changesgit_workspace action=stash_all when switching context without losing workgit_commits action=revert for undoing published commitsgit_commits action=undo for soft-resetting the last local commitgit_commits action=reset mode=mixed for local unpublished historygit_commits action=reset mode=hard confirm=true only with explicit user intentBefore any history-rewriting step, capture git_history action=reflog and git_history action=log.
Rewriting history is allowed only when the user clearly wants it and the branch is safe to rewrite.
git_remotes action=push force_with_lease=trueGIT_ALLOW_FORCE_PUSH=true is set server-sidegit_commits action=revert over reset for shared branchesDo not bypass hooks casually.
no_verify on git_commits action=commit and git_remotes action=push should stay false unless the user explicitly requests a bypass and GIT_ALLOW_NO_VERIFY=true is set server-side.husky/pre-commit runs pnpm exec lint-staged and pnpm typecheckgit-mcp covers repository operations, not every GitHub action.
.gitignore, worktree directories, and project filesNarrow cases where CLI may still be necessary (confirm no MCP tool covers it first):
git add -p)git filter-repo-style deep history surgeryThe server exposes these tools (and only these).
| Tool | Actions |
|---|---|
git_context | summary (default), search, get_config, set_config, aliases |
git_status | status (default), diff, diff_main |
git_history | log (default), show, reflog, blame, lg, who |
git_commits | add, restore, commit, reset, revert, undo, nuke, wip, unstage, amend |
git_branches | list (default), create, delete, rename, checkout, set_upstream, recent |
git_remotes | list (default), manage, fetch, pull, push |
git_workspace | stash, stash_all, rebase, cherry_pick, merge, bisect, tag, worktree, submodule |
git_flow | operation=init/overview/config/topic/control |
git_lfs | track, untrack, ls-files, status, pull, push, install, migrate-import, migrate-export |
git_docs | search, man |
git_ping | _(health check)_ |
See references/tooling-map.md for full parameter details.
git_context action=summarygit_status action=status, git_status action=diff, git_history action=loggit_branches action=create or git_branches action=checkoutgit_commits action=addgit_commits action=commit message="feat: ..." using Conventional Commit messagesgit_remotes action=fetch, git_remotes action=pull, git_remotes action=pushgit_workspace action=rebase only if safe and explicitly appropriategit_workspace action=stash_all — quick context switch without a commitgit_workspace action=rebase — branch cleanup or rebasing onto upstreamgit_workspace action=cherry_pick — backports and targeted fixesgit_workspace action=bisect — regression huntinggit_workspace action=worktree — parallel branch work without stashinggit_workspace action=merge — merge branches with full flag controlgit_workspace action=tag — release tagsgit_workspace action=submodule — embedded repositoriesgit_lfs — large binary assetsgit_flow — scheduled release workflows, preset init, flow overview/config inspection, config CRUD, and finish recoveryRead references/tooling-map.md for the MCP-first command mapping.
Read references/workflow-playbooks.md for:
When the user needs explanation rather than action, anchor your answer in these concepts:
HEAD as the current pointerExplain the concept using the MCP tool that reveals it:
git_status action=status, git_status action=diff, git_commits action=add, git_commits action=restoregit_history action=log, git_history action=show, git_branches action=list, git_history action=refloggit_context action=summary, git_workspace action=rebase, git_workspace action=cherry_pickgit-mcpWhen contributing to this repository itself:
docs/tools/pnpm typecheckpnpm lintpnpm format:checkpnpm testsimple-git, Zod schemas, and safety-first defaultsreferences/tooling-map.mdreferences/workflow-playbooks.mddocs/tools/index.mddocs/guide/safety.mddocs/development/contributing.md~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.