horusgoul/eslint-plugin-react-render-types/react-render-types-setup-2
Claude Code and agent skill by horusgoul/eslint-plugin-react-render-types
- community
Checking that the SKILL.md file is still in the repository.
Install and configure eslint-plugin-react-render-types in a TypeScript React project. Use when: (1) adding eslint-plugin-react-render-types to a project, (2) configuring ESLint flat config with typed linting for @renders support, (3) troubleshooting typed linting errors or plugin configuration, (4) setting up projectService or tsconfig for the plugin, (5) understanding which rules to enable and what they do, or (6) setting up the IDE language service plugin for @renders features (unused import suppression, go-to-definition, hover, completions, find references, rename, diagnostics).
Install
npx vskill@latest install horusgoul/eslint-plugin-react-render-types/react-render-types-setup-2SKILL.md
React Render Types — Setup
Install and configure eslint-plugin-react-render-types to enforce component composition constraints at lint time.
Prerequisites
- ESLint >= 9 (flat config)
- TypeScript >= 5
@typescript-eslint/parser>= 8- A working
tsconfig.json
Install
ESLint Configuration
Typed linting is required — the plugin uses TypeScript's type checker for cross-file component identity.
Recommended (extends preset)
Manual (pick rules individually)
Typed Linting
Two options — pick one:
Option 1: `projectService` (recommended)
Automatically infers tsconfig for each file.
Option 2: Explicit `project` path
Rules
| Rule | Default | Purpose | |
|---|---|---|---|
valid-render-return | error | Component return matches its @renders declaration | |
valid-render-prop | error | Props/children receive compatible components | |
valid-renders-jsdoc | warn | @renders syntax is well-formed (braces, PascalCase) | |
renders-uses-vars | error | Prevents no-unused-vars on @renders references | |
require-renders-annotation | off | Requires @renders on all components |
Enabling require-renders-annotation for specific paths
Settings
additionalTransparentComponents
Specify component names to treat as transparent wrappers without @transparent JSDoc. Useful for built-in components like Suspense or third-party components you can't annotate. Note that @transparent annotations are resolved cross-file automatically, so settings are only needed for components without JSDoc.
String entries default to looking through children. Object entries specify which props to look through:
For member expressions like <React.Suspense>, use the dotted form: "React.Suspense".
These merge with @transparent JSDoc annotations — both sources are combined. @transparent annotations work cross-file automatically via TypeScript's type checker.
additionalComponentWrappers
The plugin recognizes forwardRef and memo as component wrappers by default. If you use other wrapper functions (e.g., MobX's observer, styled-components' styled), add them so the plugin can detect @renders annotations on wrapped components:
This matches both direct calls (observer(...)) and member expressions (mobx.observer(...)).
IDE Integration: Language Service Plugin
The plugin includes a TypeScript Language Service Plugin that enhances the IDE experience for @renders annotations.
Add to tsconfig.json:
Then restart the TypeScript server (VS Code: Ctrl+Shift+P → "TypeScript: Restart TS Server").
Features:
- Unused import suppression — Imports referenced only in
@rendersannotations are kept visible and won't be auto-removed by "organize imports" - Go-to-definition —
Cmd+Clickon component names inside@rendersannotations navigates to the component definition - Hover info — Hovering component names inside
@rendersshows the same type information as hovering the import - Diagnostics — Warns when a component name in
@rendersdoesn't resolve to any import or declaration in the file - Completions — Autocompletes component names when typing inside
@renders { }braces - Find references — "Find All References" on a component includes
@rendersannotation usages across the project - Rename — Renaming a component updates
@rendersannotations that reference it
Important: This is IDE-only — it runs in the editor's TypeScript language service, not during tsc CLI builds. For CI, use @typescript-eslint/no-unused-vars with the renders-uses-vars rule.
Troubleshooting
| Error | Fix | |
|---|---|---|
| Plugin throws without type info | Add projectService: true to parserOptions | |
| "Cannot read file tsconfig.json" | Check project path is correct relative to ESLint CWD | |
| "File is not part of a TypeScript project" | Add file to tsconfig include, or use projectService: { allowDefaultProject: ['*.tsx'] } | |
no-unused-vars on @renders imports | Ensure renders-uses-vars rule is enabled (included in recommended) | |
IDE shows unused import for @renders reference | Add the language service plugin to tsconfig.json compilerOptions.plugins (see IDE Integration above) | |
| Performance issues | Run TIMING=1 eslint . — see typescript-eslint perf docs |
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/react-render-types-setup/SKILL.md
Popularity
- Repository stars
- 104
- Repository npm downloads, 7 days
- 1,321
- 7-day trend score
- 39
Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 24 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/horusgoul/eslint-plugin-react-render-types/react-render-types-setup-2)