Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
bjornmelin avatar

Upgrade Pack Generator

  • 5 installs
  • 5 repo stars
  • Updated August 5, 2026
  • bjornmelin/dev-skills

Upgrade Pack Generator is a Claude Code skill that generates repo-local dependency-upgrade research packs with a playbook, trigger prompt, operator mode, and canonical manifest.

About

Upgrade Pack Generator creates repo-local dependency-upgrade packs before any code changes are made. Each pack contains a canonical manifest plus a playbook, trigger prompt, and operator mode rendered from it. A developer uses it when an agent needs to research an anchor package, expand related dependencies, detect repo context, and produce a reusable upgrade folder. It is monorepo-aware and produces docs and research only, deferring implementation to a later run.

  • Generates repo-local upgrade packs under .agents/plans/upgrade with a playbook, trigger prompt, operator mode, and manif
  • Monorepo-aware: locks an explicit owner surface (repo root or owning workspace) for the dependency family
  • Docs/research only: detects repo context and confirms official docs via web.run before any implementation

Upgrade Pack Generator by the numbers

  • 5 all-time installs (skills.sh)
  • Ranked #1,085 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

upgrade-pack-generator capabilities & compatibility

Capabilities
dependency upgrade · repo context detection · upgrade planning · manifest generation
Works with
vercel
Use cases
refactoring · research · devops
From the docs

What upgrade-pack-generator says it does

The generated pack is docs/research only. Do not implement package changes while
SKILL.md
The generator is monorepo-aware.
SKILL.md
Detect the target repo command family in this order:
SKILL.md
npx skills add https://github.com/bjornmelin/dev-skills --skill upgrade-pack-generator

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs5
repo stars5
Last updatedAugust 5, 2026
Repositorybjornmelin/dev-skills

What it does

Generate repo-local dependency upgrade packs with a playbook, trigger prompt, operator mode, and manifest before any implementation.

Who is it for?

Researching and planning a dependency-family upgrade into a reusable repo-local pack before implementation.

Skip if: Implementing the package changes themselves; the pack is docs/research only.

When should I use this skill?

An agent needs to research an anchor package, expand related dependencies, detect repo context, and create an upgrade folder before implementation.

What you get

A reusable repo-local upgrade pack with a manifest, playbook, and research snapshots ready for a separate implementation run.

  • upgrade-pack.yaml manifest
  • playbook.md
  • trigger-prompt.md

By the numbers

  • 12-step core workflow
  • 6 built-in family lanes

Files

SKILL.mdMarkdownGitHub ↗

Upgrade Pack Generator

Generate upgrade-pack folders for dependency families in two stages:

1. Author or refine a reusable family override. 2. Instantiate a repo-specific pack from that family plus live repo context.

The generator is monorepo-aware. During enrichment it must lock an explicit owner surface for the family:

  • repo root
  • one owning workspace
  • repo root plus related workspaces

The generated pack is docs/research only. Do not implement package changes while generating the pack.

Core Workflow

1. Read references/workflow.md. 2. Decide the mode:

  • family authoring
  • repo instantiation

3. Detect repo context first:

   python3 scripts/detect_repo_context.py --repo-root /path/to/repo --json

4. Bootstrap a manifest from the anchor package:

   python3 scripts/bootstrap_manifest.py \
     --repo-root /path/to/repo \
     --anchor-package lucide-react \
     --out /tmp/upgrade-pack.yaml

5. Enrich the manifest with live repo probes and official upstream guidance:

   python3 scripts/enrich_manifest.py --manifest /tmp/upgrade-pack.yaml

6. Refine the enriched manifest further with live research when needed:

  • $repo-modernize-upgrade-audit
  • $opensrc
  • $opensrc-inspect
  • $technical-writing
  • $hard-cut

7. Validate the manifest:

   python3 scripts/validate_upgrade_pack.py /tmp/upgrade-pack.yaml

8. Run read-only research:

   python3 scripts/research_upgrade_pack.py --manifest /tmp/upgrade-pack.yaml

9. Run the mandatory web.run confirmation pass for required official docs and API-reference pages from research-bundle.json and record the results in web-research-findings.json.

10. Re-run read-only research so the snapshot reflects the confirmed official pages:

   python3 scripts/research_upgrade_pack.py --manifest /tmp/upgrade-pack.yaml

11. Run read-only qualification:

   python3 scripts/qualify_upgrade_pack.py --manifest /tmp/upgrade-pack.yaml

12. Render the pack:

   python3 scripts/render_upgrade_pack.py \
     --manifest /tmp/upgrade-pack.yaml \
     --output-dir /path/to/repo/.agents/plans/upgrade/<topic>

Output Contract

Every generated repo-local pack must contain exactly:

  • upgrade-pack.yaml
  • research-snapshot.json
  • research-bundle.json
  • web-research-findings.json
  • qualification-snapshot.json
  • <basename>-playbook.md
  • <basename>-trigger-prompt.md
  • <basename>-operator-mode.md

The manifest is the canonical source. The markdown files are rendered outputs. research-snapshot.json and qualification-snapshot.json are the canonical machine-readable evidence files for the separate research and qualify stages. research-bundle.json is the raw evidence ledger that backs the research snapshot. web-research-findings.json is the machine-readable record of web.run confirmation for the required official pages.

Rendered file roles:

  • <basename>-playbook.md
  • authoritative human handoff doc and the only writable pack file during an

implementation run

  • <basename>-operator-mode.md
  • execution delta card that points back to the playbook
  • <basename>-trigger-prompt.md
  • thin launcher for a fresh Codex session with a compact repo summary

Do not hand-maintain operator-mode.md or trigger-prompt.md; regenerate them from the manifest.

Family Overrides

Read references/manifest-schema.md before editing any override.

Family overrides live in references/family-overrides/. Use them when a dependency family recurs across repos and benefits from package-specific:

  • end-state decisions
  • research lanes
  • migration questions
  • verification proofs
  • file naming and slug conventions

Current built-in family lanes:

  • lucide-react
  • nextjs
  • expo-eas
  • convex
  • turborepo
  • shadcn-radix-ui

Keep overrides narrow. Put only family-specific information there. Let the base generator provide the common structure.

Package Manager And Framework Detection

Detect the target repo command family in this order:

1. package.json#packageManager 2. root lockfiles 3. repo docs and CI hints

The generator should write that decision into upgrade-pack.yaml and render package-manager-aware command variables into the pack. Do not force Bun into a pnpm/npm/Yarn repo.

Research Routing

Use the default research lanes in references/research-lanes.md.

Conditional routing:

  • use $bun-dev only when Bun posture is actually relevant
  • use framework/plugin lanes only when the target repo detects them
  • use browser lanes only when the package family affects visible UI
  • do not route through $imagegen unless raster asset generation is truly part

of the package-family surface

Scripts

  • scripts/detect_repo_context.py
  • inspects package manager, lockfiles, docs/CI hints, frameworks, and package

manifests

  • scripts/bootstrap_manifest.py
  • creates a starter upgrade-pack.yaml from generic defaults plus an optional

family override

  • scripts/enrich_manifest.py
  • enriches upgrade-pack.yaml with family-specific repo probes, current

package versions, and live official-doc snapshots

  • scripts/validate_upgrade_pack.py
  • validates the manifest contract before rendering
  • scripts/research_upgrade_pack.py
  • gathers upstream docs, API refs, release notes, examples, source evidence,

repo-usage mapping, package identity, target-version reasoning, source-map drift checks, provenance scores, and the web.run queue into research-snapshot.json plus research-bundle.json

  • scripts/sync_source_map.py
  • validates or refreshes the bundled package source-map under

references/source-maps/

  • scripts/qualify_upgrade_pack.py
  • runs family-native read-only qualification and writes

qualification-snapshot.json

  • scripts/render_upgrade_pack.py
  • renders the repo-local pack from the canonical manifest and qualification

snapshot

Examples

Bootstrap a known family override:

python3 scripts/bootstrap_manifest.py \
  --repo-root /path/to/repo \
  --anchor-package lucide-react \
  --out /tmp/lucide-upgrade-pack.yaml

Render a generic pack for a package without an override:

python3 scripts/bootstrap_manifest.py \
  --repo-root /path/to/repo \
  --anchor-package commander \
  --out /tmp/commander-upgrade-pack.yaml
python3 scripts/enrich_manifest.py \
  --manifest /tmp/commander-upgrade-pack.yaml
python3 scripts/research_upgrade_pack.py \
  --manifest /tmp/commander-upgrade-pack.yaml
python3 scripts/qualify_upgrade_pack.py \
  --manifest /tmp/commander-upgrade-pack.yaml
python3 scripts/render_upgrade_pack.py \
  --manifest /tmp/commander-upgrade-pack.yaml \
  --output-dir /path/to/repo/.agents/plans/upgrade/commander

Refresh an existing repo-local pack after refining the manifest:

python3 scripts/enrich_manifest.py \
  --manifest /path/to/repo/.agents/plans/upgrade/lucide-react/upgrade-pack.yaml
python3 scripts/validate_upgrade_pack.py \
  /path/to/repo/.agents/plans/upgrade/lucide-react/upgrade-pack.yaml
python3 scripts/research_upgrade_pack.py \
  --manifest /path/to/repo/.agents/plans/upgrade/lucide-react/upgrade-pack.yaml
python3 scripts/qualify_upgrade_pack.py \
  --manifest /path/to/repo/.agents/plans/upgrade/lucide-react/upgrade-pack.yaml
python3 scripts/render_upgrade_pack.py \
  --manifest /path/to/repo/.agents/plans/upgrade/lucide-react/upgrade-pack.yaml \
  --output-dir /path/to/repo/.agents/plans/upgrade/lucide-react

Related skills

FAQ

Does it implement the upgrade?

No. The generated pack is docs/research only, and you must not implement package changes while generating the pack.

Is it monorepo-aware?

Yes. It locks an explicit owner surface such as the repo root, one owning workspace, or repo root plus related workspaces.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.