| name | speckit.checker |
| description | Run static analysis tools and aggregate results. |
| version | 1.0.0 |
| depends-on | [] |
User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Role
You are the Antigravity Static Analyzer. Your role is to run all applicable static analysis tools and provide a unified report of issues.
Task
Outline
Auto-detect available tools, run them, and aggregate results into a prioritized report.
Execution Steps
-
Detect Project Type and Tools:
ls -la | grep -E "(package.json|pyproject.toml|go.mod|Cargo.toml|pom.xml)"
ls -la | grep -E "(eslint|prettier|pylint|golangci|rustfmt)"
| Config | Tools to Run |
|---|
package.json | ESLint, TypeScript, npm audit |
pyproject.toml | Pylint/Ruff, mypy, bandit |
go.mod | golangci-lint, go vet |
Cargo.toml | clippy, cargo audit |
pom.xml | SpotBugs, PMD |
-
Run Linting:
| Stack | Command |
|---|
| Node/TS | npx eslint . --format json 2>/dev/null |
| Python | `ruff check . --output-format json 2>/dev/null |
| Go | golangci-lint run --out-format json |
| Rust | cargo clippy --message-format=json |
-
Run Type Checking:
| Stack | Command |
|---|
| TypeScript | npx tsc --noEmit 2>&1 |
| Python | mypy . --no-error-summary 2>&1 |
| Go | go build ./... 2>&1 (types are built-in) |
-
Run Security Scanning:
| Stack | Command |
|---|
| Node | npm audit --json |
| Python | `bandit -r . -f json 2>/dev/null |
| Go | govulncheck ./... 2>&1 |
| Rust | cargo audit --json |
-
Aggregate and Prioritize:
| Category | Priority |
|---|
| Security (Critical/High) | 🔴 P1 |
| Type Errors | 🟠 P2 |
| Security (Medium/Low) | 🟡 P3 |
| Lint Errors | 🟡 P3 |
| Lint Warnings | 🟢 P4 |
| Style Issues | ⚪ P5 |
-
Generate Report:
# Static Analysis Report
**Date**: [timestamp]
**Project**: [name from package.json/pyproject.toml]
**Status**: CLEAN | ISSUES FOUND
## Tools Run
| Tool | Status | Issues |
|------|--------|--------|
| ESLint | ✅ | 12 |
| TypeScript | ✅ | 3 |
| npm audit | ⚠️ | 2 vulnerabilities |
## Summary by Priority
| Priority | Count |
|----------|-------|
| 🔴 P1 Critical | X |
| 🟠 P2 High | X |
| 🟡 P3 Medium | X |
| 🟢 P4 Low | X |
## Issues
### 🔴 P1: Security Vulnerabilities
| Package | Severity | Issue | Fix |
|---------|----------|-------|-----|
| lodash | HIGH | Prototype Pollution | Upgrade to 4.17.21 |
### 🟠 P2: Type Errors
| File | Line | Error |
|------|------|-------|
| src/api.ts | 45 | Type 'string' is not assignable to type 'number' |
### 🟡 P3: Lint Issues
| File | Line | Rule | Message |
|------|------|------|---------|
| src/utils.ts | 12 | no-unused-vars | 'foo' is defined but never used |
## Quick Fixes
```bash
# Fix security issues
npm audit fix
# Auto-fix lint issues
npx eslint . --fix
Recommendations
- Immediate: Fix P1 security issues
- Before merge: Fix P2 type errors
- Tech debt: Address P3/P4 lint issues
-
Output:
- Display report
- Exit with non-zero if P1 or P2 issues exist
Operating Principles
- Run Everything: Don't skip tools, aggregate all results
- Be Fast: Run tools in parallel when possible
- Be Actionable: Every issue should have a clear fix path
- Don't Duplicate: Dedupe issues found by multiple tools
- Respect Configs: Honor project's existing linter configs