plugins/renovate/skills/renovate-setup/SKILL.md
Use this skill when setting up or debugging Renovate auto-merge, configuring Renovate in a repo, or diagnosing why Renovate PRs are not auto-merging.
npx skillsauth add nsheaps/ai-mktpl renovate-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Renovate is a dependency update bot. This skill covers enabling auto-merge on repos and debugging when Renovate PRs get stuck.
Two steps are required: the repo setting AND the declarative settings file.
gh repo edit nsheaps/<repo> --enable-auto-merge --delete-branch-on-merge
Run separately for each repo. This sets the GitHub repo-level flag.
.github/settings.yamlIf the repo uses a declarative settings workflow (most nsheaps repos do), add
allow_auto_merge: true to the repository: block:
repository:
allow_auto_merge: true
delete_branch_on_merge: true
# ... other settings
Commit this to main. Without this, the settings workflow may reset the flag.
extends PatternRenovate configs in nsheaps repos should extend from nsheaps/renovate-config.
The correct file name changed from default.json to default.json5:
// renovate.json5
{
$schema: "https://docs.renovatebot.com/renovate-schema.json",
extends: [
"github>nsheaps/renovate-config", // uses default.json5 automatically
],
}
Check nsheaps/renovate-config for what the shared config contains (automerge
settings, schedule, package rules, etc.).
When a Renovate PR is stuck and not auto-merging:
Repo setting enabled?
gh api repos/nsheaps/<repo> --jq '.allow_auto_merge'
# should return: true
PR has auto-merge queued?
gh pr view <N> --repo nsheaps/<repo> --json autoMergeRequest
# autoMergeRequest should be non-null
If null, enable it:
gh pr merge <N> --repo nsheaps/<repo> --auto --squash
Branch protection / rulesets blocking?
gh api repos/nsheaps/<repo>/rules/branches/main
Common blockers:
pull_request rule requiring required_approving_review_count: 1 → approve the PRRequired status checks failing?
gh pr view <N> --repo nsheaps/<repo> --json statusCheckRollup
Empty statusCheckRollup + BLOCKED usually means a required check is
configured but no CI run has happened (missing workflow trigger or CI never ran).
Approve if review required:
gh pr review <N> --repo nsheaps/<repo> --approve --body "Approving Renovate dependency update."
bin/ DirectoriesIf a repo has both shell scripts and TypeScript/JavaScript files in bin/,
the bash lint CI job will fail on the non-shell files. Fix: add extension
checks to skip non-shell files:
- name: Lint shell scripts
run: |
for script in bin/*; do
[ -d "$script" ] && continue
[ -f "$script" ] || continue
# Skip non-shell files
case "$script" in
*.ts|*.js|*.py|*.rb|*.go) continue ;;
esac
echo "Checking $script..."
bash -n "$script"
done
This is relevant to renovate because Renovate PRs updating dependencies may trigger CI runs that hit this lint bug and prevent auto-merge.
tools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su