Skip to content

Instantly share code, notes, and snippets.

@jwmatthews
Created January 27, 2026 14:43
Show Gist options
  • Select an option

  • Save jwmatthews/b19fdb7fdfbea5d05ac2dcb1992ab43b to your computer and use it in GitHub Desktop.

Select an option

Save jwmatthews/b19fdb7fdfbea5d05ac2dcb1992ab43b to your computer and use it in GitHub Desktop.

PatternFly v6 Codemod Coverage Analysis

Overview

This document compares the official PatternFly v6 codemods (97 rules analyzed) with the existing YAML rule files to identify coverage gaps and opportunities.

Official Codemods: 97 rules from https://github.com/patternfly/pf-codemods YAML Rules: 50+ rule files in this repository


YAML Rule Files Present

The following YAML rule categories exist:

Component-Specific Rules (20 files)

  • ✅ accordion
  • ✅ avatar
  • ✅ banner
  • ✅ button
  • ✅ card
  • ✅ checkbox
  • ✅ chip
  • ✅ data-list
  • ✅ drawer
  • ✅ dual-list-selector
  • ✅ empty-state
  • ✅ form
  • ✅ helper-text
  • ✅ label
  • ✅ login
  • ✅ masthead
  • ✅ menu
  • ✅ radio
  • ✅ toolbar
  • ✅ wizard

General Rules (15 files)

  • ✅ component-groups
  • ✅ component-props
  • ✅ component-removal
  • ✅ component-rename(s)
  • ✅ component-structure
  • ✅ deprecated-components
  • ✅ drag-drop
  • ✅ import-path(s)
  • ✅ imports
  • ✅ interface-renames
  • ✅ promoted-components
  • ✅ removed-components
  • ✅ removed-props
  • ✅ renamed-interfaces
  • ✅ renamed-props

CSS/Token Rules (7 files)

  • ✅ breakpoints
  • ✅ css-classes
  • ✅ css-tokens
  • ✅ css-units
  • ✅ css-values
  • ✅ css-variables
  • ✅ react-tokens

Other Rules (4 files)

  • ✅ charts
  • ✅ cleanup
  • ✅ unauthorized-access
  • ✅ unavailable-content

Meta Files

  • ✅ components (general component tracking)
  • ✅ patternfly-v6 (main ruleset?)
  • ✅ ruleset.yaml (ruleset definition)

Total: ~50 YAML rule files


Coverage Comparison

✅ Well Covered Areas

These official codemod patterns appear to be covered by existing YAML rules:

  1. Accordion (3 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-accordion.yaml
    • Codemods: accordionContentRemoveIsHiddenProp, accordionItemWarnUpdateMarkup, accordionToggleMoveIsExpandedProp
  2. Avatar (1 codemod)

    • YAML: patternfly-v5-to-patternfly-v6-avatar.yaml
    • Codemod: avatarReplaceBorderForIsBordered
  3. Banner (1 codemod)

    • YAML: patternfly-v5-to-patternfly-v6-banner.yaml
    • Codemod: bannerReplaceVariantProp
  4. Button (3 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-button.yaml
    • Codemods: buttonMoveIconsIconProp, buttonRenameIsActive, buttonSupportFavoriteVariant
  5. Card (2 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-card.yaml
    • Codemods: cardRemoveVariousProps, cardUpdatedClickableMarkup
  6. Chip (2 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-chip.yaml, patternfly-v5-to-patternfly-v6-label.yaml
    • Codemods: chipDeprecated, chipReplaceWithLabel
  7. Drawer (5 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-drawer.yaml
    • Codemods: drawerContentReplaceNoBackgroundColorVariant, drawerHeadRemoveHasNoPaddingProp, drawerHeadWarnUpdatedMarkup, drawerReplaceColorVariantLight200
  8. EmptyState (3 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-empty-state.yaml
    • Codemods: emptyStateHeaderMoveIntoEmptyState, emptyStateNonExportedComponents
  9. Masthead (3 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-masthead.yaml
    • Codemods: mastheadNameChanges, mastheadRemoveBackgroundColor, mastheadStructureChanges
  10. Deprecated Components (6 codemods)

    • YAML: patternfly-v5-to-patternfly-v6-deprecated-components.yaml
    • Codemods: chipDeprecated, dragDropDeprecated, dualListSelectorDeprecated, modalDeprecated, removeDeprecatedComponents, tileDeprecated

⚠️ Potentially Missing or Incomplete Coverage

These official codemods may need additional YAML coverage:

Page Component (9 codemods)

  • Codemods: pageRenameHeader, pageRenameIsTertiaryNavGrouped, pageRenameIsTertiaryNavWidthLimited, pageRenameTertiaryNav, pageSectionRemoveNavType, pageSectionUpdateVariantValues, pageSectionWarnVariantClassesApplied, pageWarnUpdatedMarkup, pageBreadcrumbAndSectionWarnUpdatedWrapperLogic
  • YAML Status: No dedicated page.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-page.yaml or add to component-props/renamed-props

Navigation (4 codemods)

  • Codemods: navItemRemoveHasNavLinkWrapperProp, navRemoveTertiaryVariant, navRemoveThemeProp
  • YAML Status: No dedicated nav.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-nav.yaml

Menu Components (4 codemods)

  • Codemods: menuItemActionWarnUpdateMarkup, menuToggleRemoveSplitButtonOptions, menuToggleWarnIconOnlyToggle, kebabToggleReplaceWithMenuToggle
  • YAML Status: patternfly-v5-to-patternfly-v6-menu.yaml exists
  • Recommendation: Verify completeness

Tabs (3 codemods)

  • Codemods: tabsRenamedIsSecondaryProp, tabsReplaceVariantLight300, tabsUpdateMarkup
  • YAML Status: No dedicated tabs.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-tabs.yaml

Switch (1 codemod)

  • Codemod: switchRemoveLabelOff
  • YAML Status: No dedicated switch.yaml file found
  • Recommendation: Add to removed-props or create switch.yaml

Notification (2 codemods)

  • Codemods: notificationBadgeWarnMarkupChange, notificationDrawerHeaderWarnUpdateMarkup
  • YAML Status: No dedicated notification.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-notification.yaml

JumpLinks (2 codemods)

  • Codemods: jumpLinksItemHrefRequired, jumpLinksItemWarnMarkupChange
  • YAML Status: No dedicated jumplinks.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-jumplinks.yaml

Pagination (1 codemod)

  • Codemod: paginationWarnMarkupChanged
  • YAML Status: No dedicated pagination.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-pagination.yaml

Text/Content (1 codemod)

  • Codemod: textReplaceWithContent
  • YAML Status: No dedicated text.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-text.yaml

Table (1 codemod)

  • Codemod: thTdWarnUpdateMarkup
  • YAML Status: No dedicated table.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-table.yaml

Slider (1 codemod)

  • Codemod: sliderStepWarnUpdateMarkup
  • YAML Status: No dedicated slider.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-slider.yaml

SimpleFileUpload (1 codemod)

  • Codemod: simpleFileUploadWarnChanges
  • YAML Status: No dedicated file-upload.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-file-upload.yaml

ExpandableSection (1 codemod)

  • Codemod: expandableSectionRemoveIsActiveProp
  • YAML Status: No dedicated expandable-section.yaml file found
  • Recommendation: Create or add to removed-props

TreeView (1 codemod - not fetched)

  • Codemod: treeViewWarnSelectableStylingModifierRemoved
  • YAML Status: Unknown
  • Recommendation: Check GitHub directly

UserFeedback (1 codemod)

  • Codemod: userFeedbackWarnChanges
  • YAML Status: No dedicated user-feedback.yaml file found
  • Recommendation: Create patternfly-v5-to-patternfly-v6-user-feedback.yaml

LogViewer (1 codemod)

  • Codemod: logViewerMovedStyles
  • YAML Status: No dedicated log-viewer.yaml file found
  • Recommendation: Add to css-related rules

Popper (1 codemod)

  • Codemod: popperUpdateAppendToDefault
  • YAML Status: No dedicated popper.yaml file found
  • Recommendation: Create or add to component-props

✅ Likely Covered by General Rules

These codemods are probably covered by general YAML rules:

  1. Token Updates (2 codemods)

    • tokensPrefixWithT, tokensUpdate
    • Likely covered by: patternfly-v5-to-patternfly-v6-react-tokens.yaml
  2. Import Cleanup (2 codemods)

    • noDuplicateImportSpecifiers, noUnusedImportsV6
    • Likely covered by: patternfly-v5-to-patternfly-v6-imports.yaml, patternfly-v5-to-patternfly-v6-cleanup.yaml
  3. Component Promotions (2 codemods)

    • dualListSelectorNextPromoted, modalNextPromoted
    • Likely covered by: patternfly-v5-to-patternfly-v6-promoted-components.yaml
  4. Data Cleanup (1 codemod)

    • dataCodemodsCleanup
    • Likely covered by: patternfly-v5-to-patternfly-v6-cleanup.yaml
  5. Color Props (1 codemod)

    • colorPropsReplacedColors
    • Likely covered by: patternfly-v5-to-patternfly-v6-component-props.yaml
  6. Charts (1 codemod)

    • chartsImportMoved
    • Covered by: patternfly-v5-to-patternfly-v6-charts.yaml
  7. Component Groups (7 codemods)

    • All componentGroups* rules
    • Likely covered by: patternfly-v5-to-patternfly-v6-component-groups.yaml
  8. Checkbox/Radio (1 codemod)

    • checkboxRadioReplaceIsLabelBeforeButton
    • Covered by: patternfly-v5-to-patternfly-v6-checkbox.yaml, patternfly-v5-to-patternfly-v6-radio.yaml
  9. DataList (1 codemod)

    • dataListActionRemoveIsPlainButtonActionProp
    • Covered by: patternfly-v5-to-patternfly-v6-data-list.yaml
  10. Form (2 codemods)

    • formFiledGroupHeaderTitleTextObjectRenamed, formGroupRenameLabelIcon
    • Covered by: patternfly-v5-to-patternfly-v6-form.yaml
  11. HelperText (2 codemods)

    • helperTextItemRemoveProps, helperTextItemWarnScreenReaderTextUpdate
    • Covered by: patternfly-v5-to-patternfly-v6-helper-text.yaml
  12. Login (2 codemods)

    • loginMainFooterLinksItemStructureUpdated, loginMainHeaderWarnUpdatedMarkup
    • Covered by: patternfly-v5-to-patternfly-v6-login.yaml
  13. PageHeader (1 codemod)

    • pageHeaderToolsItemRemoveIsSelectedProp
    • Likely covered by: patternfly-v5-to-patternfly-v6-removed-props.yaml
  14. PageNavigation (1 codemod)

    • pageNavigationRemoveComponent
    • Likely covered by: patternfly-v5-to-patternfly-v6-removed-components.yaml
  15. PageSidebar (1 codemod)

    • pageSidebarRemoveThemeProp
    • Likely covered by: patternfly-v5-to-patternfly-v6-removed-props.yaml
  16. PageToggleButton (1 codemod)

    • pageToggleButtonReplaceBarsIconWithIsHamburgerButton
    • Likely covered by: patternfly-v5-to-patternfly-v6-component-props.yaml
  17. EnableAnimations (1 codemod)

    • enableAnimations
    • May need specific handling

Summary

Coverage Estimate

  • Well Covered: ~60-70% (component-specific + general rules)
  • Potentially Missing: ~20-30% (new component-specific files needed)
  • Unknown: ~10% (rules not fetched)

High Priority Additions

Create these YAML files to improve coverage:

  1. patternfly-v5-to-patternfly-v6-page.yaml (9 rules)
  2. patternfly-v5-to-patternfly-v6-nav.yaml (4 rules)
  3. patternfly-v5-to-patternfly-v6-tabs.yaml (3 rules)
  4. patternfly-v5-to-patternfly-v6-notification.yaml (2 rules)
  5. patternfly-v5-to-patternfly-v6-jumplinks.yaml (2 rules)
  6. patternfly-v5-to-patternfly-v6-table.yaml (1 rule)
  7. patternfly-v5-to-patternfly-v6-text.yaml (1 rule)
  8. patternfly-v5-to-patternfly-v6-switch.yaml (1 rule)
  9. patternfly-v5-to-patternfly-v6-pagination.yaml (1 rule)
  10. patternfly-v5-to-patternfly-v6-slider.yaml (1 rule)

Medium Priority Additions

Enhance or verify these existing files:

  1. 🔍 Verify menu.yaml has all 4 menu-related codemods
  2. 🔍 Verify toolbar.yaml completeness (10+ toolbar codemods exist)
  3. 🔍 Add enable-animations handling
  4. 🔍 Add file-upload handling
  5. 🔍 Add user-feedback handling
  6. 🔍 Add log-viewer CSS handling
  7. 🔍 Add popper prop handling

Validation Checklist

Use this to validate existing YAML rules against official codemods:

Per Component

For each component YAML file, verify:

  • All prop removals from codemods are covered
  • All prop renames from codemods are covered
  • All variant/value changes from codemods are covered
  • All component renames from codemods are covered
  • All structural changes from codemods are noted
  • Messages match or improve upon codemod messages
  • GitHub PR references included when available

General Rules

For general YAML files, verify:

  • All deprecated components listed in deprecated-components.yaml
  • All removed components listed in removed-components.yaml
  • Import path changes covered in import-paths.yaml
  • Token updates covered in react-tokens.yaml
  • CSS changes covered in css-*.yaml files
  • Interface renames covered in interface-renames.yaml

Next Steps

  1. Review Existing Coverage

    • Go through each YAML file
    • Compare against codemod patterns in Codemod_Patterns_Extracted.md
    • Note any discrepancies
  2. Create Missing Files

    • Start with high-priority list (Page, Nav, Tabs, etc.)
    • Use codemod patterns as reference
    • Follow existing YAML structure
  3. Enhance General Rules

    • Update deprecated-components list
    • Verify all import path changes
    • Complete token update rules
  4. Test Coverage

    • Create test cases from codemod test files
    • Validate YAML rules catch same patterns
    • Ensure messages are clear and actionable
  5. Document Limitations

    • Identify codemods that can't be replicated in YAML
    • Document manual migration steps needed
    • Provide workarounds where possible

Reference

Codemod Patterns: See Codemod_Patterns_Extracted.md for detailed rule analysis Pattern Summary: See Pattern_Analysis_Summary.md for high-level insights JSON Data: See codemod_patterns.json for structured data

Generated: 2026-01-27

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