- name
- lint-check
- description
- Run lint on affected packages, parse errors, and auto-fix common issues (design tokens, React.FC, SSR safety, import restrictions)
- disable-model-invocation
- true
- argument-hint
- [package-name]
- allowed-tools
- Bash Read Edit Grep Glob
# Lint Check and Auto-Fix
Run linting and fix common issues for Fluent UI packages.
## Steps
1. **Determine scope.** If `$ARGUMENTS` is provided, lint that specific package. Otherwise, lint affected packages:
```bash
# Specific package
yarn nx run @fluentui/$ARGUMENTS:lint
# Or affected packages
yarn nx affected -t lint
```
2. **Parse the output** and categorize errors by the custom Fluent UI ESLint rules:
| Rule | What it catches | How to fix |
| --------------------------------------- | ------------------------------------------- | ----------------------------------------------------- |
| `@fluentui/ban-context-export` | Context exported from wrong layer | Move to `react-shared-contexts` package |
| `@fluentui/ban-instanceof-html-element` | `instanceof HTMLElement` (breaks iframes) | Use element.tagName or feature detection |
| `@fluentui/no-global-react` | `React.FC`, `React.useState` etc. | Use named imports: `import { useState } from 'react'` |
| `@fluentui/no-restricted-imports` | Banned import paths | Use the allowed import path from the error message |
| `@fluentui/no-context-default-value` | Context created without `undefined` default | Use `createContext(undefined)` and add a guard hook |
3. **Auto-fix** any issues found by editing the source files directly. For each fix:
- Read the file
- Apply the fix
- Verify the fix by re-running lint on that specific file
4. **Report** a summary of what was found and fixed.
## References
- ESLint plugin source: `packages/eslint-plugin/src/rules/`
- Design tokens guide: [docs/architecture/design-tokens.md](docs/architecture/design-tokens.md)
- Component patterns: [docs/architecture/component-patterns.md](docs/architecture/component-patterns.md)
View on GitHub