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` | Fast code search |
25
- | [fd](https://github.com/sharkdp/fd) | `fd` | Fast file finder |
26
- | [jq](https://github.com/jqlang/jq) | `jq` | JSON processor |
27
- | [yq](https://github.com/mikefarah/yq) | `yq` | YAML processor |
28
- | [bat](https://github.com/sharkdp/bat) | `bat` | Cat with syntax highlighting |
29
- | [tree](https://en.wikipedia.org/wiki/Tree_(command)) | `tree` | Directory structure viewer |
30
- | [GitHub CLI](https://cli.github.com) | `gh` | PRs, issues, releases from the terminal |
31
- | [fzf](https://github.com/junegunn/fzf) | `fzf` | Fuzzy finder |
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 analysis for shell scripts |
39
- | [ast-grep](https://github.com/ast-grep/ast-grep) | `ast-grep` | Structural code search/replace |
40
- | [just](https://github.com/casey/just) | `just` | Command runner (agent-readable task menu) |
41
- | [grex](https://github.com/pemistahl/grex) | `grex` | Generate regex from examples |
42
- | [knip](https://github.com/webpro-nl/knip) | `knip` | Find unused code/deps in TS/JS |
43
- | [sd](https://github.com/chmln/sd) | `sd` | Simpler sed replacement |
44
- | [hyperfine](https://github.com/sharkdp/hyperfine) | `hyperfine` | CLI benchmarking |
45
- | [tokei](https://github.com/XAMPPRocky/tokei) | `tokei` | Code statistics |
46
- | [tldr](https://github.com/tldr-pages/tldr) | `tldr` | Quick man page summaries |
47
- | [biome](https://github.com/biomejs/biome) | `biome` | Lint + format JS/TS |
48
- | [difftastic](https://github.com/Wilfred/difftastic) | `difftastic` | Structural/AST diff |
49
- | [pandoc](https://github.com/jgm/pandoc) | `pandoc` | Universal document converter |
50
- | [duckdb](https://github.com/duckdb/duckdb) | `duckdb` | SQL analytics on CSV/JSON/Parquet files |
51
- | [htmlq](https://github.com/mgdm/htmlq) | `htmlq` | Extract content from HTML using CSS selectors |
52
- | [typos](https://github.com/crate-ci/typos) | `typos-cli` | Source code spell checker |
53
- | [gum](https://github.com/charmbracelet/gum) | `gum` | Interactive UI components for shell scripts |
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` | Audio/video Swiss army knife |
60
- | [exiftool](https://exiftool.org) | `exiftool` | Image/media metadata |
61
- | [ImageMagick](https://imagemagick.org) | `imagemagick` | Image transforms |
62
- | [svgo](https://github.com/svg/svgo) | `svgo` | SVG optimiser |
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` | Smarter cd |
70
- | [delta](https://github.com/dandavison/delta) | `git-delta` | Better git diffs |
71
- | [glow](https://github.com/charmbracelet/glow) | `glow` | Terminal markdown renderer |
72
- | [mise](https://github.com/jdx/mise) | `mise` | Runtime version manager |
73
- | [watchexec](https://github.com/watchexec/watchexec) | `watchexec` | Run commands on file change |
74
- | [mkcert](https://github.com/FiloSottile/mkcert) | `mkcert` | Local HTTPS certs |
75
- | [lazygit](https://github.com/jesseduffield/lazygit) | `lazygit` | TUI git client |
76
- | [dust](https://github.com/bootandy/dust) | `dust` | Disk usage tree |
77
- | [bottom](https://github.com/ClementTsang/bottom) | `bottom` | System monitor TUI |
78
- | [direnv](https://github.com/direnv/direnv) | `direnv` | Auto-load env vars per directory |
79
- | [procs](https://github.com/dalance/procs) | `procs` | Modern ps replacement with search |
80
- | [uv](https://github.com/astral-sh/uv) | `uv` | Fast Python package and env manager |
81
- | [hexyl](https://github.com/sharkdp/hexyl) | `hexyl` | Hex viewer with colour coding |
82
- | [taplo](https://github.com/tamasfe/taplo) | `taplo` | TOML toolkit (lint, format, query) |
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` | Vulnerability scanner |
89
- | [act](https://github.com/nektos/act) | `act` | Run GitHub Actions locally |
90
- | [gitleaks](https://github.com/gitleaks/gitleaks) | `gitleaks` | Secrets scanner |
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 client with JSON output |
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
 
@@ -6,7 +6,7 @@ import {
6
6
  getToolsByIds,
7
7
  getToolsByPreset,
8
8
  validateToolIds
9
- } from "./chunk-ZP6MY6KX.js";
9
+ } from "./chunk-JYIPAISH.js";
10
10
  export {
11
11
  PRESETS,
12
12
  TOOLS,
@@ -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-ZP6MY6KX.js";
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, not a replacement. Useful as input for rg, sd, or code.
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
- - JSON output: \`knip --reporter json\`
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.4.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-TX27KCL4.js");
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.4.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",