Analysis
skylint - Fast linting with 20+ rules
skycheck - Deep static analysis
Sky provides a comprehensive suite of tools for Starlark development. Each tool is installable individually or all at once.
# Install all toolsgo install github.com/albertocavalcante/sky/cmd/...@latest
# Or install individuallygo install github.com/albertocavalcante/sky/cmd/skylint@latestgo install github.com/albertocavalcante/sky/cmd/skyfmt@latestgo install github.com/albertocavalcante/sky/cmd/skytest@latestAnalysis
skylint - Fast linting with 20+ rules
skycheck - Deep static analysis
Formatting
skyfmt - Consistent code formatting
Testing
skytest - Test runner with coverage
skycov - Coverage reporting
Development
skyrepl - Interactive REPL
skydoc - Documentation generator
skyquery - Codebase queries
Fast static linter with 20+ configurable rules for code quality, style, and correctness.
skylint src/skylint --format=json src/ # Machine-readable outputskylint --config=.skylint.yaml # Custom configurationDeep static analyzer with type inference and cross-file analysis.
skycheck src/skycheck --strict src/ # Stricter checkingskycheck --format=sarif src/ # SARIF output for GitHubCode formatter for consistent style across your codebase. Compatible with Buildifier formatting.
skyfmt file.star # Format and print to stdoutskyfmt --write src/ # Format files in placeskyfmt --check src/ # Check without modifying (CI mode)Test runner with built-in assertions, fixtures, and coverage collection.
skytest tests/ # Run all testsskytest --coverage tests/ # Collect coverage dataskytest --filter="test_add*" # Filter by test nameFeatures:
*_test.star, test_*.star)assert module with eq, ne, true, fails, etc.setup() and teardown() supportCoverage reporter that converts raw coverage data to industry-standard formats.
skycov coverage.json # Text summaryskycov --format=cobertura coverage.json # Cobertura XMLskycov --format=lcov coverage.json # LCOV formatskycov --min-coverage=80 coverage.json # Threshold checkGenerate documentation from Starlark docstrings in Markdown or HTML.
skydoc src/ # Generate docsskydoc --output=docs src/ # Specify output directoryskydoc --format=html src/ # HTML outputQuery Starlark codebases to understand dependencies and structure.
skyquery 'deps(//src:lib)' # Show dependenciesskyquery 'rdeps(//src:util)' # Show reverse dependenciesskyquery 'allpaths(//a, //b)' # Find paths between targetsInteractive REPL for experimenting with Starlark code.
skyrepl>>> x = [1, 2, 3]>>> [i * 2 for i in x][2, 4, 6]>>> def greet(name): return "Hello, " + name>>> greet("World")"Hello, World"| Tool | Purpose | Speed | Output Formats |
|---|---|---|---|
| skylint | Linting | Fast | Text, JSON, SARIF |
| skycheck | Deep analysis | Slower | Text, JSON, SARIF |
| skyfmt | Formatting | Fast | - |
| skytest | Testing | Medium | Text, JSON, JUnit |
| skycov | Coverage | Fast | Text, JSON, Cobertura, LCOV |
| skydoc | Documentation | Medium | Markdown, HTML |
All tools support CI-friendly output formats and exit codes:
# GitHub Actions example- name: Lint run: skylint --format=sarif src/ > results.sarif
- name: Format check run: skyfmt --check src/
- name: Test with coverage run: | skytest --coverage tests/ skycov --min-coverage=80 coverage.jsonSee CI Integration for complete examples.