007
無料Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
日本語の概要は準備中です。原文の説明を表示しています。
Adds accessibility annotations (ARIA labels, roles, alt text) to make web content accessible. Use when user asks to "add accessibility", "make accessible", "add aria labels", "wcag compliance", or "screen reader support".
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Automatically adds ARIA labels, roles, alt text, and other accessibility annotations to HTML/JSX/Vue templates.
Analyze HTML/JSX/Vue files for common issues:
# Find images without alt text
grep -r "<img" src/ --include="*.jsx" --include="*.tsx" --include="*.vue" | grep -v "alt="
# Find buttons without labels
grep -r "<button" src/ | grep -v "aria-label"
# Find form inputs without labels
grep -r "<input" src/ | grep -v "aria-label" | grep -v "<label"
# Find interactive elements without role
grep -r "onClick" src/ | grep -v "role="
Images:
// Before
<img src="/logo.png" />
<img src="/photo.jpg" className="avatar" />
// After
<img src="/logo.png" alt="Company Logo" />
<img src="/photo.jpg" alt="Profile photo of John Doe" className="avatar" />
// Decorative images (no alt needed, but must be explicit)
<img src="/decorative-line.png" alt="" role="presentation" />
Background images (CSS):
// Add ARIA label for meaningful background images
<div
className="hero-banner"
role="img"
aria-label="Team collaborating in modern office"
style={{ backgroundImage: 'url(/hero.jpg)' }}
>
Buttons:
// Before
<button onClick={handleDelete}>
<TrashIcon />
</button>
// After
<button
onClick={handleDelete}
aria-label="Delete item"
>
<TrashIcon aria-hidden="true" />
</button>
// Or with visible text
<button onClick={handleDelete}>
<TrashIcon aria-hidden="true" />
<span>Delete</span>
</button>
Icon-only buttons:
// Before
<button onClick={handleEdit}>
<EditIcon />
</button>
// After
<button
onClick={handleEdit}
aria-label="Edit profile"
title="Edit profile"
>
<EditIcon aria-hidden="true" />
</button>
Links:
// Before
<a href="/settings">
<SettingsIcon />
</a>
// After
<a href="/settings" aria-label="Go to settings">
<SettingsIcon aria-hidden="true" />
</a>
// Avoid generic "click here"
// Before
<a href="/docs">Click here</a>
// After
<a href="/docs">Read the documentation</a>
Labels for inputs:
// Before
<input type="email" placeholder="Email" />
// After - Method 1: Visible label (preferred)
<label htmlFor="email">Email address</label>
<input
type="email"
id="email"
name="email"
aria-required="true"
/>
// After - Method 2: aria-label (if no visible label)
<input
type="email"
aria-label="Email address"
aria-required="true"
placeholder="Email"
/>
Error messages:
// Before
{error && <span className="error">{error}</span>}
// After
<input
type="email"
id="email"
aria-invalid={!!error}
aria-describedby={error ? "email-error" : undefined}
/>
{error && (
<span id="email-error" role="alert" className="error">
{error}
</span>
)}
Required fields:
<label htmlFor="name">
Name <span aria-label="required">*</span>
</label>
<input
type="text"
id="name"
required
aria-required="true"
/>
Field descriptions:
<label htmlFor="password">Password</label>
<input
type="password"
id="password"
aria-describedby="password-requirements"
/>
<div id="password-requirements">
Must be at least 8 characters with 1 uppercase letter and 1 number
</div>
Navigation:
// Before
<div className="nav">
<a href="/">Home</a>
<a href="/about">About</a>
</div>
// After
<nav aria-label="Main navigation">
<a href="/">Home</a>
<a href="/about">About</a>
</nav>
Landmarks:
<header role="banner">
<nav aria-label="Main navigation">...</nav>
</header>
<main role="main">
<section aria-labelledby="products-heading">
<h2 id="products-heading">Our Products</h2>
...
</section>
</main>
<aside role="complementary" aria-label="Related articles">
...
</aside>
<footer role="contentinfo">
...
</footer>
Lists:
// Before
<div className="menu">
<div>Home</div>
<div>About</div>
</div>
// After
<ul role="list">
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
Focusable elements:
// Before
<div onClick={handleClick}>Click me</div>
// After
<div
role="button"
tabIndex={0}
onClick={handleClick}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault()
handleClick()
}
}}
aria-label="Submit form"
>
Click me
</div>
// Better: Use actual button
<button onClick={handleClick} aria-label="Submit form">
Click me
</button>
Skip links:
<a href="#main-content" className="skip-link">
Skip to main content
</a>
<main id="main-content">
...
</main>
// CSS
.skip-link {
position: absolute;
top: -40px;
left: 0;
background: #000;
color: white;
padding: 8px;
z-index: 100;
}
.skip-link:focus {
top: 0;
}
Tab order:
// Control tab order with tabIndex
<button tabIndex={1}>First</button>
<button tabIndex={2}>Second</button>
// Or keep natural order (preferred)
<button>First</button>
<button>Second</button>
Announcements:
// Status messages
<div role="status" aria-live="polite">
{statusMessage}
</div>
// Urgent alerts
<div role="alert" aria-live="assertive">
{errorMessage}
</div>
// Loading state
<div
role="status"
aria-live="polite"
aria-busy={isLoading}
>
{isLoading ? 'Loading...' : 'Content loaded'}
</div>
Progress indicators:
<div
role="progressbar"
aria-valuenow={progress}
aria-valuemin={0}
aria-valuemax={100}
aria-label="Upload progress"
>
{progress}%
</div>
Modal:
<div
role="dialog"
aria-modal="true"
aria-labelledby="modal-title"
aria-describedby="modal-description"
>
<h2 id="modal-title">Confirm Delete</h2>
<p id="modal-description">
Are you sure you want to delete this item?
</p>
<button onClick={handleConfirm}>Confirm</button>
<button onClick={handleCancel}>Cancel</button>
</div>
// Focus management
useEffect(() => {
if (isOpen) {
// Save current focus
const previousFocus = document.activeElement
// Focus first element in modal
modalRef.current?.focus()
// Trap focus in modal
const handleKeyDown = (e) => {
if (e.key === 'Escape') {
handleClose()
}
}
document.addEventListener('keydown', handleKeyDown)
return () => {
document.removeEventListener('keydown', handleKeyDown)
// Restore focus
previousFocus?.focus()
}
}
}, [isOpen])
Dropdown menu:
<div>
<button
aria-expanded={isOpen}
aria-haspopup="true"
aria-controls="dropdown-menu"
onClick={toggleMenu}
>
Menu
</button>
{isOpen && (
<ul
id="dropdown-menu"
role="menu"
>
<li role="menuitem">
<a href="/profile">Profile</a>
</li>
<li role="menuitem">
<a href="/settings">Settings</a>
</li>
<li role="menuitem">
<button onClick={handleLogout}>Logout</button>
</li>
</ul>
)}
</div>
Accordion:
<div>
<h3>
<button
aria-expanded={isExpanded}
aria-controls="panel-1"
id="accordion-header-1"
onClick={toggle}
>
Section 1
</button>
</h3>
{isExpanded && (
<div
id="panel-1"
role="region"
aria-labelledby="accordion-header-1"
>
Content here...
</div>
)}
</div>
Data tables:
<table>
<caption>Employee Information</caption>
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Department</th>
<th scope="col">Email</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">John Doe</th>
<td>Engineering</td>
<td>john@example.com</td>
</tr>
</tbody>
</table>
Complex tables:
<table>
<thead>
<tr>
<th id="name" scope="col">Name</th>
<th id="monday" scope="col">Monday</th>
<th id="tuesday" scope="col">Tuesday</th>
</tr>
</thead>
<tbody>
<tr>
<th id="john" scope="row">John</th>
<td headers="john monday">9-5</td>
<td headers="john tuesday">9-5</td>
</tr>
</tbody>
</table>
React:
import { useEffect, useRef } from 'react'
function AccessibleComponent() {
const headingRef = useRef(null)
// Announce page changes to screen readers
useEffect(() => {
headingRef.current?.focus()
document.title = 'New Page Title'
}, [])
return (
<main>
<h1 ref={headingRef} tabIndex={-1}>
Page Title
</h1>
</main>
)
}
Vue:
<template>
<button
@click="handleClick"
:aria-label="buttonLabel"
:aria-pressed="isPressed"
>
<Icon :aria-hidden="true" />
{{ text }}
</button>
</template>
<script>
export default {
computed: {
buttonLabel() {
return `${this.text} (${this.isPressed ? 'active' : 'inactive'})`
}
}
}
</script>
DO:
DON'T:
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
日本語の概要は準備中です。原文の説明を表示しています。
Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. This should trigger for requests such as Create a user story; Write a user story; I need to write a user story. Part of cursor-rules-java project
日本語の概要は準備中です。原文の説明を表示しています。
Facilitates conversational discovery to create Architectural Decision Records (ADRs) for non-functional requirements using the ISO/IEC 25010:2023 quality model. Use when the user wants to document quality attributes, NFR decisions, security/performance/scalability architecture, or design systems with measurable quality criteria. This should trigger for requests such as Create ADR for Non-functional requirements; Document Non-functional requirements; Capture Non-functional requirements; Generate Non-functional requirements in an ADR. Part of cursor-rules-java project
日本語の概要は準備中です。原文の説明を表示しています。
Run a health check on an existing project: dependency audit, security scan, test runner detection, CI/CD evaluation, and missing configuration analysis. Maps the three execution gates (pre/in/post) from /10x-bootstrapper to an assessment framework for existing codebases. Reads optional context/foundation/stack-assessment.md from /10x-stack-assess to focus checks on identified gaps. Writes context/foundation/health-check.md with findings, prioritized fixes, and an agent-readiness verdict. Use when the user has an existing project and wants to verify its health before working with an agent. Trigger phrases: "health check", "check my project", "audit my project", "is my project healthy", "sprawdź projekt", "audyt projektu", "health-check", "project health". Use AFTER /10x-stack-assess (brownfield chain), BEFORE agent onboarding (m1-l4).
日本語の概要は準備中です。原文の説明を表示しています。
You MUST use this when building projects end-to-end. Orchestrates all 12 team roles — automatically switches between CTO, architect, PM, engineers, SRE, security, DBA, QA, and EM based on the current phase of work. Starts with brainstorming before any implementation.
日本語の概要は準備中です。原文の説明を表示しています。
Use when you need to add or configure Maven plugins in your pom.xml — including quality tools (enforcer, surefire, failsafe, jacoco, pitest, spotbugs, pmd), security scanning (OWASP), code formatting (Spotless), version management, container image build (Jib), build information tracking, and benchmarking (JMH) — through a consultative, modular step-by-step approach that only adds what you actually need. This should trigger for requests such as Add Maven plugins in pom.xml; Improve Maven plugins in pom.xml. Part of cursor-rules-java project
日本語の概要は準備中です。原文の説明を表示しています。