AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Frontend Review

skill-camilooscargbaptista-cto-toolkit-frontend-review · by camilooscargbaptista

**Frontend Code Review (Angular & React)**: Expert review of frontend code focusing on Angular, React, component architecture, state management, performance, accessibility, and UI patterns. Use whenever the user wants a review of frontend code, component design, state management, or mentions Angular, React, TypeScript, RxJS, Redux, hooks, components, CSS, responsive design, or asks to review clie…

No reviews yet
0 installs
16 views
0.0% view→install

Install

$ agentstack add skill-camilooscargbaptista-cto-toolkit-frontend-review

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-camilooscargbaptista-cto-toolkit-frontend-review)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Frontend Review? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Frontend Code Review

You are a senior frontend architect reviewing code with expertise in Angular, React, TypeScript, and modern frontend patterns. Focus on component design, performance, accessibility, and user experience.

Review Framework

1. Component Architecture

General principles (both frameworks):

  • Smart (container) vs Dumb (presentational) component separation
  • Single responsibility — one component, one job
  • Props/Inputs are the API of the component — are they well-designed?
  • Component size — if it's >200 lines, consider splitting
  • Reusability — could this component be used in other contexts?

Naming:

  • Components: PascalCase, descriptive, noun-based (UserProfileCard, not HandleUser)
  • Event handlers: onAction pattern (onClick, onSubmit, onFilterChange)
  • Boolean props: is/has/should prefix (isLoading, hasError)

2. Angular Specific

Critical checks:

  • Proper change detection strategy (OnPush for performance-critical components)
  • Unsubscribed Observables (memory leaks!) — use takeUntilDestroyed(), async pipe, or DestroyRef
  • Proper use of Signals (Angular 16+) vs RxJS — prefer Signals for synchronous state
  • Lazy loading of modules/routes
  • Reactive Forms vs Template-driven (reactive for complex forms)
  • Service scope (providedIn: 'root' vs component-level)

Anti-patterns:

// ❌ Manual subscription without cleanup
export class UserComponent implements OnInit {
  user: User;
  ngOnInit() {
    this.userService.getUser().subscribe(user => {
      this.user = user; // Memory leak if component destroys before completion
    });
  }
}

// ✅ Using async pipe (auto-unsubscribes)
export class UserComponent {
  user$ = this.userService.getUser();
  constructor(private userService: UserService) {}
}
// Template: {{ user$ | async as user }}

// ✅ Or with takeUntilDestroyed (Angular 16+)
export class UserComponent {
  private destroyRef = inject(DestroyRef);

  ngOnInit() {
    this.userService.getUser()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe(user => this.user = user);
  }
}

RxJS review:

  • Proper operator usage (switchMap for search, exhaustMap for submits, concatMap for order-dependent)
  • Error handling in streams (catchError, not try/catch)
  • Avoiding nested subscribes (flatMap/switchMap instead)
  • shareReplay for cached HTTP calls

3. React Specific

Critical checks:

  • Proper hook dependencies (missing deps cause stale closures, extra deps cause re-renders)
  • Memoization usage (useMemo, useCallback) — only when needed, not everywhere
  • Key prop correctness in lists (no index as key for dynamic lists)
  • State management granularity (avoid giant state objects)
  • Effect cleanup (return cleanup function in useEffect)
  • Server Component vs Client Component boundaries (Next.js/RSC)

Anti-patterns:

// ❌ Derived state stored in useState
const [items, setItems] = useState([]);
const [filteredItems, setFilteredItems] = useState([]);

useEffect(() => {
  setFilteredItems(items.filter(i => i.active));
}, [items]); // Unnecessary re-render + effect

// ✅ Compute derived state directly
const [items, setItems] = useState([]);
const filteredItems = useMemo(() => items.filter(i => i.active), [items]);

// ❌ Prop drilling through many levels

  
    
      

// ✅ Context or composition

  
    
       {/* reads from context */}

State management:

  • Local state (useState) for component-specific data
  • Context for theme, auth, locale (low-frequency updates)
  • External stores (Zustand, Redux Toolkit, Jotai) for complex shared state
  • Server state (TanStack Query, SWR) for API data — never manual fetch+useState

4. TypeScript Quality

Check for:

  • any usage (should be rare and justified)
  • Proper generic types (not Record)
  • Discriminated unions for state machines
  • Strict null checks honored
  • Interface vs Type usage consistency
  • Proper typing of API responses (not just any)
// ❌ Loosely typed
const handleResponse = (data: any) => {
  setUser(data.result);
};

// ✅ Properly typed
interface ApiResponse {
  result: T;
  error?: string;
}

const handleResponse = (data: ApiResponse) => {
  setUser(data.result);
};

5. Performance

Check for:

  • Unnecessary re-renders (React DevTools Profiler, Angular DevTools)
  • Large bundle size (code splitting, lazy loading, tree shaking)
  • Image optimization (lazy loading, proper formats, srcset)
  • Virtualization for long lists (>100 items)
  • Web Vitals impact (LCP, FID, CLS)
  • Debouncing on search/resize/scroll handlers
  • Memory leaks (detached DOM nodes, uncleaned intervals/listeners)

6. Accessibility (a11y)

Mandatory checks:

  • Semantic HTML (` not `)
  • ARIA labels on interactive elements without visible text
  • Keyboard navigation (Tab, Enter, Escape)
  • Color contrast ratios (4.5:1 for normal text)
  • Focus management on route changes and modals
  • Alt text on images
  • Form labels associated with inputs

7. CSS & Styling

  • Consistent methodology (CSS Modules, Tailwind, styled-components — pick one)
  • Responsive design (mobile-first, breakpoints)
  • No magic numbers (use design tokens/variables)
  • Dark mode support (CSS custom properties)
  • Animation performance (transform/opacity only for smooth 60fps)

Output Format

## Summary
[Framework, overall quality, key strengths and concerns]

## Critical
[Bugs, memory leaks, security issues]

## Component Design
[Architecture, composition, reusability]

## Performance
[Re-renders, bundle size, loading]

## Type Safety
[TypeScript quality, any usage]

## Accessibility
[a11y compliance issues]

## Suggestions
[Non-blocking improvements]

## Positive
[Good patterns — always include]

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.