Skip to content

chore(renovate): centralize renovate configuration - #110

Open
iamvikshan wants to merge 1 commit into
mainfrom
configure-renovate
Open

iamvikshan wants to merge 1 commit into
mainfrom
configure-renovate

Conversation

@iamvikshan

@iamvikshan iamvikshan commented Jul 6, 2026

Copy link
Copy Markdown
Owner

This PR centralizes the Renovate configuration to use the shared organization-wide preset github>iamvikshan/.github//renovate/base.

All rules are now defined in the central configuration repository.


Summary by cubic

Centralizes Renovate to the shared org preset github>iamvikshan/.github//renovate/base, removing the in-repo rules. This reduces duplication and keeps dependency update behavior consistent across repos.

Written for commit 877e558. Summary will update on new commits.

Review in cubic

Confidence Score: 5/5

The change looks mergeable once the shared preset is confirmed to preserve the removed safety rules.

The JSON shape is valid. The only concern is behavioral drift from moving all Renovate rules into an external preset. No blocking local code issue was found.

.github/renovate.json

T-Rex T-Rex Logs

What T-Rex did

  • The local Renovate configuration file (.github/renovate.json) was parsed successfully.
  • The Renovate config validator reported Config validated successfully against 1 file(s).
  • The Renovate dry-run reached config resolution but could not locate the preset's package.
  • A direct public fetch for renovate/base.json returned HTTP 404, documenting the preset-resolution blocker.

View all artifacts

T-Rex Ran code and verified through T-Rex

Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
.github/renovate.json:3
**Preset Becomes Sole Safety Gate**

This file now delegates every Renovate rule to `github>iamvikshan/.github//renovate/base`. If that preset does not carry the removed `vulnerabilityAlerts`, `osvVulnerabilityAlerts`, lockfile maintenance, and major-update `automerge: false` rules, Renovate can stop opening security update PRs or can auto-merge breaking major updates that this repo previously forced through manual review.

Reviews (1): Last reviewed commit: "chore(renovate): centralize configuratio..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

@codesandbox

codesandbox Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review or Edit in CodeSandbox

Open the branch in Web EditorVS CodeInsiders

Open Preview

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Centralize Renovate config to shared org preset

⚙️ Configuration changes 🕐 Less than 5 minutes

Grey Divider

AI Description

• Replace repository-specific Renovate rules with an org-wide shared preset.
• Reduce local config drift by centralizing all Renovate policy in one repo.
• Keep this repo’s Renovate setup to a minimal extends reference.
Diagram

graph TD
  A["This repo"] --> B[".github/renovate.json"] --> C["Shared preset"] --> D["Renovate Bot"]
  C --> E["Org .github repo"]
  subgraph Legend
    direction LR
    _repo["Repository"] ~~~ _cfg["Config file"] ~~~ _ext["External preset"]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Keep local config with minimal shared base
  • ➕ Allows repo-specific exceptions without changing the org preset
  • ➕ Reduces coupling to external preset changes
  • ➖ Reintroduces config drift across repositories
  • ➖ More maintenance and duplicated policy over time
2. Extend shared preset + add a small local override layer
  • ➕ Keeps most policy centralized while enabling narrowly scoped repo overrides
  • ➕ Clear separation between org defaults and repo-specific needs
  • ➖ Slightly more complex than a pure preset reference
  • ➖ Risk of local overrides undermining standardization if overused

Recommendation: The chosen approach (delegating entirely to the org-wide preset) is optimal if the repo does not require unique Renovate behavior, because it maximizes consistency and minimizes maintenance. If this repo later needs exceptions (e.g., special grouping or stricter major-update handling), prefer adding a small, explicit local override on top of the preset rather than reintroducing a full local ruleset.

Files changed (1) +2 / -74

Other (1) +2 / -74
renovate.jsonSwitch Renovate config to shared org preset +2/-74

Switch Renovate config to shared org preset

• Removes the repository-specific Renovate configuration (scheduling, reviewers/labels, automerge rules, packageRules, and vulnerability alert settings). Replaces it with a single 'extends' entry pointing to 'github>iamvikshan/.github//renovate/base' so Renovate behavior is defined centrally.

.github/renovate.json

ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Informational

1. Schema removed 🐞 Bug ⚙ Maintainability
Description
The Renovate config no longer declares the Renovate JSON schema, which removes schema-based
validation/autocomplete and makes configuration mistakes easier to miss. This is a
tooling/maintainability regression that can lead to silently misconfigured Renovate behavior.
Code

.github/renovate.json[2]

-  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
Relevance

⭐⭐ Medium

No historical evidence found about requiring Renovate $schema in config.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The current Renovate config contains only an extends entry and no $schema, indicating schema
validation metadata is no longer present in-repo.

.github/renovate.json[1-5]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`.github/renovate.json` removed the `$schema` declaration, which reduces schema validation and editor assistance.

## Issue Context
Even when centralizing rules via `extends`, keeping `$schema` in the local config helps prevent accidental config typos/regressions.

## Fix Focus Areas
- .github/renovate.json[1-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Unpinned shared preset 🐞 Bug ☼ Reliability
Description
The repo extends a shared Renovate preset without pinning it to a tag/SHA, so changes in the preset
repository can immediately alter Renovate behavior here without a reviewable PR. This reduces
reproducibility and can unexpectedly change automerge/scheduling/vulnerability settings over time.
Code

.github/renovate.json[R2-4]

  "extends": [
-    "config:recommended",
-    ":dependencyDashboard",
-    ":semanticCommits",
-    "schedule:daily"
-  ],
-  "reviewers": ["iamvikshan"],
-  "assignees": ["iamvikshan"],
-  "labels": ["dependencies"],
-  "timezone": "Africa/Nairobi",
-  "prConcurrentLimit": 5,
-  "prHourlyLimit": 2,
-
-  "automerge": true,
-  "minimumReleaseAge": "3 days",
-  "pinDigests": false,
-  "semanticCommitType": "chore",
-
-  "lockFileMaintenance": {
-    "enabled": true,
-    "schedule": ["before 4am on monday"],
-    "labels": ["dependencies", "lockfile"]
-  },
-
-  "packageRules": [
-    {
-      "description": "Group the Elysia backend framework and its official plugins",
-      "matchPackagePatterns": ["^elysia", "^@elysiajs/"],
-      "groupName": "elysia ecosystem",
-      "labels": ["dependencies", "elysia", "backend"]
-    },
-    {
-      "description": "Group all semantic-release and conventional-changelog packages together",
-      "matchPackagePatterns": [
-        "^@semantic-release/",
-        "^semantic-release",
-        "^conventional-changelog"
-      ],
-      "groupName": "semantic-release ecosystem",
-      "labels": ["dependencies", "semantic-release", "ops"]
-    },
-    {
-      "description": "Group code quality tools, formatters, and git hooks",
-      "matchPackageNames": ["eslint", "prettier", "husky"],
-      "matchPackagePatterns": ["^@typescript-eslint/"],
-      "groupName": "linters and formatters",
-      "labels": ["dependencies", "tooling", "lint"]
-    },
-    {
-      "description": "Keep Bun runtime type definitions in their own silent group",
-      "matchPackageNames": ["@types/bun"],
-      "groupName": "bun types",
-      "labels": ["dependencies", "bun", "types"]
-    },
-    {
-      "description": "Catch GitHub Actions updates, group them, and ensure Semantic Release ignores them",
-      "matchManagers": ["github-actions"],
-      "semanticCommitScope": "ci",
-      "groupName": "github actions",
-      "labels": ["dependencies", "github-actions", "ci"]
-    },
-    {
-      "description": "Safety Gate: Force manual review for any breaking Major upgrades",
-      "matchUpdateTypes": ["major"],
-      "automerge": false,
-      "labels": ["dependencies", "major-update"]
-    }
-  ],
-
-  "vulnerabilityAlerts": {
-    "enabled": true,
-    "labels": ["security"]
-  },
-  "osvVulnerabilityAlerts": true
+    "github>iamvikshan/.github//renovate/base"
+  ]
Relevance

⭐ Low

Team previously rejected requests to pin external GitHub refs to immutable SHAs/tags (PR #104).

PR-#104

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The only configuration is an extends entry pointing at github>iamvikshan/.github//renovate/base
with no explicit version/ref component, so the inherited behavior is not fixed to a specific
revision.

.github/renovate.json[1-5]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The Renovate preset reference is unpinned, meaning upstream changes can change this repo’s Renovate behavior without an in-repo config change.

## Issue Context
To make Renovate behavior reproducible/reviewable, pin the preset to a tag or commit SHA and update intentionally.

## Fix Focus Areas
- .github/renovate.json[1-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan

Qodo Logo

Comment thread .github/renovate.json
@@ -1,77 +1,5 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Informational

1. Schema removed 🐞 Bug ⚙ Maintainability

The Renovate config no longer declares the Renovate JSON schema, which removes schema-based
validation/autocomplete and makes configuration mistakes easier to miss. This is a
tooling/maintainability regression that can lead to silently misconfigured Renovate behavior.
Agent Prompt
## Issue description
`.github/renovate.json` removed the `$schema` declaration, which reduces schema validation and editor assistance.

## Issue Context
Even when centralizing rules via `extends`, keeping `$schema` in the local config helps prevent accidental config typos/regressions.

## Fix Focus Areas
- .github/renovate.json[1-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread .github/renovate.json
"labels": ["security"]
},
"osvVulnerabilityAlerts": true
"github>iamvikshan/.github//renovate/base"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Preset Becomes Sole Safety Gate

This file now delegates every Renovate rule to github>iamvikshan/.github//renovate/base. If that preset does not carry the removed vulnerabilityAlerts, osvVulnerabilityAlerts, lockfile maintenance, and major-update automerge: false rules, Renovate can stop opening security update PRs or can auto-merge breaking major updates that this repo previously forced through manual review.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/renovate.json
Line: 3

Comment:
**Preset Becomes Sole Safety Gate**

This file now delegates every Renovate rule to `github>iamvikshan/.github//renovate/base`. If that preset does not carry the removed `vulnerabilityAlerts`, `osvVulnerabilityAlerts`, lockfile maintenance, and major-update `automerge: false` rules, Renovate can stop opening security update PRs or can auto-merge breaking major updates that this repo previously forced through manual review.

How can I resolve this? If you propose a fix, please make it concise.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The .github/renovate.json configuration file was simplified by removing all inlined settings—including presets, reviewers, assignees, labels, timezone, limits, automerge behavior, lockfile maintenance schedule, packageRules, and vulnerability alert settings—and replacing them with a single extends entry referencing a shared base configuration.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Changes

File Summary
.github/renovate.json Reduced to a single `extends` entry referencing shared base Renovate config; removed all previously inlined settings.

Sequence Diagram(s)

No sequence diagram applicable — this change is a configuration simplification with no observable runtime flow.

Related issues: None specified.

Related PRs: None specified.

Suggested labels: dependencies, configuration

Suggested reviewers: None specified.

Poem

A rabbit hopped through config trees,
Trimmed the branches, kept the keys,
One line now points where base configs dwell,
Seventy-four lines, farewell, farewell! 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: centralizing Renovate configuration.
Description check ✅ Passed The description is directly related to the Renovate config centralization changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch configure-renovate
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch configure-renovate

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/renovate.json:
- Around line 2-4: The Renovate config is extending a preset path that cannot be
resolved, so update the .github/renovate.json "extends" entry to point to an
existing shared preset or add the missing preset in the referenced .github repo.
Use the renovate config in .github/renovate.json and the preset reference
github>iamvikshan/.github//renovate/base to verify the target is valid and
loadable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: b4381515-4ae0-4b37-a794-a04d8a191fbf

📥 Commits

Reviewing files that changed from the base of the PR and between d0fe6ad and 877e558.

📒 Files selected for processing (1)
  • .github/renovate.json

Comment thread .github/renovate.json
Comment on lines 2 to +4
"extends": [
"config:recommended",
":dependencyDashboard",
":semanticCommits",
"schedule:daily"
],
"reviewers": ["iamvikshan"],
"assignees": ["iamvikshan"],
"labels": ["dependencies"],
"timezone": "Africa/Nairobi",
"prConcurrentLimit": 5,
"prHourlyLimit": 2,

"automerge": true,
"minimumReleaseAge": "3 days",
"pinDigests": false,
"semanticCommitType": "chore",

"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 4am on monday"],
"labels": ["dependencies", "lockfile"]
},

"packageRules": [
{
"description": "Group the Elysia backend framework and its official plugins",
"matchPackagePatterns": ["^elysia", "^@elysiajs/"],
"groupName": "elysia ecosystem",
"labels": ["dependencies", "elysia", "backend"]
},
{
"description": "Group all semantic-release and conventional-changelog packages together",
"matchPackagePatterns": [
"^@semantic-release/",
"^semantic-release",
"^conventional-changelog"
],
"groupName": "semantic-release ecosystem",
"labels": ["dependencies", "semantic-release", "ops"]
},
{
"description": "Group code quality tools, formatters, and git hooks",
"matchPackageNames": ["eslint", "prettier", "husky"],
"matchPackagePatterns": ["^@typescript-eslint/"],
"groupName": "linters and formatters",
"labels": ["dependencies", "tooling", "lint"]
},
{
"description": "Keep Bun runtime type definitions in their own silent group",
"matchPackageNames": ["@types/bun"],
"groupName": "bun types",
"labels": ["dependencies", "bun", "types"]
},
{
"description": "Catch GitHub Actions updates, group them, and ensure Semantic Release ignores them",
"matchManagers": ["github-actions"],
"semanticCommitScope": "ci",
"groupName": "github actions",
"labels": ["dependencies", "github-actions", "ci"]
},
{
"description": "Safety Gate: Force manual review for any breaking Major upgrades",
"matchUpdateTypes": ["major"],
"automerge": false,
"labels": ["dependencies", "major-update"]
}
],

"vulnerabilityAlerts": {
"enabled": true,
"labels": ["security"]
},
"osvVulnerabilityAlerts": true
"github>iamvikshan/.github//renovate/base"
]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify the shared preset file exists in the central config repo.
gh api repos/iamvikshan/.github/contents/renovate/base.json \
  --jq '.path, .type, .download_url'

Repository: iamvikshan/linktree

Length of output: 309


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the Renovate config in this repo.
git ls-files .github/renovate.json
cat -n .github/renovate.json

# Check whether the referenced shared preset repo/path is discoverable through GitHub API.
gh api repos/iamvikshan/.github --jq '{full_name, private, default_branch, archived}'
gh api repos/iamvikshan/.github/contents/renovate --jq '.[].path' || true
gh api repos/iamvikshan/.github/contents/renovate/base.json --jq '{path, type, download_url}' || true
gh api repos/iamvikshan/.github/contents/renovate/base --jq '{path, type, download_url}' || true

Repository: iamvikshan/linktree

Length of output: 832


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# List Renovate-related files in the shared config repo.
gh api repos/iamvikshan/.github/git/trees/main?recursive=1 \
  --jq '.tree[] | select(.path | test("^renovate(/|$)")) | {path, type}'

# Probe for common preset filenames under the renovate directory.
for p in renovate/base renovate/base.json renovate/base.json5 renovate/base.js renovate/base.yaml renovate/base.yml; do
  echo "== $p =="
  gh api "repos/iamvikshan/.github/contents/$p" --jq '{path, type, download_url}' || true
done

Repository: iamvikshan/linktree

Length of output: 1212


Use a resolvable shared Renovate preset .github/renovate.json points at github>iamvikshan/.github//renovate/base, but that preset path doesn’t exist in iamvikshan/.github; Renovate will stop loading this config until the preset is added or the reference is corrected.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/renovate.json around lines 2 - 4, The Renovate config is extending a
preset path that cannot be resolved, so update the .github/renovate.json
"extends" entry to point to an existing shared preset or add the missing preset
in the referenced .github repo. Use the renovate config in .github/renovate.json
and the preset reference github>iamvikshan/.github//renovate/base to verify the
target is valid and loadable.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 1 file

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".github/renovate.json">

<violation number="1" location=".github/renovate.json:3">
P2: This change removes all repository-local Renovate configuration, including critical safeguards that previously prevented automerging major updates, configured vulnerability alerts, and set PR rate limits. Because the shared preset `github>iamvikshan/.github//renovate/base` is not visible in this PR, reviewers cannot verify these protections are preserved. Consider keeping the most critical rules—such as the major-update automerge gate, vulnerability alert settings, and PR rate limits—as local overrides alongside the shared preset.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .github/renovate.json
"labels": ["security"]
},
"osvVulnerabilityAlerts": true
"github>iamvikshan/.github//renovate/base"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This change removes all repository-local Renovate configuration, including critical safeguards that previously prevented automerging major updates, configured vulnerability alerts, and set PR rate limits. Because the shared preset github>iamvikshan/.github//renovate/base is not visible in this PR, reviewers cannot verify these protections are preserved. Consider keeping the most critical rules—such as the major-update automerge gate, vulnerability alert settings, and PR rate limits—as local overrides alongside the shared preset.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/renovate.json, line 3:

<comment>This change removes all repository-local Renovate configuration, including critical safeguards that previously prevented automerging major updates, configured vulnerability alerts, and set PR rate limits. Because the shared preset `github>iamvikshan/.github//renovate/base` is not visible in this PR, reviewers cannot verify these protections are preserved. Consider keeping the most critical rules—such as the major-update automerge gate, vulnerability alert settings, and PR rate limits—as local overrides alongside the shared preset.</comment>

<file context>
@@ -1,77 +1,5 @@
-    "labels": ["security"]
-  },
-  "osvVulnerabilityAlerts": true
+    "github>iamvikshan/.github//renovate/base"
+  ]
 }
</file context>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant