CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-eslint-plugin-svelte

ESLint plugin for Svelte applications providing comprehensive linting rules and configurations using AST parsing

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

rules.mddocs/

Individual Rules

Comprehensive collection of 79 ESLint rules specifically designed for Svelte applications, covering security, best practices, styling, and Svelte-specific patterns.

Capabilities

Core System Rules

Essential system-level rules for ESLint plugin operation.

/**
 * Support comment-based rule directives in Svelte files
 */
'svelte/comment-directive': Rule.RuleModule;

/**
 * Internal system rule for plugin operation
 */
'svelte/system': Rule.RuleModule;

Security & Best Practice Rules

Rules focused on preventing security vulnerabilities and enforcing best practices.

/**
 * Disallow {@html} tags to prevent XSS attacks
 */
'svelte/no-at-html-tags': Rule.RuleModule;

/**
 * Disallow {@debug} tags in production code
 */
'svelte/no-at-debug-tags': Rule.RuleModule;

/**
 * Disallow DOM manipulation in favor of Svelte bindings
 */
'svelte/no-dom-manipulating': Rule.RuleModule;

/**
 * Disallow use of Svelte internal APIs
 */
'svelte/no-svelte-internal': Rule.RuleModule;

/**
 * Require rel="noopener noreferrer" with target="_blank"
 */
'svelte/no-target-blank': Rule.RuleModule;

/**
 * Disallow use of top-level browser globals in SSR contexts
 */
'svelte/no-top-level-browser-globals': Rule.RuleModule;

/**
 * Disallow inspect expressions in production
 */
'svelte/no-inspect': Rule.RuleModule;

Reactive Programming Rules

Rules for Svelte's reactivity system and state management.

/**
 * Prevent infinite reactive loops
 */
'svelte/infinite-reactive-loop': Rule.RuleModule;

/**
 * Disallow immutable reactive statements
 */
'svelte/no-immutable-reactive-statements': Rule.RuleModule;

/**
 * Disallow reactive functions that don't depend on state
 */
'svelte/no-reactive-functions': Rule.RuleModule;

/**
 * Disallow reactive literals
 */
'svelte/no-reactive-literals': Rule.RuleModule;

/**
 * Prevent reactive reassignment issues
 */
'svelte/no-reactive-reassign': Rule.RuleModule;

/**
 * Prefer Svelte reactivity over DOM event listeners
 */
'svelte/prefer-svelte-reactivity': Rule.RuleModule;

/**
 * Disallow unnecessary curly braces in reactive statements
 */
'svelte/no-extra-reactive-curlies': Rule.RuleModule;

Store Management Rules

Rules for Svelte store patterns and best practices.

/**
 * Disallow async stores
 */
'svelte/no-store-async': Rule.RuleModule;

/**
 * Prefer destructured store props
 */
'svelte/prefer-destructured-store-props': Rule.RuleModule;

/**
 * Require store callbacks to use set parameter
 */
'svelte/require-store-callbacks-use-set-param': Rule.RuleModule;

/**
 * Require reactive store access
 */
'svelte/require-store-reactive-access': Rule.RuleModule;

/**
 * Require store initialization
 */
'svelte/require-stores-init': Rule.RuleModule;

/**
 * Prefer writable derived stores
 */
'svelte/prefer-writable-derived': Rule.RuleModule;

/**
 * Ensure derived stores have consistent inputs and outputs
 */
'svelte/derived-has-same-inputs-outputs': Rule.RuleModule;

/**
 * Disallow unsubscribe calls that are ignored
 */
'svelte/no-ignored-unsubscribe': Rule.RuleModule;

Code Quality Rules

Rules for maintaining code quality and preventing common errors.

/**
 * Disallow duplicate else-if blocks
 */
'svelte/no-dupe-else-if-blocks': Rule.RuleModule;

/**
 * Disallow duplicate on: directives
 */
'svelte/no-dupe-on-directives': Rule.RuleModule;

/**
 * Disallow duplicate style properties
 */
'svelte/no-dupe-style-properties': Rule.RuleModule;

/**
 * Disallow duplicate use: directives
 */
'svelte/no-dupe-use-directives': Rule.RuleModule;

/**
 * Disallow unused component props
 */
'svelte/no-unused-props': Rule.RuleModule;

/**
 * Disallow unused CSS class names
 */
'svelte/no-unused-class-name': Rule.RuleModule;

/**
 * Disallow unused svelte-ignore comments
 */
'svelte/no-unused-svelte-ignore': Rule.RuleModule;

/**
 * Disallow unnecessary mustache expressions
 */
'svelte/no-useless-mustaches': Rule.RuleModule;

/**
 * Disallow useless children snippets
 */
'svelte/no-useless-children-snippet': Rule.RuleModule;

/**
 * Disallow objects in text mustaches
 */
'svelte/no-object-in-text-mustaches': Rule.RuleModule;

Styling & Formatting Rules

Rules for consistent code formatting and styling patterns.

/**
 * Enforce first attribute linebreak
 */
'svelte/first-attribute-linebreak': Rule.RuleModule;

/**
 * Enforce closing bracket placement
 */
'svelte/html-closing-bracket-new-line': Rule.RuleModule;

/**
 * Enforce closing bracket spacing
 */
'svelte/html-closing-bracket-spacing': Rule.RuleModule;

/**
 * Enforce consistent quotes in HTML attributes
 */
'svelte/html-quotes': Rule.RuleModule;

/**
 * Configure self-closing tag style
 */
'svelte/html-self-closing': Rule.RuleModule;

/**
 * Enforce consistent indentation
 */
'svelte/indent': Rule.RuleModule;

/**
 * Limit attributes per line
 */
'svelte/max-attributes-per-line': Rule.RuleModule;

/**
 * Enforce spacing in mustache expressions
 */
'svelte/mustache-spacing': Rule.RuleModule;

/**
 * Sort component attributes
 */
'svelte/sort-attributes': Rule.RuleModule;

/**
 * Enforce spacing around equal signs in attributes
 */
'svelte/no-spaces-around-equal-signs-in-attribute': Rule.RuleModule;

/**
 * Disallow trailing spaces
 */
'svelte/no-trailing-spaces': Rule.RuleModule;

/**
 * Enforce spacing in HTML comments
 */
'svelte/spaced-html-comment': Rule.RuleModule;

Directive Rules

Rules for Svelte directive usage and patterns.

/**
 * Prefer class directive over conditional classes
 */
'svelte/prefer-class-directive': Rule.RuleModule;

/**
 * Prefer style directive over conditional styles
 */
'svelte/prefer-style-directive': Rule.RuleModule;

/**
 * Enforce shorthand attribute syntax
 */
'svelte/shorthand-attribute': Rule.RuleModule;

/**
 * Enforce shorthand directive syntax
 */
'svelte/shorthand-directive': Rule.RuleModule;

/**
 * Disallow dynamic slot names
 */
'svelte/no-dynamic-slot-name': Rule.RuleModule;

/**
 * Disallow unknown style directive properties
 */
'svelte/no-unknown-style-directive-property': Rule.RuleModule;

/**
 * Disallow shorthand style property overrides
 */
'svelte/no-shorthand-style-property-overrides': Rule.RuleModule;

Event Handling Rules

Rules for event handling patterns and best practices.

/**
 * Disallow addEventListener in favor of on: directives
 */
'svelte/no-add-event-listener': Rule.RuleModule;

/**
 * Ensure event handlers are functions
 */
'svelte/no-not-function-handler': Rule.RuleModule;

/**
 * Require types for event dispatchers
 */
'svelte/require-event-dispatcher-types': Rule.RuleModule;

/**
 * Require event name prefix
 */
'svelte/require-event-prefix': Rule.RuleModule;

Validation & Compilation Rules

Rules for validating Svelte syntax and compilation.

/**
 * Validate Svelte compilation
 */
'svelte/valid-compile': Rule.RuleModule;

/**
 * Validate each block keys
 */
'svelte/valid-each-key': Rule.RuleModule;

/**
 * Require key in each blocks
 */
'svelte/require-each-key': Rule.RuleModule;

/**
 * Validate style parsing
 */
'svelte/valid-style-parse': Rule.RuleModule;

/**
 * Ensure proper block language syntax
 */
'svelte/block-lang': Rule.RuleModule;

/**
 * Enforce consistent selector styles
 */
'svelte/consistent-selector-style': Rule.RuleModule;

SvelteKit Specific Rules

Rules specific to SvelteKit applications and patterns.

/**
 * Prevent load export in page modules
 */
'svelte/no-export-load-in-svelte-module-in-kit-pages': Rule.RuleModule;

/**
 * Require base for goto navigation
 */
'svelte/no-goto-without-base': Rule.RuleModule;

/**
 * Require base for navigation
 */
'svelte/no-navigation-without-base': Rule.RuleModule;

/**
 * Require resolve for navigation
 */
'svelte/no-navigation-without-resolve': Rule.RuleModule;

/**
 * Validate prop names in Kit pages
 */
'svelte/valid-prop-names-in-kit-pages': Rule.RuleModule;

HTML & Accessibility Rules

Rules for HTML elements and accessibility.

/**
 * Require button elements to have explicit type
 */
'svelte/button-has-type': Rule.RuleModule;

/**
 * Disallow inline styles
 */
'svelte/no-inline-styles': Rule.RuleModule;

/**
 * Disallow restricted HTML elements
 */
'svelte/no-restricted-html-elements': Rule.RuleModule;

/**
 * Disallow raw special elements (script, style)
 */
'svelte/no-raw-special-elements': Rule.RuleModule;

/**
 * Require optimized style attributes
 */
'svelte/require-optimized-style-attribute': Rule.RuleModule;

Advanced & Experimental Rules

Advanced rules and experimental features.

/**
 * Require slot types (experimental)
 */
'svelte/experimental-require-slot-types': Rule.RuleModule;

/**
 * Require strict event types (experimental)
 */
'svelte/experimental-require-strict-events': Rule.RuleModule;

/**
 * Disallow unnecessary state wrapping
 */
'svelte/no-unnecessary-state-wrap': Rule.RuleModule;

/**
 * Prefer const declarations
 */
'svelte/prefer-const': Rule.RuleModule;

/**
 * Disallow inner declarations
 */
'svelte/no-inner-declarations': Rule.RuleModule;

Extension Rules

Rules that extend existing ESLint rules for Svelte context.

/**
 * TypeScript ESLint extension: no unnecessary conditions
 */
'@typescript-eslint/no-unnecessary-condition': Rule.RuleModule;

Rule Categories

By Category Type

type RuleCategory = 
  | 'Possible Errors'      // Rules preventing runtime errors
  | 'Security Vulnerability' // Security-focused rules
  | 'Best Practices'       // Code quality and maintainability
  | 'Stylistic Issues'     // Code formatting and style
  | 'Extension Rules'      // Extensions of existing ESLint rules
  | 'SvelteKit'           // SvelteKit-specific patterns
  | 'Experimental'        // Experimental features
  | 'System';            // Internal system rules

By Rule Type

type RuleType = 
  | 'problem'     // Code correctness issues
  | 'suggestion'  // Code improvement suggestions
  | 'layout';     // Code formatting issues

Rule Configuration

Individual Rule Usage

export default [
  {
    rules: {
      'svelte/no-at-html-tags': 'error',
      'svelte/prefer-class-directive': 'warn',
      'svelte/html-quotes': ['error', { prefer: 'double' }]
    }
  }
];

Rule with Options

export default [
  {
    rules: {
      'svelte/max-attributes-per-line': ['error', {
        multiline: 1,
        singleline: 3
      }],
      'svelte/sort-attributes': ['error', {
        order: ['class', 'id', 'name', 'slot']
      }]
    }
  }
];

Types

Rule Module Interface

interface RuleModule {
  meta: RuleMetaData;
  create: (context: RuleContext) => RuleListener;
}

interface RuleMetaData {
  docs: {
    description: string;
    category: RuleCategory;
    recommended: boolean | 'base';
    url: string;
    ruleId: string;
    ruleName: string;
    default?: 'error' | 'warn';
    conflictWithPrettier?: boolean;
  };
  messages: { [messageId: string]: string };
  fixable?: 'code' | 'whitespace';
  hasSuggestions?: boolean;
  schema: JSONSchema4 | JSONSchema4[];
  deprecated?: boolean;
  replacedBy?: string[] | { note: string };
  type: 'problem' | 'suggestion' | 'layout';
}

interface RuleListener {
  [key: string]: ((node: any) => void) | undefined;
  onCodePathStart?(codePath: any, node: never): void;
  onCodePathEnd?(codePath: any, node: never): void;
}

docs

configs.md

index.md

processor.md

rules.md

tile.json