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
The following YAML rule categories exist:
- ✅ 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
- ✅ 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
- ✅ breakpoints
- ✅ css-classes
- ✅ css-tokens
- ✅ css-units
- ✅ css-values
- ✅ css-variables
- ✅ react-tokens
- ✅ charts
- ✅ cleanup
- ✅ unauthorized-access
- ✅ unavailable-content
- ✅ components (general component tracking)
- ✅ patternfly-v6 (main ruleset?)
- ✅ ruleset.yaml (ruleset definition)
Total: ~50 YAML rule files
These official codemod patterns appear to be covered by existing YAML rules:
-
Accordion (3 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-accordion.yaml - Codemods: accordionContentRemoveIsHiddenProp, accordionItemWarnUpdateMarkup, accordionToggleMoveIsExpandedProp
- YAML:
-
Avatar (1 codemod)
- YAML:
patternfly-v5-to-patternfly-v6-avatar.yaml - Codemod: avatarReplaceBorderForIsBordered
- YAML:
-
Banner (1 codemod)
- YAML:
patternfly-v5-to-patternfly-v6-banner.yaml - Codemod: bannerReplaceVariantProp
- YAML:
-
Button (3 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-button.yaml - Codemods: buttonMoveIconsIconProp, buttonRenameIsActive, buttonSupportFavoriteVariant
- YAML:
-
Card (2 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-card.yaml - Codemods: cardRemoveVariousProps, cardUpdatedClickableMarkup
- YAML:
-
Chip (2 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-chip.yaml,patternfly-v5-to-patternfly-v6-label.yaml - Codemods: chipDeprecated, chipReplaceWithLabel
- YAML:
-
Drawer (5 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-drawer.yaml - Codemods: drawerContentReplaceNoBackgroundColorVariant, drawerHeadRemoveHasNoPaddingProp, drawerHeadWarnUpdatedMarkup, drawerReplaceColorVariantLight200
- YAML:
-
EmptyState (3 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-empty-state.yaml - Codemods: emptyStateHeaderMoveIntoEmptyState, emptyStateNonExportedComponents
- YAML:
-
Masthead (3 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-masthead.yaml - Codemods: mastheadNameChanges, mastheadRemoveBackgroundColor, mastheadStructureChanges
- YAML:
-
Deprecated Components (6 codemods)
- YAML:
patternfly-v5-to-patternfly-v6-deprecated-components.yaml - Codemods: chipDeprecated, dragDropDeprecated, dualListSelectorDeprecated, modalDeprecated, removeDeprecatedComponents, tileDeprecated
- YAML:
These official codemods may need additional YAML coverage:
- 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.yamlor add to component-props/renamed-props
- Codemods: navItemRemoveHasNavLinkWrapperProp, navRemoveTertiaryVariant, navRemoveThemeProp
- YAML Status: No dedicated nav.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-nav.yaml
- Codemods: menuItemActionWarnUpdateMarkup, menuToggleRemoveSplitButtonOptions, menuToggleWarnIconOnlyToggle, kebabToggleReplaceWithMenuToggle
- YAML Status:
patternfly-v5-to-patternfly-v6-menu.yamlexists - Recommendation: Verify completeness
- Codemods: tabsRenamedIsSecondaryProp, tabsReplaceVariantLight300, tabsUpdateMarkup
- YAML Status: No dedicated tabs.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-tabs.yaml
- Codemod: switchRemoveLabelOff
- YAML Status: No dedicated switch.yaml file found
- Recommendation: Add to removed-props or create switch.yaml
- Codemods: notificationBadgeWarnMarkupChange, notificationDrawerHeaderWarnUpdateMarkup
- YAML Status: No dedicated notification.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-notification.yaml
- Codemods: jumpLinksItemHrefRequired, jumpLinksItemWarnMarkupChange
- YAML Status: No dedicated jumplinks.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-jumplinks.yaml
- Codemod: paginationWarnMarkupChanged
- YAML Status: No dedicated pagination.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-pagination.yaml
- Codemod: textReplaceWithContent
- YAML Status: No dedicated text.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-text.yaml
- Codemod: thTdWarnUpdateMarkup
- YAML Status: No dedicated table.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-table.yaml
- Codemod: sliderStepWarnUpdateMarkup
- YAML Status: No dedicated slider.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-slider.yaml
- Codemod: simpleFileUploadWarnChanges
- YAML Status: No dedicated file-upload.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-file-upload.yaml
- Codemod: expandableSectionRemoveIsActiveProp
- YAML Status: No dedicated expandable-section.yaml file found
- Recommendation: Create or add to removed-props
- Codemod: treeViewWarnSelectableStylingModifierRemoved
- YAML Status: Unknown
- Recommendation: Check GitHub directly
- Codemod: userFeedbackWarnChanges
- YAML Status: No dedicated user-feedback.yaml file found
- Recommendation: Create
patternfly-v5-to-patternfly-v6-user-feedback.yaml
- Codemod: logViewerMovedStyles
- YAML Status: No dedicated log-viewer.yaml file found
- Recommendation: Add to css-related rules
- Codemod: popperUpdateAppendToDefault
- YAML Status: No dedicated popper.yaml file found
- Recommendation: Create or add to component-props
These codemods are probably covered by general YAML rules:
-
Token Updates (2 codemods)
- tokensPrefixWithT, tokensUpdate
- Likely covered by:
patternfly-v5-to-patternfly-v6-react-tokens.yaml
-
Import Cleanup (2 codemods)
- noDuplicateImportSpecifiers, noUnusedImportsV6
- Likely covered by:
patternfly-v5-to-patternfly-v6-imports.yaml,patternfly-v5-to-patternfly-v6-cleanup.yaml
-
Component Promotions (2 codemods)
- dualListSelectorNextPromoted, modalNextPromoted
- Likely covered by:
patternfly-v5-to-patternfly-v6-promoted-components.yaml
-
Data Cleanup (1 codemod)
- dataCodemodsCleanup
- Likely covered by:
patternfly-v5-to-patternfly-v6-cleanup.yaml
-
Color Props (1 codemod)
- colorPropsReplacedColors
- Likely covered by:
patternfly-v5-to-patternfly-v6-component-props.yaml
-
Charts (1 codemod)
- chartsImportMoved
- Covered by:
patternfly-v5-to-patternfly-v6-charts.yaml
-
Component Groups (7 codemods)
- All componentGroups* rules
- Likely covered by:
patternfly-v5-to-patternfly-v6-component-groups.yaml
-
Checkbox/Radio (1 codemod)
- checkboxRadioReplaceIsLabelBeforeButton
- Covered by:
patternfly-v5-to-patternfly-v6-checkbox.yaml,patternfly-v5-to-patternfly-v6-radio.yaml
-
DataList (1 codemod)
- dataListActionRemoveIsPlainButtonActionProp
- Covered by:
patternfly-v5-to-patternfly-v6-data-list.yaml
-
Form (2 codemods)
- formFiledGroupHeaderTitleTextObjectRenamed, formGroupRenameLabelIcon
- Covered by:
patternfly-v5-to-patternfly-v6-form.yaml
-
HelperText (2 codemods)
- helperTextItemRemoveProps, helperTextItemWarnScreenReaderTextUpdate
- Covered by:
patternfly-v5-to-patternfly-v6-helper-text.yaml
-
Login (2 codemods)
- loginMainFooterLinksItemStructureUpdated, loginMainHeaderWarnUpdatedMarkup
- Covered by:
patternfly-v5-to-patternfly-v6-login.yaml
-
PageHeader (1 codemod)
- pageHeaderToolsItemRemoveIsSelectedProp
- Likely covered by:
patternfly-v5-to-patternfly-v6-removed-props.yaml
-
PageNavigation (1 codemod)
- pageNavigationRemoveComponent
- Likely covered by:
patternfly-v5-to-patternfly-v6-removed-components.yaml
-
PageSidebar (1 codemod)
- pageSidebarRemoveThemeProp
- Likely covered by:
patternfly-v5-to-patternfly-v6-removed-props.yaml
-
PageToggleButton (1 codemod)
- pageToggleButtonReplaceBarsIconWithIsHamburgerButton
- Likely covered by:
patternfly-v5-to-patternfly-v6-component-props.yaml
-
EnableAnimations (1 codemod)
- enableAnimations
- May need specific handling
- Well Covered: ~60-70% (component-specific + general rules)
- Potentially Missing: ~20-30% (new component-specific files needed)
- Unknown: ~10% (rules not fetched)
Create these YAML files to improve coverage:
- ✨
patternfly-v5-to-patternfly-v6-page.yaml(9 rules) - ✨
patternfly-v5-to-patternfly-v6-nav.yaml(4 rules) - ✨
patternfly-v5-to-patternfly-v6-tabs.yaml(3 rules) - ✨
patternfly-v5-to-patternfly-v6-notification.yaml(2 rules) - ✨
patternfly-v5-to-patternfly-v6-jumplinks.yaml(2 rules) - ✨
patternfly-v5-to-patternfly-v6-table.yaml(1 rule) - ✨
patternfly-v5-to-patternfly-v6-text.yaml(1 rule) - ✨
patternfly-v5-to-patternfly-v6-switch.yaml(1 rule) - ✨
patternfly-v5-to-patternfly-v6-pagination.yaml(1 rule) - ✨
patternfly-v5-to-patternfly-v6-slider.yaml(1 rule)
Enhance or verify these existing files:
- 🔍 Verify
menu.yamlhas all 4 menu-related codemods - 🔍 Verify
toolbar.yamlcompleteness (10+ toolbar codemods exist) - 🔍 Add enable-animations handling
- 🔍 Add file-upload handling
- 🔍 Add user-feedback handling
- 🔍 Add log-viewer CSS handling
- 🔍 Add popper prop handling
Use this to validate existing YAML rules against official codemods:
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
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
-
Review Existing Coverage
- Go through each YAML file
- Compare against codemod patterns in
Codemod_Patterns_Extracted.md - Note any discrepancies
-
Create Missing Files
- Start with high-priority list (Page, Nav, Tabs, etc.)
- Use codemod patterns as reference
- Follow existing YAML structure
-
Enhance General Rules
- Update deprecated-components list
- Verify all import path changes
- Complete token update rules
-
Test Coverage
- Create test cases from codemod test files
- Validate YAML rules catch same patterns
- Ensure messages are clear and actionable
-
Document Limitations
- Identify codemods that can't be replicated in YAML
- Document manual migration steps needed
- Provide workarounds where possible
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