Regenerate plugins/*/skills/ from plugins/*/.apm/ after the previous four commits, via scripts/sync-plugin-content.sh --all. The mirror is generated output (ADR-0017) that check-plugin-content-sync's pre-push hook diffs against .apm/; nothing here is hand-edited. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP
61 lines
2.3 KiB
Markdown
61 lines
2.3 KiB
Markdown
---
|
|
name: git-remotes
|
|
|
|
description: >
|
|
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`.
|
|
|
|
metadata:
|
|
version: "1.0.0"
|
|
category: git
|
|
source_keys:
|
|
- git-scm-remote-docs
|
|
- git-scm-fetch-docs
|
|
- git-scm-push-docs
|
|
- git-scm-pull-docs
|
|
- context7-git-htmldocs
|
|
---
|
|
|
|
## Gotchas
|
|
|
|
- **`--force-with-lease` alone is not safe** — background processes (IDE plugins, cron jobs) running `git fetch` silently 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 --prune` leaves orphaned tags behind. Use `--prune --prune-tags`, or set `fetch.pruneTags true`.
|
|
- **Set `pull.ff only` explicitly** — do not trust the installed default.
|
|
|
|
## Step 1 — Clear the force-push gate
|
|
|
|
`main` and `master` are a hard refusal: decline a force-push targeting either, whatever confirmation accompanies it, because no local approval can restore what the remote loses. On any other branch, `rtk git push --force` and `-f` run only after the caller passes `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:
|
|
|
|
```json
|
|
{
|
|
"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.
|