Files
Defame1297 3920dfab20 fix(skills): drop references to deleted config and .mcp.json files
Closes four PR #135 review findings in skill content.

#2 — plugins/git/config.example.json was deleted in f5e4d0d, 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 in c96ca9c (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
2026-09-19 21:17:14 +00:00

3.7 KiB

source_keys
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.