agent-loadout 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -21,76 +21,76 @@ Pick presets, toggle individual tools, and get a verified installation with skil
|
|
|
21
21
|
|
|
22
22
|
| Tool | Package | Description |
|
|
23
23
|
|------|---------|-------------|
|
|
24
|
-
| [ripgrep](https://github.com/BurntSushi/ripgrep) | `ripgrep` |
|
|
25
|
-
| [fd](https://github.com/sharkdp/fd) | `fd` |
|
|
26
|
-
| [jq](https://github.com/jqlang/jq) | `jq` | JSON
|
|
27
|
-
| [yq](https://github.com/mikefarah/yq) | `yq` | YAML
|
|
28
|
-
| [bat](https://github.com/sharkdp/bat) | `bat` |
|
|
29
|
-
| [tree](https://en.wikipedia.org/wiki/Tree_(command)) | `tree` |
|
|
30
|
-
| [GitHub CLI](https://cli.github.com) | `gh` | PRs, issues, releases
|
|
31
|
-
| [fzf](https://github.com/junegunn/fzf) | `fzf` |
|
|
32
|
-
| [xh](https://github.com/ducaale/xh) | `xh` | Friendly HTTP client |
|
|
24
|
+
| [ripgrep](https://github.com/BurntSushi/ripgrep) | `ripgrep` | Fastest code search available — 10-100x faster than grep. Agents use it constantly to locate symbols, patterns, and references across large codebases without reading every file. Respects `.gitignore` by default, so results are always relevant. |
|
|
25
|
+
| [fd](https://github.com/sharkdp/fd) | `fd` | Modern `find` replacement that's faster and has sane defaults. Agents use it to enumerate files by name, extension, or pattern without learning arcane `find` flags. Output is clean and scriptable. |
|
|
26
|
+
| [jq](https://github.com/jqlang/jq) | `jq` | The standard tool for slicing and transforming JSON from APIs, config files, and CLI output. Agents can pipe any JSON through `jq` to extract exactly the field they need without writing a script. Supports complex queries, filters, and reshaping in a single expression. |
|
|
27
|
+
| [yq](https://github.com/mikefarah/yq) | `yq` | Does for YAML what `jq` does for JSON — reads, writes, and transforms YAML/TOML/XML. Agents working with CI configs, Kubernetes manifests, or any config-heavy repo rely on it to make targeted edits without touching surrounding structure. |
|
|
28
|
+
| [bat](https://github.com/sharkdp/bat) | `bat` | `cat` with syntax highlighting, line numbers, and git diff markers. Agents use it to display file contents with context, making it easier to reason about where to make changes. Particularly useful when presenting code to users. |
|
|
29
|
+
| [tree](https://en.wikipedia.org/wiki/Tree_(command)) | `tree` | Prints a directory as an ASCII tree — one of the most token-efficient ways for an agent to understand project structure. Faster than listing files recursively, and the output maps directly to mental models of a codebase. |
|
|
30
|
+
| [GitHub CLI](https://cli.github.com) | `gh` | Full GitHub API access from the terminal — PRs, issues, releases, workflows, and more. Agents use it to open PRs, check CI status, comment on issues, and create releases without leaving the shell. |
|
|
31
|
+
| [fzf](https://github.com/junegunn/fzf) | `fzf` | Interactive fuzzy finder that makes any list selectable. Agents can pipe file lists, git branches, or command history through `fzf` to let users pick without building custom UI. Also integrates directly into shell history and file completion. |
|
|
32
|
+
| [xh](https://github.com/ducaale/xh) | `xh` | Friendly, fast HTTP client with sensible defaults and coloured output. Agents use it to hit REST APIs, test webhooks, or inspect responses without curl's verbose flag soup. JSON bodies are handled cleanly. |
|
|
33
33
|
|
|
34
34
|
### Agent (16 tools) — on by default
|
|
35
35
|
|
|
36
36
|
| Tool | Package | Description |
|
|
37
37
|
|------|---------|-------------|
|
|
38
|
-
| [shellcheck](https://github.com/koalaman/shellcheck) | `shellcheck` | Static
|
|
39
|
-
| [ast-grep](https://github.com/ast-grep/ast-grep) | `ast-grep` | Structural code search
|
|
40
|
-
| [just](https://github.com/casey/just) | `just` |
|
|
41
|
-
| [grex](https://github.com/pemistahl/grex) | `grex` |
|
|
42
|
-
| [knip](https://github.com/webpro-nl/knip) | `knip` |
|
|
43
|
-
| [sd](https://github.com/chmln/sd) | `sd` | Simpler sed
|
|
44
|
-
| [hyperfine](https://github.com/sharkdp/hyperfine) | `hyperfine` |
|
|
45
|
-
| [tokei](https://github.com/XAMPPRocky/tokei) | `tokei` |
|
|
46
|
-
| [tldr](https://github.com/tldr-pages/tldr) | `tldr` |
|
|
47
|
-
| [biome](https://github.com/biomejs/biome) | `biome` |
|
|
48
|
-
| [difftastic](https://github.com/Wilfred/difftastic) | `difftastic` | Structural
|
|
49
|
-
| [pandoc](https://github.com/jgm/pandoc) | `pandoc` |
|
|
50
|
-
| [duckdb](https://github.com/duckdb/duckdb) | `duckdb` | SQL
|
|
51
|
-
| [htmlq](https://github.com/mgdm/htmlq) | `htmlq` |
|
|
52
|
-
| [typos](https://github.com/crate-ci/typos) | `typos-cli` | Source code spell checker |
|
|
53
|
-
| [gum](https://github.com/charmbracelet/gum) | `gum` |
|
|
38
|
+
| [shellcheck](https://github.com/koalaman/shellcheck) | `shellcheck` | Static analyser for bash/sh scripts that catches bugs, bad practices, and portability issues before they run. Agents generating shell scripts should run every script through shellcheck before presenting it to users. Output is structured and actionable. |
|
|
39
|
+
| [ast-grep](https://github.com/ast-grep/ast-grep) | `ast-grep` | Structural code search and replace using AST patterns rather than text. Agents can find all usages of a function, rename a method across a codebase, or enforce patterns in a way that text search cannot — without false positives from comments or strings. |
|
|
40
|
+
| [just](https://github.com/casey/just) | `just` | A `make` alternative with a clean, readable syntax that doubles as a project task menu. Agents can read a `Justfile` to understand what operations a project supports, then invoke them directly — no guessing at npm scripts or Makefile targets. |
|
|
41
|
+
| [grex](https://github.com/pemistahl/grex) | `grex` | Generates regex patterns from example strings you provide. Agents that need to write a regex can use grex to derive one from representative inputs rather than constructing it from scratch — useful for validation, parsing, and search patterns. |
|
|
42
|
+
| [knip](https://github.com/webpro-nl/knip) | `knip` | Finds unused exports, files, and dependencies in TypeScript/JavaScript projects. Agents doing cleanup or refactoring work use knip to identify dead code with precision before removing anything. Structured JSON output makes it easy to act on programmatically. |
|
|
43
|
+
| [sd](https://github.com/chmln/sd) | `sd` | Simpler, safer `sed` for find-and-replace across files. Agents prefer it over sed because the syntax is consistent across platforms and the substitution is literal by default — no surprise regex escaping. Supports regex when needed. |
|
|
44
|
+
| [hyperfine](https://github.com/sharkdp/hyperfine) | `hyperfine` | Benchmarking tool that runs commands repeatedly and reports statistical results. Agents can use it to objectively compare two implementations, measure the impact of a change, or verify a performance claim — results are clear and reproducible. |
|
|
45
|
+
| [tokei](https://github.com/XAMPPRocky/tokei) | `tokei` | Reports lines of code by language across a project. Agents use it to understand codebase composition at a glance — helpful when deciding where to focus, estimating scope, or understanding an unfamiliar repo. Fast enough to run on every task. |
|
|
46
|
+
| [tldr](https://github.com/tldr-pages/tldr) | `tldr` | Community-maintained cheat sheets for CLI tools, focused on practical examples rather than exhaustive flags. Agents use it to quickly look up the most common usage of any tool without reading full man pages. |
|
|
47
|
+
| [biome](https://github.com/biomejs/biome) | `biome` | Fast, zero-config linter and formatter for JavaScript and TypeScript. Agents can format and lint code in a single pass before committing, ensuring consistent output without needing ESLint and Prettier configured separately. |
|
|
48
|
+
| [difftastic](https://github.com/Wilfred/difftastic) | `difftastic` | Structural diff that compares files by AST rather than line-by-line. Agents reviewing changes get diffs that reflect actual code structure — moves and refactors show as such, rather than as unrelated deletions and additions. |
|
|
49
|
+
| [pandoc](https://github.com/jgm/pandoc) | `pandoc` | Converts documents between virtually any format — Markdown, HTML, PDF, DOCX, LaTeX, and more. Agents working with documentation, reports, or content pipelines use it to transform between formats without custom parsing code. |
|
|
50
|
+
| [duckdb](https://github.com/duckdb/duckdb) | `duckdb` | Embedded SQL engine that queries CSV, JSON, and Parquet files directly without a database server. Agents can run analytical queries on local data files in seconds — ideal for log analysis, data exploration, or transforming structured files. |
|
|
51
|
+
| [htmlq](https://github.com/mgdm/htmlq) | `htmlq` | Extracts content from HTML using CSS selectors, like `jq` for web pages. Agents scraping or parsing HTML output can pull out exactly the nodes they need without writing parser code or using a headless browser. |
|
|
52
|
+
| [typos](https://github.com/crate-ci/typos) | `typos-cli` | Source code spell checker that finds common typos in identifiers, comments, and strings. Agents can run it before committing to catch embarrassing mistakes — it understands code context and has a very low false-positive rate. |
|
|
53
|
+
| [gum](https://github.com/charmbracelet/gum) | `gum` | Provides beautiful, interactive UI primitives (prompts, spinners, filters) for shell scripts. Agents building automation scripts can use gum to add user-friendly prompts without depending on a full TUI framework. |
|
|
54
54
|
|
|
55
55
|
### Media (4 tools)
|
|
56
56
|
|
|
57
57
|
| Tool | Package | Description |
|
|
58
58
|
|------|---------|-------------|
|
|
59
|
-
| [ffmpeg](https://ffmpeg.org) | `ffmpeg` |
|
|
60
|
-
| [exiftool](https://exiftool.org) | `exiftool` |
|
|
61
|
-
| [ImageMagick](https://imagemagick.org) | `imagemagick` |
|
|
62
|
-
| [svgo](https://github.com/svg/svgo) | `svgo` | SVG
|
|
59
|
+
| [ffmpeg](https://ffmpeg.org) | `ffmpeg` | The industry-standard tool for audio and video processing — transcoding, trimming, extracting frames, converting formats, and more. Agents in media pipelines use it as the universal swiss army knife: if it involves a media file, ffmpeg can handle it. |
|
|
60
|
+
| [exiftool](https://exiftool.org) | `exiftool` | Reads and writes metadata from images, video, audio, and documents. Agents working with media files use it to inspect EXIF data, strip metadata for privacy, or batch-rename files based on capture date — all from a single consistent CLI. |
|
|
61
|
+
| [ImageMagick](https://imagemagick.org) | `imagemagick` | Comprehensive image manipulation — resize, crop, convert, annotate, composite. Agents can perform image transforms programmatically without opening a GUI, making it essential for thumbnail generation, format conversion, and batch image processing. |
|
|
62
|
+
| [svgo](https://github.com/svg/svgo) | `svgo` | Optimises SVG files by removing redundant data, comments, and inefficient structures. Agents working on web projects can run svgo on any SVG before committing to reduce file size — often 30-70% smaller with no visible quality loss. |
|
|
63
63
|
|
|
64
64
|
### DX (15 tools)
|
|
65
65
|
|
|
66
66
|
| Tool | Package | Description |
|
|
67
67
|
|------|---------|-------------|
|
|
68
|
-
| [eza](https://github.com/eza-community/eza) | `eza` | Modern ls replacement |
|
|
69
|
-
| [zoxide](https://github.com/ajeetdsouza/zoxide) | `zoxide` |
|
|
70
|
-
| [delta](https://github.com/dandavison/delta) | `git-delta` |
|
|
71
|
-
| [glow](https://github.com/charmbracelet/glow) | `glow` |
|
|
72
|
-
| [mise](https://github.com/jdx/mise) | `mise` |
|
|
73
|
-
| [watchexec](https://github.com/watchexec/watchexec) | `watchexec` |
|
|
74
|
-
| [mkcert](https://github.com/FiloSottile/mkcert) | `mkcert` |
|
|
75
|
-
| [lazygit](https://github.com/jesseduffield/lazygit) | `lazygit` | TUI git client |
|
|
76
|
-
| [dust](https://github.com/bootandy/dust) | `dust` |
|
|
77
|
-
| [bottom](https://github.com/ClementTsang/bottom) | `bottom` | System monitor TUI |
|
|
78
|
-
| [direnv](https://github.com/direnv/direnv) | `direnv` |
|
|
79
|
-
| [procs](https://github.com/dalance/procs) | `procs` | Modern ps replacement with search |
|
|
80
|
-
| [uv](https://github.com/astral-sh/uv) | `uv` |
|
|
81
|
-
| [hexyl](https://github.com/sharkdp/hexyl) | `hexyl` | Hex viewer with colour
|
|
82
|
-
| [taplo](https://github.com/tamasfe/taplo) | `taplo` | TOML
|
|
68
|
+
| [eza](https://github.com/eza-community/eza) | `eza` | Modern `ls` replacement with colour-coded output, git status integration, and tree view. Agents and users navigating a project directory get significantly more context per line than with plain `ls`. |
|
|
69
|
+
| [zoxide](https://github.com/ajeetdsouza/zoxide) | `zoxide` | Learns your most-used directories and lets you jump to them by partial name. Agents use it to navigate deep project trees with short commands — `z api` jumps straight to your API directory after the first visit. |
|
|
70
|
+
| [delta](https://github.com/dandavison/delta) | `git-delta` | Syntax-highlighted, side-by-side git diffs with line numbers. Makes reviewing changes faster and clearer — particularly useful when an agent is presenting a diff to a user for review before committing. |
|
|
71
|
+
| [glow](https://github.com/charmbracelet/glow) | `glow` | Renders Markdown beautifully in the terminal. Agents can use it to display README files, changelogs, or generated documentation in a readable format without opening a browser. |
|
|
72
|
+
| [mise](https://github.com/jdx/mise) | `mise` | Manages runtime versions (Node, Python, Ruby, Go, etc.) per project via `.mise.toml`. Agents working across multiple projects don't need to manually switch runtimes — mise activates the right version automatically when entering a directory. |
|
|
73
|
+
| [watchexec](https://github.com/watchexec/watchexec) | `watchexec` | Runs a command whenever files change. Agents can use it to keep tests, builds, or type-checkers running continuously in the background — reducing the feedback loop without needing a language-specific watcher. |
|
|
74
|
+
| [mkcert](https://github.com/FiloSottile/mkcert) | `mkcert` | Creates locally-trusted HTTPS certificates for development with zero configuration. Agents setting up local development environments can use it to enable HTTPS without browser warnings or complicated CA setup. |
|
|
75
|
+
| [lazygit](https://github.com/jesseduffield/lazygit) | `lazygit` | Full-featured TUI git client for staging, committing, branching, rebasing, and resolving conflicts interactively. Useful when a user needs to review or manage git state that would take many CLI commands to handle manually. |
|
|
76
|
+
| [dust](https://github.com/bootandy/dust) | `dust` | Visual disk usage tree that shows what's consuming space, sorted by size. Agents debugging storage issues or cleaning up large repos use it to identify the culprits in seconds — far clearer than `du -sh`. |
|
|
77
|
+
| [bottom](https://github.com/ClementTsang/bottom) | `bottom` | System resource monitor (CPU, memory, network, processes) as a TUI. Agents can use it to identify resource-hungry processes when debugging performance issues or investigating why a build is slow. |
|
|
78
|
+
| [direnv](https://github.com/direnv/direnv) | `direnv` | Loads and unloads environment variables automatically when entering/leaving a directory. Agents working across projects with different environment configs benefit from not needing to manually source `.env` files. |
|
|
79
|
+
| [procs](https://github.com/dalance/procs) | `procs` | Modern `ps` replacement with search, colour coding, and tree view. Agents can find and inspect running processes quickly — useful when checking if a dev server is running, debugging port conflicts, or identifying zombie processes. |
|
|
80
|
+
| [uv](https://github.com/astral-sh/uv) | `uv` | Extremely fast Python package installer and virtual environment manager. Agents working in Python projects can install dependencies in a fraction of the time pip takes — particularly noticeable in CI or when bootstrapping a new environment. |
|
|
81
|
+
| [hexyl](https://github.com/sharkdp/hexyl) | `hexyl` | Hex viewer with colour-coded output distinguishing printable characters, control codes, and null bytes. Agents debugging binary files, inspecting file headers, or understanding binary protocols use it to read raw file contents clearly. |
|
|
82
|
+
| [taplo](https://github.com/tamasfe/taplo) | `taplo` | TOML formatter, linter, and query tool. Agents working with Rust projects, `pyproject.toml`, or any TOML config can validate and format files consistently — important since TOML is sensitive to structure and easy to break manually. |
|
|
83
83
|
|
|
84
84
|
### Security (6 tools)
|
|
85
85
|
|
|
86
86
|
| Tool | Package | Description |
|
|
87
87
|
|------|---------|-------------|
|
|
88
|
-
| [trivy](https://github.com/aquasecurity/trivy) | `trivy` |
|
|
89
|
-
| [act](https://github.com/nektos/act) | `act` |
|
|
90
|
-
| [gitleaks](https://github.com/gitleaks/gitleaks) | `gitleaks` |
|
|
91
|
-
| [semgrep](https://github.com/returntocorp/semgrep) | `semgrep` | Multi-language static analysis |
|
|
92
|
-
| [age](https://github.com/FiloSottile/age) | `age` | Simple file encryption |
|
|
93
|
-
| [doggo](https://github.com/mr-karan/doggo) | `doggo` | Modern DNS
|
|
88
|
+
| [trivy](https://github.com/aquasecurity/trivy) | `trivy` | Comprehensive vulnerability scanner for container images, filesystems, git repos, and IaC configs. Agents working on deployment or security reviews can run trivy against any artifact to surface known CVEs and misconfigurations before they ship. |
|
|
89
|
+
| [act](https://github.com/nektos/act) | `act` | Runs GitHub Actions workflows locally using Docker. Agents can test CI pipeline changes without pushing to GitHub — dramatically faster iteration on workflow files and a safe way to validate secrets handling. |
|
|
90
|
+
| [gitleaks](https://github.com/gitleaks/gitleaks) | `gitleaks` | Scans git history and working trees for accidentally committed secrets — API keys, tokens, credentials. Agents should run gitleaks before opening a PR on any repo that handles secrets, as a last line of defence. |
|
|
91
|
+
| [semgrep](https://github.com/returntocorp/semgrep) | `semgrep` | Multi-language static analysis using pattern rules — finds security bugs, anti-patterns, and policy violations. Agents doing code review or security audits can run semgrep with community rule sets to catch issues that simple text search misses. |
|
|
92
|
+
| [age](https://github.com/FiloSottile/age) | `age` | Simple, modern file encryption with a clean CLI. Agents handling sensitive files (secrets, credentials, backups) can encrypt them with age in one command — the format is well-specified and resistant to misuse by design. |
|
|
93
|
+
| [doggo](https://github.com/mr-karan/doggo) | `doggo` | Modern DNS lookup tool with JSON output and support for multiple DNS-over-HTTPS providers. Agents debugging connectivity issues, verifying DNS propagation, or inspecting DNS records get clean, structured output they can parse and act on. |
|
|
94
94
|
|
|
95
95
|
## How it works
|
|
96
96
|
|
|
@@ -72,7 +72,9 @@ var TOOLS = [
|
|
|
72
72
|
description: "Fast code search",
|
|
73
73
|
preset: "core",
|
|
74
74
|
verify: "rg --version",
|
|
75
|
-
install: brewScoopAptCargo("ripgrep", "ripgrep", "ripgrep")
|
|
75
|
+
install: brewScoopAptCargo("ripgrep", "ripgrep", "ripgrep"),
|
|
76
|
+
tags: ["search", "grep", "find text", "code search", "pattern match", "codebase search"],
|
|
77
|
+
seeAlso: ["fd", "bat", "ast-grep"]
|
|
76
78
|
},
|
|
77
79
|
{
|
|
78
80
|
id: "fd",
|
|
@@ -84,7 +86,9 @@ var TOOLS = [
|
|
|
84
86
|
darwin: [{ method: "brew", package: "fd" }],
|
|
85
87
|
linux: [{ method: "apt", package: "fd-find" }, { method: "cargo", package: "fd-find" }],
|
|
86
88
|
win32: [{ method: "scoop", package: "fd" }]
|
|
87
|
-
}
|
|
89
|
+
},
|
|
90
|
+
tags: ["find files", "file search", "locate files", "glob", "directory search"],
|
|
91
|
+
seeAlso: ["rg", "fzf", "eza"]
|
|
88
92
|
},
|
|
89
93
|
{
|
|
90
94
|
id: "jq",
|
|
@@ -92,7 +96,9 @@ var TOOLS = [
|
|
|
92
96
|
description: "JSON processor",
|
|
93
97
|
preset: "core",
|
|
94
98
|
verify: "jq --version",
|
|
95
|
-
install: universal("jq")
|
|
99
|
+
install: universal("jq"),
|
|
100
|
+
tags: ["json", "parse json", "filter json", "api response", "json transform"],
|
|
101
|
+
seeAlso: ["yq", "duckdb", "xh"]
|
|
96
102
|
},
|
|
97
103
|
{
|
|
98
104
|
id: "yq",
|
|
@@ -105,7 +111,9 @@ var TOOLS = [
|
|
|
105
111
|
// TODO: gh-release installer — no apt/cargo package; scoop has it
|
|
106
112
|
linux: null,
|
|
107
113
|
win32: [{ method: "scoop", package: "yq" }]
|
|
108
|
-
}
|
|
114
|
+
},
|
|
115
|
+
tags: ["yaml", "parse yaml", "yaml transform", "config files", "toml"],
|
|
116
|
+
seeAlso: ["jq", "taplo"]
|
|
109
117
|
},
|
|
110
118
|
{
|
|
111
119
|
id: "bat",
|
|
@@ -120,7 +128,9 @@ var TOOLS = [
|
|
|
120
128
|
{ method: "cargo", package: "bat" }
|
|
121
129
|
],
|
|
122
130
|
win32: [{ method: "scoop", package: "bat" }]
|
|
123
|
-
}
|
|
131
|
+
},
|
|
132
|
+
tags: ["view file", "syntax highlighting", "cat", "preview code", "pager"],
|
|
133
|
+
seeAlso: ["rg", "delta", "glow"]
|
|
124
134
|
},
|
|
125
135
|
{
|
|
126
136
|
id: "tree",
|
|
@@ -128,7 +138,9 @@ var TOOLS = [
|
|
|
128
138
|
description: "Directory structure viewer",
|
|
129
139
|
preset: "core",
|
|
130
140
|
verify: "tree --version",
|
|
131
|
-
install: universal("tree")
|
|
141
|
+
install: universal("tree"),
|
|
142
|
+
tags: ["directory tree", "folder structure", "list files", "project layout"],
|
|
143
|
+
seeAlso: ["eza", "fd", "dust"]
|
|
132
144
|
},
|
|
133
145
|
{
|
|
134
146
|
id: "gh",
|
|
@@ -140,7 +152,9 @@ var TOOLS = [
|
|
|
140
152
|
darwin: [{ method: "brew", package: "gh" }],
|
|
141
153
|
linux: [{ method: "apt", package: "gh" }],
|
|
142
154
|
win32: [{ method: "scoop", package: "gh" }]
|
|
143
|
-
}
|
|
155
|
+
},
|
|
156
|
+
tags: ["github", "pull request", "pr", "issues", "ci status", "releases", "repo management"],
|
|
157
|
+
seeAlso: ["lazygit", "act", "gitleaks"]
|
|
144
158
|
},
|
|
145
159
|
{
|
|
146
160
|
id: "fzf",
|
|
@@ -148,7 +162,9 @@ var TOOLS = [
|
|
|
148
162
|
description: "Fuzzy finder",
|
|
149
163
|
preset: "core",
|
|
150
164
|
verify: "fzf --version",
|
|
151
|
-
install: universal("fzf")
|
|
165
|
+
install: universal("fzf"),
|
|
166
|
+
tags: ["fuzzy find", "interactive search", "pick file", "filter list", "autocomplete"],
|
|
167
|
+
seeAlso: ["fd", "rg", "zoxide"]
|
|
152
168
|
},
|
|
153
169
|
{
|
|
154
170
|
id: "xh",
|
|
@@ -156,7 +172,9 @@ var TOOLS = [
|
|
|
156
172
|
description: "Friendly HTTP client",
|
|
157
173
|
preset: "core",
|
|
158
174
|
verify: "xh --version",
|
|
159
|
-
install: brewScoopCargo("xh", "xh")
|
|
175
|
+
install: brewScoopCargo("xh", "xh"),
|
|
176
|
+
tags: ["http request", "api call", "curl", "rest", "post request", "http testing"],
|
|
177
|
+
seeAlso: ["jq", "htmlq"]
|
|
160
178
|
},
|
|
161
179
|
// ── Agent ─────────────────────────────────────────────
|
|
162
180
|
{
|
|
@@ -165,7 +183,9 @@ var TOOLS = [
|
|
|
165
183
|
description: "Static analysis for shell scripts",
|
|
166
184
|
preset: "agent",
|
|
167
185
|
verify: "shellcheck --version",
|
|
168
|
-
install: universal("shellcheck")
|
|
186
|
+
install: universal("shellcheck"),
|
|
187
|
+
tags: ["shell script", "bash lint", "script error", "sh validation", "bash debug"],
|
|
188
|
+
seeAlso: ["sd", "just"]
|
|
169
189
|
},
|
|
170
190
|
{
|
|
171
191
|
id: "ast-grep",
|
|
@@ -177,7 +197,9 @@ var TOOLS = [
|
|
|
177
197
|
darwin: [{ method: "brew", package: "ast-grep" }],
|
|
178
198
|
linux: [{ method: "cargo", package: "ast-grep" }],
|
|
179
199
|
win32: [{ method: "scoop", package: "ast-grep" }]
|
|
180
|
-
}
|
|
200
|
+
},
|
|
201
|
+
tags: ["structural search", "code pattern", "ast", "refactor", "codemod", "syntax-aware"],
|
|
202
|
+
seeAlso: ["rg", "sd", "biome"]
|
|
181
203
|
},
|
|
182
204
|
{
|
|
183
205
|
id: "just",
|
|
@@ -185,7 +207,9 @@ var TOOLS = [
|
|
|
185
207
|
description: "Command runner (agent-readable task menu)",
|
|
186
208
|
preset: "agent",
|
|
187
209
|
verify: "just --version",
|
|
188
|
-
install: brewScoopCargo("just", "just")
|
|
210
|
+
install: brewScoopCargo("just", "just"),
|
|
211
|
+
tags: ["task runner", "commands menu", "build tasks", "makefile", "recipe", "run scripts"],
|
|
212
|
+
seeAlso: ["watchexec", "shellcheck"]
|
|
189
213
|
},
|
|
190
214
|
{
|
|
191
215
|
id: "grex",
|
|
@@ -193,7 +217,9 @@ var TOOLS = [
|
|
|
193
217
|
description: "Generate regex from examples",
|
|
194
218
|
preset: "agent",
|
|
195
219
|
verify: "grex --version",
|
|
196
|
-
install: brewScoopCargo("grex", "grex")
|
|
220
|
+
install: brewScoopCargo("grex", "grex"),
|
|
221
|
+
tags: ["regex", "generate regex", "pattern from examples", "regular expression", "infer pattern"],
|
|
222
|
+
seeAlso: ["sd", "rg"]
|
|
197
223
|
},
|
|
198
224
|
{
|
|
199
225
|
id: "knip",
|
|
@@ -201,7 +227,9 @@ var TOOLS = [
|
|
|
201
227
|
description: "Find unused code/deps in TS/JS",
|
|
202
228
|
preset: "agent",
|
|
203
229
|
verify: "knip --version",
|
|
204
|
-
install: npmAll("knip")
|
|
230
|
+
install: npmAll("knip"),
|
|
231
|
+
tags: ["unused code", "dead code", "unused imports", "ts cleanup", "dependency audit"],
|
|
232
|
+
seeAlso: ["biome", "tokei"]
|
|
205
233
|
},
|
|
206
234
|
{
|
|
207
235
|
id: "sd",
|
|
@@ -209,7 +237,9 @@ var TOOLS = [
|
|
|
209
237
|
description: "Simpler sed replacement",
|
|
210
238
|
preset: "agent",
|
|
211
239
|
verify: "sd --version",
|
|
212
|
-
install: brewScoopCargo("sd", "sd")
|
|
240
|
+
install: brewScoopCargo("sd", "sd"),
|
|
241
|
+
tags: ["find replace", "text substitution", "sed", "regex replace", "bulk edit"],
|
|
242
|
+
seeAlso: ["rg", "ast-grep", "grex"]
|
|
213
243
|
},
|
|
214
244
|
{
|
|
215
245
|
id: "hyperfine",
|
|
@@ -217,7 +247,9 @@ var TOOLS = [
|
|
|
217
247
|
description: "CLI benchmarking",
|
|
218
248
|
preset: "agent",
|
|
219
249
|
verify: "hyperfine --version",
|
|
220
|
-
install: brewScoopAptCargo("hyperfine", "hyperfine", "hyperfine")
|
|
250
|
+
install: brewScoopAptCargo("hyperfine", "hyperfine", "hyperfine"),
|
|
251
|
+
tags: ["benchmark", "performance test", "timing", "compare commands", "profiling"],
|
|
252
|
+
seeAlso: ["tokei", "btm"]
|
|
221
253
|
},
|
|
222
254
|
{
|
|
223
255
|
id: "tokei",
|
|
@@ -225,7 +257,9 @@ var TOOLS = [
|
|
|
225
257
|
description: "Code statistics",
|
|
226
258
|
preset: "agent",
|
|
227
259
|
verify: "tokei --version",
|
|
228
|
-
install: brewScoopCargo("tokei", "tokei")
|
|
260
|
+
install: brewScoopCargo("tokei", "tokei"),
|
|
261
|
+
tags: ["code stats", "line count", "language breakdown", "codebase size", "loc"],
|
|
262
|
+
seeAlso: ["hyperfine", "knip", "dust"]
|
|
229
263
|
},
|
|
230
264
|
{
|
|
231
265
|
id: "tldr",
|
|
@@ -233,7 +267,9 @@ var TOOLS = [
|
|
|
233
267
|
description: "Quick man page summaries",
|
|
234
268
|
preset: "agent",
|
|
235
269
|
verify: "tldr --version",
|
|
236
|
-
install: universal("tldr")
|
|
270
|
+
install: universal("tldr"),
|
|
271
|
+
tags: ["man page", "command help", "usage examples", "quick reference", "cheatsheet"],
|
|
272
|
+
seeAlso: ["bat", "glow"]
|
|
237
273
|
},
|
|
238
274
|
{
|
|
239
275
|
id: "biome",
|
|
@@ -245,7 +281,9 @@ var TOOLS = [
|
|
|
245
281
|
darwin: [{ method: "brew", package: "biome" }],
|
|
246
282
|
linux: [{ method: "npm", package: "@biomejs/biome" }],
|
|
247
283
|
win32: [{ method: "npm", package: "@biomejs/biome" }]
|
|
248
|
-
}
|
|
284
|
+
},
|
|
285
|
+
tags: ["lint", "format", "typescript", "javascript", "code style", "prettier alternative"],
|
|
286
|
+
seeAlso: ["knip", "ast-grep", "typos"]
|
|
249
287
|
},
|
|
250
288
|
{
|
|
251
289
|
id: "difftastic",
|
|
@@ -253,7 +291,9 @@ var TOOLS = [
|
|
|
253
291
|
description: "Structural/AST diff",
|
|
254
292
|
preset: "agent",
|
|
255
293
|
verify: "difft --version",
|
|
256
|
-
install: brewScoopCargo("difftastic", "difftastic")
|
|
294
|
+
install: brewScoopCargo("difftastic", "difftastic"),
|
|
295
|
+
tags: ["diff", "compare files", "git diff", "structural diff", "ast diff"],
|
|
296
|
+
seeAlso: ["delta", "ast-grep"]
|
|
257
297
|
},
|
|
258
298
|
{
|
|
259
299
|
id: "pandoc",
|
|
@@ -261,7 +301,9 @@ var TOOLS = [
|
|
|
261
301
|
description: "Universal document converter",
|
|
262
302
|
preset: "agent",
|
|
263
303
|
verify: "pandoc --version",
|
|
264
|
-
install: universal("pandoc")
|
|
304
|
+
install: universal("pandoc"),
|
|
305
|
+
tags: ["convert document", "markdown to pdf", "docx", "format conversion", "export"],
|
|
306
|
+
seeAlso: ["glow", "bat"]
|
|
265
307
|
},
|
|
266
308
|
{
|
|
267
309
|
id: "duckdb",
|
|
@@ -274,7 +316,9 @@ var TOOLS = [
|
|
|
274
316
|
// TODO: gh-release installer — no reliable apt/cargo package
|
|
275
317
|
linux: null,
|
|
276
318
|
win32: [{ method: "scoop", package: "duckdb" }]
|
|
277
|
-
}
|
|
319
|
+
},
|
|
320
|
+
tags: ["sql", "csv", "parquet", "analytics", "query data", "data analysis"],
|
|
321
|
+
seeAlso: ["jq", "yq", "htmlq"]
|
|
278
322
|
},
|
|
279
323
|
{
|
|
280
324
|
id: "htmlq",
|
|
@@ -282,7 +326,9 @@ var TOOLS = [
|
|
|
282
326
|
description: "Extract content from HTML using CSS selectors",
|
|
283
327
|
preset: "agent",
|
|
284
328
|
verify: "htmlq --version",
|
|
285
|
-
install: brewScoopCargo("htmlq", "htmlq")
|
|
329
|
+
install: brewScoopCargo("htmlq", "htmlq"),
|
|
330
|
+
tags: ["html", "css selector", "scrape", "extract html", "parse html", "web"],
|
|
331
|
+
seeAlso: ["xh", "jq", "duckdb"]
|
|
286
332
|
},
|
|
287
333
|
{
|
|
288
334
|
id: "typos",
|
|
@@ -294,7 +340,9 @@ var TOOLS = [
|
|
|
294
340
|
darwin: [{ method: "brew", package: "typos-cli" }],
|
|
295
341
|
linux: [{ method: "cargo", package: "typos-cli" }],
|
|
296
342
|
win32: [{ method: "scoop", package: "typos" }]
|
|
297
|
-
}
|
|
343
|
+
},
|
|
344
|
+
tags: ["spell check", "typo", "source code spelling", "writing quality", "documentation"],
|
|
345
|
+
seeAlso: ["biome", "shellcheck"]
|
|
298
346
|
},
|
|
299
347
|
{
|
|
300
348
|
id: "gum",
|
|
@@ -307,7 +355,9 @@ var TOOLS = [
|
|
|
307
355
|
// TODO: gh-release installer — no apt/cargo package
|
|
308
356
|
linux: null,
|
|
309
357
|
win32: [{ method: "scoop", package: "gum" }]
|
|
310
|
-
}
|
|
358
|
+
},
|
|
359
|
+
tags: ["interactive shell", "tui prompt", "user input", "shell script ui", "confirm dialog"],
|
|
360
|
+
seeAlso: ["fzf", "just"]
|
|
311
361
|
},
|
|
312
362
|
// ── Media ─────────────────────────────────────────────
|
|
313
363
|
{
|
|
@@ -316,7 +366,9 @@ var TOOLS = [
|
|
|
316
366
|
description: "Audio/video Swiss army knife",
|
|
317
367
|
preset: "media",
|
|
318
368
|
verify: "ffmpeg -version",
|
|
319
|
-
install: universal("ffmpeg")
|
|
369
|
+
install: universal("ffmpeg"),
|
|
370
|
+
tags: ["video convert", "audio convert", "transcode", "encode", "media processing", "extract audio"],
|
|
371
|
+
seeAlso: ["imagemagick", "exiftool"]
|
|
320
372
|
},
|
|
321
373
|
{
|
|
322
374
|
id: "exiftool",
|
|
@@ -328,7 +380,9 @@ var TOOLS = [
|
|
|
328
380
|
darwin: [{ method: "brew", package: "exiftool" }],
|
|
329
381
|
linux: [{ method: "apt", package: "libimage-exiftool-perl" }],
|
|
330
382
|
win32: [{ method: "scoop", package: "exiftool" }]
|
|
331
|
-
}
|
|
383
|
+
},
|
|
384
|
+
tags: ["image metadata", "exif", "photo info", "media tags", "strip metadata"],
|
|
385
|
+
seeAlso: ["imagemagick", "ffmpeg"]
|
|
332
386
|
},
|
|
333
387
|
{
|
|
334
388
|
id: "imagemagick",
|
|
@@ -336,7 +390,9 @@ var TOOLS = [
|
|
|
336
390
|
description: "Image transforms",
|
|
337
391
|
preset: "media",
|
|
338
392
|
verify: "magick -version",
|
|
339
|
-
install: universal("imagemagick")
|
|
393
|
+
install: universal("imagemagick"),
|
|
394
|
+
tags: ["image resize", "image convert", "image transform", "thumbnail", "crop image"],
|
|
395
|
+
seeAlso: ["exiftool", "svgo", "ffmpeg"]
|
|
340
396
|
},
|
|
341
397
|
{
|
|
342
398
|
id: "svgo",
|
|
@@ -344,7 +400,9 @@ var TOOLS = [
|
|
|
344
400
|
description: "SVG optimiser",
|
|
345
401
|
preset: "media",
|
|
346
402
|
verify: "svgo --version",
|
|
347
|
-
install: npmAll("svgo")
|
|
403
|
+
install: npmAll("svgo"),
|
|
404
|
+
tags: ["svg optimize", "svg compress", "vector graphics", "svg minify", "icon optimize"],
|
|
405
|
+
seeAlso: ["imagemagick"]
|
|
348
406
|
},
|
|
349
407
|
// ── DX ────────────────────────────────────────────────
|
|
350
408
|
{
|
|
@@ -353,7 +411,9 @@ var TOOLS = [
|
|
|
353
411
|
description: "Modern ls replacement",
|
|
354
412
|
preset: "dx",
|
|
355
413
|
verify: "eza --version",
|
|
356
|
-
install: brewScoopCargo("eza", "eza")
|
|
414
|
+
install: brewScoopCargo("eza", "eza"),
|
|
415
|
+
tags: ["list files", "ls", "directory listing", "file icons", "tree view"],
|
|
416
|
+
seeAlso: ["tree", "fd", "dust"]
|
|
357
417
|
},
|
|
358
418
|
{
|
|
359
419
|
id: "zoxide",
|
|
@@ -361,7 +421,9 @@ var TOOLS = [
|
|
|
361
421
|
description: "Smarter cd",
|
|
362
422
|
preset: "dx",
|
|
363
423
|
verify: "zoxide --version",
|
|
364
|
-
install: brewScoopCargo("zoxide", "zoxide")
|
|
424
|
+
install: brewScoopCargo("zoxide", "zoxide"),
|
|
425
|
+
tags: ["cd", "directory jump", "smart navigation", "recent dirs", "z command"],
|
|
426
|
+
seeAlso: ["fzf", "eza"]
|
|
365
427
|
},
|
|
366
428
|
{
|
|
367
429
|
id: "delta",
|
|
@@ -373,7 +435,9 @@ var TOOLS = [
|
|
|
373
435
|
darwin: [{ method: "brew", package: "git-delta" }],
|
|
374
436
|
linux: [{ method: "cargo", package: "git-delta" }],
|
|
375
437
|
win32: [{ method: "scoop", package: "delta" }]
|
|
376
|
-
}
|
|
438
|
+
},
|
|
439
|
+
tags: ["git diff", "diff viewer", "side by side diff", "code review", "syntax diff"],
|
|
440
|
+
seeAlso: ["difftastic", "lazygit", "bat"]
|
|
377
441
|
},
|
|
378
442
|
{
|
|
379
443
|
id: "glow",
|
|
@@ -386,7 +450,9 @@ var TOOLS = [
|
|
|
386
450
|
// TODO: gh-release installer — no apt/cargo package
|
|
387
451
|
linux: null,
|
|
388
452
|
win32: [{ method: "scoop", package: "glow" }]
|
|
389
|
-
}
|
|
453
|
+
},
|
|
454
|
+
tags: ["render markdown", "markdown preview", "terminal markdown", "readme viewer"],
|
|
455
|
+
seeAlso: ["bat", "pandoc", "tldr"]
|
|
390
456
|
},
|
|
391
457
|
{
|
|
392
458
|
id: "mise",
|
|
@@ -399,7 +465,9 @@ var TOOLS = [
|
|
|
399
465
|
// TODO: gh-release installer — curl script install preferred on Linux
|
|
400
466
|
linux: null,
|
|
401
467
|
win32: [{ method: "scoop", package: "mise" }]
|
|
402
|
-
}
|
|
468
|
+
},
|
|
469
|
+
tags: ["runtime version", "node version", "python version", "version manager", "toolchain"],
|
|
470
|
+
seeAlso: ["uv", "direnv"]
|
|
403
471
|
},
|
|
404
472
|
{
|
|
405
473
|
id: "watchexec",
|
|
@@ -407,7 +475,9 @@ var TOOLS = [
|
|
|
407
475
|
description: "Run commands on file change",
|
|
408
476
|
preset: "dx",
|
|
409
477
|
verify: "watchexec --version",
|
|
410
|
-
install: brewScoopCargo("watchexec", "watchexec")
|
|
478
|
+
install: brewScoopCargo("watchexec", "watchexec"),
|
|
479
|
+
tags: ["watch files", "run on change", "live reload", "file watcher", "auto restart"],
|
|
480
|
+
seeAlso: ["just", "mise"]
|
|
411
481
|
},
|
|
412
482
|
{
|
|
413
483
|
id: "mkcert",
|
|
@@ -420,7 +490,9 @@ var TOOLS = [
|
|
|
420
490
|
// TODO: gh-release installer — no apt/cargo package
|
|
421
491
|
linux: null,
|
|
422
492
|
win32: [{ method: "scoop", package: "mkcert" }]
|
|
423
|
-
}
|
|
493
|
+
},
|
|
494
|
+
tags: ["https", "local ssl", "dev certificate", "tls", "self signed"],
|
|
495
|
+
seeAlso: ["age", "trivy"]
|
|
424
496
|
},
|
|
425
497
|
{
|
|
426
498
|
id: "lazygit",
|
|
@@ -433,7 +505,9 @@ var TOOLS = [
|
|
|
433
505
|
// TODO: gh-release installer — no apt/cargo package
|
|
434
506
|
linux: null,
|
|
435
507
|
win32: [{ method: "scoop", package: "lazygit" }]
|
|
436
|
-
}
|
|
508
|
+
},
|
|
509
|
+
tags: ["git tui", "git interface", "stage commits", "git visual", "interactive git"],
|
|
510
|
+
seeAlso: ["gh", "delta", "difftastic"]
|
|
437
511
|
},
|
|
438
512
|
{
|
|
439
513
|
id: "dust",
|
|
@@ -441,7 +515,9 @@ var TOOLS = [
|
|
|
441
515
|
description: "Disk usage tree",
|
|
442
516
|
preset: "dx",
|
|
443
517
|
verify: "dust --version",
|
|
444
|
-
install: brewScoopCargo("dust", "du-dust")
|
|
518
|
+
install: brewScoopCargo("dust", "du-dust"),
|
|
519
|
+
tags: ["disk usage", "disk space", "folder size", "storage", "du"],
|
|
520
|
+
seeAlso: ["eza", "tree", "btm"]
|
|
445
521
|
},
|
|
446
522
|
{
|
|
447
523
|
id: "btm",
|
|
@@ -453,7 +529,9 @@ var TOOLS = [
|
|
|
453
529
|
darwin: [{ method: "brew", package: "bottom" }],
|
|
454
530
|
linux: [{ method: "cargo", package: "bottom" }],
|
|
455
531
|
win32: [{ method: "scoop", package: "bottom" }]
|
|
456
|
-
}
|
|
532
|
+
},
|
|
533
|
+
tags: ["system monitor", "cpu usage", "memory", "processes", "resource monitor"],
|
|
534
|
+
seeAlso: ["procs", "dust", "hyperfine"]
|
|
457
535
|
},
|
|
458
536
|
{
|
|
459
537
|
id: "direnv",
|
|
@@ -461,7 +539,9 @@ var TOOLS = [
|
|
|
461
539
|
description: "Auto-load env vars per directory",
|
|
462
540
|
preset: "dx",
|
|
463
541
|
verify: "direnv version",
|
|
464
|
-
install: universal("direnv")
|
|
542
|
+
install: universal("direnv"),
|
|
543
|
+
tags: ["environment variables", "env vars", ".env", "per-project env", "dotenv"],
|
|
544
|
+
seeAlso: ["mise", "uv"]
|
|
465
545
|
},
|
|
466
546
|
{
|
|
467
547
|
id: "procs",
|
|
@@ -469,7 +549,9 @@ var TOOLS = [
|
|
|
469
549
|
description: "Modern ps replacement with search",
|
|
470
550
|
preset: "dx",
|
|
471
551
|
verify: "procs --version",
|
|
472
|
-
install: brewScoopCargo("procs", "procs")
|
|
552
|
+
install: brewScoopCargo("procs", "procs"),
|
|
553
|
+
tags: ["process list", "ps", "running processes", "process search", "pid"],
|
|
554
|
+
seeAlso: ["btm", "dust"]
|
|
473
555
|
},
|
|
474
556
|
{
|
|
475
557
|
id: "uv",
|
|
@@ -481,7 +563,9 @@ var TOOLS = [
|
|
|
481
563
|
darwin: [{ method: "brew", package: "uv" }],
|
|
482
564
|
linux: [{ method: "cargo", package: "uv" }],
|
|
483
565
|
win32: [{ method: "scoop", package: "uv" }]
|
|
484
|
-
}
|
|
566
|
+
},
|
|
567
|
+
tags: ["python", "pip", "python package", "virtualenv", "python environment"],
|
|
568
|
+
seeAlso: ["mise", "direnv"]
|
|
485
569
|
},
|
|
486
570
|
{
|
|
487
571
|
id: "hexyl",
|
|
@@ -489,7 +573,9 @@ var TOOLS = [
|
|
|
489
573
|
description: "Hex viewer with colour coding",
|
|
490
574
|
preset: "dx",
|
|
491
575
|
verify: "hexyl --version",
|
|
492
|
-
install: brewScoopCargo("hexyl", "hexyl")
|
|
576
|
+
install: brewScoopCargo("hexyl", "hexyl"),
|
|
577
|
+
tags: ["hex dump", "binary file", "byte inspection", "hex view", "binary analysis"],
|
|
578
|
+
seeAlso: ["bat", "exiftool"]
|
|
493
579
|
},
|
|
494
580
|
{
|
|
495
581
|
id: "taplo",
|
|
@@ -497,7 +583,9 @@ var TOOLS = [
|
|
|
497
583
|
description: "TOML toolkit (lint, format, query)",
|
|
498
584
|
preset: "dx",
|
|
499
585
|
verify: "taplo --version",
|
|
500
|
-
install: brewScoopCargo("taplo", "taplo-cli")
|
|
586
|
+
install: brewScoopCargo("taplo", "taplo-cli"),
|
|
587
|
+
tags: ["toml", "toml lint", "toml format", "config validation", "cargo toml"],
|
|
588
|
+
seeAlso: ["yq", "biome"]
|
|
501
589
|
},
|
|
502
590
|
// ── Security ──────────────────────────────────────────
|
|
503
591
|
{
|
|
@@ -510,7 +598,9 @@ var TOOLS = [
|
|
|
510
598
|
darwin: [{ method: "brew", package: "trivy" }],
|
|
511
599
|
linux: [{ method: "apt", package: "trivy" }],
|
|
512
600
|
win32: [{ method: "scoop", package: "trivy" }]
|
|
513
|
-
}
|
|
601
|
+
},
|
|
602
|
+
tags: ["vulnerability scan", "cve", "docker scan", "dependency scan", "security audit"],
|
|
603
|
+
seeAlso: ["semgrep", "gitleaks", "act"]
|
|
514
604
|
},
|
|
515
605
|
{
|
|
516
606
|
id: "act",
|
|
@@ -523,7 +613,9 @@ var TOOLS = [
|
|
|
523
613
|
// TODO: gh-release installer — no apt/cargo package
|
|
524
614
|
linux: null,
|
|
525
615
|
win32: [{ method: "scoop", package: "act" }]
|
|
526
|
-
}
|
|
616
|
+
},
|
|
617
|
+
tags: ["github actions", "local ci", "workflow test", "ci debug", "actions runner"],
|
|
618
|
+
seeAlso: ["gh", "trivy"]
|
|
527
619
|
},
|
|
528
620
|
{
|
|
529
621
|
id: "gitleaks",
|
|
@@ -536,7 +628,9 @@ var TOOLS = [
|
|
|
536
628
|
// TODO: gh-release installer — no apt/cargo package
|
|
537
629
|
linux: null,
|
|
538
630
|
win32: [{ method: "scoop", package: "gitleaks" }]
|
|
539
|
-
}
|
|
631
|
+
},
|
|
632
|
+
tags: ["secret scan", "api key leak", "credentials", "git history scan", "sensitive data"],
|
|
633
|
+
seeAlso: ["trivy", "semgrep", "gh"]
|
|
540
634
|
},
|
|
541
635
|
{
|
|
542
636
|
id: "semgrep",
|
|
@@ -549,7 +643,9 @@ var TOOLS = [
|
|
|
549
643
|
linux: [{ method: "apt", package: "semgrep" }],
|
|
550
644
|
win32: null
|
|
551
645
|
// not available on Windows
|
|
552
|
-
}
|
|
646
|
+
},
|
|
647
|
+
tags: ["static analysis", "security scan", "code pattern", "sast", "vulnerability detection"],
|
|
648
|
+
seeAlso: ["trivy", "gitleaks", "shellcheck"]
|
|
553
649
|
},
|
|
554
650
|
{
|
|
555
651
|
id: "age",
|
|
@@ -561,7 +657,9 @@ var TOOLS = [
|
|
|
561
657
|
darwin: [{ method: "brew", package: "age" }],
|
|
562
658
|
linux: [{ method: "apt", package: "age" }, { method: "cargo", package: "rage" }],
|
|
563
659
|
win32: [{ method: "scoop", package: "age" }]
|
|
564
|
-
}
|
|
660
|
+
},
|
|
661
|
+
tags: ["encrypt", "decrypt", "file encryption", "secrets", "pgp alternative"],
|
|
662
|
+
seeAlso: ["gitleaks", "mkcert"]
|
|
565
663
|
},
|
|
566
664
|
{
|
|
567
665
|
id: "doggo",
|
|
@@ -574,7 +672,9 @@ var TOOLS = [
|
|
|
574
672
|
// TODO: gh-release installer — no apt package; cargo crate not maintained
|
|
575
673
|
linux: null,
|
|
576
674
|
win32: [{ method: "scoop", package: "doggo" }]
|
|
577
|
-
}
|
|
675
|
+
},
|
|
676
|
+
tags: ["dns", "dns lookup", "dns query", "nameserver", "network debug"],
|
|
677
|
+
seeAlso: ["xh", "trivy"]
|
|
578
678
|
}
|
|
579
679
|
];
|
|
580
680
|
function getToolsByPreset(presetId) {
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getToolsByIds,
|
|
6
6
|
getToolsByPreset,
|
|
7
7
|
validateToolIds
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JYIPAISH.js";
|
|
9
9
|
|
|
10
10
|
// src/index.ts
|
|
11
11
|
import { Command } from "commander";
|
|
@@ -418,7 +418,7 @@ async function confirmInstall() {
|
|
|
418
418
|
}
|
|
419
419
|
|
|
420
420
|
// src/skills.ts
|
|
421
|
-
import { writeFile as writeFile3 } from "fs/promises";
|
|
421
|
+
import { access, writeFile as writeFile3 } from "fs/promises";
|
|
422
422
|
import { join as join2 } from "path";
|
|
423
423
|
|
|
424
424
|
// src/skills/rg.ts
|
|
@@ -437,13 +437,19 @@ Search file contents across a codebase. Faster than grep, respects .gitignore by
|
|
|
437
437
|
- Files only (no content): \`rg -l "pattern"\`
|
|
438
438
|
- Count matches: \`rg -c "pattern"\`
|
|
439
439
|
- Case insensitive: \`rg -i "pattern"\`
|
|
440
|
+
- JSON output (agent-parseable): \`rg "pattern" --json\`
|
|
441
|
+
- Exit non-zero if no matches: \`rg --exit-status "pattern"\`
|
|
440
442
|
|
|
441
443
|
## Output format
|
|
442
444
|
\`file:line:column:matched_text\` \u2014 one match per line, stable and parseable.
|
|
443
445
|
|
|
446
|
+
## Why it matters for agents
|
|
447
|
+
\`--json\` output is directly parseable; rg is the backbone of fast codebase search. \`--exit-status\` makes it composable in CI pipelines and shell conditionals.
|
|
448
|
+
|
|
444
449
|
## Gotchas
|
|
445
450
|
- Skips hidden files and .gitignore'd paths by default. Use \`--hidden\` or \`--no-ignore\` to include them.
|
|
446
451
|
- For literal dots, brackets etc. in patterns, use \`-F\` (fixed string) to avoid regex escaping issues.
|
|
452
|
+
- \`--json\` emits structured events (match, begin, end, summary) \u2014 parse with \`jq\` for agent workflows.
|
|
447
453
|
`.trim();
|
|
448
454
|
|
|
449
455
|
// src/skills/fd.ts
|
|
@@ -464,9 +470,13 @@ Find files by name pattern. Faster than \`find\`, respects .gitignore, sane defa
|
|
|
464
470
|
## Output format
|
|
465
471
|
One path per line, relative to search root.
|
|
466
472
|
|
|
473
|
+
## Why it matters for agents
|
|
474
|
+
\`-x\` flag enables batch file operations without shell loops \u2014 agents can use \`fd -e ts -x sd 'old' 'new' {}\` to safely refactor across many files.
|
|
475
|
+
|
|
467
476
|
## Gotchas
|
|
468
477
|
- Regex by default. Use \`-g\` for glob patterns.
|
|
469
478
|
- Ignores .gitignore'd files by default. Use \`--no-ignore\` to include.
|
|
479
|
+
- On Debian/Ubuntu the binary is \`fdfind\`, not \`fd\`. Use \`alias fd=fdfind\` or install via cargo.
|
|
470
480
|
`.trim();
|
|
471
481
|
|
|
472
482
|
// src/skills/jq.ts
|
|
@@ -524,6 +534,14 @@ View file contents with syntax highlighting, line numbers, and git diff indicato
|
|
|
524
534
|
- Show line range: \`bat -r 10:20 file.ts\`
|
|
525
535
|
- Force language: \`bat -l json file.txt\`
|
|
526
536
|
- Use as pager for other commands: \`command | bat -l json\`
|
|
537
|
+
- Disable pager for scripts: \`bat --paging=never file.ts\`
|
|
538
|
+
|
|
539
|
+
## Why it matters for agents
|
|
540
|
+
\`-l\` flag lets agents force syntax for stdin \u2014 useful for highlighting API responses or generated content piped through bat.
|
|
541
|
+
|
|
542
|
+
## Gotchas
|
|
543
|
+
- On Debian/Ubuntu the binary is \`batcat\`, not \`bat\`. Use \`alias bat=batcat\` or install via cargo.
|
|
544
|
+
- Use \`--paging=never\` in scripts to suppress the interactive pager.
|
|
527
545
|
`.trim();
|
|
528
546
|
|
|
529
547
|
// src/skills/tree.ts
|
|
@@ -539,6 +557,14 @@ Visualise directory structure as a tree. Useful for understanding project layout
|
|
|
539
557
|
- Show only directories: \`tree -d\`
|
|
540
558
|
- Ignore patterns: \`tree -I 'node_modules|dist'\`
|
|
541
559
|
- With file sizes: \`tree -sh\`
|
|
560
|
+
- JSON output: \`tree -J path/\`
|
|
561
|
+
|
|
562
|
+
## Why it matters for agents
|
|
563
|
+
\`-J\` gives a JSON file tree \u2014 lets agents understand project structure in one call without recursive \`ls\` loops.
|
|
564
|
+
|
|
565
|
+
## Gotchas
|
|
566
|
+
- Use \`--charset ascii\` for plain output in non-unicode terminals or CI logs.
|
|
567
|
+
- \`-J\` JSON output includes type, name, and children \u2014 structured project map in one call.
|
|
542
568
|
`.trim();
|
|
543
569
|
|
|
544
570
|
// src/skills/gh.ts
|
|
@@ -558,13 +584,20 @@ Create PRs, manage issues, check CI status, manage releases \u2014 all without l
|
|
|
558
584
|
- View repo: \`gh repo view\`
|
|
559
585
|
- API calls: \`gh api repos/owner/repo/pulls/123/comments\`
|
|
560
586
|
- Clone: \`gh repo clone owner/repo\`
|
|
587
|
+
- List workflow runs: \`gh run list --json name,status,conclusion\`
|
|
588
|
+
- Watch a run live: \`gh run watch\`
|
|
589
|
+
- Cross-repo PR list: \`gh pr list -R owner/repo --json number,title,state\`
|
|
561
590
|
|
|
562
591
|
## Output format
|
|
563
592
|
Supports \`--json\` on most commands for structured output. E.g. \`gh pr list --json number,title,state\`.
|
|
564
593
|
|
|
594
|
+
## Why it matters for agents
|
|
595
|
+
\`--json\` on every command + \`gh api\` unlocks full GitHub automation without parsing HTML. Agents can open PRs, check CI, and comment on issues programmatically.
|
|
596
|
+
|
|
565
597
|
## Gotchas
|
|
566
598
|
- Requires authentication: \`gh auth login\`
|
|
567
599
|
- \`gh api\` is very powerful for anything not covered by built-in commands.
|
|
600
|
+
- In CI, set \`GH_TOKEN\` env var instead of running \`gh auth login\`.
|
|
568
601
|
`.trim();
|
|
569
602
|
|
|
570
603
|
// src/skills/fzf.ts
|
|
@@ -598,10 +631,14 @@ Lint shell scripts (bash, sh, dash) for common mistakes: quoting issues, unset v
|
|
|
598
631
|
- GCC-style output: \`shellcheck --format=gcc script.sh\`
|
|
599
632
|
- Exclude specific rules: \`shellcheck --exclude=SC2034 script.sh\`
|
|
600
633
|
- Check from stdin: \`echo '#!/bin/bash' | shellcheck -\`
|
|
634
|
+
- Errors only (no warnings): \`shellcheck --severity error script.sh\`
|
|
601
635
|
|
|
602
636
|
## Output format
|
|
603
637
|
Default output is human-readable with line numbers and fix suggestions. Use \`--format=json\` for structured output.
|
|
604
638
|
|
|
639
|
+
## Why it matters for agents
|
|
640
|
+
Agents frequently generate shell scripts \u2014 shellcheck catches quoting bugs, unset variables, and portability issues before they cause failures. Use \`--format=json\` to parse results programmatically.
|
|
641
|
+
|
|
605
642
|
## Gotchas
|
|
606
643
|
- Scripts need a shebang (\`#!/bin/bash\`) or use \`--shell=\` flag.
|
|
607
644
|
- SC codes (e.g. SC2086) link to detailed wiki explanations.
|
|
@@ -668,7 +705,10 @@ Generate a regular expression from a set of example strings. Useful when you kno
|
|
|
668
705
|
- Verbose regex: \`grex --verbose "foo-123" "bar-456"\`
|
|
669
706
|
|
|
670
707
|
## Gotchas
|
|
671
|
-
- Output is a regex string
|
|
708
|
+
- Output is a raw regex string \u2014 pipe directly into \`rg\`, \`sd\`, or save to a variable.
|
|
709
|
+
|
|
710
|
+
## Why it matters for agents
|
|
711
|
+
Lets agents generate correct regex from test cases rather than hallucinating patterns \u2014 eliminates a whole class of regex bugs.
|
|
672
712
|
`.trim();
|
|
673
713
|
|
|
674
714
|
// src/skills/knip.ts
|
|
@@ -683,12 +723,16 @@ Detect unused files, exports, dependencies, and types in TypeScript/JavaScript p
|
|
|
683
723
|
- Unused files only: \`knip --include files\`
|
|
684
724
|
- Unused exports only: \`knip --include exports\`
|
|
685
725
|
- Unused deps only: \`knip --include dependencies\`
|
|
686
|
-
-
|
|
726
|
+
- Machine-readable with scopes: \`knip --reporter json --include files,exports,dependencies\`
|
|
727
|
+
|
|
728
|
+
## Why it matters for agents
|
|
729
|
+
Identifies dead code before large refactors \u2014 agents can safely delete unused files and exports flagged by knip without breaking the build.
|
|
687
730
|
|
|
688
731
|
## Gotchas
|
|
689
732
|
- Must be run at project root (where package.json lives).
|
|
690
733
|
- May need a knip.json config for monorepos or non-standard project structures.
|
|
691
734
|
- Some frameworks have plugins (Next.js, Remix, etc.) \u2014 check docs if results seem wrong.
|
|
735
|
+
- Exits 1 if issues found \u2014 CI-friendly; pipe to \`jq\` to filter specific categories.
|
|
692
736
|
`.trim();
|
|
693
737
|
|
|
694
738
|
// src/skills/sd.ts
|
|
@@ -707,6 +751,9 @@ Find and replace in files. Like sed but with intuitive syntax \u2014 no escaping
|
|
|
707
751
|
## Gotchas
|
|
708
752
|
- Uses regex by default. Use \`-F\` for fixed/literal strings.
|
|
709
753
|
- Modifies files in place when given a filename. Use \`-p\` to preview first.
|
|
754
|
+
|
|
755
|
+
## Why it matters for agents
|
|
756
|
+
Safer than sed for multi-line replacements \u2014 predictable escaping without shell quoting nightmares. Combine with \`fd -x\` for safe bulk refactors across many files.
|
|
710
757
|
`.trim();
|
|
711
758
|
|
|
712
759
|
// src/skills/hyperfine.ts
|
|
@@ -722,6 +769,11 @@ Benchmark commands to compare performance. Runs commands multiple times and repo
|
|
|
722
769
|
- With warmup: \`hyperfine --warmup 3 'command'\`
|
|
723
770
|
- Export results: \`hyperfine --export-json results.json 'command'\`
|
|
724
771
|
- Min runs: \`hyperfine --min-runs 20 'command'\`
|
|
772
|
+
- Non-interactive + export: \`hyperfine --style basic --export-json results.json 'cmd1' 'cmd2'\`
|
|
773
|
+
- With prepare step: \`hyperfine --prepare 'make clean' 'make build'\`
|
|
774
|
+
|
|
775
|
+
## Why it matters for agents
|
|
776
|
+
\`--export-json\` lets agents compare builds and commands quantitatively \u2014 structured results include mean, stddev, min, max per command.
|
|
725
777
|
|
|
726
778
|
## Gotchas
|
|
727
779
|
- Wrap commands in quotes.
|
|
@@ -740,10 +792,16 @@ Get a quick overview of a codebase: languages, lines of code, comments, blanks.
|
|
|
740
792
|
- Specific path: \`tokei src/\`
|
|
741
793
|
- JSON output: \`tokei --output json\`
|
|
742
794
|
- Sort by lines: \`tokei --sort lines\`
|
|
795
|
+
- Exclude dirs: \`tokei --output json --exclude node_modules,dist src/\`
|
|
796
|
+
- Filter languages: \`tokei --languages TypeScript,Rust\`
|
|
797
|
+
- Per-file breakdown: \`tokei --files src/\`
|
|
743
798
|
|
|
744
799
|
## Output format
|
|
745
800
|
Table with language, files, lines, code, comments, blanks.
|
|
746
801
|
Use \`--output json\` for structured output.
|
|
802
|
+
|
|
803
|
+
## Why it matters for agents
|
|
804
|
+
Gives agents a language/complexity map before large refactors \u2014 quickly understand the scale and dominant languages of an unfamiliar codebase.
|
|
747
805
|
`.trim();
|
|
748
806
|
|
|
749
807
|
// src/skills/ffmpeg.ts
|
|
@@ -795,6 +853,9 @@ Read, write, and strip metadata (EXIF, IPTC, XMP) from images and media files.
|
|
|
795
853
|
## Gotchas
|
|
796
854
|
- Field names are case-insensitive.
|
|
797
855
|
- Use \`-json\` for structured output.
|
|
856
|
+
|
|
857
|
+
## Why it matters for agents
|
|
858
|
+
\`-json\` output enables structured metadata extraction from any media file \u2014 agents can batch-read EXIF data, filter by GPS coordinates, or rename files by capture date programmatically.
|
|
798
859
|
`.trim();
|
|
799
860
|
|
|
800
861
|
// src/skills/imagemagick.ts
|
|
@@ -817,6 +878,9 @@ Resize, crop, convert, and manipulate images from the command line.
|
|
|
817
878
|
|
|
818
879
|
## Gotchas
|
|
819
880
|
- The binary is \`magick\` (ImageMagick 7). Older versions used \`convert\`.
|
|
881
|
+
|
|
882
|
+
## Why it matters for agents
|
|
883
|
+
Batch image processing without opening apps \u2014 useful for automated asset pipelines. Agents can resize, convert formats, and generate thumbnails in a single \`mogrify\` invocation.
|
|
820
884
|
`.trim();
|
|
821
885
|
|
|
822
886
|
// src/skills/svgo.ts
|
|
@@ -831,10 +895,15 @@ Optimise SVG files by removing unnecessary metadata, comments, and reducing prec
|
|
|
831
895
|
- Optimise in place: \`svgo input.svg\`
|
|
832
896
|
- Folder: \`svgo -f ./icons/ -o ./icons-optimised/\`
|
|
833
897
|
- Show savings: \`svgo input.svg --pretty\`
|
|
898
|
+
- Multipass (better compression): \`svgo --multipass input.svg -o output.svg\`
|
|
899
|
+
- Check savings without writing: \`svgo --dry-run input.svg\`
|
|
834
900
|
|
|
835
901
|
## Gotchas
|
|
836
902
|
- Default plugins are usually fine. Override with \`--config svgo.config.js\` if needed.
|
|
837
903
|
- In-place by default when no \`-o\` specified. Pipe or use \`-o\` for safety.
|
|
904
|
+
|
|
905
|
+
## Why it matters for agents
|
|
906
|
+
Automated SVG optimisation in build pipelines \u2014 measurable, reproducible size savings. Agents can run \`svgo -f ./icons/\` after any icon library update.
|
|
838
907
|
`.trim();
|
|
839
908
|
|
|
840
909
|
// src/skills/eza.ts
|
|
@@ -893,6 +962,9 @@ Add to ~/.gitconfig:
|
|
|
893
962
|
|
|
894
963
|
## Gotchas
|
|
895
964
|
- The brew package is called \`git-delta\`, but the binary is \`delta\`.
|
|
965
|
+
|
|
966
|
+
## Why it matters for agents
|
|
967
|
+
Makes \`git diff\` and \`git log -p\` output readable \u2014 useful when agents are reviewing code changes or summarising commits for users.
|
|
896
968
|
`.trim();
|
|
897
969
|
|
|
898
970
|
// src/skills/glow.ts
|
|
@@ -906,6 +978,11 @@ Render markdown files beautifully in the terminal. Great for reading READMEs, do
|
|
|
906
978
|
- Render file: \`glow README.md\`
|
|
907
979
|
- Render with pager: \`glow -p README.md\`
|
|
908
980
|
- Render from stdin: \`cat CHANGELOG.md | glow\`
|
|
981
|
+
- Disable pager: \`glow --no-pager README.md\`
|
|
982
|
+
- Fixed width: \`glow --width 100 README.md\`
|
|
983
|
+
|
|
984
|
+
## Why it matters for agents
|
|
985
|
+
Renders markdown cleanly in terminal output \u2014 useful for displaying skill files, changelogs, or generated docs to users without raw markdown symbols.
|
|
909
986
|
`.trim();
|
|
910
987
|
|
|
911
988
|
// src/skills/mise.ts
|
|
@@ -928,6 +1005,9 @@ Uses \`.mise.toml\` or \`.tool-versions\` in project root. This ensures determin
|
|
|
928
1005
|
|
|
929
1006
|
## Gotchas
|
|
930
1007
|
- Run \`mise activate zsh\` (or bash/fish) in your shell profile for automatic version switching.
|
|
1008
|
+
|
|
1009
|
+
## Why it matters for agents
|
|
1010
|
+
Manages runtime versions declaratively via \`.mise.toml\` \u2014 agents can use \`mise exec -- node script.js\` to pin the exact Node/Python/Ruby version without modifying global state.
|
|
931
1011
|
`.trim();
|
|
932
1012
|
|
|
933
1013
|
// src/skills/watchexec.ts
|
|
@@ -946,6 +1026,9 @@ Watch files for changes and re-run a command. Language-agnostic alternative to n
|
|
|
946
1026
|
## Gotchas
|
|
947
1027
|
- Use \`-e\` to filter by extension, \`-w\` to filter by directory.
|
|
948
1028
|
- Use \`--restart\` for long-running processes (servers), otherwise it waits for completion.
|
|
1029
|
+
|
|
1030
|
+
## Why it matters for agents
|
|
1031
|
+
Enables live-reload dev loops \u2014 agents can set up reactive pipelines (\`watchexec -e ts "pnpm typecheck"\`) and report on each change without polling.
|
|
949
1032
|
`.trim();
|
|
950
1033
|
|
|
951
1034
|
// src/skills/mkcert.ts
|
|
@@ -959,10 +1042,15 @@ Generate locally-trusted HTTPS certificates for development. No more "insecure"
|
|
|
959
1042
|
- First-time setup: \`mkcert -install\` (installs local CA)
|
|
960
1043
|
- Generate cert: \`mkcert localhost 127.0.0.1 ::1\`
|
|
961
1044
|
- Generate for custom domain: \`mkcert "myapp.local" "*.myapp.local"\`
|
|
1045
|
+
- Custom output paths: \`mkcert -cert-file cert.pem -key-file key.pem localhost\`
|
|
1046
|
+
- Wildcard + Docker/VM: \`mkcert -install && mkcert "*.local" localhost 127.0.0.1\`
|
|
962
1047
|
|
|
963
1048
|
## Gotchas
|
|
964
1049
|
- \`mkcert -install\` only needs to run once per machine.
|
|
965
1050
|
- Output is two files: cert.pem and key.pem. Point your dev server at them.
|
|
1051
|
+
|
|
1052
|
+
## Why it matters for agents
|
|
1053
|
+
Enables local HTTPS in one command \u2014 no CA setup complexity. Agents scaffolding full-stack dev environments can run \`mkcert -install && mkcert localhost\` to get HTTPS working immediately.
|
|
966
1054
|
`.trim();
|
|
967
1055
|
|
|
968
1056
|
// src/skills/trivy.ts
|
|
@@ -978,10 +1066,17 @@ Scan filesystems, container images, and code repos for known vulnerabilities.
|
|
|
978
1066
|
- Scan a container image: \`trivy image myapp:latest\`
|
|
979
1067
|
- Only critical/high: \`trivy fs --severity CRITICAL,HIGH .\`
|
|
980
1068
|
- Scan for secrets: \`trivy fs --scanners secret .\`
|
|
1069
|
+
- CI gate (fail on findings): \`trivy fs --severity CRITICAL,HIGH --exit-code 1 --no-progress .\`
|
|
1070
|
+
- Offline (skip DB update): \`trivy fs --skip-update --format json .\`
|
|
1071
|
+
|
|
1072
|
+
## Why it matters for agents
|
|
1073
|
+
Gives agents a security gate before deployments. \`--format json --exit-code 1\` creates a composable CI step \u2014 agents can parse findings and summarise critical vulnerabilities.
|
|
981
1074
|
|
|
982
1075
|
## Gotchas
|
|
983
1076
|
- First run downloads a vulnerability database (can be slow).
|
|
984
1077
|
- Use \`--format json\` for structured output.
|
|
1078
|
+
- Use \`--exit-code 1\` to fail CI pipelines on findings; omit for reporting-only mode.
|
|
1079
|
+
- \`--no-progress\` keeps CI logs clean.
|
|
985
1080
|
`.trim();
|
|
986
1081
|
|
|
987
1082
|
// src/skills/act.ts
|
|
@@ -997,11 +1092,16 @@ Test GitHub Actions workflows without pushing. Runs workflows in Docker containe
|
|
|
997
1092
|
- Run specific event: \`act push\`
|
|
998
1093
|
- Run specific job: \`act -j build\`
|
|
999
1094
|
- Dry run: \`act -n\`
|
|
1095
|
+
- Pass secrets: \`act push --secret MY_TOKEN="value"\`
|
|
1096
|
+
- List available jobs: \`act --list\`
|
|
1000
1097
|
|
|
1001
1098
|
## Gotchas
|
|
1002
1099
|
- Requires Docker to be running.
|
|
1003
1100
|
- Not all GitHub Actions features are supported locally (secrets, some contexts).
|
|
1004
1101
|
- Use \`-n\` (dry run) first to see what would happen.
|
|
1102
|
+
|
|
1103
|
+
## Why it matters for agents
|
|
1104
|
+
Test CI workflows locally before pushing \u2014 saves agent roundtrips to GitHub. Agents can run \`act -n\` to validate workflow YAML without Docker overhead.
|
|
1005
1105
|
`.trim();
|
|
1006
1106
|
|
|
1007
1107
|
// src/skills/xh.ts
|
|
@@ -1019,11 +1119,17 @@ Send HTTP requests from the terminal. Cleaner syntax than curl, JSON-first, colo
|
|
|
1019
1119
|
- Follow redirects: \`xh --follow get example.com\`
|
|
1020
1120
|
- Save response to file: \`xh get example.com/file.zip > file.zip\`
|
|
1021
1121
|
- Show request/response headers: \`xh --print=hHbB get httpbin.org/get\`
|
|
1122
|
+
- Fail on 4xx/5xx: \`xh --check-status get api.example.com\`
|
|
1123
|
+
- Response body only: \`xh -b get api.example.com\`
|
|
1124
|
+
- Headers only: \`xh -h get api.example.com\`
|
|
1125
|
+
- Download file: \`xh --download get example.com/file.zip\`
|
|
1126
|
+
|
|
1127
|
+
## Why it matters for agents
|
|
1128
|
+
Cleaner than curl for API testing \u2014 \`key=value\` JSON syntax removes quoting complexity. \`--check-status\` makes error handling trivial: non-zero exit on any 4xx/5xx.
|
|
1022
1129
|
|
|
1023
1130
|
## Gotchas
|
|
1024
1131
|
- \`key=value\` sends as JSON string; \`key:=value\` sends raw JSON (numbers, bools, arrays).
|
|
1025
1132
|
- Defaults to HTTPS if scheme is omitted.
|
|
1026
|
-
- Use \`--check-status\` to exit non-zero on 4xx/5xx responses.
|
|
1027
1133
|
`.trim();
|
|
1028
1134
|
|
|
1029
1135
|
// src/skills/tldr.ts
|
|
@@ -1065,6 +1171,9 @@ Fast, zero-config linter and formatter for JavaScript/TypeScript projects. Repla
|
|
|
1065
1171
|
- Requires a \`biome.json\` config or \`--config-path\` flag; \`biome init\` generates a sensible default.
|
|
1066
1172
|
- Not 100% compatible with all ESLint rules \u2014 check the migration guide when switching existing projects.
|
|
1067
1173
|
- \`biome check\` is read-only by default; pass \`--write\` to apply fixes.
|
|
1174
|
+
|
|
1175
|
+
## Why it matters for agents
|
|
1176
|
+
Zero-config lint+format in one command \u2014 drop-in for eslint+prettier in CI. \`biome ci .\` exits 1 on issues and is non-destructive.
|
|
1068
1177
|
`.trim();
|
|
1069
1178
|
|
|
1070
1179
|
// src/skills/difftastic.ts
|
|
@@ -1085,6 +1194,9 @@ Compare files by syntax tree, not line-by-line. Understands code structure so re
|
|
|
1085
1194
|
- Supports most languages automatically via file extension detection.
|
|
1086
1195
|
- Output is always side-by-side; pipe width matters \u2014 use a wide terminal.
|
|
1087
1196
|
- Falls back to line-diff for unsupported file types.
|
|
1197
|
+
|
|
1198
|
+
## Why it matters for agents
|
|
1199
|
+
Understands code structure \u2014 avoids false-positive diffs from formatting changes. Agents using \`GIT_EXTERNAL_DIFF=difft git diff\` get semantic change summaries, not noise.
|
|
1088
1200
|
`.trim();
|
|
1089
1201
|
|
|
1090
1202
|
// src/skills/lazygit.ts
|
|
@@ -1112,6 +1224,9 @@ Interactive terminal UI for git \u2014 stage hunks, commit, branch, rebase, and
|
|
|
1112
1224
|
- Requires git to be installed (it's a UI wrapper, not a replacement).
|
|
1113
1225
|
- Config lives at \`~/.config/lazygit/config.yml\`.
|
|
1114
1226
|
- Mouse support is on by default \u2014 click panels to navigate.
|
|
1227
|
+
|
|
1228
|
+
## Why it matters for agents
|
|
1229
|
+
Note: interactive TUI only \u2014 not suitable for agent automation. For scripted git operations use \`git\` CLI directly; for GitHub automation use \`gh\`.
|
|
1115
1230
|
`.trim();
|
|
1116
1231
|
|
|
1117
1232
|
// src/skills/dust.ts
|
|
@@ -1133,6 +1248,9 @@ Visualise what's eating disk space in a directory tree. Faster and more readable
|
|
|
1133
1248
|
- Output is proportional bars + sizes; percentages are relative to the scanned root, not total disk.
|
|
1134
1249
|
- Use \`-d 1\` for a quick top-level summary before drilling down.
|
|
1135
1250
|
- Symlinks are not followed by default \u2014 add \`-L\` to follow them.
|
|
1251
|
+
|
|
1252
|
+
## Why it matters for agents
|
|
1253
|
+
Identifies large directories before disk operations \u2014 agents can quickly find what to clean up with \`dust -d 1\` before running builds or copying large directories.
|
|
1136
1254
|
`.trim();
|
|
1137
1255
|
|
|
1138
1256
|
// src/skills/btm.ts
|
|
@@ -1159,6 +1277,9 @@ Real-time TUI system monitor \u2014 CPU, memory, network, disk, and process list
|
|
|
1159
1277
|
## Gotchas
|
|
1160
1278
|
- Config lives at \`~/.config/bottom/bottom.toml\` \u2014 customise colours and layout there.
|
|
1161
1279
|
- \`--basic\` mode is useful in constrained terminals or for quick checks.
|
|
1280
|
+
|
|
1281
|
+
## Why it matters for agents
|
|
1282
|
+
Note: interactive TUI \u2014 not suitable for scripting. For programmatic process info use \`procs --json\`; for one-shot CPU/memory snapshots use \`ps\` or \`top -l 1\`.
|
|
1162
1283
|
`.trim();
|
|
1163
1284
|
|
|
1164
1285
|
// src/skills/gitleaks.ts
|
|
@@ -1182,10 +1303,15 @@ gitleaks protect --staged # pre-commit hook
|
|
|
1182
1303
|
gitleaks detect # CI full scan
|
|
1183
1304
|
\`\`\`
|
|
1184
1305
|
|
|
1306
|
+
## Why it matters for agents
|
|
1307
|
+
Agents editing configuration files or adding credentials must scan before committing. Exit code 1 on findings makes it trivially composable as a pre-commit gate.
|
|
1308
|
+
|
|
1185
1309
|
## Gotchas
|
|
1186
1310
|
- Findings include file, line, rule, and matched secret fragment \u2014 review before dismissing.
|
|
1187
1311
|
- Use a \`.gitleaksignore\` file to whitelist known false positives.
|
|
1188
1312
|
- Does not redact secrets from history \u2014 use \`git filter-repo\` to remove them.
|
|
1313
|
+
- Returns exit code 1 if leaks found, 0 if clean \u2014 use directly in CI pipelines.
|
|
1314
|
+
- Custom rules: \`gitleaks detect --config custom-rules.toml --report-format json\`
|
|
1189
1315
|
`.trim();
|
|
1190
1316
|
|
|
1191
1317
|
// src/skills/pandoc.ts
|
|
@@ -1430,6 +1556,8 @@ Agents editing Cargo.toml, pyproject.toml, or any .toml config can validate and
|
|
|
1430
1556
|
- Config via \`taplo.toml\` or \`.taplo.toml\` at project root.
|
|
1431
1557
|
- \`taplo get\` uses dot-notation paths for querying.
|
|
1432
1558
|
- Supports schema validation for known TOML formats (Cargo, pyproject, etc.).
|
|
1559
|
+
- \`taplo fmt --check\` exits 1 on formatting diffs \u2014 CI-friendly.
|
|
1560
|
+
- Use \`--colored=off\` for clean CI output.
|
|
1433
1561
|
`.trim();
|
|
1434
1562
|
|
|
1435
1563
|
// src/skills/semgrep.ts
|
|
@@ -1564,6 +1692,37 @@ var SKILL_CONTENT = {
|
|
|
1564
1692
|
function skillFilename(toolId) {
|
|
1565
1693
|
return `${PREFIX}-${toolId}.md`;
|
|
1566
1694
|
}
|
|
1695
|
+
function buildFrontmatter(tool) {
|
|
1696
|
+
const lines = [
|
|
1697
|
+
"---",
|
|
1698
|
+
`tool: ${tool.id}`,
|
|
1699
|
+
`name: ${tool.name}`,
|
|
1700
|
+
`description: ${tool.description}`,
|
|
1701
|
+
`category: ${tool.preset}`
|
|
1702
|
+
];
|
|
1703
|
+
if (tool.tags?.length) {
|
|
1704
|
+
lines.push(`tags: [${tool.tags.join(", ")}]`);
|
|
1705
|
+
}
|
|
1706
|
+
if (tool.seeAlso?.length) {
|
|
1707
|
+
lines.push(`see-also: [${tool.seeAlso.join(", ")}]`);
|
|
1708
|
+
}
|
|
1709
|
+
lines.push("source: agent-loadout", "---", "");
|
|
1710
|
+
return lines.join("\n");
|
|
1711
|
+
}
|
|
1712
|
+
async function findToolsMissingSkills(toolIds, dir = paths.skillTargets.claude) {
|
|
1713
|
+
const results = await Promise.all(
|
|
1714
|
+
toolIds.map(async (id) => {
|
|
1715
|
+
const filePath = join2(dir, skillFilename(id));
|
|
1716
|
+
try {
|
|
1717
|
+
await access(filePath);
|
|
1718
|
+
return null;
|
|
1719
|
+
} catch {
|
|
1720
|
+
return id;
|
|
1721
|
+
}
|
|
1722
|
+
})
|
|
1723
|
+
);
|
|
1724
|
+
return results.filter((id) => id !== null);
|
|
1725
|
+
}
|
|
1567
1726
|
async function writeSkills(tools) {
|
|
1568
1727
|
await ensureSkillDirs();
|
|
1569
1728
|
const allDirs = [...Object.values(paths.skillTargets), paths.genericSkills];
|
|
@@ -1572,8 +1731,9 @@ async function writeSkills(tools) {
|
|
|
1572
1731
|
const content = SKILL_CONTENT[tool.id];
|
|
1573
1732
|
if (!content) continue;
|
|
1574
1733
|
const filename = skillFilename(tool.id);
|
|
1734
|
+
const frontmatter = buildFrontmatter(tool);
|
|
1575
1735
|
for (const dir of allDirs) {
|
|
1576
|
-
await writeFile3(join2(dir, filename), content + "\n");
|
|
1736
|
+
await writeFile3(join2(dir, filename), frontmatter + content + "\n");
|
|
1577
1737
|
}
|
|
1578
1738
|
written++;
|
|
1579
1739
|
}
|
|
@@ -1582,7 +1742,7 @@ async function writeSkills(tools) {
|
|
|
1582
1742
|
|
|
1583
1743
|
// src/index.ts
|
|
1584
1744
|
var program = new Command();
|
|
1585
|
-
program.name("agent-loadout").description("One command to load out your terminal for agentic coding").version("0.
|
|
1745
|
+
program.name("agent-loadout").description("One command to load out your terminal for agentic coding").version("1.0.0");
|
|
1586
1746
|
process.on("SIGINT", () => {
|
|
1587
1747
|
console.log(chalk10.dim("\n Cancelled."));
|
|
1588
1748
|
process.exit(0);
|
|
@@ -1713,7 +1873,7 @@ program.command("verify").alias("doctor").description("Check which tools are ins
|
|
|
1713
1873
|
});
|
|
1714
1874
|
program.command("list").description("Print the tool catalog").option("--json", "Output as JSON").option("--brewfile", "Output macOS Brewfile (darwin only)").action(async (opts) => {
|
|
1715
1875
|
if (opts.brewfile) {
|
|
1716
|
-
const { generateBrewfileFromCatalog } = await import("./catalog-
|
|
1876
|
+
const { generateBrewfileFromCatalog } = await import("./catalog-PTLCQEDW.js");
|
|
1717
1877
|
console.log(generateBrewfileFromCatalog());
|
|
1718
1878
|
return;
|
|
1719
1879
|
}
|
|
@@ -1740,4 +1900,38 @@ ${marker} ${chalk10.bold(preset.name)} \u2014 ${preset.description}`
|
|
|
1740
1900
|
}
|
|
1741
1901
|
console.log();
|
|
1742
1902
|
});
|
|
1903
|
+
program.command("skills").description("Write skill files for installed tools (fills gaps by default)").option("--force", "Rewrite skill files for all installed tools").action(async (opts) => {
|
|
1904
|
+
const platformInfo = await detectPlatform();
|
|
1905
|
+
const results = await verifyTools(TOOLS, platformInfo.platform);
|
|
1906
|
+
const installedIds = new Set(results.filter((r) => r.installed).map((r) => r.id));
|
|
1907
|
+
const installedTools = TOOLS.filter((t) => installedIds.has(t.id));
|
|
1908
|
+
if (installedTools.length === 0) {
|
|
1909
|
+
console.log(chalk10.dim(" No installed tools found."));
|
|
1910
|
+
return;
|
|
1911
|
+
}
|
|
1912
|
+
if (opts.force) {
|
|
1913
|
+
console.log(chalk10.dim(` Writing skills for ${installedTools.length} installed tools...`));
|
|
1914
|
+
const written2 = await writeSkills(installedTools);
|
|
1915
|
+
const targets2 = Object.keys(paths.skillTargets).join(", ");
|
|
1916
|
+
console.log(
|
|
1917
|
+
chalk10.green(` ${written2} skill files written to ${targets2} + ~/.agent-loadout/skills/`)
|
|
1918
|
+
);
|
|
1919
|
+
return;
|
|
1920
|
+
}
|
|
1921
|
+
console.log(chalk10.dim(` Scanning ${installedTools.length} installed tools...`));
|
|
1922
|
+
const missingIds = await findToolsMissingSkills(installedTools.map((t) => t.id));
|
|
1923
|
+
if (missingIds.length === 0) {
|
|
1924
|
+
console.log(chalk10.green(` \u2713 All ${installedTools.length} installed tools already have skill files.`));
|
|
1925
|
+
return;
|
|
1926
|
+
}
|
|
1927
|
+
const alreadyHave = installedTools.length - missingIds.length;
|
|
1928
|
+
console.log(chalk10.dim(` ${alreadyHave} already have skill files`));
|
|
1929
|
+
console.log(chalk10.dim(` Writing ${missingIds.length} missing: ${missingIds.join(", ")}`));
|
|
1930
|
+
const toolsToWrite = installedTools.filter((t) => missingIds.includes(t.id));
|
|
1931
|
+
const written = await writeSkills(toolsToWrite);
|
|
1932
|
+
const targets = Object.keys(paths.skillTargets).join(", ");
|
|
1933
|
+
console.log(
|
|
1934
|
+
chalk10.green(` ${written} skill files written to ${targets} + ~/.agent-loadout/skills/`)
|
|
1935
|
+
);
|
|
1936
|
+
});
|
|
1743
1937
|
program.parse();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-loadout",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "One command to load out your terminal for agentic coding",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit",
|
|
16
16
|
"brewfile": "tsx scripts/generate-brewfile.ts",
|
|
17
17
|
"prepack": "pnpm build && pnpm typecheck",
|
|
18
|
-
"version": "pnpm build && git add -A dist"
|
|
18
|
+
"version": "pnpm build && git add -A dist",
|
|
19
|
+
"test": "tsx --test src/**/*.test.ts"
|
|
19
20
|
},
|
|
20
21
|
"keywords": [
|
|
21
22
|
"cli",
|