PluginBench
Rule

kubestellar console

via PatrickJS/awesome-cursorrules

Multi-cluster Kubernetes dashboard development rules for React/TypeScript frontend and Go/Fiber backend.

What is kubestellar console?

KubeStellar Console rules enforce patterns for a multi-cluster Kubernetes dashboard built with React and Go. Use this rule when developing dashboard cards, data-fetching hooks, backend handlers, or styling components to ensure consistent caching, type safety, internationalization, and cluster deduplication across the project.

  • Enforces data fetching through useCache/useCached* hooks with proper loading and demo-data state handling
  • Requires array safety guards to prevent errors on undefined values
  • Mandates named constants for magic numbers and semantic Tailwind classes for styling
  • Ensures all user-facing strings use react-i18next translation keys
  • Standardizes Go backend patterns with Fiber v2, structured logging, and proper JSON serialization
  • Prevents duplicate cluster processing via DeduplicatedClusters() in multi-cluster queries

Applies to

File patterns this rule matches.

**/*.tsx
**/*.ts
**/*.go
web/src/**/*.ts
web/src/**/*.tsx
pkg/**/*.go
cmd/**/*.go
Rule definition (reference)

Source of truth, from the repository.

KubeStellar Console Development Rules

Project Structure

  • Frontend: React + TypeScript in /web/
  • Backend: Go (Fiber v2) in root directory
  • Build: cd web && npm run build && npm run lint before every commit
  • Cards: Dashboard card components in web/src/components/cards/
  • Hooks: Data fetching hooks in web/src/hooks/

Card Development

  • All data fetching MUST go through useCache/useCached* hooks
  • Always destructure and pass isDemoData and isRefreshing to useCardLoadingState()
  • Never use demo data during loading: isDemoFallback && !isLoading
  • Hook ordering: useCardLoadingState AFTER hooks providing isDemoData

Array Safety

  • NEVER call .join(), .map(), .filter(), .forEach(), for...of on values that might be undefined
  • Always guard: (data || []).map(...) or (data || []).join(', ')

No Magic Numbers

  • Numeric literals should be named constants, except trivial literals (0, 1, -1) in clear local contexts
  • Use constants from lib/constants/ (time.ts, network.ts, ui.ts)

Styling

  • Tailwind CSS with cn() utility for merging classNames
  • Never use raw hex colors — use semantic Tailwind classes (text-foreground, bg-primary, bg-card)
  • Status colors: text-green-400/bg-green-500/10 (success), text-yellow-400/bg-yellow-500/10 (warning), text-red-400/bg-red-500/10 (error), text-cyan-400/bg-cyan-500/10 (info) — these map to the design system's semantic status tokens and are the only permitted palette classes

Internationalization

  • All user-facing strings use t() from react-i18next
  • Keys in web/src/locales/en/ JSON files
  • Never use raw strings for UI text

Go Backend

  • Fiber v2 handlers: func(c *fiber.Ctx) error
  • Use fiber.NewError(statusCode, message) for errors
  • Always make([]T, 0) not var x []T (nil → null in JSON)
  • Use log/slog for structured logging
  • Multi-cluster queries use goroutines + sync.WaitGroup

Cluster Deduplication

  • Always use DeduplicatedClusters() when iterating clusters
  • Multiple kubeconfig contexts can point to same physical cluster

Related rules

Use real, optimized images with proper alt text and responsive constraints instead of placeholders.

**/*
41k
via PatrickJS/awesome-cursorrules

Laravel package development guide with PHP 8.3 features and best practices

**/*
41k
via PatrickJS/awesome-cursorrules

Expert guidance for Laravel development with TALL Stack (Livewire, Alpine.js, Tailwind CSS) best practices.

**/*
41k
via PatrickJS/awesome-cursorrules

Pipeline for downloading, quantizing, and uploading models with NVIDIA CUDA and AMD ROCm support on Linux.

**/*
41k
via PatrickJS/awesome-cursorrules

YAML-based backend scaffolding for Manifest app development with structured entity and property definitions.

**/*
41k
via PatrickJS/awesome-cursorrules

Expert guidance for building applications with Medusa, TypeScript, React, and TailwindCSS.

**/*.tsx +5
41k
via PatrickJS/awesome-cursorrules