branch-workflow — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited branch-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.
What branch action is safe given the current working tree, tracking configuration, upstream state, divergence, operation state, and requested blast radius?
Use this skill when the user asks to:
Do not use this skill to resolve file conflicts, recover discarded work, create commits, version a release, or create tags.
Route to:
resolve-conflicts when unmerged paths or conflict markers exist.undo-recover for reset, restore, abort, reflog, clean, force-push recovery, or destructive recovery.atomic-commits when organizing staged changes into commits.tag-release for Git release tags.version-bump, release-notes, or changelog-maintenance for release artifacts.Before mutation, inspect or establish:
git status --short --branch,git branch -vv,You MAY:
You MUST:
You MUST NOT:
| State | Evidence | Risk | Default Action | Confirmation | Verification |
|---|---|---|---|---|---|
| Branch inspection only | status, branch, upstream | R0 | Report state | no | evidence summarized |
| Clean local branch creation | status, target ref | R2 | Create branch when name/source are unambiguous | no if explicit | branch and status |
| Clean branch switch | status, target branch | R2 | Switch only when worktree will not be overwritten | no if explicit | branch and status |
| Dirty tree before switch/sync | status, diff summary | R2/R3 | Stop and offer commit/stash/worktree options | yes for stash/reset | status |
| Detached HEAD | status, HEAD SHA | R2/R3 | Explain and suggest branch creation | yes for mutation | branch/status |
| Missing upstream | branch -vv, upstream check | R2/R4 | Report missing upstream; set only if explicit | yes for remote | branch -vv/upstream |
| Behind only | ahead/behind count | R2/R3 | Fast-forward or sync only when requested | no if explicit | ahead/behind/status |
| Ahead only | ahead/behind count | R2/R4 | Do not push unless explicitly requested | yes for push | remote ref/status |
| Diverged branch | ahead/behind and log | R3/R4 | Explain merge/rebase choices; do not pull blindly | yes | graph/status |
| Operation in progress | status, .git operation state | R3 | Route to resolve-conflicts or undo-recover | yes for action | status |
| Force push requested | local/remote SHA | R5 | Stop; require exact ref and force-with-lease confirmation | yes + preflight | remote ref before/after |
| Remote branch deletion requested | remote ref evidence | R5 | Stop; require exact remote/ref confirmation | yes + preflight | remote ref absence verified |
git fetch is a remote-read/local-ref refresh. It requires explicit user intent for remote state refresh and must be reported as updating remote-tracking refs. It is not equivalent to push, reset, clean, or force-push.push -u; ask before creating remote tracking.Trigger:
Default: <!-- guardrail:branch-force-push.local-rewrite-not-remote-rewrite -->
Must:
git status --short --branch, git branch -vv, remote names, upstream ref, local SHA, current remote SHA, ahead/behind, and whether the branch is shared or protected by repository policy.<!-- guardrail:branch-force-push.prefer-explicit-lease -->
git push --force-with-lease=<ref>:<expected-old-sha> <remote> <local-sha>:<ref> over bare git push --force-with-lease or git push --force when an exact force update is confirmed.Must not: <!-- guardrail:branch-force-push.no-implicit-force-push -->
git push --force unless the user explicitly requests bare force and accepts the additional risk after --force-with-lease is explained.Requires explicit confirmation: <!-- guardrail:branch-force-push.exact-ref-sha-refspec -->
Verification:
Allowed:
Requires explicit confirmation:
Forbidden:
Minimum verification:
For force-push or remote branch deletion, explicit confirmation must name:
Use force-with-lease semantics, never bare force update, when force update is explicitly confirmed and allowed.
Final response should include:
## State
- Branch, upstream, divergence, dirty/conflict state.
## Action
- Action taken or proposed.
## Risk / Confirmation
- Risk classification and confirmation status.
## Verification
- Status, branch, upstream, or remote ref checks.
## Remaining Risk
- Unverified CI, local work, or remote-state caveats.Stop when the repository state is dirty, conflicted, diverged, missing required evidence, or ambiguous in a way that could overwrite user work, invalidate the requested scope, or require a gated action.
Requires exact confirmation for:
Load:
references/branch-states.md for detached, dirty, missing-upstream, or diverged state.references/commands.md when command choice is needed.references/sync-strategies.md for merge/rebase/fast-forward choices.references/failure-modes.md for risky or ambiguous state.references/verification.md for R4/R5 verification detail.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.