Closes four PR #135 review findings in skill content. #2 — plugins/git/config.example.json was deleted inf5e4d0d, but four git-plugin files still told the agent to read it. The file only ever carried branching_pattern, commit_style and rebase_strategy, so the `base_branch` and scope instructions were wrong even before the deletion. Each site now describes what the skill actually does: base is `main` under GitHub Flow or `develop` when Gitflow is inferred, the Gitflow fallback keys off the repo's own branches, the orchestrator contract's `base` defaults to the inferred base branch, and the commit scope is inferred from the changed files. N6 — gitea-prs was the one gitea skill with no permission-scope caveat on a 404. Added one alongside the existing issue/PR number-space guidance rather than replacing it: a 404 is only evidence of "that number is an issue" once write:repository scope is confirmed. N4 — plugins/kyberforge/bin/README.md pointed at `.mcp.json`, but all six plugin-root .mcp.json files were deleted inc96ca9c(ADR-0018). ${CLAUDE_PLUGIN_ROOT} itself is still live, so the sentence now points at .apm/hooks/hooks.json, which kyberforge's own hook already uses. N7 — not applied. The finding claimed a marketplace field override emits a verbose BuildDiagnostic that `apm pack -v` surfaces, so "silently wins" was wrong. apm 0.28.0 does construct the diagnostic in marketplace/output_mappers.py, but nothing renders it: _render_marketplace_result in commands/pack.py iterates `warnings` only, and BuildReport.diagnostics has no consumer. Confirmed on a fixture — neither `apm pack -v` nor APM_LOG_LEVEL=DEBUG prints the override, and --check-versions reports [matches]. The existing wording in configure.md and marketplace.md is correct, so both are unchanged. Version bumps required by check-skill-version-bump.sh: git-branches 1.0.4 -> 1.0.5, git-commits 0.1.6 -> 0.1.7, gitea-prs 0.1.4 -> 0.1.5. bin/README.md is outside any skill directory and needs no bump. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NwD8Egs5r4ndqeFLmhusX2
60 lines
3.7 KiB
Markdown
60 lines
3.7 KiB
Markdown
---
|
|
source_keys:
|
|
- context7-git-htmldocs
|
|
---
|
|
|
|
# Per-action command mapping
|
|
|
|
One command per action. Where two forms exist, the first is the default and the second the escape
|
|
hatch.
|
|
|
|
- **create** — `rtk git switch -c <branch> <base>`. Base is `main` under GitHub Flow, or `develop`
|
|
when Gitflow is inferred from the repo — see `references/branch-patterns.md`.
|
|
- **switch** — `rtk git switch <branch>` moves to an existing local branch; it aborts rather than
|
|
clobbering conflicting local changes. `rtk git switch -` returns to the previous branch.
|
|
- **delete (local)** — `rtk git branch -d <branch>` refuses when the branch holds unmerged commits,
|
|
which is why it is the default. `rtk git branch -D <branch>` forces the deletion and discards that
|
|
work — only after the destructive-operation gates pass and `confirm: true` is set.
|
|
- **delete (remote)** — not this skill's. Deleting a remote branch is a push, and every remote-side
|
|
gate lives in `git-remotes`; hand it there rather than running the push from here. Its
|
|
`references/push.md` carries the command and the refspec form.
|
|
- **rename** — `rtk git branch -m <old> <new>`.
|
|
- **list** — `rtk git branch` (local), `-a` (local plus remote-tracking), `-r` (remote-tracking only),
|
|
`--merged` / `--no-merged` (filter by merge status into the current branch).
|
|
- **track** — `rtk git branch --set-upstream-to=origin/<branch>` sets an upstream without pushing.
|
|
`rtk git branch -vv` shows the tracking state of every local branch.
|
|
|
|
## get-intent
|
|
|
|
Git has no native field for free-text branch metadata, and this skill does not persist any. On
|
|
`create`, the `intent` value is only returned in the structured result — the caller decides
|
|
whether to store it.
|
|
|
|
On `get-intent`, either parse the intent back out of the branch-name convention
|
|
(`feature/<intent-slug>`) or return `{ "intent": null }` when the caller never persisted the
|
|
create-time value. Never fabricate an intent: a downstream commit message built on a guessed
|
|
intent is worse than one built on none.
|
|
|
|
## Stashing work in progress
|
|
|
|
A switch aborts rather than clobbering conflicting local changes (see Gotchas). Stash is the way
|
|
past it: it shelves the working tree and index so the branch pointer can move.
|
|
|
|
- **save** — `rtk git stash push -m "<message>"`. Add `-u` to include untracked files; verified on Git
|
|
2.39.5, a plain `push` leaves them in place, and a plain `push` with *only* untracked changes
|
|
reports `No local changes to save` and stashes nothing. Bare `git stash` is `push` with no message.
|
|
- **restore** — `git stash pop` applies the newest entry and deletes it. Bare, not `rtk`: on a
|
|
conflict rtk prints only `FAILED: git stash pop` and swallows the conflict report the paragraph
|
|
below tells you to read. `rtk git stash apply stash@{n}`
|
|
applies without deleting, for replaying one shelf onto more than one branch.
|
|
- **list** — `git stash list` — bare, not `rtk`: rtk prints `No stashes` where git prints nothing,
|
|
so an empty-output test misfires. `rtk git stash show -p stash@{n}` prints that entry's diff.
|
|
- **drop** — `rtk git stash drop stash@{n}` deletes one entry. `rtk git stash clear` deletes all of them
|
|
and nothing recovers them — confirm before running it.
|
|
- **branch from a stash** — `rtk git stash branch <branch> stash@{n}` creates a branch at the commit the
|
|
stash was taken from and pops it there. Use it when the stash no longer applies to the current tip.
|
|
|
|
**A conflicting `pop` keeps the entry.** Verified on 2.39.5: it exits 1, writes conflict markers,
|
|
prints "The stash entry is kept in case you need it again", and `git stash list` still shows it.
|
|
Resolve, `rtk git add`, then `rtk git stash drop` the entry by hand — otherwise it silently accumulates.
|