Learn-skills.dev web-design-reviewer

Black-Tortoise UI review and fixes focusing on Angular 20 + standalone components, Material Design 3 tokens, @ngrx/signals state, and DDD layer boundaries. Use when reviewing UI, layout, or design in this repo; checks responsiveness, a11y, spacing, and M3 token usage; applies minimal fixes in presentation styles/templates.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/7spade/black-tortoise/web-design-reviewer" ~/.claude/skills/neversight-learn-skills-dev-web-design-reviewer && rm -rf "$T"
manifest: data/skills-md/7spade/black-tortoise/web-design-reviewer/SKILL.md
source content

Black-Tortoise UI Reviewer

This skill focuses on the Black-Tortoise Angular 20 + Material Design 3 UI stack, identifying and fixing presentation-layer issues at the source code level.

Scope of Application

  • Black-Tortoise Angular 20 presentation layer
  • Material Design 3 component styles and tokens
  • Standalone component templates and SCSS files

Prerequisites

Required

  1. Target UI must be reachable

    • Local dev server (e.g.,
      http://localhost:4200
      , configurable)
    • Staging environment
    • Production environment (read-only reviews)
  2. Browser automation must be available

    • Screenshot capture
    • Page navigation
    • DOM information retrieval
  3. Access to source code (when making fixes)

    • Project must exist within the workspace
    • Edits must be limited to presentation-layer files

Workflow Overview

flowchart TD
    A[Step 1: Information Gathering] --> B[Step 2: Visual Inspection]
    B --> C[Step 3: Issue Fixing]
    C --> D[Step 4: Re-verification]
    D --> E{Issues Remaining?}
    E -->|Yes| B
    E -->|No| F[Completion Report]

Step 1: Information Gathering Phase

1.1 URL Confirmation

If the URL is not provided, ask the user:

Please provide the URL of the website to review (e.g.,

http://localhost:3000
)

1.2 Understanding Project Structure

When making fixes, gather the following information:

ItemExample Question
FrameworkConfirm Angular 20 standalone components?
Styling MethodSCSS with Material Design 3 tokens?
Source LocationWhich presentation components or styles?
Review ScopeSpecific pages only or entire UI?

1.3 Automatic Project Detection

Attempt automatic detection from files in the workspace:

Detection targets:
├── package.json     → Angular 20 + Material + @ngrx/signals
├── angular.json     → Angular CLI configuration
├── src/**/*.scss    → component styles (prefer presentation layer)
├── src/styles/**    → style configuration (M3 tokens if present)
└── src/app/presentation/** → UI source (if present)

1.4 Identifying Styling Method

MethodDetectionEdit Target
SCSS (primary)
src/**/*.scss
(presentation first)
Component SCSS files
Global styles
src/styles.scss
(if present)
Global SCSS
M3 tokens
src/styles/**
(if present)
Token definitions

Step 2: Visual Inspection Phase

2.1 Page Traversal

  1. Navigate to the specified URL
  2. Capture screenshots
  3. Retrieve DOM structure/snapshot (if possible)
  4. If additional pages exist, traverse through navigation

2.2 Inspection Items

Layout Issues

IssueDescriptionSeverity
Element OverflowContent overflows from parent element or viewportHigh
Element OverlapUnintended overlapping of elementsHigh
Alignment IssuesGrid or flex alignment problemsMedium
Inconsistent SpacingPadding/margin inconsistenciesMedium
Text ClippingLong text not handled properlyMedium

Responsive Issues

IssueDescriptionSeverity
Non-mobile FriendlyLayout breaks on small screensHigh
Breakpoint IssuesUnnatural transitions when screen size changesMedium
Touch TargetsButtons too small on mobileMedium

Accessibility Issues

IssueDescriptionSeverity
Insufficient ContrastLow contrast ratio between text and backgroundHigh
No Focus StateCannot determine state during keyboard navigationHigh
Missing alt TextNo alternative text for imagesMedium

Visual Consistency

IssueDescriptionSeverity
Font InconsistencyMixed font familiesMedium
Color InconsistencyNon-unified brand colorsMedium
Spacing InconsistencyNon-uniform spacing between similar elementsLow

2.3 Viewport Testing (Responsive)

Test at the following viewports:

NameWidthRepresentative Device
Mobile375pxiPhone SE/12 mini
Tablet768pxiPad
Desktop1280pxStandard PC
Wide1920pxLarge display

Step 3: Issue Fixing Phase

3.1 Issue Prioritization

block-beta
    columns 1
    block:priority["Priority Matrix"]
        P1["P1: Fix Immediately\n(Layout issues affecting functionality)"]
        P2["P2: Fix Next\n(Visual issues degrading UX)"]
        P3["P3: Fix If Possible\n(Minor visual inconsistencies)"]
    end

3.2 Identifying Source Files

Identify source files from problematic elements:

  1. Selector-based Search

    • Search codebase by class name or ID
    • Explore style definitions with
      grep_search
  2. Component-based Search

    • Identify components from element text or structure
    • Explore related files with
      semantic_search
  3. File Pattern Filtering

     Style files: src/**/*.scss, src/styles/**
     Components: src/app/presentation/** (if present)
     Pages: src/app/presentation/pages/** (if present)
    

3.3 Applying Fixes

Framework-specific Fix Guidelines

See references/framework-fixes.md for details.

Fix Principles

  1. Minimal Changes: Only make the minimum changes necessary to resolve the issue
  2. Respect Existing Patterns: Follow Angular + M3 token usage and existing structure
  3. Avoid Breaking Changes: Be careful not to affect other areas
  4. Layer Safety: Edit presentation styles/templates only; do not touch domain/application

Step 4: Re-verification Phase

4.1 Post-fix Confirmation

  1. Reload browser (or wait for development server HMR)
  2. Capture screenshots of fixed areas
  3. Compare before and after

4.2 Regression Testing

  • Verify that fixes haven't affected other areas
  • Confirm responsive display is not broken

4.3 Iteration Decision

flowchart TD
    A{Issues Remaining?}
    A -->|Yes| B[Return to Step 2]
    A -->|No| C[Proceed to Completion Report]

Iteration Limit: If more than 3 fix attempts are needed for a specific issue, consult the user


Output Format

Review Results Report

# Web Design Review Results

## Summary

| Item | Value |
|------|-------|
| Target URL | {URL} |
| Framework | Angular 20 + Standalone |
| Styling | SCSS + Material Design 3 tokens |
| Tested Viewports | Desktop, Mobile |
| Issues Detected | {N} |
| Issues Fixed | {M} |

## Detected Issues

### [P1] {Issue Title}

- **Page**: {Page path}
- **Element**: {Selector or description}
- **Issue**: {Detailed description of the issue}
- **Fixed File**: `{File path}`
- **Fix Details**: {Description of changes}
- **Screenshot**: Before/After

### [P2] {Issue Title}
...

## Unfixed Issues (if any)

### {Issue Title}
- **Reason**: {Why it was not fixed/could not be fixed}
- **Recommended Action**: {Recommendations for user}

## Recommendations

- {Suggestions for future improvements}

Required Capabilities

CapabilityDescriptionRequired
Web Page NavigationAccess URLs, page transitions
Screenshot CapturePage image capture
Image AnalysisVisual issue detection
DOM RetrievalPage structure retrievalRecommended
File Read/WriteSource code reading and editingRequired for fixes
Code SearchCode search within projectRequired for fixes

Reference Implementation

Implementation with Playwright MCP

Playwright MCP is recommended as the reference implementation for this skill.

CapabilityPlaywright MCP ToolPurpose
Navigation
browser_navigate
Access URLs
Snapshot
browser_snapshot
Retrieve DOM structure
Screenshot
browser_take_screenshot
Images for visual inspection
Click
browser_click
Interact with interactive elements
Resize
browser_resize
Responsive testing
Console
browser_console_messages
Detect JS errors

Configuration Example (MCP Server)

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest", "--caps=vision"]
    }
  }
}

Other Compatible Browser Automation Tools

ToolFeatures
SeleniumBroad browser support, multi-language support
PuppeteerChrome/Chromium focused, Node.js
CypressEasy integration with E2E testing
WebDriver BiDiStandardized next-generation protocol

The same workflow can be implemented with these tools. As long as they provide the necessary capabilities (navigation, screenshot, DOM retrieval), the choice of tool is flexible.


Best Practices

DO (Recommended)

  • ✅ Always save screenshots before making fixes
  • ✅ Fix one issue at a time and verify each
  • ✅ Use Material Design 3 tokens for styling updates
  • ✅ Respect Angular 20 control-flow syntax in templates
  • ✅ Document fix details thoroughly

DON'T (Not Recommended)

  • ❌ Large-scale refactoring without confirmation
  • ❌ Ignoring design systems or brand guidelines
  • ❌ Fixes that ignore performance
  • ❌ Fixing multiple issues at once (difficult to verify)

Troubleshooting

Problem: Style files not found

  1. Check dependencies in
    package.json
  2. Consider the possibility of CSS-in-JS
  3. Consider CSS generated at build time
  4. Ask user about styling method

Problem: Fixes not reflected

  1. Check if development server HMR is working
  2. Clear browser cache
  3. Rebuild if project requires build
  4. Check CSS specificity issues

Problem: Fixes affecting other areas

  1. Rollback changes
  2. Use more specific selectors
  3. Consider using CSS Modules or scoped styles
  4. Consult user to confirm impact scope