JavaScript Linting and Formatting Standards
REFERENCE MODE: This skill provides reference material. Load specific standards on-demand based on current task.
Overview
This skill provides comprehensive ESLint, Prettier, and StyleLint configuration standards for CUI JavaScript projects, covering modern ESLint v9 flat configuration, Prettier formatting automation, comprehensive rule management, build integration, and CSS-in-JS linting for web components.
Prerequisites
To effectively use this skill, you should have:
- Understanding of ESLint and code quality tools
- Knowledge of JavaScript ES2022+ features
- Familiarity with npm package management
- Experience with build pipelines (Maven, npm scripts)
Standards Documents
This skill includes the following standards documents:
- eslint-configuration.md - ESLint v9 flat config structure, required dependencies, environment configuration, plugin setup
- eslint-rules.md - Comprehensive rule definitions including documentation, security, code quality, and environment-specific overrides
- eslint-integration.md - Build pipeline integration, Maven configuration, npm scripts, CI/CD requirements
- prettier-configuration.md - Prettier setup, formatting rules, editor integration, pre-commit hooks, Maven integration
- stylelint-setup.md - StyleLint configuration for CSS-in-JS patterns in web components
What This Skill Provides
ESLint Configuration
- Flat Configuration: ESLint v9+ flat config structure with ES modules
- Required Dependencies: Core ESLint packages and essential plugins
- Plugin Management: JSDoc, Jest, SonarJS, Security, Unicorn, Promise, Prettier plugins
- Environment Setup: Browser, Node.js, Jest environment configuration
- Framework Extensions: Lit and Web Components specific configurations
ESLint Rules
- Documentation Rules: JSDoc validation and documentation quality standards
- Security Rules: Vulnerability detection and security best practices
- Code Quality Rules: SonarJS complexity analysis and maintainability checks
- Modern JavaScript Rules: ES6+ patterns, async/await, Promise handling
- Framework-Specific Rules: Lit components and Web Components validation
- Environment Overrides: Test files, production components, mock files
Build Integration
- npm Scripts: Required lint and lint:fix commands
- Maven Integration: Build phase configuration and execution
- CI/CD Pipeline: Quality gate integration and automation
- Error Handling: Severity levels and common fix strategies
- Performance: Caching and rule selection optimization
Prettier Configuration
- Code Formatting: Prettier configuration for consistent code style
- Formatting Rules: Line length, quotes, semicolons, trailing commas, spacing
- File-Specific Overrides: Different settings for production vs test files
- Format Scripts: format, format:check, quality, quality:fix npm scripts
- Editor Integration: VS Code, IntelliJ setup with format-on-save
- Pre-commit Hooks: Husky and lint-staged configuration
- ESLint Integration: Prettier as ESLint plugin for unified workflow
StyleLint Configuration
- CSS-in-JS Linting: StyleLint for CSS within JavaScript/Lit components
- Plugin Setup: postcss-lit, stylelint-order, declaration-strict-value
- Rule Configuration: Property ordering, custom properties, web component selectors
- Environment Overrides: Production vs test file configurations
- Build Integration: npm scripts and Maven execution
When to Activate
This skill should be activated when:
- Setting Up ESLint: Configuring ESLint for new or existing JavaScript projects
- Upgrading ESLint: Migrating from legacy ESLint configuration to v9 flat config
- Configuring Linting Rules: Adding, modifying, or understanding ESLint rules
- Setting Up Prettier: Configuring code formatting automation and editor integration
- Build Integration: Integrating linting and formatting into Maven builds or CI/CD pipelines
- CSS-in-JS Linting: Setting up StyleLint for Lit components or CSS-in-JS patterns
- Code Quality Issues: Resolving linting errors or configuring rule severity
- Format-on-Save: Configuring editors for automatic formatting
- Framework-Specific Linting: Adding Lit or Web Components specific rules
- Troubleshooting: Debugging ESLint, Prettier, or StyleLint configuration issues
Workflow
When this skill is activated:
1. Identify Linting Requirement
- Determine if setting up new configuration or modifying existing
- Identify specific linting concern (configuration, rules, integration, CSS-in-JS)
- Check current ESLint/StyleLint version and configuration format
2. Apply Configuration Standards
- Use eslint-configuration.md for flat config structure and dependencies
- Configure plugins (JSDoc, Jest, SonarJS, Security, Unicorn, Promise, Prettier)
- Set up environment configuration (browser, Node.js, Jest)
- Add framework-specific plugins if using Lit or Web Components
3. Configure Rules
- Reference eslint-rules.md for comprehensive rule definitions
- Enable documentation rules for JSDoc validation
- Configure security rules for vulnerability detection
- Set up SonarJS for complexity and quality analysis
- Add framework-specific rules for Lit/Web Components if needed
- Configure environment overrides for test files, mocks, production code
4. Configure Prettier Formatting
- Use prettier-configuration.md for Prettier setup
- Create
.prettierrc.js with formatting rules
- Configure file-specific overrides (production vs test)
- Add format scripts (format, format:check, quality, quality:fix)
- Set up editor integration (VS Code, IntelliJ) for format-on-save
- Configure pre-commit hooks with Husky and lint-staged
- Integrate Prettier as ESLint plugin
5. Integrate with Build Pipeline
- Use eslint-integration.md for build integration
- Add npm scripts (lint:js, lint:js:fix, format, format:check, quality, quality:fix)
- Configure Maven execution: format:check in compile, quality:fix in verify
- Set up CI/CD quality gates
- Enable caching for performance
6. Configure CSS-in-JS Linting (Optional)
- Use stylelint-setup.md if using CSS-in-JS or Lit components
- Install StyleLint dependencies (stylelint, stylelint-config-standard, postcss-lit)
- Configure StyleLint with ES module syntax
- Add CSS property ordering and custom property validation
- Integrate StyleLint into build pipeline
7. Validate Configuration
- Run lint and format commands to verify configuration works
- Check for rule conflicts or duplicate definitions
- Test environment-specific overrides
- Verify build integration executes correctly
- Test format-on-save in editors
Tool Access
This skill provides access to linting standards through:
- Read tool for accessing standards documents
- Standards documents use Markdown format for compatibility
- All standards are self-contained within this skill
- Cross-references between standards use relative paths
Integration Notes
Related Skills
For comprehensive frontend development, this skill works with:
- cui-javascript skill - Core JavaScript development standards
- cui-jsdoc skill - JSDoc documentation standards
- cui-javascript-unit-testing skill - Testing standards
- cui-css skill - CSS development standards
Build Integration
Linting standards integrate with:
- npm for package management and script execution
- ESLint for JavaScript linting and code quality
- StyleLint for CSS-in-JS linting
- Prettier for code formatting
- Maven frontend-maven-plugin for build automation
- SonarQube for quality analysis
Quality Tools
Code quality is enforced through:
- ESLint with multiple quality plugins (SonarJS, Security, Unicorn)
- StyleLint for CSS validation
- Prettier for consistent formatting
- Maven build pipeline integration
- CI/CD quality gates
Best Practices
When configuring linting and formatting for CUI projects:
- Use ESLint v9 flat configuration - Modern configuration format with ES modules
- Include all required plugins - JSDoc, Jest, SonarJS, Security, Unicorn, Promise, Prettier
- Configure Prettier integration - Prettier as ESLint plugin for unified workflow
- Enable format-on-save - Automatic formatting in editors (VS Code, IntelliJ)
- Configure environment-specific overrides - Relaxed rules for tests, strict for production
- Enable SonarJS recommended defaults - Comprehensive quality and complexity analysis
- Integrate with build pipeline - format:check in compile, quality:fix in verify
- Use StyleLint for CSS-in-JS - When using Lit components or CSS-in-JS patterns
- Set up pre-commit hooks - Husky and lint-staged for automatic fixing before commit
- Enable caching - For faster subsequent lint runs
- Run quality:fix before commits - Automatic fixing of linting and formatting issues
- Configure proper severity levels - Error for breaking issues, warn for improvements
- Document exceptions - Use comments to explain any rule or format overrides
Common Issues and Solutions
ESLint Configuration Issues
- Duplicate rule definitions: Remove duplicates, keep one instance per rule
- Plugin import errors: Ensure all plugins are installed as devDependencies
- ES module errors: Set
"type": "module" in package.json for flat config
- Environment conflicts: Use environment-specific overrides in configuration
Prettier Configuration Issues
- Format not applying: Verify .prettierrc.js exists and editor extension installed
- Conflicts with ESLint: Disable conflicting ESLint style rules (quotes, semi, indent, etc.)
- Format-on-save not working: Check editor settings and Prettier extension configuration
- ES module errors: Set
"type": "module" in package.json
StyleLint Configuration Issues
- Duplicate rule names: Check for duplicate property-* rules in configuration
- Framework-specific patterns: Use generic patterns unless specific integration required
- ES module import errors: Use
export default syntax with "type": "module"
- CSS-in-JS syntax errors: Ensure postcss-lit is configured as customSyntax
Build Integration Issues
- Maven execution fails: Verify npm scripts exist and dependencies are installed
- Lint errors block build: Adjust severity levels or fix violations
- Performance issues: Enable caching, reduce file scope, parallelize execution
- CI/CD failures: Ensure lint:fix runs in verify phase, not validate phase
Quick Reference
ESLint Flat Config Structure
import js from '@eslint/js';
import jsdoc from 'eslint-plugin-jsdoc';
export default [
js.configs.recommended,
{
plugins: { jsdoc },
rules: { /* rule configuration */ }
}
];
Required npm Scripts
{
"scripts": {
"lint:js": "eslint src/**/*.js",
"lint:js:fix": "eslint --fix src/**/*.js",
"format": "prettier --write \"src/**/*.js\"",
"format:check": "prettier --check \"src/**/*.js\"",
"lint:style": "stylelint src/**/*.js",
"lint:style:fix": "stylelint --fix src/**/*.js",
"quality": "npm run lint && npm run format:check",
"quality:fix": "npm run lint:fix && npm run format"
}
}
Maven Integration
<execution>
<id>npm-lint-fix</id>
<goals><goal>npm</goal></goals>
<phase>verify</phase>
<configuration>
<arguments>run lint:fix</arguments>
</configuration>
</execution>
1---2name: cui-javascript-linting3description: ESLint, Prettier, and StyleLint configuration standards for JavaScript code quality and formatting, including flat config setup, rule management, and build integration4---5
6# JavaScript Linting and Formatting Standards
7
8**REFERENCE MODE**: This skill provides reference material. Load specific standards on-demand based on current task.
9
10## Overview
11
12This skill provides comprehensive ESLint, Prettier, and StyleLint configuration standards for CUI JavaScript projects, covering modern ESLint v9 flat configuration, Prettier formatting automation, comprehensive rule management, build integration, and CSS-in-JS linting for web components.
13
14## Prerequisites
15
16To effectively use this skill, you should have:
17
18- Understanding of ESLint and code quality tools
19- Knowledge of JavaScript ES2022+ features
20- Familiarity with npm package management
21- Experience with build pipelines (Maven, npm scripts)
22
23## Standards Documents
24
25This skill includes the following standards documents:
26
27- **eslint-configuration.md** - ESLint v9 flat config structure, required dependencies, environment configuration, plugin setup
28- **eslint-rules.md** - Comprehensive rule definitions including documentation, security, code quality, and environment-specific overrides
29- **eslint-integration.md** - Build pipeline integration, Maven configuration, npm scripts, CI/CD requirements
30- **prettier-configuration.md** - Prettier setup, formatting rules, editor integration, pre-commit hooks, Maven integration
31- **stylelint-setup.md** - StyleLint configuration for CSS-in-JS patterns in web components
32
33## What This Skill Provides
34
35### ESLint Configuration
36- **Flat Configuration**: ESLint v9+ flat config structure with ES modules
37- **Required Dependencies**: Core ESLint packages and essential plugins
38- **Plugin Management**: JSDoc, Jest, SonarJS, Security, Unicorn, Promise, Prettier plugins
39- **Environment Setup**: Browser, Node.js, Jest environment configuration
40- **Framework Extensions**: Lit and Web Components specific configurations
41
42### ESLint Rules
43- **Documentation Rules**: JSDoc validation and documentation quality standards
44- **Security Rules**: Vulnerability detection and security best practices
45- **Code Quality Rules**: SonarJS complexity analysis and maintainability checks
46- **Modern JavaScript Rules**: ES6+ patterns, async/await, Promise handling
47- **Framework-Specific Rules**: Lit components and Web Components validation
48- **Environment Overrides**: Test files, production components, mock files
49
50### Build Integration
51- **npm Scripts**: Required lint and lint:fix commands
52- **Maven Integration**: Build phase configuration and execution
53- **CI/CD Pipeline**: Quality gate integration and automation
54- **Error Handling**: Severity levels and common fix strategies
55- **Performance**: Caching and rule selection optimization
56
57### Prettier Configuration
58- **Code Formatting**: Prettier configuration for consistent code style
59- **Formatting Rules**: Line length, quotes, semicolons, trailing commas, spacing
60- **File-Specific Overrides**: Different settings for production vs test files
61- **Format Scripts**: format, format:check, quality, quality:fix npm scripts
62- **Editor Integration**: VS Code, IntelliJ setup with format-on-save
63- **Pre-commit Hooks**: Husky and lint-staged configuration
64- **ESLint Integration**: Prettier as ESLint plugin for unified workflow
65
66### StyleLint Configuration
67- **CSS-in-JS Linting**: StyleLint for CSS within JavaScript/Lit components
68- **Plugin Setup**: postcss-lit, stylelint-order, declaration-strict-value
69- **Rule Configuration**: Property ordering, custom properties, web component selectors
70- **Environment Overrides**: Production vs test file configurations
71- **Build Integration**: npm scripts and Maven execution
72
73## When to Activate
74
75This skill should be activated when:
76
771. **Setting Up ESLint**: Configuring ESLint for new or existing JavaScript projects
782. **Upgrading ESLint**: Migrating from legacy ESLint configuration to v9 flat config
793. **Configuring Linting Rules**: Adding, modifying, or understanding ESLint rules
804. **Setting Up Prettier**: Configuring code formatting automation and editor integration
815. **Build Integration**: Integrating linting and formatting into Maven builds or CI/CD pipelines
826. **CSS-in-JS Linting**: Setting up StyleLint for Lit components or CSS-in-JS patterns
837. **Code Quality Issues**: Resolving linting errors or configuring rule severity
848. **Format-on-Save**: Configuring editors for automatic formatting
859. **Framework-Specific Linting**: Adding Lit or Web Components specific rules
8610. **Troubleshooting**: Debugging ESLint, Prettier, or StyleLint configuration issues
87
88## Workflow
89
90When this skill is activated:
91
92### 1. Identify Linting Requirement
93- Determine if setting up new configuration or modifying existing
94- Identify specific linting concern (configuration, rules, integration, CSS-in-JS)
95- Check current ESLint/StyleLint version and configuration format
96
97### 2. Apply Configuration Standards
98- Use **eslint-configuration.md** for flat config structure and dependencies
99- Configure plugins (JSDoc, Jest, SonarJS, Security, Unicorn, Promise, Prettier)
100- Set up environment configuration (browser, Node.js, Jest)
101- Add framework-specific plugins if using Lit or Web Components
102
103### 3. Configure Rules
104- Reference **eslint-rules.md** for comprehensive rule definitions
105- Enable documentation rules for JSDoc validation
106- Configure security rules for vulnerability detection
107- Set up SonarJS for complexity and quality analysis
108- Add framework-specific rules for Lit/Web Components if needed
109- Configure environment overrides for test files, mocks, production code
110
111### 4. Configure Prettier Formatting
112- Use **prettier-configuration.md** for Prettier setup
113- Create `.prettierrc.js` with formatting rules
114- Configure file-specific overrides (production vs test)
115- Add format scripts (format, format:check, quality, quality:fix)
116- Set up editor integration (VS Code, IntelliJ) for format-on-save
117- Configure pre-commit hooks with Husky and lint-staged
118- Integrate Prettier as ESLint plugin
119
120### 5. Integrate with Build Pipeline
121- Use **eslint-integration.md** for build integration
122- Add npm scripts (lint:js, lint:js:fix, format, format:check, quality, quality:fix)
123- Configure Maven execution: format:check in compile, quality:fix in verify
124- Set up CI/CD quality gates
125- Enable caching for performance
126
127### 6. Configure CSS-in-JS Linting (Optional)
128- Use **stylelint-setup.md** if using CSS-in-JS or Lit components
129- Install StyleLint dependencies (stylelint, stylelint-config-standard, postcss-lit)
130- Configure StyleLint with ES module syntax
131- Add CSS property ordering and custom property validation
132- Integrate StyleLint into build pipeline
133
134### 7. Validate Configuration
135- Run lint and format commands to verify configuration works
136- Check for rule conflicts or duplicate definitions
137- Test environment-specific overrides
138- Verify build integration executes correctly
139- Test format-on-save in editors
140
141## Tool Access
142
143This skill provides access to linting standards through:
144- Read tool for accessing standards documents
145- Standards documents use Markdown format for compatibility
146- All standards are self-contained within this skill
147- Cross-references between standards use relative paths
148
149## Integration Notes
150
151### Related Skills
152For comprehensive frontend development, this skill works with:
153- **cui-javascript** skill - Core JavaScript development standards
154- **cui-jsdoc** skill - JSDoc documentation standards
155- **cui-javascript-unit-testing** skill - Testing standards
156- **cui-css** skill - CSS development standards
157
158### Build Integration
159Linting standards integrate with:
160- npm for package management and script execution
161- ESLint for JavaScript linting and code quality
162- StyleLint for CSS-in-JS linting
163- Prettier for code formatting
164- Maven frontend-maven-plugin for build automation
165- SonarQube for quality analysis
166
167### Quality Tools
168Code quality is enforced through:
169- ESLint with multiple quality plugins (SonarJS, Security, Unicorn)
170- StyleLint for CSS validation
171- Prettier for consistent formatting
172- Maven build pipeline integration
173- CI/CD quality gates
174
175## Best Practices
176
177When configuring linting and formatting for CUI projects:
178
1791. **Use ESLint v9 flat configuration** - Modern configuration format with ES modules
1802. **Include all required plugins** - JSDoc, Jest, SonarJS, Security, Unicorn, Promise, Prettier
1813. **Configure Prettier integration** - Prettier as ESLint plugin for unified workflow
1824. **Enable format-on-save** - Automatic formatting in editors (VS Code, IntelliJ)
1835. **Configure environment-specific overrides** - Relaxed rules for tests, strict for production
1846. **Enable SonarJS recommended defaults** - Comprehensive quality and complexity analysis
1857. **Integrate with build pipeline** - format:check in compile, quality:fix in verify
1868. **Use StyleLint for CSS-in-JS** - When using Lit components or CSS-in-JS patterns
1879. **Set up pre-commit hooks** - Husky and lint-staged for automatic fixing before commit
18810. **Enable caching** - For faster subsequent lint runs
18911. **Run quality:fix before commits** - Automatic fixing of linting and formatting issues
19012. **Configure proper severity levels** - Error for breaking issues, warn for improvements
19113. **Document exceptions** - Use comments to explain any rule or format overrides
192
193## Common Issues and Solutions
194
195### ESLint Configuration Issues
196- **Duplicate rule definitions**: Remove duplicates, keep one instance per rule
197- **Plugin import errors**: Ensure all plugins are installed as devDependencies
198- **ES module errors**: Set `"type": "module"` in package.json for flat config
199- **Environment conflicts**: Use environment-specific overrides in configuration
200
201### Prettier Configuration Issues
202- **Format not applying**: Verify .prettierrc.js exists and editor extension installed
203- **Conflicts with ESLint**: Disable conflicting ESLint style rules (quotes, semi, indent, etc.)
204- **Format-on-save not working**: Check editor settings and Prettier extension configuration
205- **ES module errors**: Set `"type": "module"` in package.json
206
207### StyleLint Configuration Issues
208- **Duplicate rule names**: Check for duplicate property-* rules in configuration
209- **Framework-specific patterns**: Use generic patterns unless specific integration required
210- **ES module import errors**: Use `export default` syntax with `"type": "module"`
211- **CSS-in-JS syntax errors**: Ensure postcss-lit is configured as customSyntax
212
213### Build Integration Issues
214- **Maven execution fails**: Verify npm scripts exist and dependencies are installed
215- **Lint errors block build**: Adjust severity levels or fix violations
216- **Performance issues**: Enable caching, reduce file scope, parallelize execution
217- **CI/CD failures**: Ensure lint:fix runs in verify phase, not validate phase
218
219## Quick Reference
220
221### ESLint Flat Config Structure
222```javascript
223import js from '@eslint/js';
224import jsdoc from 'eslint-plugin-jsdoc';
225
226export default [
227 js.configs.recommended,
228 {
229 plugins: { jsdoc },
230 rules: { /* rule configuration */ }
231 }
232];
233```
234
235### Required npm Scripts
236```json
237{
238 "scripts": {
239 "lint:js": "eslint src/**/*.js",
240 "lint:js:fix": "eslint --fix src/**/*.js",
241 "format": "prettier --write \"src/**/*.js\"",
242 "format:check": "prettier --check \"src/**/*.js\"",
243 "lint:style": "stylelint src/**/*.js",
244 "lint:style:fix": "stylelint --fix src/**/*.js",
245 "quality": "npm run lint && npm run format:check",
246 "quality:fix": "npm run lint:fix && npm run format"
247 }
248}
249```
250
251### Maven Integration
252```xml
253<execution>
254 <id>npm-lint-fix</id>
255 <goals><goal>npm</goal></goals>
256 <phase>verify</phase>
257 <configuration>
258 <arguments>run lint:fix</arguments>
259 </configuration>
260</execution>
261```