agent-loadout 1.0.2 → 1.2.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.
@@ -6,7 +6,7 @@ import {
6
6
  getToolsByIds,
7
7
  getToolsByPreset,
8
8
  validateToolIds
9
- } from "./chunk-JYIPAISH.js";
9
+ } from "./chunk-HDF2R3CI.js";
10
10
  export {
11
11
  PRESETS,
12
12
  TOOLS,
@@ -17,7 +17,13 @@ var PRESETS = [
17
17
  {
18
18
  id: "media",
19
19
  name: "Media",
20
- description: "Image, audio, and video pipeline tools",
20
+ description: "Audio, video, and image pipeline tools",
21
+ defaultOn: false
22
+ },
23
+ {
24
+ id: "design",
25
+ name: "Design",
26
+ description: "Visual asset workflows \u2014 SVG, colour, and image preview",
21
27
  defaultOn: false
22
28
  },
23
29
  {
@@ -359,6 +365,54 @@ var TOOLS = [
359
365
  tags: ["interactive shell", "tui prompt", "user input", "shell script ui", "confirm dialog"],
360
366
  seeAlso: ["fzf", "just"]
361
367
  },
368
+ {
369
+ id: "oha",
370
+ name: "oha",
371
+ description: "HTTP load tester with JSON output",
372
+ preset: "agent",
373
+ verify: "oha --version",
374
+ install: brewScoopCargo("oha", "oha"),
375
+ tags: ["load test", "http benchmark", "stress test", "api performance", "latency"],
376
+ seeAlso: ["xh", "hyperfine"]
377
+ },
378
+ {
379
+ id: "gron",
380
+ name: "gron",
381
+ description: "Flatten JSON for grepping",
382
+ preset: "agent",
383
+ verify: "gron --version",
384
+ install: {
385
+ darwin: [{ method: "brew", package: "gron" }],
386
+ linux: null,
387
+ win32: [{ method: "scoop", package: "gron" }]
388
+ },
389
+ tags: ["json grep", "flatten json", "json search", "json path", "json debug"],
390
+ seeAlso: ["jq", "fx", "duckdb"]
391
+ },
392
+ {
393
+ id: "lychee",
394
+ name: "lychee",
395
+ description: "Fast link checker",
396
+ preset: "agent",
397
+ verify: "lychee --version",
398
+ install: brewScoopCargo("lychee", "lychee"),
399
+ tags: ["link check", "broken links", "url validation", "documentation", "dead links"],
400
+ seeAlso: ["xh", "typos", "vale"]
401
+ },
402
+ {
403
+ id: "vale",
404
+ name: "vale",
405
+ description: "Prose linter for docs",
406
+ preset: "agent",
407
+ verify: "vale --version",
408
+ install: {
409
+ darwin: [{ method: "brew", package: "vale" }],
410
+ linux: null,
411
+ win32: [{ method: "scoop", package: "vale" }]
412
+ },
413
+ tags: ["prose lint", "writing style", "documentation quality", "grammar", "technical writing"],
414
+ seeAlso: ["typos", "lychee", "pandoc"]
415
+ },
362
416
  // ── Media ─────────────────────────────────────────────
363
417
  {
364
418
  id: "ffmpeg",
@@ -392,17 +446,104 @@ var TOOLS = [
392
446
  verify: "magick -version",
393
447
  install: universal("imagemagick"),
394
448
  tags: ["image resize", "image convert", "image transform", "thumbnail", "crop image"],
395
- seeAlso: ["exiftool", "svgo", "ffmpeg"]
449
+ seeAlso: ["exiftool", "vips", "ffmpeg"]
450
+ },
451
+ {
452
+ id: "vips",
453
+ name: "libvips",
454
+ description: "Fast image processing pipeline",
455
+ preset: "media",
456
+ verify: "vips --version",
457
+ install: {
458
+ darwin: [{ method: "brew", package: "vips" }],
459
+ linux: [{ method: "apt", package: "libvips-tools" }],
460
+ win32: null
461
+ },
462
+ tags: ["image processing", "batch images", "resize", "thumbnail", "sharp backend"],
463
+ seeAlso: ["imagemagick", "resvg"]
396
464
  },
465
+ // ── Design ─────────────────────────────────────────────
397
466
  {
398
467
  id: "svgo",
399
468
  name: "svgo",
400
469
  description: "SVG optimiser",
401
- preset: "media",
470
+ preset: "design",
402
471
  verify: "svgo --version",
403
472
  install: npmAll("svgo"),
404
473
  tags: ["svg optimize", "svg compress", "vector graphics", "svg minify", "icon optimize"],
405
- seeAlso: ["imagemagick"]
474
+ seeAlso: ["resvg", "imagemagick"]
475
+ },
476
+ {
477
+ id: "resvg",
478
+ name: "resvg",
479
+ description: "High-fidelity SVG renderer",
480
+ preset: "design",
481
+ verify: "resvg --version",
482
+ install: {
483
+ darwin: [{ method: "brew", package: "resvg" }],
484
+ linux: [{ method: "cargo", package: "resvg" }],
485
+ win32: null
486
+ },
487
+ tags: ["svg render", "svg to png", "vector graphics", "svg rasterize"],
488
+ seeAlso: ["svgo", "vips"]
489
+ },
490
+ {
491
+ id: "chafa",
492
+ name: "chafa",
493
+ description: "Image-to-ANSI art renderer",
494
+ preset: "design",
495
+ verify: "chafa --version",
496
+ install: {
497
+ darwin: [{ method: "brew", package: "chafa" }],
498
+ linux: [{ method: "apt", package: "chafa" }],
499
+ win32: null
500
+ },
501
+ tags: ["image preview", "terminal image", "ansi art", "image in terminal"],
502
+ seeAlso: ["vips", "imagemagick"]
503
+ },
504
+ {
505
+ id: "pastel",
506
+ name: "pastel",
507
+ description: "Color manipulation and palette tool",
508
+ preset: "design",
509
+ verify: "pastel --version",
510
+ install: brewScoopCargo("pastel", "pastel"),
511
+ tags: ["color", "palette", "design tokens", "color convert", "color inspect"],
512
+ seeAlso: ["chafa", "bat"]
513
+ },
514
+ {
515
+ id: "d2",
516
+ name: "d2",
517
+ description: "Declarative diagramming language",
518
+ preset: "design",
519
+ verify: "d2 version",
520
+ install: {
521
+ darwin: [{ method: "brew", package: "d2" }],
522
+ linux: null,
523
+ win32: [{ method: "scoop", package: "d2" }]
524
+ },
525
+ tags: ["diagram", "architecture diagram", "flowchart", "svg generation", "documentation"],
526
+ seeAlso: ["resvg", "svgo", "pandoc"]
527
+ },
528
+ {
529
+ id: "pngquant",
530
+ name: "pngquant",
531
+ description: "Lossy PNG compressor",
532
+ preset: "design",
533
+ verify: "pngquant --version",
534
+ install: universal("pngquant"),
535
+ tags: ["png compress", "image optimize", "lossy compression", "web assets"],
536
+ seeAlso: ["oxipng", "svgo", "imagemagick"]
537
+ },
538
+ {
539
+ id: "oxipng",
540
+ name: "oxipng",
541
+ description: "Lossless PNG optimizer",
542
+ preset: "design",
543
+ verify: "oxipng --version",
544
+ install: brewScoopCargo("oxipng", "oxipng"),
545
+ tags: ["png optimize", "lossless compression", "image optimize", "web assets"],
546
+ seeAlso: ["pngquant", "svgo", "imagemagick"]
406
547
  },
407
548
  // ── DX ────────────────────────────────────────────────
408
549
  {
@@ -587,6 +728,44 @@ var TOOLS = [
587
728
  tags: ["toml", "toml lint", "toml format", "config validation", "cargo toml"],
588
729
  seeAlso: ["yq", "biome"]
589
730
  },
731
+ {
732
+ id: "fx",
733
+ name: "fx",
734
+ description: "Interactive JSON viewer",
735
+ preset: "dx",
736
+ verify: "fx --version",
737
+ install: {
738
+ darwin: [{ method: "brew", package: "fx" }],
739
+ linux: null,
740
+ win32: [{ method: "scoop", package: "fx" }]
741
+ },
742
+ tags: ["json viewer", "interactive json", "json explorer", "json filter"],
743
+ seeAlso: ["jq", "bat"]
744
+ },
745
+ {
746
+ id: "csview",
747
+ name: "csview",
748
+ description: "CSV/TSV viewer with column alignment",
749
+ preset: "dx",
750
+ verify: "csview --version",
751
+ install: brewScoopCargo("csview", "csview"),
752
+ tags: ["csv", "tsv", "tabular data", "spreadsheet", "data viewer"],
753
+ seeAlso: ["duckdb", "jq"]
754
+ },
755
+ {
756
+ id: "asciinema",
757
+ name: "asciinema",
758
+ description: "Terminal session recorder",
759
+ preset: "dx",
760
+ verify: "asciinema --version",
761
+ install: {
762
+ darwin: [{ method: "brew", package: "asciinema" }],
763
+ linux: [{ method: "apt", package: "asciinema" }],
764
+ win32: null
765
+ },
766
+ tags: ["terminal recording", "demo", "screen capture", "documentation"],
767
+ seeAlso: ["bat", "glow"]
768
+ },
590
769
  // ── Security ──────────────────────────────────────────
591
770
  {
592
771
  id: "trivy",
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  getToolsByIds,
6
6
  getToolsByPreset,
7
7
  validateToolIds
8
- } from "./chunk-JYIPAISH.js";
8
+ } from "./chunk-HDF2R3CI.js";
9
9
 
10
10
  // src/index.ts
11
11
  import { Command } from "commander";
@@ -487,19 +487,25 @@ var jq_default = `
487
487
  Filter, transform, and extract data from JSON. Essential for working with API responses and config files.
488
488
 
489
489
  ## Trusted commands
490
- - Pretty print: \`cat file.json | jq .\`
491
- - Extract field: \`jq '.fieldName'\`
490
+ - Pretty print: \`jq . file.json\`
491
+ - Extract field: \`jq '.fieldName' file.json\`
492
492
  - Pick multiple fields: \`jq '{id, name, status}'\`
493
493
  - Map over array: \`jq '[.items[] | {id, name}]'\`
494
494
  - Count array: \`jq '.items | length'\`
495
495
  - Filter: \`jq '.items[] | select(.status == "active")'\`
496
496
  - Default for missing: \`jq '.name // "unknown"'\`
497
- - Validate JSON (fail on error): \`jq -e .\`
497
+ - Validate JSON (fail on error): \`jq -e . file.json\`
498
+
499
+ ## Output format
500
+ Pretty-printed JSON by default. Use \`-r\` for raw strings (no quotes). Use \`-c\` for compact single-line JSON. \`-e\` / \`--exit-status\` exits non-zero on null or false output.
501
+
502
+ ## Why it matters for agents
503
+ The standard tool for parsing API responses and config files in shell pipelines. \`-e\` flag makes null checks composable: \`jq -e '.token' response.json || exit 1\`.
498
504
 
499
505
  ## Gotchas
500
- - Use \`-e\` flag to get non-zero exit code on null/false results.
501
- - Use \`-r\` for raw string output (no quotes).
502
- - Missing fields return null, not an error. Use \`//\` for defaults.
506
+ - Use \`-r\` for raw string output (no quotes) \u2014 required when passing jq output to other commands.
507
+ - Missing fields return null, not an error. Use \`//\` for defaults: \`.name // "unknown"\`.
508
+ - Use \`-e\` to get non-zero exit code on null/false results \u2014 essential for conditional pipelines.
503
509
  `.trim();
504
510
 
505
511
  // src/skills/yq.ts
@@ -516,6 +522,9 @@ Same as jq but for YAML files. Query, filter, and transform YAML.
516
522
  - Update in place: \`yq -i '.version = "2.0"' file.yaml\`
517
523
  - Merge files: \`yq eval-all 'select(fi == 0) * select(fi == 1)' a.yaml b.yaml\`
518
524
 
525
+ ## Output format
526
+ YAML by default. \`--output-format=json\` (or \`-o json\`) for JSON. \`--output-format=props\` for Java properties format. \`-P\` (prettyPrint) for pretty YAML from any input format.
527
+
519
528
  ## Gotchas
520
529
  - There are multiple tools called yq. This refers to the Go version (mikefarah/yq), installed via brew.
521
530
  - Use \`-i\` carefully \u2014 it modifies files in place.
@@ -605,16 +614,29 @@ var fzf_default = `
605
614
  # fzf \u2014 Fuzzy finder
606
615
 
607
616
  ## When to use
608
- Interactive fuzzy search for files, command history, git branches \u2014 anything with a list.
617
+ Interactive fuzzy search for files, command history, git branches \u2014 anything with a list. Also useful non-interactively via \`--filter\`.
609
618
 
610
619
  ## Trusted commands
611
- - Find files: \`fzf\`
620
+ - Find files interactively: \`fzf\`
612
621
  - Pipe any list: \`git branch | fzf\`
613
622
  - Preview files: \`fzf --preview 'bat --color=always {}'\`
614
623
  - With fd: \`fd -t f | fzf\`
624
+ - Non-interactive filter (scripting): \`echo -e "foo
625
+ bar
626
+ baz" | fzf --filter "ba"\`
627
+ - Multi-select: \`fzf --multi\`
628
+
629
+ ## Output format
630
+ Selected line(s) written to stdout, newline-separated. Exits 130 if the user cancels (Ctrl-C or Esc) \u2014 use this to detect cancellation in scripts. In \`--filter\` mode, prints all lines that match the query and exits 0/1.
631
+
632
+ ## Why it matters for agents
633
+ \`--filter\` mode makes fzf a non-interactive fuzzy matcher \u2014 pipe a list in, get filtered results out without any TUI. Useful for selecting the best match from a known set without full regex. Exit code 130 on cancel is a reliable signal in pipelines.
615
634
 
616
635
  ## Gotchas
617
- - Primarily interactive \u2014 less useful for non-interactive agent workflows, but great when you're driving.
636
+ - Exit code 130 on cancel \u2014 check for this in scripts to detect user abort vs no results (exit 1).
637
+ - \`FZF_DEFAULT_COMMAND\` sets the default input source (e.g. \`export FZF_DEFAULT_COMMAND='fd -t f'\`).
638
+ - \`--filter\` runs non-interactively \u2014 pipe-safe for scripting without a TTY.
639
+ - \`--multi\` outputs one selected item per line; combine with \`xargs\` for batch operations.
618
640
  `.trim();
619
641
 
620
642
  // src/skills/shellcheck.ts
@@ -663,6 +685,9 @@ Search and replace code using syntax tree patterns instead of regex. Far safer f
663
685
  - Replacing with structural awareness (e.g. moving arguments)
664
686
  - Any refactor where brackets/nesting matters
665
687
 
688
+ ## Output format
689
+ \`file:line:col: matched text\` format by default. \`--json\` emits structured match objects with file, range, metavariable bindings, and matched text \u2014 use for programmatic processing of results.
690
+
666
691
  ## Gotchas
667
692
  - The binary is called \`sg\`, not \`ast-grep\`.
668
693
  - \`$ARG\` is a metavariable that matches any single node. \`$$$ARGS\` matches multiple.
@@ -704,6 +729,9 @@ Generate a regular expression from a set of example strings. Useful when you kno
704
729
  - Case insensitive: \`grex --ignore-case "Foo" "FOO" "foo"\`
705
730
  - Verbose regex: \`grex --verbose "foo-123" "bar-456"\`
706
731
 
732
+ ## Output format
733
+ Single regex string to stdout, ready to copy-paste or pipe. No trailing newline issues \u2014 capture with \`PATTERN=$(grex ...)\` and use directly.
734
+
707
735
  ## Gotchas
708
736
  - Output is a raw regex string \u2014 pipe directly into \`rg\`, \`sd\`, or save to a variable.
709
737
 
@@ -725,6 +753,9 @@ Detect unused files, exports, dependencies, and types in TypeScript/JavaScript p
725
753
  - Unused deps only: \`knip --include dependencies\`
726
754
  - Machine-readable with scopes: \`knip --reporter json --include files,exports,dependencies\`
727
755
 
756
+ ## Output format
757
+ Text report to stdout grouped by category (files, exports, dependencies). \`--reporter json\` emits a structured JSON object with arrays per category \u2014 pipe to \`jq\` to filter specific types. Exits 1 if issues found (CI-friendly).
758
+
728
759
  ## Why it matters for agents
729
760
  Identifies dead code before large refactors \u2014 agents can safely delete unused files and exports flagged by knip without breaking the build.
730
761
 
@@ -748,6 +779,9 @@ Find and replace in files. Like sed but with intuitive syntax \u2014 no escaping
748
779
  - Regex replace: \`sd 'v(\\d+)' 'version-$1' file.txt\`
749
780
  - Replace across files (with fd): \`fd -e ts -x sd 'old' 'new' {}\`
750
781
 
782
+ ## Output format
783
+ Rewrites the file in-place with no stdout output. Use \`-p\` / \`--preview\` to print a diff of what would change without modifying the file \u2014 safe to run first.
784
+
751
785
  ## Gotchas
752
786
  - Uses regex by default. Use \`-F\` for fixed/literal strings.
753
787
  - Modifies files in place when given a filename. Use \`-p\` to preview first.
@@ -772,12 +806,17 @@ Benchmark commands to compare performance. Runs commands multiple times and repo
772
806
  - Non-interactive + export: \`hyperfine --style basic --export-json results.json 'cmd1' 'cmd2'\`
773
807
  - With prepare step: \`hyperfine --prepare 'make clean' 'make build'\`
774
808
 
809
+ ## Output format
810
+ Human-readable table to stderr by default (mean, stddev, min, max per command). \`--export-json results.json\` writes structured JSON with full timing arrays. \`--style basic\` disables the progress bar and colour \u2014 required for clean CI logs.
811
+
775
812
  ## Why it matters for agents
776
813
  \`--export-json\` lets agents compare builds and commands quantitatively \u2014 structured results include mean, stddev, min, max per command.
777
814
 
778
815
  ## Gotchas
779
816
  - Wrap commands in quotes.
780
817
  - Use \`--warmup\` for commands that benefit from caching.
818
+ - Use \`--style basic\` in CI environments \u2014 disables the progress bar and colour codes that pollute CI logs.
819
+ - Use \`--shell=none\` to avoid shell startup overhead when benchmarking micro-operations.
781
820
  `.trim();
782
821
 
783
822
  // src/skills/tokei.ts
@@ -853,6 +892,8 @@ Read, write, and strip metadata (EXIF, IPTC, XMP) from images and media files.
853
892
  ## Gotchas
854
893
  - Field names are case-insensitive.
855
894
  - Use \`-json\` for structured output.
895
+ - By default, modifying metadata creates a \`filename_original\` backup file \u2014 use \`-overwrite_original\` to skip backups when you're confident in the operation.
896
+ - Without \`-overwrite_original\`, directories fill up with \`*_original\` files after batch operations \u2014 clean up with \`find . -name "*_original" -delete\`.
856
897
 
857
898
  ## Why it matters for agents
858
899
  \`-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.
@@ -877,7 +918,9 @@ Resize, crop, convert, and manipulate images from the command line.
877
918
  - \`magick mogrify\` modifies files in place. Use \`magick convert\` (or just \`magick in out\`) for safe transforms.
878
919
 
879
920
  ## Gotchas
880
- - The binary is \`magick\` (ImageMagick 7). Older versions used \`convert\`.
921
+ - The binary is \`magick\` (ImageMagick 7). Older versions used \`convert\` \u2014 don't use \`convert\` on macOS as it shadows a system binary.
922
+ - Always specify the output format explicitly in the filename \u2014 \`magick input.png output.jpg\` converts; omitting extension may produce unexpected formats.
923
+ - \`mogrify\` modifies files destructively in place \u2014 always test with \`magick convert\` on a single file first, or back up the originals.
881
924
 
882
925
  ## Why it matters for agents
883
926
  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.
@@ -920,6 +963,18 @@ List files with better defaults: colours, git status, icons, tree view built in.
920
963
  - Tree view: \`eza --tree\`
921
964
  - Tree with depth limit: \`eza --tree --level 2\`
922
965
  - All files (including hidden): \`eza -la\`
966
+ - Machine-readable tree: \`eza --tree --json\`
967
+
968
+ ## Output format
969
+ Plain text with aligned columns by default. \`--json\` emits a structured JSON tree of file entries with name, path, type, size, and permissions. \`--git\` adds a column showing each file's git status (untracked, modified, staged).
970
+
971
+ ## Why it matters for agents
972
+ \`eza --tree --json\` provides a structured file tree without spawning \`find\` or parsing \`ls\` output \u2014 agents can parse it directly to navigate unfamiliar repos. \`--git\` flag surfaces repo status per-file without running \`git status\`.
973
+
974
+ ## Gotchas
975
+ - Binary is named \`eza\`, not \`ls\` \u2014 aliasing \`ls=eza\` is common but optional.
976
+ - \`--icons\` requires a Nerd Font in your terminal; omit it in CI or non-Nerd-Font sessions.
977
+ - \`--git\` is noticeably slow on large repos (it calls libgit2 per entry) \u2014 avoid in hot loops.
923
978
  `.trim();
924
979
 
925
980
  // src/skills/zoxide.ts
@@ -929,15 +984,25 @@ var zoxide_default = `
929
984
  ## When to use
930
985
  Jump to frequently used directories without typing full paths. Learns from your usage.
931
986
 
932
- ## Setup
933
- Add to ~/.zshrc: \`eval "$(zoxide init zsh)"\`
934
- Then use \`z\` instead of \`cd\`: \`z projects\` jumps to your most-used match.
935
-
936
987
  ## Trusted commands
937
988
  - Jump: \`z partial-dirname\`
938
- - Interactive: \`zi\` (requires fzf)
989
+ - Interactive jump (requires fzf): \`zi\`
990
+ - Resolve best match (no cd): \`zoxide query <term>\`
991
+ - List all known paths with scores: \`zoxide query --list\`
939
992
  - Add path manually: \`zoxide add /path/to/dir\`
940
- - List known paths: \`zoxide query --list\`
993
+ - Remove a path: \`zoxide remove /path/to/dir\`
994
+
995
+ ## Output format
996
+ \`z\` emits nothing \u2014 it just changes the shell directory. \`zoxide query <term>\` prints the best-match absolute path as a plain string to stdout. \`zoxide query --list\` prints tab-separated score + path pairs, sorted by frecency.
997
+
998
+ ## Why it matters for agents
999
+ \`zoxide query <term>\` returns the best-match absolute path without navigating \u2014 use it for path resolution when you know a partial name but not the full path. Avoids hardcoding paths that differ between machines.
1000
+
1001
+ ## Gotchas
1002
+ - Must be initialised in shell config: \`eval "$(zoxide init zsh)"\` in ~/.zshrc. Without this, \`z\` is unavailable.
1003
+ - Frecency scores update on each \`z\` usage \u2014 a new directory won't rank highly until visited repeatedly.
1004
+ - \`zi\` is interactive (TUI with fzf) \u2014 use \`zoxide query\` for non-interactive scripting.
1005
+ - Shell integration required: zoxide works by hooking into \`cd\`; doesn't affect subshells unless initialised there too.
941
1006
  `.trim();
942
1007
 
943
1008
  // src/skills/delta.ts
@@ -962,6 +1027,8 @@ Add to ~/.gitconfig:
962
1027
 
963
1028
  ## Gotchas
964
1029
  - The brew package is called \`git-delta\`, but the binary is \`delta\`.
1030
+ - Configured via \`~/.gitconfig\` (not CLI flags at runtime) \u2014 add \`[delta]\` section with options like \`side-by-side = true\`, \`line-numbers = true\`.
1031
+ - Enable with \`git config --global core.pager delta\` \u2014 without this, delta is not invoked automatically.
965
1032
 
966
1033
  ## Why it matters for agents
967
1034
  Makes \`git diff\` and \`git log -p\` output readable \u2014 useful when agents are reviewing code changes or summarising commits for users.
@@ -977,12 +1044,21 @@ Render markdown files beautifully in the terminal. Great for reading READMEs, do
977
1044
  ## Trusted commands
978
1045
  - Render file: \`glow README.md\`
979
1046
  - Render with pager: \`glow -p README.md\`
980
- - Render from stdin: \`cat CHANGELOG.md | glow\`
1047
+ - Render from stdin: \`glow -\`
981
1048
  - Disable pager: \`glow --no-pager README.md\`
982
1049
  - Fixed width: \`glow --width 100 README.md\`
1050
+ - Plain output (no ANSI): \`glow --style=ascii README.md\`
1051
+
1052
+ ## Output format
1053
+ ANSI-formatted markdown to stdout by default \u2014 colours, bold, tables rendered for terminal display. Use \`--style=ascii\` to strip ANSI codes for piping into other tools or log capture. Activates a pager automatically for long content.
983
1054
 
984
1055
  ## 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.
1056
+ Renders markdown cleanly in terminal output \u2014 useful for displaying skill files, changelogs, or generated docs to users without raw markdown symbols. \`--style=ascii\` makes output safe to capture or pipe.
1057
+
1058
+ ## Gotchas
1059
+ - Pager activates by default for long content \u2014 use \`--no-pager\` in scripts to avoid blocking on stdin.
1060
+ - Output wraps at terminal width; use \`--width\` to control line length in narrow terminals.
1061
+ - Requires markdown-formatted input \u2014 feeding plain text will render as-is with no improvement.
986
1062
  `.trim();
987
1063
 
988
1064
  // src/skills/mise.ts
@@ -1025,7 +1101,9 @@ Watch files for changes and re-run a command. Language-agnostic alternative to n
1025
1101
 
1026
1102
  ## Gotchas
1027
1103
  - Use \`-e\` to filter by extension, \`-w\` to filter by directory.
1028
- - Use \`--restart\` for long-running processes (servers), otherwise it waits for completion.
1104
+ - Use \`--restart\` for long-running processes (servers) \u2014 without it, watchexec waits for the previous run to finish before starting the next.
1105
+ - Use \`--no-vcs-ignore\` to watch files listed in \`.gitignore\` \u2014 by default, gitignored files are excluded from watch events.
1106
+ - Debounce is applied by default (300ms) \u2014 rapid file saves trigger one execution, not many.
1029
1107
 
1030
1108
  ## Why it matters for agents
1031
1109
  Enables live-reload dev loops \u2014 agents can set up reactive pipelines (\`watchexec -e ts "pnpm typecheck"\`) and report on each change without polling.
@@ -1069,6 +1147,9 @@ Scan filesystems, container images, and code repos for known vulnerabilities.
1069
1147
  - CI gate (fail on findings): \`trivy fs --severity CRITICAL,HIGH --exit-code 1 --no-progress .\`
1070
1148
  - Offline (skip DB update): \`trivy fs --skip-update --format json .\`
1071
1149
 
1150
+ ## Output format
1151
+ Table to stdout by default (target, type, package, vulnerability ID, severity). \`--format json\` emits a structured CVE list with full details per vulnerability including fix version and CVSS score. \`--no-progress\` suppresses the spinner for clean CI output.
1152
+
1072
1153
  ## Why it matters for agents
1073
1154
  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.
1074
1155
 
@@ -1124,6 +1205,9 @@ Send HTTP requests from the terminal. Cleaner syntax than curl, JSON-first, colo
1124
1205
  - Headers only: \`xh -h get api.example.com\`
1125
1206
  - Download file: \`xh --download get example.com/file.zip\`
1126
1207
 
1208
+ ## Output format
1209
+ HTTP response body to stdout by default, pretty-printed and syntax-highlighted. Use \`-b\` for body only, \`-h\` for headers only. \`--print=hHbB\` controls what is shown (h=response headers, H=request headers, b=response body, B=request body). JSON bodies are pretty-printed automatically.
1210
+
1127
1211
  ## Why it matters for agents
1128
1212
  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.
1129
1213
 
@@ -1145,11 +1229,19 @@ Get practical, example-driven command summaries without reading full man pages.
1145
1229
  - Update the local cache: \`tldr --update\`
1146
1230
  - List all available pages: \`tldr --list\`
1147
1231
  - Search for a topic: \`tldr --search "compress files"\`
1232
+ - Raw output (no colour): \`tldr --raw rg\`
1233
+
1234
+ ## Output format
1235
+ Plain text formatted pages with ANSI colour codes. Use \`--raw\` or pipe through \`cat\` to strip colour. Each page is a short markdown document with a description and practical examples.
1236
+
1237
+ ## Why it matters for agents
1238
+ Faster lookup than man pages \u2014 community-maintained examples cover 90% of common usages in a scannable format. Use as the first-pass reference before falling back to \`--help\` or full man pages. \`--raw\` output is safe to include verbatim in agent context.
1148
1239
 
1149
1240
  ## Gotchas
1150
1241
  - First run requires internet to fetch the page cache. Run \`tldr --update\` after install.
1151
- - Not every obscure tool has a page \u2014 fall back to \`man\` or \`--help\` when missing.
1152
- - Pages are community-written; they cover common usage, not edge cases.
1242
+ - Pages are community-written; they cover common usage, not edge cases \u2014 missing for obscure tools.
1243
+ - \`tldr --update\` refreshes the local cache; stale caches may show outdated examples.
1244
+ - Not every tool has a page \u2014 fall back to \`man\` or \`--help\` when missing.
1153
1245
  `.trim();
1154
1246
 
1155
1247
  // src/skills/biome.ts
@@ -1167,6 +1259,9 @@ Fast, zero-config linter and formatter for JavaScript/TypeScript projects. Repla
1167
1259
  - Init config: \`biome init\`
1168
1260
  - Check single file: \`biome check src/index.ts\`
1169
1261
 
1262
+ ## Output format
1263
+ Text diagnostics to stderr with file, line, rule name, and description. \`--reporter=json\` emits structured linting output with arrays of diagnostics per file \u2014 parse with \`jq\` to filter by severity or rule.
1264
+
1170
1265
  ## Gotchas
1171
1266
  - Requires a \`biome.json\` config or \`--config-path\` flag; \`biome init\` generates a sensible default.
1172
1267
  - Not 100% compatible with all ESLint rules \u2014 check the migration guide when switching existing projects.
@@ -1190,10 +1285,14 @@ Compare files by syntax tree, not line-by-line. Understands code structure so re
1190
1285
  - Diff staged changes: \`GIT_EXTERNAL_DIFF=difft git diff --cached\`
1191
1286
  - Plain text mode (no syntax): \`difft --display side-by-side-show-both old.txt new.txt\`
1192
1287
 
1288
+ ## Output format
1289
+ Side-by-side ANSI diff to stdout. Not machine-parseable \u2014 designed for human review only. Falls back to line-by-line diff for unsupported file types. Terminal width determines column widths.
1290
+
1193
1291
  ## Gotchas
1194
1292
  - Supports most languages automatically via file extension detection.
1195
1293
  - Output is always side-by-side; pipe width matters \u2014 use a wide terminal.
1196
1294
  - Falls back to line-diff for unsupported file types.
1295
+ - Not suitable for programmatic diffing \u2014 use \`git diff --unified\` for machine-parseable output.
1197
1296
 
1198
1297
  ## Why it matters for agents
1199
1298
  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.
@@ -1303,6 +1402,9 @@ gitleaks protect --staged # pre-commit hook
1303
1402
  gitleaks detect # CI full scan
1304
1403
  \`\`\`
1305
1404
 
1405
+ ## Output format
1406
+ Text summary to stdout listing finding count and rule matches. \`--report-format json --report-path out.json\` writes structured findings with file, line, rule, commit, and matched secret fragment. Terminal output is human-readable only.
1407
+
1306
1408
  ## Why it matters for agents
1307
1409
  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
1410
 
@@ -1403,6 +1505,9 @@ Find and fix typos in source code, comments, docs, filenames, and variable names
1403
1505
  - Check specific file types: \`typos --type rust src/\`
1404
1506
  - Ignore a word: add to \`_typos.toml\`: \`[default.extend-words]\` \u2192 \`teh = "teh"\`
1405
1507
 
1508
+ ## Output format
1509
+ \`file:line:col: "typo" -> "correction"\` per finding to stdout. \`--format json\` emits structured output with file, line, column, typo, and correction fields \u2014 parse with \`jq\` for batch processing. Exits 1 if typos found.
1510
+
1406
1511
  ## Why it matters for agents
1407
1512
  Agents generate a lot of code. Running typos as a final pass catches misspellings in variable names, comments, and docs that slip past linters.
1408
1513
 
@@ -1576,6 +1681,9 @@ Scan code for security vulnerabilities, bugs, and anti-patterns across 30+ langu
1576
1681
  - Scan single file: \`semgrep scan --config auto path/to/file.ts\`
1577
1682
  - JSON output: \`semgrep scan --config auto --json\`
1578
1683
 
1684
+ ## Output format
1685
+ Text findings to stdout with file, line, rule ID, and matched code snippet. \`--json\` emits structured match objects with file, line range, severity, rule metadata, and matched text \u2014 pipe to \`jq\` for filtering.
1686
+
1579
1687
  ## Why it matters for agents
1580
1688
  Agents can run security and quality scans before committing code. Much broader language coverage than shellcheck or biome alone.
1581
1689
 
@@ -1635,6 +1743,329 @@ Agents verifying domain setups, debugging DNS issues, or checking propagation ge
1635
1743
  - JSON output with \`--json\` is ideal for piping to jq.
1636
1744
  `.trim();
1637
1745
 
1746
+ // src/skills/vips.ts
1747
+ var vips_default = `
1748
+ # libvips \u2014 Fast image processing
1749
+
1750
+ ## When to use
1751
+ Batch-process images with lower memory usage and higher speed than ImageMagick. Powers the Sharp Node.js library.
1752
+
1753
+ ## Trusted commands
1754
+ - Get image info: \`vipsheader image.jpg\`
1755
+ - Resize image: \`vips resize input.jpg output.jpg 0.5\`
1756
+ - Convert format: \`vips copy input.png output.webp\`
1757
+ - Create thumbnail: \`vips thumbnail input.jpg output.jpg 300\`
1758
+ - Extract area: \`vips crop input.jpg output.jpg 0 0 100 100\`
1759
+
1760
+ ## Why it matters for agents
1761
+ Agents processing images in bulk get significantly faster throughput with lower memory overhead than ImageMagick.
1762
+
1763
+ ## Gotchas
1764
+ - Commands use \`vips\` or \`vipsthumbnail\` \u2014 check both are available.
1765
+ - Output format is inferred from the file extension.
1766
+ - Streaming pipeline architecture means memory stays flat even for large images.
1767
+ `.trim();
1768
+
1769
+ // src/skills/resvg.ts
1770
+ var resvg_default = `
1771
+ # resvg \u2014 High-fidelity SVG renderer
1772
+
1773
+ ## When to use
1774
+ Render SVG files to PNG with accurate results. Handles complex SVGs that other tools misrender.
1775
+
1776
+ ## Trusted commands
1777
+ - Render SVG to PNG: \`resvg input.svg output.png\`
1778
+ - Set output width: \`resvg input.svg output.png -w 1024\`
1779
+ - Set output height: \`resvg input.svg output.png -h 768\`
1780
+ - Set DPI: \`resvg input.svg output.png --dpi 300\`
1781
+
1782
+ ## Why it matters for agents
1783
+ Agents generating social images, OG cards, or icons from SVG templates get pixel-perfect PNG output.
1784
+
1785
+ ## Gotchas
1786
+ - Rust-based \u2014 very fast but no interactive mode.
1787
+ - Pairs well with svgo: optimise SVG first, then render with resvg.
1788
+ - Supports most SVG features including filters and gradients.
1789
+ `.trim();
1790
+
1791
+ // src/skills/chafa.ts
1792
+ var chafa_default = `
1793
+ # chafa \u2014 Image-to-ANSI art renderer
1794
+
1795
+ ## When to use
1796
+ Preview images directly in the terminal as coloured text art. Useful when agents need to "see" an image without a GUI.
1797
+
1798
+ ## Trusted commands
1799
+ - Preview image: \`chafa image.png\`
1800
+ - Set output size: \`chafa -s 80x24 image.png\`
1801
+ - Use specific symbols: \`chafa --symbols block image.png\`
1802
+ - ASCII-only output: \`chafa --symbols ascii image.png\`
1803
+ - Preview with transparency: \`chafa --bg white image.png\`
1804
+
1805
+ ## Why it matters for agents
1806
+ Agents can inspect image outputs without leaving the terminal \u2014 verify screenshots, check generated graphics, review thumbnails.
1807
+
1808
+ ## Gotchas
1809
+ - Quality depends on terminal capabilities. Use \`--format symbols\` for widest compatibility.
1810
+ - Works with PNG, JPEG, GIF, WebP, and many other formats.
1811
+ - Pipe support: \`curl -s url | chafa -\`
1812
+ `.trim();
1813
+
1814
+ // src/skills/oha.ts
1815
+ var oha_default = `
1816
+ # oha \u2014 HTTP load tester
1817
+
1818
+ ## When to use
1819
+ Benchmark HTTP endpoints with concurrent requests and get structured JSON results. Complements xh (single requests) with load testing.
1820
+
1821
+ ## Trusted commands
1822
+ - Basic load test: \`oha -n 100 -c 10 http://localhost:3000\`
1823
+ - JSON output: \`oha -n 100 -c 10 --json http://localhost:3000\`
1824
+ - Set duration: \`oha -z 10s -c 50 http://localhost:3000\`
1825
+ - POST with body: \`oha -n 100 -m POST -d '{"key":"val"}' http://localhost:3000/api\`
1826
+ - Custom headers: \`oha -n 100 -H "Authorization: Bearer token" http://localhost:3000\`
1827
+
1828
+ ## Why it matters for agents
1829
+ Agents benchmarking API changes get structured latency percentiles, throughput, and error rates as JSON they can compare programmatically.
1830
+
1831
+ ## Gotchas
1832
+ - \`-n\` = number of requests, \`-c\` = concurrent connections, \`-z\` = duration.
1833
+ - JSON output with \`--json\` is ideal for piping to jq.
1834
+ - Rust-based \u2014 extremely low overhead compared to other load testers.
1835
+ `.trim();
1836
+
1837
+ // src/skills/fx.ts
1838
+ var fx_default = `
1839
+ # fx \u2014 Interactive JSON viewer
1840
+
1841
+ ## When to use
1842
+ Explore and filter JSON data interactively. Complements jq with a visual, navigable interface.
1843
+
1844
+ ## Trusted commands
1845
+ - View JSON file: \`fx data.json\`
1846
+ - Pipe JSON: \`cat data.json | fx\`
1847
+ - Apply JS expression: \`fx data.json '.items.map(x => x.name)'\`
1848
+ - Filter with dot notation: \`fx data.json '.users[0].email'\`
1849
+ - Reduce: \`fx data.json '.items.length'\`
1850
+
1851
+ ## Why it matters for agents
1852
+ Agents exploring unfamiliar API responses or config files can quickly navigate nested structures and extract paths for jq queries.
1853
+
1854
+ ## Gotchas
1855
+ - Accepts JavaScript expressions, not jq syntax.
1856
+ - Interactive mode requires a TTY \u2014 use expressions for scripting.
1857
+ - Reads from stdin or file argument.
1858
+ `.trim();
1859
+
1860
+ // src/skills/pastel.ts
1861
+ var pastel_default = `
1862
+ # pastel \u2014 Color manipulation tool
1863
+
1864
+ ## When to use
1865
+ Generate, convert, inspect, and manipulate colours from the terminal. Ideal for design token generation and palette work.
1866
+
1867
+ ## Trusted commands
1868
+ - Show color info: \`pastel color "#ff6b35"\`
1869
+ - Convert format: \`pastel format hsl "#ff6b35"\`
1870
+ - Generate palette: \`pastel gradient -n 5 "#ff6b35" "#1a1a2e"\`
1871
+ - Lighten colour: \`pastel lighten 0.2 "#ff6b35"\`
1872
+ - Darken colour: \`pastel darken 0.2 "#ff6b35"\`
1873
+ - Complementary: \`pastel complement "#ff6b35"\`
1874
+ - Mix colours: \`pastel mix "#ff6b35" "#1a1a2e"\`
1875
+
1876
+ ## Why it matters for agents
1877
+ Agents generating design tokens, theme files, or CSS variables can programmatically derive entire palettes from brand colours.
1878
+
1879
+ ## Gotchas
1880
+ - Supports hex, RGB, HSL, Lab, and named CSS colours.
1881
+ - Use \`pastel list\` to see all named colours.
1882
+ - Output can be piped \u2014 combine with sd for bulk colour replacement.
1883
+ `.trim();
1884
+
1885
+ // src/skills/csview.ts
1886
+ var csview_default = `
1887
+ # csview \u2014 CSV/TSV viewer
1888
+
1889
+ ## When to use
1890
+ View tabular data (CSV, TSV) with aligned columns and optional styling in the terminal.
1891
+
1892
+ ## Trusted commands
1893
+ - View CSV: \`csview data.csv\`
1894
+ - View TSV: \`csview -t data.tsv\`
1895
+ - Custom delimiter: \`csview -d ';' data.csv\`
1896
+ - No header row: \`csview --no-headers data.csv\`
1897
+ - Pipe from stdin: \`cat data.csv | csview\`
1898
+
1899
+ ## Why it matters for agents
1900
+ Agents inspecting exported data, build reports, or log tables get clean columnar output instead of comma-separated noise.
1901
+
1902
+ ## Gotchas
1903
+ - Rust-based \u2014 handles large files efficiently.
1904
+ - Use \`-t\` flag for TSV files.
1905
+ - For SQL-level queries on CSV, use duckdb instead.
1906
+ `.trim();
1907
+
1908
+ // src/skills/asciinema.ts
1909
+ var asciinema_default = `
1910
+ # asciinema \u2014 Terminal session recorder
1911
+
1912
+ ## When to use
1913
+ Record terminal sessions as lightweight asciicast files for documentation, demos, or bug reports.
1914
+
1915
+ ## Trusted commands
1916
+ - Record session: \`asciinema rec demo.cast\`
1917
+ - Play recording: \`asciinema play demo.cast\`
1918
+ - Record with idle limit: \`asciinema rec --idle-time-limit 2 demo.cast\`
1919
+ - Record specific command: \`asciinema rec --command "pnpm test" demo.cast\`
1920
+ - Upload to asciinema.org: \`asciinema upload demo.cast\`
1921
+
1922
+ ## Why it matters for agents
1923
+ Agents can record their terminal workflows for review, create reproducible demos, or capture test runs for debugging.
1924
+
1925
+ ## Gotchas
1926
+ - Recordings are text-based (not video) \u2014 tiny file sizes and searchable.
1927
+ - Set \`--idle-time-limit\` to trim long pauses.
1928
+ - \`.cast\` files can be embedded in web pages with the asciinema player.
1929
+ `.trim();
1930
+
1931
+ // src/skills/d2.ts
1932
+ var d2_default = `
1933
+ # d2 \u2014 Declarative diagramming language
1934
+
1935
+ ## When to use
1936
+ Generate architecture diagrams, flowcharts, sequence diagrams, and ERDs from text. Output SVG or PNG without a GUI.
1937
+
1938
+ ## Trusted commands
1939
+ - Render to SVG: \`d2 input.d2 output.svg\`
1940
+ - Render to PNG: \`d2 input.d2 output.png\`
1941
+ - Watch mode: \`d2 --watch input.d2 output.svg\`
1942
+ - Set theme: \`d2 --theme 200 input.d2 output.svg\`
1943
+ - Set layout engine: \`d2 --layout elk input.d2 output.svg\`
1944
+
1945
+ ## Why it matters for agents
1946
+ Agents generate architecture and flow diagrams from code analysis \u2014 describe structure in text, get publication-ready SVGs.
1947
+
1948
+ ## Gotchas
1949
+ - D2 files use a simple DSL: \`a -> b: label\`.
1950
+ - Supports sequence diagrams, classes, ERDs, and grid diagrams.
1951
+ - Multiple layout engines: dagre (default), elk, tala.
1952
+ `.trim();
1953
+
1954
+ // src/skills/pngquant.ts
1955
+ var pngquant_default = `
1956
+ # pngquant \u2014 Lossy PNG compressor
1957
+
1958
+ ## When to use
1959
+ Reduce PNG file size by 50-80% with minimal visual quality loss. Ideal for web assets, screenshots, and icons.
1960
+
1961
+ ## Trusted commands
1962
+ - Compress with default quality: \`pngquant image.png\`
1963
+ - Set quality range: \`pngquant --quality=65-80 image.png\`
1964
+ - Overwrite original: \`pngquant --force --ext .png image.png\`
1965
+ - Batch compress: \`pngquant --force --ext .png *.png\`
1966
+ - Output to stdout: \`pngquant - < input.png > output.png\`
1967
+
1968
+ ## Why it matters for agents
1969
+ Agents optimise generated screenshots, OG images, and icon sets \u2014 often cutting 60-70% off PNG sizes before deployment.
1970
+
1971
+ ## Gotchas
1972
+ - Lossy compression \u2014 visually near-identical but not bit-perfect.
1973
+ - Combine with oxipng for lossy + lossless pipeline.
1974
+ - Exit code 99 means quality target can't be met \u2014 widen the range.
1975
+ `.trim();
1976
+
1977
+ // src/skills/oxipng.ts
1978
+ var oxipng_default = `
1979
+ # oxipng \u2014 Lossless PNG optimizer
1980
+
1981
+ ## When to use
1982
+ Reduce PNG file size without any quality loss. Run after pngquant for maximum compression, or standalone for lossless-only workflows.
1983
+
1984
+ ## Trusted commands
1985
+ - Optimize in place: \`oxipng -o 4 image.png\`
1986
+ - Max compression: \`oxipng -o max image.png\`
1987
+ - Batch optimize: \`oxipng -o 4 -r ./images/\`
1988
+ - Strip metadata: \`oxipng -o 4 --strip safe image.png\`
1989
+ - Preserve original: \`oxipng -o 4 --out optimized.png image.png\`
1990
+
1991
+ ## Why it matters for agents
1992
+ Agents run oxipng as a final pass on all PNG assets \u2014 guaranteed size reduction with zero quality loss.
1993
+
1994
+ ## Gotchas
1995
+ - \`-o\` levels: 0 (fast) to max (slow). Level 4 is a good default.
1996
+ - \`--strip safe\` removes metadata without breaking rendering.
1997
+ - Rust-based \u2014 fast even on large batches.
1998
+ `.trim();
1999
+
2000
+ // src/skills/gron.ts
2001
+ var gron_default = `
2002
+ # gron \u2014 Flatten JSON for grepping
2003
+
2004
+ ## When to use
2005
+ Turn nested JSON into greppable assignment statements. Find paths in complex API responses without writing jq expressions.
2006
+
2007
+ ## Trusted commands
2008
+ - Flatten JSON: \`gron data.json\`
2009
+ - Flatten from URL: \`gron https://api.example.com/data\`
2010
+ - Pipe from stdin: \`cat data.json | gron\`
2011
+ - Grep for field: \`gron data.json | grep "name"\`
2012
+ - Unflatten back to JSON: \`gron data.json | grep "users" | gron --ungron\`
2013
+
2014
+ ## Why it matters for agents
2015
+ Agents exploring unfamiliar JSON APIs can grep for field names across deeply nested structures, then reconstruct filtered subsets.
2016
+
2017
+ ## Gotchas
2018
+ - Output format: \`json.users[0].name = "Alice";\` \u2014 each line is a full path.
2019
+ - \`--ungron\` converts flattened output back to valid JSON.
2020
+ - Combine with rg for regex filtering of JSON paths.
2021
+ `.trim();
2022
+
2023
+ // src/skills/lychee.ts
2024
+ var lychee_default = `
2025
+ # lychee \u2014 Fast link checker
2026
+
2027
+ ## When to use
2028
+ Scan documentation, markdown files, and websites for broken links. Catches dead URLs, redirects, and timeouts.
2029
+
2030
+ ## Trusted commands
2031
+ - Check markdown files: \`lychee "**/*.md"\`
2032
+ - Check a URL: \`lychee https://example.com\`
2033
+ - Check with config: \`lychee --config lychee.toml "**/*.md"\`
2034
+ - JSON output: \`lychee --format json "**/*.md"\`
2035
+ - Exclude patterns: \`lychee --exclude "localhost" "**/*.md"\`
2036
+
2037
+ ## Why it matters for agents
2038
+ Agents validate documentation links after edits \u2014 catch broken references before they ship to production.
2039
+
2040
+ ## Gotchas
2041
+ - Rust-based \u2014 extremely fast, checks links concurrently.
2042
+ - Use \`.lycheeignore\` or \`--exclude\` for known-flaky URLs.
2043
+ - Supports markdown, HTML, and plain text files.
2044
+ `.trim();
2045
+
2046
+ // src/skills/vale.ts
2047
+ var vale_default = `
2048
+ # vale \u2014 Prose linter for documentation
2049
+
2050
+ ## When to use
2051
+ Enforce writing style guides on documentation, README files, and technical content. Catches jargon, passive voice, and style violations.
2052
+
2053
+ ## Trusted commands
2054
+ - Lint a file: \`vale README.md\`
2055
+ - Lint a directory: \`vale docs/\`
2056
+ - JSON output: \`vale --output JSON README.md\`
2057
+ - Initialize config: \`vale sync\`
2058
+ - List installed styles: \`vale ls-config\`
2059
+
2060
+ ## Why it matters for agents
2061
+ Agents writing or editing documentation can validate prose quality against style guides \u2014 Google, Microsoft, or custom rules.
2062
+
2063
+ ## Gotchas
2064
+ - Requires a \`.vale.ini\` config file in the project root.
2065
+ - Install styles with \`vale sync\` after configuring packages.
2066
+ - Common styles: Google, Microsoft, write-good, proselint.
2067
+ `.trim();
2068
+
1638
2069
  // src/skills.ts
1639
2070
  var SKILL_CONTENT = {
1640
2071
  rg: rg_default,
@@ -1686,7 +2117,21 @@ var SKILL_CONTENT = {
1686
2117
  taplo: taplo_default,
1687
2118
  semgrep: semgrep_default,
1688
2119
  age: age_default,
1689
- doggo: doggo_default
2120
+ doggo: doggo_default,
2121
+ vips: vips_default,
2122
+ resvg: resvg_default,
2123
+ chafa: chafa_default,
2124
+ oha: oha_default,
2125
+ fx: fx_default,
2126
+ pastel: pastel_default,
2127
+ csview: csview_default,
2128
+ asciinema: asciinema_default,
2129
+ d2: d2_default,
2130
+ pngquant: pngquant_default,
2131
+ oxipng: oxipng_default,
2132
+ gron: gron_default,
2133
+ lychee: lychee_default,
2134
+ vale: vale_default
1690
2135
  };
1691
2136
  function skillFilename(toolId) {
1692
2137
  return `${toolId}.md`;
@@ -1912,7 +2357,7 @@ program.command("verify").alias("doctor").description("Check which tools are ins
1912
2357
  });
1913
2358
  program.command("list").description("Print the tool catalog").option("--json", "Output as JSON").option("--brewfile", "Output macOS Brewfile (darwin only)").action(async (opts) => {
1914
2359
  if (opts.brewfile) {
1915
- const { generateBrewfileFromCatalog } = await import("./catalog-PTLCQEDW.js");
2360
+ const { generateBrewfileFromCatalog } = await import("./catalog-7NB7RALT.js");
1916
2361
  console.log(generateBrewfileFromCatalog());
1917
2362
  return;
1918
2363
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-loadout",
3
- "version": "1.0.2",
3
+ "version": "1.2.0",
4
4
  "description": "One command to load out your terminal for agentic coding",
5
5
  "type": "module",
6
6
  "bin": {
@@ -25,8 +25,16 @@
25
25
  "developer-tools",
26
26
  "loadout"
27
27
  ],
28
- "author": "",
28
+ "author": "cluddy",
29
29
  "license": "MIT",
30
+ "homepage": "https://github.com/conorluddy/agent-loadout#readme",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/conorluddy/agent-loadout.git"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/conorluddy/agent-loadout/issues"
37
+ },
30
38
  "dependencies": {
31
39
  "@inquirer/prompts": "^8.3.0",
32
40
  "chalk": "^5.4.0",