Tech: Analyze Dependabot Bumps
Automates analysis of Dependabot PRs to generate a risk-categorized merge plan.
When to Use This Skill
- Weekly Dependabot PR review
- Before deploying to Vercel prod
- When multiple dependency updates accumulate
- To prioritize which PRs to merge first
What This Skill Does
- Fetch PRs: Uses
gh pr list to get all open Dependabot PRs on FlorianBruniaux/starmapper
- Analyze Each PR:
- Parses version bump (major/minor/patch via semver)
- Identifies dependency type (deps vs devDeps from
package.json)
- Checks CI status (passed/failed)
- Risk Categorization:
- 🟢 LOW: devDeps minor bumps (TypeScript, ESLint, Prettier, Vitest)
- 🟡 MEDIUM: deps minor bumps (Next.js minor, Tailwind, Prisma client)
- 🔴 HIGH: Major version bumps (MapLibre GL, Next.js major, Prisma major)
- 🚨 CRITICAL: Neon adapter + Prisma pair mismatches (runtime crash risk)
- Generate Merge Plan: Sequential phases with verification commands
How to Use
Basic Usage
/tech-analyze-bumps
This will:
- Scan all open Dependabot PRs on
FlorianBruniaux/starmapper
- Run
scripts/analyze_bumps.py to generate the report
- Output risk-categorized markdown with merge plan
Output Example
## 📊 Dependabot Bump Analysis
### 🟢 LOW RISK (3 PRs)
- #42: typescript 5.4.0 → 5.5.2 (devDep minor)
- #41: eslint 9.1.0 → 9.3.0 (devDep minor)
### 🟡 MEDIUM RISK (2 PRs)
- #45: next 15.1.0 → 15.2.0 (dep minor)
- #44: tailwindcss 4.0.0 → 4.1.0 (dep minor)
### 🔴 HIGH RISK (1 PR - Breaking Changes)
- #47: maplibre-gl 4.7.0 → 5.0.0 (major — MapLibre visual regression risk)
### 🚨 CRITICAL (1 PR - Neon adapter sync)
- #48: @prisma/adapter-neon 7.0.0 → 7.1.0 without prisma 7.1.0 → mismatch risk
## 🎯 Merge Plan
### Phase 1: DevDeps (LOW)
1. Merge #42, #41
2. Run: `rtk tsc && pnpm lint`
### Phase 2: Runtime Minor (MEDIUM)
3. Merge #45 (check Vercel build)
4. Merge #44 (verify Tailwind v4 theme tokens)
### Phase 3: Major Bumps (HIGH)
5. Create branch `chore/maplibre-v5-bump`
6. Merge #47, test map rendering + cluster interactions
### Phase 4: Critical (Prisma sync)
7. Merge Prisma + adapter pair together
8. Run `npx prisma generate && rtk tsc`
Risk Classification Rules (StarMapper-specific)
🟢 LOW RISK
- Criteria: devDeps AND minor/patch bump
- Examples: TypeScript, ESLint, Prettier, Vitest,
@types/*
- Action: Merge all at once,
rtk tsc check
🟡 MEDIUM RISK
- Criteria: Runtime deps AND minor bump
- Examples: Next.js minor, Tailwind v4 minor, Zod minor
- Action: Merge individually, verify build on localhost
🔴 HIGH RISK
- Criteria: Major version bump
- Categories:
- MapLibre GL: API breaking changes (check
getClusterExpansionZoom Promise API, layer paint properties)
- Next.js major: App Router breaking changes, middleware changes
- Prisma major: Schema model changes, adapter API changes
- Neon adapter: Connection pooling API changes
- Action: Create
chore/<name>-bump branch, test locally before PR
🚨 CRITICAL
- Criteria: Prisma + @prisma/adapter-neon version mismatch, OR major bump to either
- Why: Mismatched versions cause silent runtime crashes on Vercel (no build error, fails at query time)
- Action: Always merge
prisma + @prisma/adapter-neon together in the same commit
CI Failure Detection
If ALL PRs have failing checks:
⚠️ OBSERVATION CRITIQUE
TOUTES les PRs ont des checks qui échouent (X/Y failed).
Cela indique probablement :
- Problème TypeScript global (rtk tsc pour diagnostiquer)
- Conflit de versions entre dépendances
- Build Next.js cassé
AUCUNE PR ne peut être mergée sans risque dans l'état actuel.
Action: rtk tsc en local pour diagnostiquer avant de merger quoi que ce soit.
Verification Commands
After each merge phase:
# Type check (always first)
rtk tsc
# Lint
pnpm lint
# Unit tests
pnpm test
# Prisma regeneration (if Prisma or adapter bumped)
npx prisma generate
rtk tsc # Re-verify after generate
# Visual check (MapLibre or UI deps)
pnpm dev # Open localhost:3000, test map + cluster + popups
Special Cases (StarMapper)
Prisma + Neon Adapter Sync
- Always merge together:
prisma (devDep) + @prisma/adapter-neon (dep)
- Reason: Version mismatch → runtime crash at first Prisma query (no build error)
- Detection: Both PRs present → flag as "must sync"
- Post-merge:
npx prisma generate && rtk tsc
MapLibre GL Major
- Risk: Breaking changes in cluster API (v4→v5 made
getClusterExpansionZoom Promise-based)
- Action: Create branch
chore/maplibre-vX-bump, test:
- Map renders correctly
- Cluster click → expansion zoom works
- Popup opens with correct stargazer data
- 2D/3D toggle works (globe projection)
Next.js Major
- Risk: App Router, Server Actions, middleware API changes
- Action: Read migration guide, test chunk loop end-to-end (small repo < 100 stars)
Example Workflow
# Weekly review
/tech-analyze-bumps
# Phase 1: Merge LOW (devDeps)
gh pr merge 42 --squash
gh pr merge 41 --squash
rtk tsc # ✅ Pass
# Phase 2: MEDIUM individually
gh pr merge 45 --squash
pnpm build # ✅ Next.js build OK
# Phase 3: HIGH (MapLibre)
git checkout -b chore/maplibre-v5-bump
gh pr checkout 47
pnpm dev
# Test: map renders, clusters work, popups open → ✅
# Phase 4: CRITICAL (Prisma sync)
gh pr merge 48 --squash # Merge adapter + prisma together
npx prisma generate
rtk tsc # ✅ 0 errors
Tips
- Run weekly: Monday mornings
- Batch LOW: Merge all devDeps minor bumps at once
- Never batch MEDIUM: Runtime deps individually (easier rollback)
- Branch for HIGH: Never merge major bumps directly to main
- Prisma sync: Non-negotiable — always pair the two together
1---2name: tech-analyze-bumps3description: Analyze Dependabot PRs and generate risk-based merge plan with priority order4---56# Tech: Analyze Dependabot Bumps78Automates analysis of Dependabot PRs to generate a risk-categorized merge plan.910## When to Use This Skill1112- Weekly Dependabot PR review13- Before deploying to Vercel prod14- When multiple dependency updates accumulate15- To prioritize which PRs to merge first1617## What This Skill Does18191. **Fetch PRs**: Uses `gh pr list` to get all open Dependabot PRs on `FlorianBruniaux/starmapper`202. **Analyze Each PR**:21 - Parses version bump (major/minor/patch via semver)22 - Identifies dependency type (deps vs devDeps from `package.json`)23 - Checks CI status (passed/failed)243. **Risk Categorization**:25 - 🟢 LOW: devDeps minor bumps (TypeScript, ESLint, Prettier, Vitest)26 - 🟡 MEDIUM: deps minor bumps (Next.js minor, Tailwind, Prisma client)27 - 🔴 HIGH: Major version bumps (MapLibre GL, Next.js major, Prisma major)28 - 🚨 CRITICAL: Neon adapter + Prisma pair mismatches (runtime crash risk)294. **Generate Merge Plan**: Sequential phases with verification commands3031## How to Use3233### Basic Usage3435```36/tech-analyze-bumps37```3839This will:4041- Scan all open Dependabot PRs on `FlorianBruniaux/starmapper`42- Run `scripts/analyze_bumps.py` to generate the report43- Output risk-categorized markdown with merge plan4445### Output Example4647```markdown48## 📊 Dependabot Bump Analysis4950### 🟢 LOW RISK (3 PRs)5152- #42: typescript 5.4.0 → 5.5.2 (devDep minor)53- #41: eslint 9.1.0 → 9.3.0 (devDep minor)5455### 🟡 MEDIUM RISK (2 PRs)5657- #45: next 15.1.0 → 15.2.0 (dep minor)58- #44: tailwindcss 4.0.0 → 4.1.0 (dep minor)5960### 🔴 HIGH RISK (1 PR - Breaking Changes)6162- #47: maplibre-gl 4.7.0 → 5.0.0 (major — MapLibre visual regression risk)6364### 🚨 CRITICAL (1 PR - Neon adapter sync)6566- #48: @prisma/adapter-neon 7.0.0 → 7.1.0 without prisma 7.1.0 → mismatch risk6768## 🎯 Merge Plan6970### Phase 1: DevDeps (LOW)71721. Merge #42, #41732. Run: `rtk tsc && pnpm lint`7475### Phase 2: Runtime Minor (MEDIUM)76773. Merge #45 (check Vercel build)784. Merge #44 (verify Tailwind v4 theme tokens)7980### Phase 3: Major Bumps (HIGH)81825. Create branch `chore/maplibre-v5-bump`836. Merge #47, test map rendering + cluster interactions8485### Phase 4: Critical (Prisma sync)86877. Merge Prisma + adapter pair together888. Run `npx prisma generate && rtk tsc`89```9091## Risk Classification Rules (StarMapper-specific)9293### 🟢 LOW RISK9495- **Criteria**: devDeps AND minor/patch bump96- **Examples**: TypeScript, ESLint, Prettier, Vitest, `@types/*`97- **Action**: Merge all at once, `rtk tsc` check9899### 🟡 MEDIUM RISK100101- **Criteria**: Runtime deps AND minor bump102- **Examples**: Next.js minor, Tailwind v4 minor, Zod minor103- **Action**: Merge individually, verify build on localhost104105### 🔴 HIGH RISK106107- **Criteria**: Major version bump108- **Categories**:109 - **MapLibre GL**: API breaking changes (check `getClusterExpansionZoom` Promise API, layer paint properties)110 - **Next.js major**: App Router breaking changes, middleware changes111 - **Prisma major**: Schema model changes, adapter API changes112 - **Neon adapter**: Connection pooling API changes113- **Action**: Create `chore/<name>-bump` branch, test locally before PR114115### 🚨 CRITICAL116117- **Criteria**: Prisma + @prisma/adapter-neon version mismatch, OR major bump to either118- **Why**: Mismatched versions cause silent runtime crashes on Vercel (no build error, fails at query time)119- **Action**: Always merge `prisma` + `@prisma/adapter-neon` together in the same commit120121## CI Failure Detection122123If ALL PRs have failing checks:124125```markdown126⚠️ OBSERVATION CRITIQUE127128TOUTES les PRs ont des checks qui échouent (X/Y failed).129Cela indique probablement :130131- Problème TypeScript global (rtk tsc pour diagnostiquer)132- Conflit de versions entre dépendances133- Build Next.js cassé134135AUCUNE PR ne peut être mergée sans risque dans l'état actuel.136```137138**Action**: `rtk tsc` en local pour diagnostiquer avant de merger quoi que ce soit.139140## Verification Commands141142After each merge phase:143144```bash145# Type check (always first)146rtk tsc147148# Lint149pnpm lint150151# Unit tests152pnpm test153154# Prisma regeneration (if Prisma or adapter bumped)155npx prisma generate156rtk tsc # Re-verify after generate157158# Visual check (MapLibre or UI deps)159pnpm dev # Open localhost:3000, test map + cluster + popups160```161162## Special Cases (StarMapper)163164### Prisma + Neon Adapter Sync165166- **Always merge together**: `prisma` (devDep) + `@prisma/adapter-neon` (dep)167- **Reason**: Version mismatch → runtime crash at first Prisma query (no build error)168- **Detection**: Both PRs present → flag as "must sync"169- **Post-merge**: `npx prisma generate && rtk tsc`170171### MapLibre GL Major172173- **Risk**: Breaking changes in cluster API (v4→v5 made `getClusterExpansionZoom` Promise-based)174- **Action**: Create branch `chore/maplibre-vX-bump`, test:175 1. Map renders correctly176 2. Cluster click → expansion zoom works177 3. Popup opens with correct stargazer data178 4. 2D/3D toggle works (globe projection)179180### Next.js Major181182- **Risk**: App Router, Server Actions, middleware API changes183- **Action**: Read migration guide, test chunk loop end-to-end (small repo < 100 stars)184185## Example Workflow186187```bash188# Weekly review189/tech-analyze-bumps190191# Phase 1: Merge LOW (devDeps)192gh pr merge 42 --squash193gh pr merge 41 --squash194rtk tsc # ✅ Pass195196# Phase 2: MEDIUM individually197gh pr merge 45 --squash198pnpm build # ✅ Next.js build OK199200# Phase 3: HIGH (MapLibre)201git checkout -b chore/maplibre-v5-bump202gh pr checkout 47203pnpm dev204# Test: map renders, clusters work, popups open → ✅205206# Phase 4: CRITICAL (Prisma sync)207gh pr merge 48 --squash # Merge adapter + prisma together208npx prisma generate209rtk tsc # ✅ 0 errors210```211212## Tips213214- **Run weekly**: Monday mornings215- **Batch LOW**: Merge all devDeps minor bumps at once216- **Never batch MEDIUM**: Runtime deps individually (easier rollback)217- **Branch for HIGH**: Never merge major bumps directly to main218- **Prisma sync**: Non-negotiable — always pair the two together