Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA standards. Use this skill to generate semantic ARIA for Web and accessibility traits for Web and Native platforms (iOS/Android).
日本語の概要は準備中です。原文の説明を表示しています。
Checks DRY (10 types), KISS/YAGNI, error handling, DI patterns. Returns findings with severity, location, effort, pattern_signature.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.
Specialized worker auditing code principles (DRY, KISS, YAGNI) and design patterns.
MANDATORY READ: Load shared/references/audit_worker_core_contract.md.
Receives contextStore with: tech_stack, best_practices, principles, codebase_root, output_dir.
Domain-aware: Supports domain_mode + current_domain (see audit_output_schema.md#domain-aware-worker-output).
MANDATORY READ: Load shared/references/two_layer_detection.md for detection methodology.
scan_path (domain-aware if specified), extract output_dirreferences/detection_patterns.md for language-specific Grep/Glob patternstech_stackscan_path (not codebase_root)detection_patterns.mddetection_patterns.md#exclusionsreferences/refactoring_decision_tree.md for pattern selectiondomain: domain_name (if domain-aware)pattern_signature for cross-domain matching by ln-620shared/templates/audit_worker_report_template.md, write to {output_dir}/623-principles-{domain}.md (or 623-principles.md in global mode) in single Write call. Include <!-- FINDINGS-EXTENDED --> JSON block with pattern_signature fields for cross-domain DRY analysisMANDATORY READ: shared/references/two_layer_detection.md
All findings require Layer 2 context analysis. Layer 1 finding without Layer 2 = NOT a valid finding. Before reporting, ask: "Is this violation intentional or justified by design?"
| Finding Type | Layer 2 Downgrade Examples |
|---|---|
| DRY | Modules with different lifecycle/ownership → skip. Intentional duplication for decoupling → skip |
| KISS | Framework-required abstraction (e.g., DI in Spring) → downgrade. Single implementation today but interface for testing → skip |
| YAGNI | Feature flag used in A/B testing → skip. Config option used by ops team → skip |
| Error Handling | Centralized handler absent in 50-line script → downgrade to LOW |
| DI | Dependencies replaceable via params/closures → skip ARCH-DI |
MANDATORY READ: Load references/detection_patterns.md for detection steps per type.
| Type | What | Severity | Exception (skip/downgrade) | Default Recommendation | Effort |
|---|---|---|---|---|---|
| 1.1 Identical Code | Same functions/constants/blocks (>10 lines) in multiple files | HIGH: business-critical (auth, payment). MEDIUM: utilities. LOW: simple constants <5x | Different lifecycle/ownership modules → skip. Intentional decoupling → skip | Extract function → decide location by duplication scope | M |
| 1.2 Duplicated Validation | Same validation patterns (email, password, phone, URL) across files | HIGH: auth/payment. MEDIUM: user input 3+x. LOW: format checks <3x | Different security contexts (auth vs public) → skip | Extract to shared validators module | M |
| 1.3 Repeated Error Messages | Hardcoded error strings instead of centralized catalog | MEDIUM: critical messages hardcoded or no error catalog. LOW: <3 places | User-facing strings requiring per-context wording → downgrade | Create constants/error-messages file | M |
| 1.4 Similar Patterns | Functions with same call sequence/control flow but different names/entities | MEDIUM: business logic in critical paths. LOW: utilities <3x | Modules with divergent evolution expected → skip | Extract common logic (see decision tree for pattern) | M |
| 1.5 Duplicated SQL/ORM | Same queries in different services | HIGH: payment/auth queries. MEDIUM: common 3+x. LOW: simple <3x | Different bounded contexts; shared DB is worse than duplication → skip | Extract to Repository layer | M |
| 1.6 Copy-Pasted Tests | Identical setup/teardown/fixtures across test files | MEDIUM: setup in 5+ files. LOW: <5 files | Tests intentionally isolated for clarity/independence → downgrade | Extract to test helpers | M |
| 1.7 Repeated API Responses | Same response object shapes without DTOs | MEDIUM: in 5+ endpoints. LOW: <5 endpoints | Responses with different versioning lifecycle → skip | Create DTO/Response classes | M |
| 1.8 Duplicated Middleware Chains | Identical middleware/decorator stacks on multiple routes | MEDIUM: same chain on 5+ routes. LOW: <5 routes | Routes with different auth/rate-limit requirements → skip | Create named middleware group, apply at router level | M |
| 1.9 Duplicated Type Definitions | Interfaces/structs/types with 80%+ same fields | MEDIUM: in 5+ files. LOW: 2-4 files | Types with different ownership/evolution paths → skip | Create shared base type, extend where needed | M |
| 1.10 Duplicated Mapping Logic | Same entity→DTO / DTO→entity transformations in multiple locations | MEDIUM: in 3+ locations. LOW: 2 locations | Mappings with different validation/enrichment rules → skip | Create dedicated Mapper class/function | M |
Recommendation selection: Use references/refactoring_decision_tree.md to choose the right refactoring pattern based on duplication location (Level 1) and logic type (Level 2).
| Violation | Detection | Severity | Exception (skip/downgrade) | Recommendation | Effort |
|---|---|---|---|---|---|
| Abstract class with 1 implementation | Grep abstract class → count subclasses | HIGH: prevents understanding core logic | Interface for DI/testing → skip. Framework-required (Spring, ASP.NET) → skip | Remove abstraction, inline | L |
| Factory for <3 types | Grep factory patterns → count branches | MEDIUM: unnecessary pattern | Factory used for DI/testing swap → downgrade | Replace with direct construction | M |
| Deep inheritance >3 levels | Trace extends chain | HIGH: fragile hierarchy | Framework-mandated hierarchy (UI widgets, ORM models) → downgrade | Flatten with composition | L |
| Excessive generic constraints | Grep <T extends ... & ...> | LOW: acceptable tradeoff | Type safety for public API boundary → skip | Simplify constraints | M |
| Wrapper-only classes | Read: all methods delegate to inner | MEDIUM: unnecessary indirection | Adapter pattern for external API isolation → skip | Remove wrapper, use inner directly | M |
| Violation | Detection | Severity | Exception (skip/downgrade) | Recommendation | Effort |
|---|---|---|---|---|---|
| Dead feature flags (always true/false) | Grep flags → verify never toggled | LOW: cleanup needed | A/B testing flags → skip. Ops-controlled toggles → skip | Remove flag, keep active code path | M |
| Abstract methods never overridden | Grep abstract → search implementations | MEDIUM: unused extensibility | Plugin/extension point in public library → downgrade | Remove abstract, make concrete | M |
| Unused config options | Grep config key → 0 references | LOW: dead config | Env-specific configs (staging/prod) → verify before flagging | Remove option | S |
| Interface with 1 implementation | Grep interface → count implementors | MEDIUM: premature abstraction | Interface for DI/testing mock → skip | Remove interface, use class directly | M |
| Premature generics (used with 1 type) | Grep generic usage → count type params | LOW: over-engineering | Public library API designed for consumers → skip | Replace generic with concrete type | S |
| Severity | Criteria |
|---|---|
| CRITICAL | Payment/auth without error handling |
| HIGH | User-facing operations without error handling |
| MEDIUM | Internal operations without error handling |
Effort: M
ErrorHandler, errorHandler, error-handler.*process.on("uncaughtException") usage| Severity | Criteria |
|---|---|
| HIGH | No centralized error handler |
| HIGH | Using uncaughtException listener (Express anti-pattern) |
| MEDIUM | Middleware handles errors directly (no delegation) |
| MEDIUM | Async routes without proper error handling |
| LOW | Stack traces exposed in production |
Outcome Goal: All errors are logged with context and return clear user-facing messages. No error is silently swallowed. Stack traces never leak to production responses. Implementation choice (ErrorHandler class, middleware, decorator) depends on project stack and size.
Effort: M-L
inversify, awilix, tsyringe (Node), dependency_injector (Python), Spring @Autowired (Java), ASP.NET IServiceCollection (C#)new SomeService() in business logic (direct instantiation)bootstrap.ts, init.py, Startup.cs, app.module.ts| Severity | Criteria |
|---|---|
| MEDIUM | No DI container (tight coupling) |
| MEDIUM | Direct instantiation in business logic |
| LOW | Mixed DI and direct imports |
Outcome Goal: Dependencies are replaceable for testing without modifying production code. No tight coupling between service instantiation and business logic. Implementation choice (DI container, factory functions, parameter injection, closures) depends on project size and stack.
Effort: L
docs/architecture.md, docs/best-practices.md, ARCHITECTURE.md, CONTRIBUTING.md| Severity | Criteria |
|---|---|
| LOW | No architecture/best practices guide |
Recommendation: Create docs/architecture.md with layering rules, error handling patterns, DI usage, coding conventions.
Effort: S
MANDATORY READ: Load shared/references/audit_worker_core_contract.md and shared/references/audit_scoring.md.
MANDATORY READ: Load shared/references/audit_worker_core_contract.md and shared/templates/audit_worker_report_template.md.
Write report to {output_dir}/623-principles-{domain}.md (or 623-principles.md in global mode) with category: "Architecture & Design".
FINDINGS-EXTENDED block (required for this worker): After the Findings table, include a <!-- FINDINGS-EXTENDED --> JSON block containing all DRY findings with pattern_signature for cross-domain matching by ln-620 coordinator. Follow shared/templates/audit_worker_report_template.md.
pattern_id: DRY type identifier (dry_1.1 through dry_1.10). Omit for non-DRY findings.
pattern_signature: Normalized key for the detected pattern (e.g., validation_email, sql_users_findByEmail, middleware_auth_validate_ratelimit). Same signature in multiple domains triggers cross-domain DRY finding. Format is defined in references/detection_patterns.md.
Return summary to coordinator:
Report written: docs/project/.audit/ln-620/{YYYY-MM-DD}/623-principles-users.md
Score: X.X/10 | Issues: N (C:N H:N M:N L:N)
MANDATORY READ: Load shared/references/audit_worker_core_contract.md.
domain_mode="domain-aware", scan ONLY scan_pathdomain field in each finding when domain-awarepattern_id + pattern_signature for every DRY findingprinciples.md to define what's acceptabledetection_patterns.md#exclusions)MANDATORY READ: Load shared/references/audit_worker_core_contract.md.
references/detection_patterns.mdreferences/refactoring_decision_tree.mdshared/references/audit_scoring.md{output_dir}/623-principles-{domain}.md with FINDINGS-EXTENDED block (atomic single Write call)Version: 5.0.0 Last Updated: 2026-02-08
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA standards. Use this skill to generate semantic ARIA for Web and accessibility traits for Web and Native platforms (iOS/Android).
日本語の概要は準備中です。原文の説明を表示しています。
Whole site or product — a full web accessibility (a11y) audit against WCAG 2.2, following the WCAG-EM methodology. Defines scope, samples representative pages and flows, runs the automated tier (`accessibility-scan`) and the hands-on manual tier (`accessibility-inspect`), and produces one conformance report. Grades each finding by severity and evidence basis, and states per-criterion conformance as pass, fail, or undetermined (needs a human). Use it for 'audit my site for accessibility', 'is this product accessible', 'a11y audit', 'WCAG or Section 508 conformance report', or any multi-page assessment. Assesses; does not fix (use `accessibility-fix`) or diff (use `accessibility-diff`). For a single page use `accessibility-scan`; for hands-on keyboard and screen-reader checks use `accessibility-inspect`.
日本語の概要は準備中です。原文の説明を表示しています。
Regression check — diff a live page's web accessibility (a11y) violations against a baseline. By default it compares your uncommitted changes (stash-based); pass `--branch [<name>]` to compare against a branch. Reports the new WCAG violations introduced, the ones fixed, and the count of pre-existing ones. Use it for 'did my change break accessibility', 'what a11y issues did this PR add', or as a CI gate. For a full scan of one page use `accessibility-scan`; for a whole site use `accessibility-audit`.
日本語の概要は準備中です。原文の説明を表示しています。
Remediation only — repair web accessibility (a11y) violations against WCAG 2.2 with a baseline, edit, and verify loop. Takes a target (URL, files, directory) or a findings worklist from `accessibility-scan`/`accessibility-inspect`/`accessibility-audit`, applies mechanical fixes as given, leaves TODOs for visual or contextual judgment, and verifies by re-running the baseline check. It only fixes. To find issues use `accessibility-scan` (one page, automated), `accessibility-inspect` (one page, manual), or `accessibility-audit` (whole site, WCAG-EM); to check for regressions use `accessibility-diff`. Use it for 'fix the a11y issues in X', 'make this accessible', 'add missing alt text and labels', 'apply these accessibility fixes', 'remediate these violations'.
日本語の概要は準備中です。原文の説明を表示しています。
One page, hands-on manual tier — drive a live page through the web accessibility (a11y) checks a rule engine can't decide: keyboard operation and focus order, screen-reader names, roles and states from the accessibility tree, reflow and zoom, reduced motion, form errors, and target size. Grades each finding by evidence basis (verified / confirm-with-a-human / human-required) and severity, and closes every criterion in a ledger: verified, flagged, not exercised, or N/A. Locates and assesses; does not fix (use `accessibility-fix`). Use it for keyboard testing, focus-order checks, screen-reader or a11y-tree review, reflow and zoom at 200%, or 'is this operable, not just lint-clean'. The automated tier is `accessibility-scan`; `accessibility-audit` runs both across a sampled site.
日本語の概要は準備中です。原文の説明を表示しています。
One page, automated tier — run the web accessibility (a11y) rule engine against a live page and locate every violation it can detect mechanically. Pass a URL, a config target name (e.g. `accesslint:accessibility-scan dev`), or nothing to use the default target from `accesslint.config.json`. Ensures a debuggable Chrome, runs the @accesslint/core engine over CDP, and returns a worklist of live-DOM WCAG 2.2 violations, each grounded to its DOM selector and source `file:line`. Locates; doesn't edit. Use it for 'is this page accessible', 'check a11y on this URL', 'find contrast and alt-text issues', or to verify a UI change. For hands-on keyboard and screen-reader checks use `accessibility-inspect`; for a whole site or product use `accessibility-audit`; to diff against uncommitted changes or a branch use `accessibility-diff`.
日本語の概要は準備中です。原文の説明を表示しています。