返回 Skill 列表
extension
分类: 开发与工程无需 API Key

quality-run-linters

运行所有配置的代码检查工具,包括mojo格式检查、markdownlint和预提交钩子。在提交代码前使用以确保达到质量标准。

person作者: jakexiaohubgithub

Run Linters Skill

Run all configured linters to ensure code quality.

When to Use

  • Before committing code
  • CI/CD quality checks
  • Pre-PR validation
  • Troubleshooting quality issues

Quick Reference

# Run all linters
./scripts/run_all_linters.sh

# Check mode (no fixes)
./scripts/run_all_linters.sh --check

# Fix mode
./scripts/run_all_linters.sh --fix

# Specific linter
./scripts/run_linters.sh --mojo

Configured Linters

| Linter | Purpose | Auto-Fix | |--------|---------|----------| | mojo-format | Format Mojo code | Yes | | markdownlint | Lint markdown files | Partial | | pre-commit | Multiple checks | Yes (most) |

Pre-commit Hooks

  • trailing-whitespace - Remove trailing spaces (Yes)
  • end-of-file-fixer - Add final newline (Yes)
  • check-yaml - Validate YAML syntax (No)
  • check-added-large-files - Prevent large files (No)
  • mixed-line-ending - Fix line endings (Yes)

Workflow

# 1. Run all linters
./scripts/run_all_linters.sh

# 2. Review output
# Check which issues found

# 3. Fix issues
# Most auto-fixed, some need manual fixes

# 4. Stage changes
git add .

# 5. Commit
git commit -m "fix: address linting issues"

Common Issues

| Error | Linter | Fix | |-------|--------|-----| | "MD040" | markdownlint | Add language to code block | | "MD031" | markdownlint | Add blank lines around block | | "Trailing whitespace" | pre-commit | Auto-fixed, re-commit | | "YAML error" | check-yaml | Fix YAML syntax manually |

Linter Details

Mojo Format

Checks: indentation, spacing, line length, operators, blank lines

pixi run mojo format src/tensor.mojo        # Fix
pixi run mojo format --check src/tensor.mojo  # Check only

Markdownlint

Checks: code block languages, blank lines, line length, heading style

npx markdownlint-cli2 "**/*.md"        # Check
npx markdownlint-cli2 --fix "**/*.md"  # Fix auto-fixable

Pre-commit

Checks: trailing whitespace, file endings, YAML syntax, large files, line endings

just pre-commit-all        # Run all
pixi run pre-commit trailing-whitespace --all-files  # Specific

CI Integration

Linters run automatically in GitHub Actions:

- name: Run Linters
  run: |
    just pre-commit-all

Workflow Integration

Before Commit

./scripts/run_all_linters.sh
git add .
git commit -m "message"

Pre-commit Hook (Automatic)

git commit -m "message"
# Hooks run, fix issues if needed
# If fixed, re-commit
git add .
git commit -m "message"

Before PR

./scripts/run_all_linters.sh --check
git add .
git commit -m "fix: address linting issues"
gh pr create --issue 42

Error Handling

| Error | Solution | |-------|----------| | "Linter not found" | Install tool or check PATH | | "Syntax error" | Fix code before running linter | | "False positive" | Check configuration files | | "Permission denied" | Check file permissions |

Configuration Files

  • .pre-commit-config.yaml - Pre-commit hooks
  • .markdownlint.yaml - Markdown rules
  • Mojo built-in formatting (no config)

Best Practices

  1. Run before commit - Always check locally first
  2. Auto-fix when possible - Use fix mode to save time
  3. Understand errors - Don't blindly fix without understanding
  4. Keep updated - Update linter versions regularly
  5. CI enforcement - Ensure CI runs all linters

References

  • Configuration: .pre-commit-config.yaml, .markdownlint.yaml
  • Related skill: quality-fix-formatting for manual fixes
  • Related skill: run-precommit for pre-commit details