# Developer Tools

Tooling categories and recommendations for modern software development workflows.

---

## Tool Categories

| Category | Purpose | Key Notes |
|---|---|---|
| **Developer Tools** | IDE, debugging, profiling, CLI | [[Tools/Developer-Tools]] |
| **Build Tools** | Compilation, bundling, task automation | [[Tools/Build-Tools]] |
| **Static Analysis** | Linting, type checking, SAST | [[Tools/Static-Analysis]] |
| **Package Management** | Dependencies, lockfiles, registries | [[Tools/Package-Management]] |

---

## Selection Principles

1. **Standardize per language** — One toolchain per language across the org
2. **Fast feedback** — Tools must run in seconds locally, minutes in CI
3. **Automation first** — Pre-commit hooks, CI gates, IDE integration
4. **Actionable output** — Clear errors with fix suggestions
5. **Low friction** — Zero-config where possible; sensible defaults

---

## Recommended Stack by Language

| Language | IDE | Lint/Format | Type Check | Build | Package |
|---|---|---|---|---|---|
| **TypeScript/JS** | VS Code + Biome | Biome | `tsc --noEmit` | Vite/esbuild | pnpm |
| **Python** | VS Code + Pylance | Ruff | mypy | uv/hatch | uv |
| **Go** | GoLand / VS Code + gopls | golangci-lint | `go vet` | `go build` | Go modules |
| **Rust** | VS Code + rust-analyzer | clippy + rustfmt | `cargo check` | `cargo build` | Cargo |
| **JVM (Kotlin)** | IntelliJ IDEA | detekt + ktlint | Kotlin compiler | Gradle (KTS) | Gradle |
| **JVM (Scala)** | IntelliJ + Metals | scalafix + scalafmt | Scala compiler | Mill/sbt | Coursier |
| **JVM (Java)** | IntelliJ IDEA | Checkstyle/SpotBugs | javac | Gradle/Maven | Maven Central |

---

## Cross-Cutting Tools

### Version Control
- **Git** — Conventional commits; trunk-based development
- **Git hooks** — `pre-commit` framework (language-agnostic)
- **Git LFS** — Large assets (not code)

### Code Review
- **GitHub/GitLab PRs** — Required reviews; automated checks
- **Review automation** — Dependabot, Renovate, code owners

### CI/CD
- **GitHub Actions / GitLab CI** — Pipeline as code
- **Dagger / Earthly** — Portable CI pipelines
- **Act** — Run GitHub Actions locally

### Documentation
- **MkDocs / Docusaurus / VitePress** — Static sites from markdown
- **OpenAPI/Swagger** — API docs from code
- **ADR tools** — `adr-tools` for architecture decisions

### Security
- **SAST** — Semgrep, CodeQL, SonarQube
- **SCA** — OWASP Dependency Check, Snyk, Trivy
- **Secrets** — GitLeaks, TruffleHog, detect-secrets
- **Container** — Trivy, Grype, Cosign/Sigstore

### Observability (Local Dev)
- **Docker Compose** — Local stack (DB, Kafka, Redis)
- **Testcontainers** — Integration tests with real services
- **Telepresence** — Local dev against remote cluster
- **Tilt / Garden** — Live reload for Kubernetes dev

---

## Anti-Patterns

| Anti-Pattern | Fix |
|---|---|
| **Tool sprawl** | Standardize; one tool per category per language |
| **Slow CI** | Parallelize; cache aggressively; fail fast |
| **Ignored warnings** | Treat warnings as errors; fix or suppress with justification |
| **Manual steps** | Automate everything repeatable |
| **Outdated tools** | Regular upgrade cadence; dependabot/renovate |
| **No local parity** | CI tools = local tools (same versions, configs) |

---

## Related Notes

- [[Tools/Developer-Tools]] — IDE, debugging, profiling
- [[Tools/Build-Tools]] — Compilation, bundling, automation
- [[Tools/Static-Analysis]] — Linting, type checking, SAST
- [[Tools/Package-Management]] — Dependencies, registries
- [[DevOps/CI-CD-Best-Practices]] — Pipeline integration
- [[Security/Supply-Chain-Security]] — Tooling for supply chain

---

*Sources: Thoughtworks Technology Radar, CNCF Landscape, GitHub Octoverse, Stack Overflow Survey, JetBrains Developer Ecosystem*