Back to Marketplace
30-day free campaign

Run this helper free — no credit card

Every helper is free for 30 days. Answer 3 questions and get the full result in 2 minutes.

Start free →
FREE
Unvetted
Coding
MFKVault Original

React PR Accessibility & Quality Reviewer

Analyzes React pull requests for accessibility violations, missing PropTypes, and unused imports, then posts structured review comments with severity levels and code examples.

Install in one line

mfkvault install generated-ryahkqbq

Requires the MFKVault CLI. Prefer MCP?

Install for your agent

Pick your agent → choose your OS → copy the command. The CLI does both steps for you.

Recommended · MFKVault CLI
Works on all agents
npx mfkvault install generated-ryahkqbq

Requires MFKVault CLI — writes skill.md to the right folder for the agent you pick.

Manual install
cp skill.md "~/.claude/skills/generated-ryahkqbq/"

Assumes you already have skill.md in your working directory. Need it? See the curl alternative below.

curl alternative · one-shot download + install
— not available —

Source URL missing — use the CLI command above or open the source repo and copy the file manually.

Third-party skill — review the source, license, and security before installing. Folders default to ~/.claude/skills/generated-ryahkqbq/.

New skill
No reviews yet
New skill
This helper was discovered by MFKVault crawlers from public sources. Original author retains all rights. To request removal: [email protected]
Community helper
This helper was discovered by MFKVault crawlers from public sources. MFKVault does not create, maintain, or guarantee the output of this helper. Results are AI-generated and may be incomplete, inaccurate, or outdated. Use at your own risk. Original author retains all rights. Request removal
FREE

Free to install — no account needed

Copy the command below and paste into your agent.

Instant access • No coding needed • No account needed

What you get in 5 minutes

  • Full skill code ready to install
  • Works with 1 AI agent
  • Lifetime updates included
SecureBe first to install
Ready to run

Run this helper

Answer a few questions and let this helper do the work.

Advanced: use with your AI agent

Description

--- ⚠️ AI-Generated Skill Generated by MFKVault on 2026-05-13. Review before use. Not professional advice. Modify as needed for your use case. --- --- name: React PR Accessibility & Quality Reviewer description: Analyzes React pull requests for accessibility violations, missing PropTypes, and unused imports, then posts structured review comments with severity levels and code examples. --- # React PR Accessibility & Quality Reviewer ## When to use this skill Use this skill when reviewing React component pull requests, particularly those that add or modify UI components, forms, or interactive elements. Activate this skill when you need to identify accessibility (a11y) compliance issues, missing type safety through PropTypes, and code cleanliness issues like unused imports. This is ideal for enforcing code quality standards in frontend team workflows. ## Key behaviors - Scan React component code for WCAG 2.1 Level AA accessibility violations including missing ARIA labels, invalid semantic HTML, missing alt text on images, poor color contrast indicators, and keyboard navigation issues - Detect all missing or incomplete PropTypes definitions, flagging untyped props and required props without .isRequired validation - Identify unused imports and unused variables within component scope, prioritizing commonly unused patterns like React, lodash utilities, and styling libraries - Organize findings into severity tiers: CRITICAL (breaks accessibility), HIGH (significantly impacts usability), MEDIUM (best practice violations), and LOW (code style/cleanliness) - Provide concrete before/after code examples for each issue, showing the exact problem and recommended fix - Structure review comments with clear sections: Summary, Issues by Severity, Code Examples, and Recommended Actions - Include specific line numbers and file references in your analysis, avoiding vague observations ## Examples ### Example 1: Form Accessibility Issues **User Request:** Review a login form component PR **Your Response:** ``` ## React PR Review: Login Form Component ### Summary Found 4 accessibility issues and 2 code quality issues. The form lacks proper labeling and keyboard navigation support, which blocks screen reader users. ### 🔴 CRITICAL Issues (1) **Missing Form Labels & ARIA Labels** - **Line 12-18:** Input fields lack associated labels - **Impact:** Screen reader users cannot identify form fields - **Before:** ```jsx <input type="email" placeholder="Enter email" /> <input type="password" placeholder="Enter password" /> ``` - **After:** ```jsx <label htmlFor="email-input">Email Address</label> <input id="email-input" type="email" aria-required="true" /> <label htmlFor="password-input">Password</label> <input id="password-input" type="password" aria-required="true" /> ``` ### 🟠 HIGH Issues (2) **Missing Focus Management** - **Line 24:** Submit button has no focus indicator styling - **Recommendation:** Add `:focus-visible` styles with minimum 3:1 contrast ratio - **Before:** `<button className="btn-submit">Login</button>` - **After:** ```jsx <button className="btn-submit" onKeyDown={handleKeyboardSubmit}> Login </button> ``` ```css .btn-submit:focus-visible { outline: 3px solid #0066cc; outline-offset: 2px; } ``` **No Error Message Association** - **Line 30:** Error messages not linked to inputs with aria-describedby - **Before:** `<span className="error">Invalid email</span>` - **After:** `<span id="email-error" role="alert" aria-live="polite">Invalid email</span>` - Then add `aria-describedby="email-error"` to the input ### 🟡 MEDIUM Issues (1) **Missing PropTypes Definition** - **Lines 1-40:** Component has no PropTypes validation - **Current:** Component accepts onSubmit, initialEmail with no type checking - **Add:** ```jsx LoginForm.propTypes = { onSubmit: PropTypes.func.isRequired, initialEmail: PropTypes.string, onError: PropTypes.func, }; LoginForm.defaultProps = { initialEmail: '', onError: null, }; ``` ### 🔵 LOW Issues (1) **Unused Import** - **Line 3:** `import { debounce } from 'lodash'` imported but never used - **Action:** Remove unused import to reduce bundle size ### Recommended Actions 1. Add semantic labels to all form inputs 2. Implement focus management with visible focus indicators 3. Link error messages with aria-describedby 4. Add PropTypes for all component props 5. Remove unused lodash import ``` ### Example 2: Image Gallery Component **User Request:** Review an image gallery carousel PR **Your Response:** ``` ## React PR Review: Image Gallery Component ### Summary Found 5 accessibility issues and 1 type safety issue. Missing alt text, non-semantic controls, and incomplete PropTypes. ### 🔴 CRITICAL Issues (1) **Missing Alt Text on Images** - **Lines 45-52:** Image elements lack alt attributes - **Before:** ```jsx <img src={imageUrl} className="gallery-image" /> ``` - **After:** ```jsx <img src={imageUrl} alt={`Gallery image ${index + 1} of ${images.length}: ${imageTitle}`} className="gallery-image" /> ``` ### 🟠 HIGH Issues (2) **Non-Semantic Navigation Controls** - **Lines 28-35:** Previous/Next buttons use div elements with click handlers - **Before:** ```jsx <div onClick={handlePrev} className="nav-btn">←</div> <div onClick={handleNext} className="nav-btn">→</div> ``` - **After:** ```jsx <button onClick={handlePrev} aria-label="View previous image" disabled={currentIndex === 0} > ← Previous </button> <button onClick={handleNext} aria-label="View next image" disabled={currentIndex === images.length - 1} > Next → </button> ``` **Missing Keyboard Navigation** - **Lines 28-60:** Gallery doesn't respond to arrow keys - **Add event listener:** ```jsx useEffect(() => { const handleKeyDown = (e) => { if (e.key === 'ArrowLeft') handlePrev(); if (e.key === 'ArrowRight') handleNext(); }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [currentIndex]); ``` ### 🟡 MEDIUM Issues (2) **Incomplete PropTypes** - **Line 1:** PropTypes missing for images array and callback functions - **Add:** ```jsx ImageGallery.propTypes = { images: PropTypes.arrayOf( PropTypes.shape({ url: PropTypes.string.isRequired, title: PropTypes.string.isRequired, id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, }) ).isRequired, onImageChange: PropTypes.func, autoPlayInterval: PropTypes.number, }; ImageGallery.defaultProps = { onImageChange: null, autoPlayInterval: null

Preview in:

Security Status

Unvetted

Not yet security scanned

Time saved
How much time did this skill save you?

Related AI Tools

More Coding tools you might like