lint-service

gar-ai's avatarfrom gar-ai

Unified linting scripts for all services in the monorepo. Use when the user wants to lint code, check formatting, or run type checks.

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 30, 2025⬇️1downloads

When & Why to Use This Skill

The Lint Service skill provides a unified interface for code linting, formatting, and type checking across a multi-language monorepo. It streamlines development workflows by offering standardized scripts for TypeScript, Python, and Rust, ensuring code consistency and quality through automated checks in local environments and CI/CD pipelines.

Use Cases

  • Automated Pre-commit Checks: Use the --staged-only flag to quickly validate only modified files before committing, preventing broken code from entering the repository.
  • Continuous Integration (CI) Integration: Incorporate scripts into GitHub Actions to perform full-service audits on every pull request, maintaining high standards across the entire codebase.
  • Multi-Language Quality Control: Manage linting for diverse tech stacks (ESLint for TypeScript, Ruff for Python, and Clippy for Rust) using a single, consistent command structure.
  • Manual Code Auditing: Allow developers or AI agents to manually trigger type checks and formatting audits across specific services to identify and resolve technical debt.
namelint-service
descriptionUnified linting scripts for all services in the monorepo. Use when the user wants to lint code, check formatting, or run type checks.

Lint Service Skill

Unified linting scripts for all services in the Saturn's Oracle monorepo.

Services

TypeScript (2 services)

  • apollos-ui
  • polling-service

Python (3 services)

  • mercury-clustering
  • terra-local-gpu
  • apollo-video-distillation

Rust (3 services)

  • flora-clustering-rust
  • hercules-local-algo
  • vulcan-gpu-sdk (also has Python)

Usage

From Anywhere in the Repo

# TypeScript
.claude/skills/lint-service/lint-typescript.sh apollos-ui
.claude/skills/lint-service/lint-typescript.sh apollos-ui --staged-only

# Python
.claude/skills/lint-service/lint-python.sh mercury-clustering
.claude/skills/lint-service/lint-python.sh terra-local-gpu --staged-only

# Rust
.claude/skills/lint-service/lint-rust.sh flora-clustering-rust
.claude/skills/lint-service/lint-rust.sh hercules-local-algo --staged-only

What Each Script Does

lint-typescript.sh:

  • ESLint with --max-warnings=-1 (errors only)
  • TypeScript type checking (tsc --noEmit)
  • Staged-only: Lints only staged .ts/.tsx files

lint-python.sh:

  • Ruff check (linting)
  • Ruff format --check (formatting)
  • mypy (type checking, full mode only)
  • Staged-only: Lints only staged .py files

lint-rust.sh:

  • cargo clippy (linting)
  • cargo fmt --check (formatting)
  • cargo test (only in CI, not precommit)
  • Staged-only: Skips if no .rs files staged

Exit Codes

  • 0: Success
  • 1: Linting failed (blocking)

Integration

These scripts are called by:

  1. Precommit hook (.husky/pre-commit) with --staged-only
  2. GitHub Actions (without --staged-only, full service)
  3. Manual invocation by developers or Claude

Examples

Lint all Python services

for service in mercury-clustering terra-local-gpu apollo-video-distillation; do
  .claude/skills/lint-service/lint-python.sh $service
done

Lint only staged files in current service

# If working in apollos-ui
.claude/skills/lint-service/lint-typescript.sh apollos-ui --staged-only

Check if linting will pass before committing

# TypeScript
.claude/skills/lint-service/lint-typescript.sh apollos-ui --staged-only

# Python
.claude/skills/lint-service/lint-python.sh mercury-clustering --staged-only

# Rust
.claude/skills/lint-service/lint-rust.sh flora-clustering-rust --staged-only

Linting Config Location

All services extend root configs:

  • Python: /pyproject.toml (ruff + mypy)
  • Rust: /rustfmt.toml + /.clippy.toml
  • TypeScript: /.eslintrc.monorepo.js

Services can override with local configs if needed.

Auto-fix Commands

If linting fails, use these commands to auto-fix:

TypeScript:

cd apollos-ui
pnpm lint:fix

Python:

cd mercury-clustering
uv run ruff check --fix .
uv run ruff format .

Rust:

cd flora-clustering-rust
cargo fmt --all
cargo clippy --all-targets --all-features --fix