Skip to main content

lint-and-validate

Automatic multi-language quality control, linting, and static analysis.

Informations de source

Dépôt
skeletorflet/opencode-kit
Dernière activité de la source
31 mars 2026 à 19:12
Langue détectée de SKILL.md
anglais
Étoiles
9
Forks
1

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
3 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
lint-and-validate
description
Automatic multi-language quality control, linting, and static analysis.
# Lint and Validate - Multi-Language > **MANDATORY:** Run appropriate validation tools after EVERY code change. > **IMPORTANT:** This skill auto-detects the project language and applies the correct linting stack. --- ## 🔍 Auto-Detección de Lenguaje ``` Detecta automáticamente el lenguaje del proyecto: ├── pyproject.toml / requirements.txt → Python (Ruff, mypy) ├── package.json → JavaScript/TypeScript (ESLint, tsc) ├── go.mod → Go (go fmt, golangci-lint) ├── Cargo.toml → Rust (cargo clippy, cargo fmt) ├── pom.xml / build.gradle → Java (Checkstyle) ├── *.csproj → C# (.NET format, StyleCop) ├── Gemfile → Ruby (RuboCop) ├── composer.json → PHP (PHP-CS-Fixer, PHPStan) ├── Package.swift → Swift (SwiftLint) ├── build.gradle.kts → Kotlin (ktlint) └── CMakeLists.txt → C++ (clang-format) ``` --- ## 📋 Herramientas por Lenguaje ### Python | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **Ruff** | Linting rápido | `ruff check . --fix` | | **Black** | Formateo | `black .` | | **isort** | Import sorting | `isort .` | | **MyPy** | Tipos estáticos | `mypy .` | | **Bandit** | Seguridad | `bandit -r . -ll` | | **Flake8** | Estilo PEP 8 | `flake8 .` | ```bash # Python: Full lint pipeline ruff check . --fix && black . --check && mypy . && bandit -r . -ll ``` ### JavaScript / TypeScript | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **ESLint** | Linting | `npx eslint . --fix` | | **Prettier** | Formateo | `npx prettier . --write` | | **TypeScript** | Tipos | `npx tsc --noEmit` | | **npm audit** | Seguridad | `npm audit --audit-level=high` | ```bash # JavaScript/TypeScript: Full lint pipeline npx eslint . --fix && npx prettier . --check && npx tsc --noEmit ``` ### Go | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **go fmt** | Formateo | `go fmt ./...` | | **go vet** | Análisis estático | `go vet ./...` | | **golangci-lint** | Linting completo | `golangci-lint run ./...` | | **staticcheck** | Análisis estático | `staticcheck ./...` | ```bash # Go: Full lint pipeline go fmt ./... && go vet ./... && golangci-lint run ./... ``` ### Rust | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **cargo fmt** | Formateo | `cargo fmt --check` | | **cargo clippy** | Linting | `cargo clippy -- -D warnings` | | **cargo test** | Tests | `cargo test` | | **cargo audit** | Seguridad | `cargo audit` | ```bash # Rust: Full lint pipeline cargo fmt --check && cargo clippy -- -D warnings && cargo test ``` ### Java | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **Checkstyle** | Estilo de código | `mvn checkstyle:check` | | **SpotBugs** | Análisis estático | `mvn spotbugs:check` | | **PMD** | Análisis de código | `mvn pmd:check` | | **Google Java Format** | Formateo | `google-java-format -d .` | ```bash # Java: Full lint pipeline (Maven) mvn checkstyle:check spotbugs:check pmd:check ``` ### C# / .NET | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **dotnet format** | Formateo | `dotnet format --verify-no-changes` | | **dotnet build** | Compilación | `dotnet build --no-restore` | | **StyleCopAnalyzers** | Estilo | `dotnet build` (incluido) | | **Roslynator** | Análisis | `dotnet build` | ```bash # C#: Full lint pipeline dotnet format --verify-no-changes && dotnet build --no-restore ``` ### Ruby | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **RuboCop** | Linting | `rubocop -a` | | **Brakeman** | Seguridad | `brakeman -w 1` | | **bundler-audit** | Dependencias | `bundler-audit` | ```bash # Ruby: Full lint pipeline rubocop -a && brakeman -w 1 && bundler-audit ``` ### PHP | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **PHP-CS-Fixer** | Estilo | `php-cs-fixer fix .` | | **PHPStan** | Análisis estático | `phpstan analyse .` | | **psalm** | Análisis estático | `psalm .` | | **PHPUnit** | Tests | `phpunit` | ```bash # PHP: Full lint pipeline php-cs-fixer fix . && phpstan analyse . --level=max ``` ### Swift | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **SwiftLint** | Linting | `swiftlint` | | **SwiftFormat** | Formateo | `swiftformat .` | | **swift build** | Compilación | `swift build` | ```bash # Swift: Full lint pipeline swiftlint && swiftformat . && swift build ``` ### Kotlin | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **ktlint** | Linting | `ktlint .` | | **detekt** | Análisis estático | `detekt .` | | **kotlinc** | Compilación | `kotlinc -include-runtime -d app.jar` | ```bash # Kotlin: Full lint pipeline ktlint . && detekt . ``` ### C / C++ | Herramienta | Propósito | Comando | |-------------|-----------|---------| | **clang-format** | Formateo | `clang-format -i *.cpp` | | **cppcheck** | Análisis estático | `cppcheck .` | | **clang-tidy** | Linting | `clang-tidy .` | ```bash # C++: Full lint pipeline clang-format -i *.cpp *.h && cppcheck . && clang-tidy . ``` --- ## 🔄 Pipeline Universal ``` INPUT: Proyecto multi-lenguaje ├── Carpeta / archivo a validar └── Auto-detección de lenguajes presentes PROCESO: 1. Detectar lenguajes en el proyecto (glob *.{ext}) 2. Para cada lenguaje: a. Aplicar linting (dependencies/tooling check) b. Aplicar formatting c. Verificar tipos/análisis estático 3. Agregar warnings de security scan 4. Aggregate results OUTPUT: Reporte de errores y warnings por lenguaje ``` --- ## 📋 Decision Tree ``` ¿Qué validación necesito? ├── Necesito verificartypes │ ├── Python → mypy │ ├── TypeScript → tsc --noEmit │ ├── Go → go vet │ ├── Rust → cargo clippy │ ├── Java → mvn checkstyle:check │ └── C# → dotnet build --no-restore ├── Necesito formatear código │ ├── Python → black │ ├── JS/TS → prettier │ ├── Go → go fmt │ ├── Rust → cargo fmt │ ├── PHP → php-cs-fixer │ ├── Swift → swiftformat │ └── C++ → clang-format └── Necesito verificar seguridad ├── Python → bandit ├── JS/TS → npm audit ├── Go → golangci-lint ├── Ruby → brakeman └── PHP → phpstan ``` --- ## 🔴 The Quality Loop 1. **Write/Edit Code** 2. **Run Auto-Lint:** Determinar lenguaje y ejecutar tools apropiadas 3. **Analyze Report:** Revisar errores y warnings 4. **Fix & Repeat:** No terminar hasta que esté limpio > 🔴 **Strict Rule:** No code should be committed or reported as "done" without passing lint checks. > 🔴 **If no tool is configured:** Check the project root for config files (.eslintrc, pyproject.toml, go.mod) and **suggest/create** appropriate configuration. --- ## 🛠️ Scripts | Script | Propósito | Comando | |--------|-----------|---------| | `scripts/lint_runner.py` | Ejecución multi-lenguaje | `python scripts/lint_runner.py <project_path>` | | `scripts/type_coverage.py` | Análisis de cobertura de tipos | `python scripts/type_coverage.py <project_path>` | | `scripts/security_check.py` | Escaneo de seguridad | `python scripts/security_check.py <project_path>` | --- ## 🚨 Ejemplo de Output ```markdown ## Lint Results: /project ### Python (detected via pyproject.toml) ✅ Ruff passed ✅ Black formatted correctly ✅ MyPy: 0 errors, 0 warnings ### TypeScript (detected via package.json) ✅ ESLint passed ⚠️ Prettier: 2 files needs formatting (run with --write) ❌ TypeScript: 3 errors found ### Errors to fix: [file1.ts:12] Type error: Argument of type 'string' is not assignable to parameter of type 'number' [file2.ts:5] TS2304: Cannot find name 'Undefinec' [app.ts:45] TS7006: Parameter 'userId' implicitly has an 'any' type Should I fix these errors? ``` --- ## 📋 Before Running Lint | Check | Question | |-------|----------| | ✅ **Language detected?** | What language(s) is the project? | | ✅ **Tools available?** | Are the lint tools installed? | | ✅ **Config exists?** | Does the project have lint config? | | ✅ **Dependencies installed?** | Did you run npm install / pip install / go mod download? | > **Tip:** If tools aren't installed, offer to install them or configure them.
Voir sur GitHub