Skip to content
Back to skills

Pf React Migration Scan

ASecurity

Scan code for @patternfly/react-* API breaking changes and produce a markdown report. Use when upgrading PatternFly React versions, auditing component API usage, or checking for removed props, renamed components, or import path changes.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
designtypescriptgobashreactgitapi

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add rh-uxd/ai-helpers --skill pf-react-migration-scan --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pf React Migration Scan?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pf React Migration Scan
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rh-uxd-pf-react-migration-scan/badge)](https://www.skillsdirectory.com/skills/rh-uxd-pf-react-migration-scan)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pf-react-migration-scan
description: >-
  Scan code for @patternfly/react-* API breaking changes and produce a markdown
  report. Use when upgrading PatternFly React versions, auditing component API
  usage, or checking for removed props, renamed components, or import path changes.
disable-model-invocation: true
---

# PF React Breaking Changes

Identify **@patternfly/react-* API breaking changes** in a codebase and deliver a markdown report. Do not include CSS class migrations, `@patternfly/patternfly` changes, or non-React packages (for example `@patternfly/chatbot`).

For CSS class and token name migrations, use `pf-css-migration-scan` instead.

## Scope

### In scope (report these)

Packages matching `@patternfly/react-*`, including:

- `@patternfly/react-core`, `@patternfly/react-table`, `@patternfly/react-charts`
- `@patternfly/react-component-groups`, `@patternfly/react-drag-drop`, `@patternfly/react-tokens`
- Other `@patternfly/react-*` extension packages

Breaking change types:

| Category | Examples |
|----------|----------|
| Removed or deprecated components | `Chip` → `Label`, deprecated `Modal` import path |
| Renamed components or subcomponents | `Text` → `Content`, `KebabToggle` → `MenuToggle` |
| Removed, renamed, or retyped props | `isActive` removed, `isDisabled` → behavior change |
| Import or export path changes | `@patternfly/react-charts` → `@patternfly/react-charts/victory` |
| Composition or API structure changes | `EmptyStateHeader` no longer exported; new required wrappers |
| Renamed TypeScript types or enums | `SplitButtonOptions` deleted, enum value removed |
| Hook or render-prop signature changes | Callback arity or argument shape changed |

### Out of scope (do not report)

- PatternFly CSS classes (`pf-v5-*`, `pf-c-*`, `pf-v6-u-*`, etc.)
- CSS custom properties in stylesheets (unless imported from `@patternfly/react-tokens`)
- `@patternfly/patternfly`, `@patternfly/chatbot`, `@patternfly/patternfly-mcp`
- App-level refactors unrelated to PatternFly API changes
- Purely visual/CSS override breakage without a React API change

## Workflow

### 1. Establish context

Confirm with the user (or infer from `package.json` / git diff):

- **Scan path** — directory or files (default: project `src/`)
- **From version** — current PatternFly React version(s)
- **To version** — target version (for example PF5 → PF6, or `6.2.0` → `6.3.0`)
- **Packages** — which `@patternfly/react-*` packages are in use

Read `package.json` (and lockfile if needed) for installed `@patternfly/react-*` versions.

### 2. Inventory PatternFly React usage

Search the scan path for imports and API usage:

```bash
rg "@patternfly/react-" --glob "*.{ts,tsx,js,jsx}" <scan-path>
rg "from ['\"]@patternfly/react-" --glob "*.{ts,tsx,js,jsx}" <scan-path>
```

Build a list of:

- Packages imported
- Components, hooks, types, and enums used
- Props passed to PatternFly components (focus on props known to break between versions)

Group by file for cross-referencing.

### 3. Load authoritative breaking changes

Use the **PatternFly MCP server** before guessing:

1. `searchPatternFlyDocs` with queries like `upgrade`, `upgradeguide`, `release notes`, or specific component names.
2. `usePatternFlyDocs` for:
   - `upgradeguide` — PF6 upgrade guide and codemod rule list
   - Release notes for the target version range
   - Component docs/schemas for removed props or renamed exports

If the PatternFly MCP server is unavailable, continue without stalling: reference the [pf-codemods README](https://github.com/patternfly/pf-codemods) rule list and the [PatternFly upgrade guide](https://www.patternfly.org/get-started/upgrade/) directly, and check GitHub release notes for the target version range.

For **PF5 → PF6**, also reference the [pf-codemods README](https://github.com/patternfly/pf-codemods) rule list — each rule maps to a documented breaking change with PR links.

For **minor/patch upgrades**, check the target release notes and GitHub PRs for `@patternfly/react-core` and related packages.

### 4. Optional — validate with pf-codemods

When upgrading to PF6 (or when the user asks for machine verification), run a **dry run** (no `--fix`):

```bash
npx @patternfly/pf-codemods@latest --v6 <scan-path>
```

Use codemod output to supplement MCP findings. Codemod hits are **in scope** because they flag React API breaking changes. Do not auto-fix unless the user requests it.

### 5. Cross-reference codebase

For each known breaking change in the version range:

1. Search the inventory for affected components, props, imports, or types.
2. Record **file path**, **line number**, **current usage**, and **required change**.
3. Assign **severity**:
   - **Critical** — build/runtime failure (removed export, removed required prop replacement, invalid import)
   - **High** — deprecated API with recommended replacement; behavior change likely
   - **Medium** — deprecated but still works via `@patternfly/react-core/deprecated`; manual follow-up advised

4. Assign **confidence**:
   - **high** — direct match (import of removed component, use of removed prop name)
   - **medium** — usage pattern likely affected (composition change, markup change affecting tests)
   - **low** — possible impact; note for manual review

Do not invent breaking changes. If MCP/docs do not document a change for the stated version range, omit it or mark as "unverified — manual review".

### 6. Generate the markdown report

Write the report to a file the user can share (default: `pf-react-migration-scan-report.md` in the project root unless the user specifies otherwise).

Use the template in [references/report-template.md](references/report-template.md).

Present the report to the user and summarize the highest-severity items.

## Detection patterns

When MCP/docs identify a breaking change, search the codebase with targeted patterns.

The examples below use **PF5 → PF6** component and prop names (`Chip`, `KebabToggle`, `Tile`). For minor/patch upgrades (for example `6.2.0` → `6.3.0`), derive search patterns from the breaking changes documented in release notes — do not blindly search for these PF5→PF6 names.

```bash
# Removed or deprecated components
rg "\bChip\b|\bKebabToggle\b|\bTile\b" --glob "*.{ts,tsx}" <scan-path>

# Renamed components
rg "\bText\b.*@patternfly/react-core|\bContentHeader\b" --glob "*.{ts,tsx}" <scan-path>

# Removed props (examples — extend per version docs)
rg "isActive|isHidden|hasNoPadding|backgroundColor|leftBorderVariant" --glob "*.{ts,tsx}" <scan-path>

# Import path changes
rg "from ['\"]@patternfly/react-charts['\"]" --glob "*.{ts,tsx}" <scan-path>
rg "from ['\"]@patternfly/react-core/deprecated['\"]" --glob "*.{ts,tsx}" <scan-path>

# React tokens
rg "@patternfly/react-tokens" --glob "*.{ts,tsx}" <scan-path>
```

Adapt patterns to the breaking changes documented for the user's version range — do not rely on this fixed list alone.

## Related tools

| Tool | When to use |
|------|-------------|
| `pf-css-migration-scan` | CSS class and legacy token names in markup/styles |
| `pf-import-check` | Invalid import paths after upgrade |
| `pf-codemods` | Automated fixes for many PF5 → PF6 React API changes |
| PatternFly MCP | Authoritative upgrade guide, release notes, component schemas |

## Quality checklist

Before delivering the report:

- [ ] Every finding references an `@patternfly/react-*` API change
- [ ] No CSS-only or `@patternfly/patternfly` findings included
- [ ] Each finding has file location, current code, migration guidance, severity, and confidence
- [ ] Version range and scan scope are documented in the report header
- [ ] Summary counts match the detailed findings

Files in this skill

  • SKILL.md7.6 KB
  • eval/cases/css-only-changes/annotations.yaml67 B
  • eval/cases/css-only-changes/input.yaml262 B
  • eval/cases/minor-version-upgrade/annotations.yaml64 B
  • eval/cases/minor-version-upgrade/input.yaml208 B
  • eval/cases/pf5-to-pf6-codebase/annotations.yaml64 B
  • eval/cases/pf5-to-pf6-codebase/input.yaml692 B
  • eval/eval.yaml4 KB
  • references/report-template.md2.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.