Finding 13: five blocks of near-identical wording were repeated across skills within a plugin — the gitea "resolve owner and repo" step (5 skills), the 404-masks-403 note (6 files), the manual pagination explanation (8 files), the git plugin's main/master force-push refusal (7 files, some with multiple internal restatements), and the bin skills' domain-glossary/ADR paragraph (5 skills). Tightened each instance in place — same meaning, fewer words — rather than extracting to a shared file, which ADR-0014's one-file-per-skill install constraint rules out. Left the three git skills' structured-result JSON shapes alone (coupled to the separate, out-of-scope git-orchestrate merge candidate, finding 19). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YR2CjVumUbEGWcMikcoXBD
2.3 KiB
2.3 KiB
name, description, metadata
| name | description | metadata | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| git-remotes | Use when a git operation — remote config, fetch, push, or pull — touches a remote, even when the user does not name it. Not local commits -> `git-commits`. Not local branches -> `git-branches`. Not log or bisect queries -> `git-history`. Not submodule pointers -> `git-submodules`. |
|
Gotchas
--force-with-leasealone is not safe — background processes (IDE plugins, cron jobs) runninggit fetchsilently defeat the protection. Combine it with--force-if-includes, or pin the explicit--force-with-lease=<ref>:<sha>form.- Prune does not touch tags by default —
git fetch --pruneleaves orphaned tags behind. Use--prune --prune-tags, or setfetch.pruneTags true. - Set
pull.ff onlyexplicitly — do not trust the installed default.
Step 1 — Clear the force-push gate
main/master are a hard refusal: decline a force-push to either regardless of confirmation — no local approval restores what the remote loses. Elsewhere, rtk git push --force/-f run only after confirm: true for that specific push; for a human caller, prompt instead of failing.
Step 2 — Dispatch
Read the row matching the operation, and only that row — each file is self-contained. A task spanning two operations reads both.
| Operation | Read |
|---|---|
Add, remove, rename, inspect, or re-point a remote; tracking, mirror, and set-url config |
references/remote-config.md |
| Fetch or prune remote-tracking refs; shallow or partial fetch | references/fetch.md |
| Push branches or tags; refspecs; force-push | references/push.md |
| Pull — integrate remote changes into the current branch | references/pull.md |
Step 3 — Return format
For agent callers, return:
{
"success": true,
"operation": "push",
"remote": "origin",
"branch": "main",
"output": "...",
"warnings": ["force-with-lease not confirmed"],
"recommendations": ["set `pull.ff only` so the default does not vary by Git version"]
}
On failure, set success: false and add an error field holding the root cause and a recovery suggestion.