name: pf-status description: >- Show the overall status of PatternFly Java components across lint, compare, and update dimensions. This skill should be used when the user asks to "/pf-status", "component status", "show status", "PFJ status", "what's been linted", "what's been compared", "what's outdated", "component overview", "show progress", "show component progress", "which components are done", "what's left to do", or "dashboard". metadata: version: "0.1.0"
/pf-status — PatternFly Java Component Status Dashboard
Aggregates status from /pf-lint, /pf-compare, and /pf-update report files to show a unified overview of all components. Does not read component source code — only existing report files.
Arguments
/pf-status [component]
Parameters:
[component](optional) — Component name (e.g.,card,navigation). If omitted, shows all components.
Examples:
/pf-status
/pf-status accordion
/pf-status navigation
Data Sources
All skill reports use JSON as the primary structured format. Markdown reports exist alongside for human reading but are not consumed by pf-status.
| Source | Path | Format |
|---|---|---|
| Component list | components/src/main/java/org/patternfly/component/ |
Directory listing |
| Lint reports | reports/pf-lint/<COMPONENT>.json |
Per-component JSON (see pf-lint references/report-schema.json) |
| Compare reports | reports/pf-compare/<COMPONENT>.json |
Per-component JSON (see pf-compare references/report-schema.json) |
| Update reports | reports/pf-update/<VERSION>.json |
Per-version JSON (see pf-update references/report-schema.json) |
Note: /pf-align does not produce reports and is not a data source. Action item counts referenced in suggestions (e.g., "7 action items") are derived from the compare report's actionItems array length.
Workflow
Step 1: Enumerate components
List all subdirectories under components/src/main/java/org/patternfly/component/ to get the canonical component list. Sort alphabetically.
Exclude template — it is a blueprint component, not a real UI component. Do not include it in the status table or stats.
If a [component] argument was given, verify the directory exists. If not, report an error and stop.
Step 2: Read lint status
For each component, check if reports/pf-lint/<COMPONENT>.json exists.
If the file exists, read the JSON and extract:
datefileserrorswarningsstatus(cleanorissues)
If no JSON file exists for a component, treat it as "not linted".
Step 3: Read compare status
For each component, check if reports/pf-compare/<COMPONENT>.json exists.
If the file exists, read the JSON and extract:
datepfVersioncompleteness.pfTotalcompleteness.pfjTotalcompleteness.matchedcompleteness.missingInPfj(array)completeness.extraInPfj(array)
If the file does not exist, the compare status is "not compared".
Step 4: Read update status
Find the most recent update report by listing reports/pf-update/*.json and selecting the file with the highest version number (semver sort). If the directory does not exist or has no .json files, treat all components as "not checked".
If a JSON report exists, read it and extract:
version— the PF version analyzeddate— when the report was generatedcomponentsAffected— array of component names with changesnewComponents— array of new component names
For each component in componentsAffected, check if a compare report at reports/pf-compare/<COMPONENT>.json exists AND has a date that is equal to or later than the update report's date. If so, the component is "current" (compare was re-run after the update). Otherwise it is "outdated".
Components NOT in componentsAffected are "current" (no changes detected for them).
Step 5: Determine status values
For each component, derive these status labels:
| Dimension | Status values |
|---|---|
| Lint | clean — linted with no remaining issues |
issues — linted but has unresolved errors/warnings |
|
— — not yet linted |
|
| Compare | 100% (N/N) — all PF variations matched |
<X>% (M/N) — partial match (matched/pf_total) |
|
— — not yet compared |
|
| Update | current — no relevant changes since last compare, or compare re-run after update |
outdated (<version>) — changes detected in PF <version>, compare not yet re-run |
|
— — no update report exists |
Step 6: Output
Overview mode (no component argument)
Print a summary table to the conversation:
# PF Status
| Component | Lint | Compare | Update |
|-----------|------|---------|--------|
| accordion | clean (Jun 1) | 100% (6/6) | current |
| navigation | clean (Jun 1) | 59% (10/17) | outdated (6.5.0) |
| button | clean (May 30) | — | — |
| ... | | | |
## Stats
- **Linted:** 49/49 (100%)
- **Compared:** 2/49 (4%)
- **Update checked:** <count>/<total> (<percentage>%)
- **Outdated:** <count> components need `/pf-compare` re-run
## Next Steps
Components ready for `/pf-compare`: button, card, ... (up to 10)
Components ready for `/pf-align`: navigation (7 action items from compare report's `actionItems` array)
Sort the table by actionability:
- Outdated components (need
/pf-comparere-run after a PF release) - Components with partial compare coverage (gaps to close)
- Components not yet compared (next candidates for
/pf-compare) - Components fully compared and aligned (done)
Detail mode (component argument given)
Print a detailed status card:
# PF Status: accordion
## Lint
- **Status:** clean
- **Date:** 2026-06-01
- **Files:** 6 | Errors: 0 | Warnings: 0
## Compare
- **Status:** 100% (6/6 matched)
- **Date:** 2026-05-29
- **PF Version:** Release 6.5.1
- **Missing in PFJ:** none
- **Extra in PFJ:** none
## Update
- **Status:** outdated (6.5.0)
- **Last checked:** 2026-06-01
- **Changes:** 2 PRs (1 feat, 1 fix)
## Suggested Next Action
Run `/pf-align accordion` to address DOM/CSS differences found in the compare report.
The "Suggested Next Action" should recommend the logical next step:
- If not linted → "Run
/pf-lint accordion" - If linted but not compared → "Run
/pf-compare accordion" - If compared with gaps → "Run
/pf-align accordionto address N action items" (N = length of compare report'sactionItemsarray) - If outdated → "Run
/pf-compare <component>to check PF<version>changes" - If compared at 100% with no action items → "Up to date"
Step 7: Write persistent report
Only write the persistent report in overview mode (no component argument). In detail mode, skip report generation to avoid the cost of reading all components for a single-component query.
Create the directory reports/pf-status/ if it does not exist.
Write
reports/pf-status/summary.jsonusing the schema fromreferences/report-schema.json. Include skillVersion (frommetadata.versionin this SKILL.md), date, stats, and full per-component status array.Write
reports/pf-status/summary.mdwith the markdown table and stats section for human reading. Use this YAML frontmatter:
---
title: PatternFly Java Component Status
last_updated: <YYYY-MM-DD>
stats:
total: <count>
linted: <count>
compared: <count>
update_checked: <count>
outdated: <count>
---
Follow with the full markdown table and stats section.