Basedpyright static type checker configuration, installation, and usage patterns. Use when implementing type checking, configuring LSP, comparing type checkers, or setting up strict type validation in Python projects. Triggered by: basedpyright, pyright, type checking, LSP, mypy alternative, static analysis.
View on GitHublaurigates/claude-plugins
python-plugin
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/laurigates/claude-plugins/blob/main/python-plugin/skills/basedpyright-type-checking/SKILL.md -a claude-code --skill basedpyright-type-checkingInstallation paths:
.claude/skills/basedpyright-type-checking/# Basedpyright Type Checking
Basedpyright is a fork of Pyright with additional features and stricter defaults, designed for maximum type safety and performance.
## Installation
### Via uv (Recommended)
```bash
# Install globally
uv tool install basedpyright
# Install as dev dependency
uv add --dev basedpyright
# Run with uv
uv run basedpyright
```
### Via pipx
```bash
pipx install basedpyright
```
## Basic Usage
```bash
# Check entire project
basedpyright
# Check specific files/directories
basedpyright src/ tests/
# Watch mode for development
basedpyright --watch
# Output JSON for tooling integration
basedpyright --outputjson
# Verbose diagnostics
basedpyright --verbose
```
## Configuration
### pyproject.toml Configuration
```toml
[tool.basedpyright]
# Type checking mode (off, basic, standard, strict, all)
typeCheckingMode = "strict"
# Python version and platform
pythonVersion = "3.12"
pythonPlatform = "All"
# Execution environments for multi-environment projects
executionEnvironments = [
{ root = "src", pythonVersion = "3.12" },
{ root = "tests", extraPaths = ["src"] }
]
# Strict type checking rules (enabled in strict mode)
strictListInference = true
strictDictionaryInference = true
strictSetInference = true
strictParameterNoneValue = true
# Additional strict rules (beyond standard Pyright)
reportUnusedCallResult = "error"
reportImplicitStringConcatenation = "error"
reportMissingSuperCall = "error"
reportUninitializedInstanceVariable = "error"
# Standard type checking rules
reportMissingImports = "error"
reportMissingTypeStubs = "warning"
reportUnusedImport = "error"
reportUnusedClass = "warning"
reportUnusedFunction = "warning"
reportUnusedVariable = "error"
reportDuplicateImport = "error"
reportOptionalSubscript = "error"
reportOptionalMemberAccess = "error"
reportOptionalCall = "error"
reportOptionalIterable = "error"
reportOptionalContextManager = "error"
reportOptionalOperand = "error"
reportTypedDictNotRequiredAccess = "warning"
report