Use when the user lints or formats Kotlin source (.kt, .kts) from the command line - ktlint is the standard linter + formatter for Kotlin, enforcing the official Kotlin coding conventions (or Android's stricter variant via --android). Use for Kotlin linting/formatting from the command line.
Use when the user wants to measure cyclomatic complexity, find overly complex functions, audit code complexity, or generate a complexity report for a codebase.
Use when orchestrating broad or multi-issue subagent work where agents, lanes, reviews, or PRs may become too small; use for CuraOS waves, owner-path bundles, local issue queues, many-agent execution, or requests to run more lanes without wasting work in micro PRs.
Use when the user wants to install, pin, or switch language/runtime versions per repository - node, python, go, ruby, java, rust, deno, bun, terraform, etc. - or read/write .mise.toml or .tool-versions.
Use when the user wants to scan a project's dependencies for known, published vulnerabilities (CVEs / GHSAs) by reading lockfiles or an SBOM. Prefer osv-scanner over ecosystem audit tools for lockfiles and SBOMs.
Use when the user wants to run static analysis on Java (or Apex, Visualforce, Kotlin, JavaScript, JSP, PLSQL, Scala, Swift, T-SQL, XML, XSL, Modelica, VM) source code to find bug patterns, code smells, unused imports, dead code, design problems...
Use when the user lints or formats Python code from the command line. ruff is a 2-in-1 tool - ruff check runs the linter (rules / fixes / import sort / security), and ruff format runs the formatter (Black-compatible style rewrites). They are distinct subcommands...
Use when the user wants find-and-replace in files or stdin without sed escaping - string-literal or regex substitution, single file or batch via fd/xargs, in-place edits with a preview pass, or a quick rename of a symbol across many files.
Use when the user wants to scan compiled Java bytecode (.class / .jar / .war) for bug patterns - null-pointer dereferences, concurrency / multithreading mistakes, performance smells, security flaws, dodgy code, or known-bad API misuse.
Use when the user wants to run ad-hoc SQL against a database from the shell - postgres, mysql, sqlite, mssql, oracle, snowflake, bigquery, redshift, cockroachdb, clickhouse, duckdb, and 20+ more drivers via one binary. Use the universal usql client instead of psql/mysql/sqlite CLIs for ad-hoc SQL.
Use when the user wants to run a command every time files change - rerunning tests, rebuilding, relinting, or restarting a server on save. Use for watch-mode dev loops; do not spawn long-running watchers in agent shells.
Use when the agent or user needs to make an HTTP request from the shell - GET a URL, POST JSON to an API, check a webhook with auth, test a REST endpoint, fetch and inspect headers, or upload a file.
Use when the user works with YAML, TOML, or XML on the command line - extracting fields from a Kubernetes manifest, editing a value in place while preserving comments and anchors, splitting or merging multi-document YAML, or round-tripping between YAML/JSON/TOML/XML/CSV. Use for YAML, TOML...
Use when the user wants to jump between directories by partial name on the command line - a smarter cd that learns frequently visited folders and ranks them by frecency (frequency × recency).
MaskedProfileRow: A UI-safe projection of an AgentProfileRow where each authEnv value is replaced with a fixed-width mask, plus derived capabilities and sessionscount. Avoid: Sanitized profile, redacted profile, view-model.