hatch3r 1.7.0 → 1.7.5
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 +38 -12
- package/agents/hatch3r-a11y-auditor.md +4 -0
- package/agents/hatch3r-architect.md +5 -1
- package/agents/hatch3r-ci-watcher.md +4 -0
- package/agents/hatch3r-context-rules.md +4 -0
- package/agents/hatch3r-creator.md +4 -0
- package/agents/hatch3r-dependency-auditor.md +4 -0
- package/agents/hatch3r-devops.md +4 -0
- package/agents/hatch3r-docs-writer.md +4 -0
- package/agents/hatch3r-fixer.md +5 -1
- package/agents/hatch3r-handoff-loader.md +243 -0
- package/agents/hatch3r-handoff-preparer.md +134 -0
- package/agents/hatch3r-implementer.md +5 -1
- package/agents/hatch3r-learnings-loader.md +4 -0
- package/agents/hatch3r-lint-fixer.md +4 -0
- package/agents/hatch3r-perf-profiler.md +8 -0
- package/agents/hatch3r-researcher.md +5 -1
- package/agents/hatch3r-reviewer.md +92 -0
- package/agents/hatch3r-security-auditor.md +24 -0
- package/agents/hatch3r-test-writer.md +4 -0
- package/agents/modes/requirements-elicitation.md +5 -1
- package/agents/modes/similar-implementation.md +6 -0
- package/agents/modes/user-flows.md +76 -0
- package/agents/shared/quality-charter.md +129 -0
- package/agents/shared/user-question-protocol.md +95 -0
- package/commands/board/shared-azure-devops.md +2 -0
- package/commands/board/shared-github.md +17 -0
- package/commands/board/shared-gitlab.md +4 -0
- package/commands/hatch3r-board-fill.md +2 -1
- package/commands/hatch3r-board-pickup.md +1 -1
- package/commands/hatch3r-board-shared.md +21 -0
- package/commands/hatch3r-create.md +2 -0
- package/commands/hatch3r-handoff.md +126 -0
- package/commands/hatch3r-pr-resolve.md +672 -0
- package/commands/hatch3r-quick-change.md +5 -3
- package/commands/hatch3r-report.md +167 -0
- package/commands/hatch3r-revision.md +1 -1
- package/commands/hatch3r-workflow.md +3 -1
- package/dist/cli/index.js +3144 -979
- package/dist/cli/index.js.map +1 -1
- package/package.json +4 -2
- package/rules/hatch3r-accessibility-standards.md +21 -0
- package/rules/hatch3r-accessibility-standards.mdc +21 -0
- package/rules/hatch3r-agent-orchestration.md +32 -1
- package/rules/hatch3r-agent-orchestration.mdc +32 -1
- package/rules/hatch3r-ai-evals.md +158 -0
- package/rules/hatch3r-ai-evals.mdc +154 -0
- package/rules/hatch3r-ai-ux-patterns.md +131 -0
- package/rules/hatch3r-ai-ux-patterns.mdc +127 -0
- package/rules/hatch3r-api-design.md +67 -9
- package/rules/hatch3r-api-design.mdc +67 -9
- package/rules/hatch3r-api-versioning.md +119 -0
- package/rules/hatch3r-api-versioning.mdc +115 -0
- package/rules/hatch3r-auth-patterns.md +170 -0
- package/rules/hatch3r-auth-patterns.mdc +166 -0
- package/rules/hatch3r-component-conventions.md +30 -0
- package/rules/hatch3r-component-conventions.mdc +30 -0
- package/rules/hatch3r-container-hardening.md +131 -0
- package/rules/hatch3r-container-hardening.mdc +127 -0
- package/rules/hatch3r-contract-testing.md +117 -0
- package/rules/hatch3r-contract-testing.mdc +113 -0
- package/rules/hatch3r-deep-context.md +3 -1
- package/rules/hatch3r-deep-context.mdc +3 -1
- package/rules/hatch3r-dependency-management.md +73 -1
- package/rules/hatch3r-dependency-management.mdc +72 -0
- package/rules/hatch3r-design-system-detection.md +142 -0
- package/rules/hatch3r-design-system-detection.mdc +138 -0
- package/rules/hatch3r-event-schema-evolution.md +90 -0
- package/rules/hatch3r-event-schema-evolution.mdc +86 -0
- package/rules/hatch3r-handoff-readiness.md +45 -0
- package/rules/hatch3r-handoff-readiness.mdc +40 -0
- package/rules/hatch3r-i18n.md +13 -0
- package/rules/hatch3r-i18n.mdc +13 -0
- package/rules/hatch3r-iteration-summary.md +2 -0
- package/rules/hatch3r-iteration-summary.mdc +2 -0
- package/rules/hatch3r-migrations.md +61 -16
- package/rules/hatch3r-migrations.mdc +61 -16
- package/rules/hatch3r-observability-logging.md +1 -1
- package/rules/hatch3r-observability-logging.mdc +1 -1
- package/rules/hatch3r-observability-metrics.md +1 -1
- package/rules/hatch3r-observability-metrics.mdc +1 -1
- package/rules/hatch3r-observability-tracing-detail.md +1 -1
- package/rules/hatch3r-observability-tracing-detail.mdc +1 -1
- package/rules/hatch3r-observability-tracing.md +1 -1
- package/rules/hatch3r-observability-tracing.mdc +1 -1
- package/rules/hatch3r-observability.md +1 -0
- package/rules/hatch3r-observability.mdc +1 -0
- package/rules/hatch3r-operability.md +149 -0
- package/rules/hatch3r-operability.mdc +145 -0
- package/rules/hatch3r-passkey-server.md +181 -0
- package/rules/hatch3r-passkey-server.mdc +177 -0
- package/rules/hatch3r-progressive-delivery.md +120 -0
- package/rules/hatch3r-progressive-delivery.mdc +116 -0
- package/rules/hatch3r-resilience-patterns.md +154 -0
- package/rules/hatch3r-resilience-patterns.mdc +150 -0
- package/rules/hatch3r-secrets-management.md +29 -0
- package/rules/hatch3r-secrets-management.mdc +29 -0
- package/rules/hatch3r-testing.md +139 -43
- package/rules/hatch3r-testing.mdc +139 -43
- package/rules/hatch3r-ux-states-and-flows.md +149 -0
- package/rules/hatch3r-ux-states-and-flows.mdc +145 -0
- package/skills/hatch3r-a11y-audit/SKILL.md +14 -0
- package/skills/hatch3r-ai-feature/SKILL.md +134 -0
- package/skills/hatch3r-api-spec/SKILL.md +5 -0
- package/skills/hatch3r-architecture-review/SKILL.md +14 -0
- package/skills/hatch3r-bug-fix/SKILL.md +5 -0
- package/skills/hatch3r-ci-pipeline/SKILL.md +14 -0
- package/skills/hatch3r-cli-aichat/SKILL.md +84 -0
- package/skills/hatch3r-cli-ast-grep/SKILL.md +85 -0
- package/skills/hatch3r-cli-az-devops/SKILL.md +89 -0
- package/skills/hatch3r-cli-bat/SKILL.md +85 -0
- package/skills/hatch3r-cli-comby/SKILL.md +85 -0
- package/skills/hatch3r-cli-csvkit/SKILL.md +84 -0
- package/skills/hatch3r-cli-delta/SKILL.md +86 -0
- package/skills/hatch3r-cli-difftastic/SKILL.md +84 -0
- package/skills/hatch3r-cli-docker/SKILL.md +89 -0
- package/skills/hatch3r-cli-duckdb/SKILL.md +84 -0
- package/skills/hatch3r-cli-fd/SKILL.md +85 -0
- package/skills/hatch3r-cli-fzf/SKILL.md +84 -0
- package/skills/hatch3r-cli-gh/SKILL.md +90 -0
- package/skills/hatch3r-cli-glab/SKILL.md +89 -0
- package/skills/hatch3r-cli-jq/SKILL.md +85 -0
- package/skills/hatch3r-cli-lazygit/SKILL.md +78 -0
- package/skills/hatch3r-cli-llm/SKILL.md +84 -0
- package/skills/hatch3r-cli-miller/SKILL.md +84 -0
- package/skills/hatch3r-cli-mods/SKILL.md +84 -0
- package/skills/hatch3r-cli-overview/SKILL.md +60 -0
- package/skills/hatch3r-cli-playwright/SKILL.md +89 -0
- package/skills/hatch3r-cli-podman/SKILL.md +84 -0
- package/skills/hatch3r-cli-ripgrep/SKILL.md +85 -0
- package/skills/hatch3r-cli-rtk/SKILL.md +91 -0
- package/skills/hatch3r-cli-sd/SKILL.md +85 -0
- package/skills/hatch3r-cli-stagehand/SKILL.md +79 -0
- package/skills/hatch3r-cli-taplo/SKILL.md +84 -0
- package/skills/hatch3r-cli-xsv/SKILL.md +89 -0
- package/skills/hatch3r-cli-yq/SKILL.md +85 -0
- package/skills/hatch3r-cli-zstd/SKILL.md +85 -0
- package/skills/hatch3r-context-health/SKILL.md +14 -0
- package/skills/hatch3r-cost-tracking/SKILL.md +14 -0
- package/skills/hatch3r-customize/SKILL.md +14 -0
- package/skills/hatch3r-dep-audit/SKILL.md +14 -0
- package/skills/hatch3r-design-system-detect/SKILL.md +162 -0
- package/skills/hatch3r-feature/SKILL.md +2 -0
- package/skills/hatch3r-gh-agentic-workflows/SKILL.md +13 -0
- package/skills/hatch3r-handoff-prepare/SKILL.md +160 -0
- package/skills/hatch3r-handoff-resume/SKILL.md +171 -0
- package/skills/hatch3r-incident-response/SKILL.md +14 -0
- package/skills/hatch3r-issue-workflow/SKILL.md +5 -0
- package/skills/hatch3r-logical-refactor/SKILL.md +14 -0
- package/skills/hatch3r-migration/SKILL.md +14 -0
- package/skills/hatch3r-observability-verify/SKILL.md +133 -0
- package/skills/hatch3r-perf-audit/SKILL.md +14 -0
- package/skills/hatch3r-pr-creation/SKILL.md +14 -0
- package/skills/hatch3r-qa-validation/SKILL.md +18 -0
- package/skills/hatch3r-recipe/SKILL.md +14 -0
- package/skills/hatch3r-refactor/SKILL.md +14 -0
- package/skills/hatch3r-release/SKILL.md +14 -0
- package/skills/hatch3r-reliability-verify/SKILL.md +144 -0
- package/skills/hatch3r-ui-ux-verify/SKILL.md +136 -0
- package/skills/hatch3r-visual-refactor/SKILL.md +15 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-aichat
|
|
3
|
+
description: "Multi-provider LLM chat CLI with RAG and session memory. Use when RAG-enabled multi-provider conversational shell with saved session history; invoke `aichat`. Streams tokens to stdout so downstream `grep`/`tee` consumers see partial results."
|
|
4
|
+
tags: ["cli-tools", "ai", "opt-in"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: aichat
|
|
10
|
+
bin: aichat
|
|
11
|
+
tier: 3
|
|
12
|
+
category: ai
|
|
13
|
+
homepage: https://github.com/sigoden/aichat
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# aichat
|
|
17
|
+
|
|
18
|
+
Multi-provider LLM chat CLI with RAG and session memory
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `aichat` when the task is in the **ai** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
aichat 'explain this commit message' < commit.txt
|
|
33
|
+
```
|
|
34
|
+
One-shot prompt with stdin as the input payload.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
aichat -r 'tech writer' 'rewrite as bullets' < draft.md
|
|
38
|
+
```
|
|
39
|
+
Apply a saved role (`~/.config/aichat/roles/tech-writer.md`) as the system prompt.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
aichat --model claude-3-5-sonnet -e 'summarize' README.md
|
|
43
|
+
```
|
|
44
|
+
Pin the model and pass a file argument directly — `-e` executes the prompt non-interactively.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
aichat --rag mydocs 'how do we configure auth?'
|
|
48
|
+
```
|
|
49
|
+
Query a pre-built RAG index over local documentation — runs embeddings locally, no remote indexer needed.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
aichat --session refactor-plan
|
|
53
|
+
```
|
|
54
|
+
Resume a named session with persisted history — useful for multi-turn refinement loops.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- **Scripted Unix-style pipelines with a rich plugin ecosystem:** `hatch3r-cli-llm` (tier 2) has plugin support for templates, embeddings, and provider adapters not in aichat.
|
|
59
|
+
- **Offline-only / fully local inference:** aichat supports Ollama backends but adds an unneeded abstraction; talk to Ollama's HTTP API directly via `curl`.
|
|
60
|
+
- **CI batch tasks that benefit from `mods` pipe semantics:** `hatch3r-cli-mods` reads a single piped payload then exits — simpler for one-shot transforms.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `hatch3r-cli-llm` (tier 2) | Plugin ecosystem, templates, embeddings, structured CI use |
|
|
67
|
+
| `hatch3r-cli-mods` (tier 3) | Single-piped-payload transforms, Unix-pipe ergonomics |
|
|
68
|
+
| Raw `curl` against Ollama / provider HTTP API | Maximum control, no client-side caching or session state |
|
|
69
|
+
|
|
70
|
+
## Detection / Install
|
|
71
|
+
|
|
72
|
+
Verify with:
|
|
73
|
+
```bash
|
|
74
|
+
command -v aichat
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Install (mac):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# brew
|
|
81
|
+
brew install aichat
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Homepage: https://github.com/sigoden/aichat
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-ast-grep
|
|
3
|
+
description: "Structural search and rewrite for code via AST patterns. Use when Tree-sitter AST pattern rewrites scoped to a single grammar; invoke `sg`. Grammar-aware: queries are written in the same syntax as the language being edited."
|
|
4
|
+
tags: ["cli-tools", "search", "core"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: ast-grep
|
|
10
|
+
bin: sg
|
|
11
|
+
tier: 1
|
|
12
|
+
category: search
|
|
13
|
+
homepage: https://ast-grep.github.io/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# ast-grep
|
|
17
|
+
|
|
18
|
+
Structural search and rewrite for code via AST patterns
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `sg` when the task is in the **search** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
sg --pattern 'console.log($MSG)' --lang ts src/
|
|
33
|
+
```
|
|
34
|
+
Pattern with a meta-variable (`$MSG`) — matches any `console.log` call regardless of whitespace or argument shape.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
sg run -p 'await $FN()' -r 'await ($FN()).catch(e => log(e))' --update-all src/
|
|
38
|
+
```
|
|
39
|
+
Structural rewrite: every bare `await $FN()` gains a `.catch` arm; `--update-all` writes in place.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sg scan --config sgconfig.yml
|
|
43
|
+
```
|
|
44
|
+
Runs a rule pack from `sgconfig.yml` — repo-pinned lints that survive regex edits.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
sg test --update-snapshots
|
|
48
|
+
```
|
|
49
|
+
Snapshot-style tests for rules — keeps rule packs honest as the codebase shifts.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
sg --pattern 'function $NAME($$$ARGS) { $$$BODY }' --lang ts --json src/
|
|
53
|
+
```
|
|
54
|
+
Triple-`$` captures the rest of an argument list or body — JSON output feeds `jq` for downstream filtering.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- Don't reach for `sg` when the target is plain literal text (a TODO marker, a string in CHANGELOG). Reach for `ripgrep` (`hatch3r-cli-ripgrep`) — orders of magnitude faster on raw matching.
|
|
59
|
+
- Don't use `sg` for cross-language SAST policy work (e.g., taint analysis). Reach for `semgrep`, which has rule packs, CI integrations, and a security-audit lineage.
|
|
60
|
+
- Don't reach for `sg` on languages it does not parse (Bash, Makefile, INI). The pattern compiler will reject the request — fall back to `ripgrep` + `sd`.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `ripgrep` (`hatch3r-cli-ripgrep`) | Literal regex over text — ast-grep is overkill if you do not need structural matching. |
|
|
67
|
+
| `semgrep` | Security/policy rule packs, multi-language SAST, central rule registry. |
|
|
68
|
+
| `comby` | Multi-language structural rewrites with template syntax and no per-language plugin. |
|
|
69
|
+
| Editor refactor / language server | Authoritative rename or extract-method with full type information. |
|
|
70
|
+
|
|
71
|
+
## Detection / Install
|
|
72
|
+
|
|
73
|
+
Verify with:
|
|
74
|
+
```bash
|
|
75
|
+
command -v sg
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Install (mac):
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# brew
|
|
82
|
+
brew install ast-grep
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Homepage: https://ast-grep.github.io/
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-az-devops
|
|
3
|
+
description: "Azure DevOps work items, repos, pipelines via az CLI extension. Use when Azure DevOps work-item edits, repo pushes, and pipeline runs; invoke `az`. Authenticates via the platform's native token mechanism (OAuth / PAT)."
|
|
4
|
+
tags: ["cli-tools", "forge"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: az-devops
|
|
10
|
+
bin: az
|
|
11
|
+
tier: 2
|
|
12
|
+
category: forge
|
|
13
|
+
homepage: https://learn.microsoft.com/en-us/cli/azure/azure-devops
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# az-devops
|
|
17
|
+
|
|
18
|
+
Azure DevOps work items, repos, pipelines via az CLI extension
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `az` when the task is in the **forge** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
az repos pr list --status active --query '[].pullRequestId' --output tsv
|
|
33
|
+
```
|
|
34
|
+
Print active PR IDs as a newline-separated list; `--query` (JMESPath) trims the payload before stdout.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
az repos pr show --id 42 --output json
|
|
38
|
+
```
|
|
39
|
+
Fetch a single PR's metadata as JSON for downstream `jq` filters.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
az boards work-item show --id 4242 --output json
|
|
43
|
+
```
|
|
44
|
+
Pull a work item (bug, task, user story) by numeric ID; one round-trip, structured output.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
az boards work-item create --type Bug --title 'flaky import test' --description 'Repro: ...'
|
|
48
|
+
```
|
|
49
|
+
Open a work item from CI or an agent; the new ID is printed on stdout.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
az pipelines run --name CI --branch main
|
|
53
|
+
```
|
|
54
|
+
Queue a pipeline run on a named definition; returns the build ID for polling.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
az artifacts universal download --feed myfeed --name pkg --version 1.0.0 --path .
|
|
58
|
+
```
|
|
59
|
+
Fetch a Universal Package into the cwd — avoids the larger Azure Artifacts MCP equivalents.
|
|
60
|
+
|
|
61
|
+
## Wrong Choice When
|
|
62
|
+
|
|
63
|
+
- The repo is on GitHub — use `gh` (Tier 1); `az repos` will return 404s without a configured Azure project.
|
|
64
|
+
- The repo is on GitLab — use `glab` (Tier 2 sibling); same operations, native auth.
|
|
65
|
+
- You only need to download a public release asset — `curl` to the artifact URL is one hop.
|
|
66
|
+
|
|
67
|
+
## Alternatives
|
|
68
|
+
|
|
69
|
+
| Tool | When to prefer |
|
|
70
|
+
|------|----------------|
|
|
71
|
+
| `gh` | GitHub-hosted code or issues. |
|
|
72
|
+
| `glab` | GitLab-hosted code or issues. |
|
|
73
|
+
| `curl` + `AZURE_DEVOPS_PAT` | Endpoint not surfaced by `az devops`; need raw header control. |
|
|
74
|
+
|
|
75
|
+
## Detection / Install
|
|
76
|
+
|
|
77
|
+
Verify with:
|
|
78
|
+
```bash
|
|
79
|
+
command -v az
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Install (mac):
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# brew
|
|
86
|
+
brew install azure-cli && az extension add --name azure-devops
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Homepage: https://learn.microsoft.com/en-us/cli/azure/azure-devops
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-bat
|
|
3
|
+
description: "cat clone with syntax highlighting and git integration. Use when scrolling one source file with syntax colours, line numbers, and header decorations; invoke `bat`. Prints to a terminal pager (`less`-compatible) for quick visual inspection."
|
|
4
|
+
tags: ["cli-tools", "view", "core"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: bat
|
|
10
|
+
bin: bat
|
|
11
|
+
tier: 1
|
|
12
|
+
category: view
|
|
13
|
+
homepage: https://github.com/sharkdp/bat
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# bat
|
|
17
|
+
|
|
18
|
+
cat clone with syntax highlighting and git integration
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `bat` when the task is in the **view** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bat src/cli/commands/init.ts
|
|
33
|
+
```
|
|
34
|
+
Default view — syntax-highlighted output with line numbers and git modification markers.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bat --plain --line-range 50:100 src/adapters/cursor.ts
|
|
38
|
+
```
|
|
39
|
+
`--plain` strips decorations; range syntax mimics `sed -n '50,100p'` without invoking sed.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
bat --paging=never -A whitespace.txt
|
|
43
|
+
```
|
|
44
|
+
`-A` reveals tabs, trailing spaces, and CRLF — handy when debugging YAML indentation failures.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git diff | bat --language=diff
|
|
48
|
+
```
|
|
49
|
+
Force a language when stdin lacks a filename hint — `--language=diff` produces a unified-diff colorscheme.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
fd '\.md$' governance/ -x bat --style=plain
|
|
53
|
+
```
|
|
54
|
+
Pipeline: list files with `fd`, render each through `bat` with no header — bulk preview of canonical content.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- Don't use `bat` against binary files (`.zst`, executables); it prints the bytes verbatim and pollutes the terminal. Reach for `xxd | bat --language=hex` or `file <path>` first.
|
|
59
|
+
- Don't pipe `bat` into machine consumers in a strict POSIX environment — ANSI escapes and `--paging=auto` defaults break grep/awk chains. Reach for plain `cat`.
|
|
60
|
+
- Don't reach for `bat` to compare two files; it views one at a time. Reach for `delta` (`hatch3r-cli-delta`) or `diff -u | bat --language=diff`.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `cat` (POSIX) | Strict scripted pipelines, embedded systems, environments where escape sequences break consumers. |
|
|
67
|
+
| `less` | Paginate raw text without coloring; large files where rebuilding the syntax tree is wasted work. |
|
|
68
|
+
| `delta` (`hatch3r-cli-delta`) | Diff view rather than single-file render. |
|
|
69
|
+
| `xxd \| bat --language=hex` | Inspect binary payloads with column-aligned hex + ASCII. |
|
|
70
|
+
|
|
71
|
+
## Detection / Install
|
|
72
|
+
|
|
73
|
+
Verify with:
|
|
74
|
+
```bash
|
|
75
|
+
command -v bat
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Install (mac):
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# brew
|
|
82
|
+
brew install bat
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Homepage: https://github.com/sharkdp/bat
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-comby
|
|
3
|
+
description: "Structural search and replace across languages with declarative patterns. Use when declarative pattern match-and-rewrite spanning mixed-language repositories; invoke `comby`. Language-agnostic: a single `{:[hole]}` template works against any of 30+ grammars."
|
|
4
|
+
tags: ["cli-tools", "search", "opt-in"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: comby
|
|
10
|
+
bin: comby
|
|
11
|
+
tier: 3
|
|
12
|
+
category: search
|
|
13
|
+
homepage: https://comby.dev/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# comby
|
|
17
|
+
|
|
18
|
+
Structural search and replace across languages with declarative patterns
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `comby` when the task is in the **search** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
comby 'console.log(:[arg])' 'logger.info(:[arg])' -i src/
|
|
33
|
+
```
|
|
34
|
+
Rewrite every `console.log(...)` to `logger.info(...)` in `src/`, preserving the captured argument.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
comby 'if :[cond] { return :[ret] }' 'if (:[cond]) return :[ret];' -i .
|
|
38
|
+
```
|
|
39
|
+
Reshape brace-style returns into single-line returns — works across Go, Rust, TypeScript, Java.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
comby -config patterns.toml -d src/
|
|
43
|
+
```
|
|
44
|
+
Run a batch of templated rewrites from a TOML config (each `[[match]]` entry holds a match/rewrite pair).
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
comby 'TODO(:[author]): :[msg]' 'FIXME(:[author]): :[msg]' -i -extensions js,ts,go
|
|
48
|
+
```
|
|
49
|
+
Restrict the rewrite to specific file extensions.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
comby 'foo(:[args])' 'bar(:[args])' -stats -d src/
|
|
53
|
+
```
|
|
54
|
+
Preview-only run with summary stats — no files written. Useful before a destructive rewrite.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- **Security/SAST policy enforcement:** semgrep has a vetted rule registry, dataflow analysis, and CI-grade reporting — comby's surface-level templates miss taint flow.
|
|
59
|
+
- **Pure-text find/replace (no balanced delimiters):** `hatch3r-cli-ripgrep` + `hatch3r-cli-sd` (both tier 1) are faster and have no template parser overhead.
|
|
60
|
+
- **Language-precise refactors that need type info:** `hatch3r-cli-ast-grep` (tier 1) operates on the parse tree; comby is brace-aware but not type-aware.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `hatch3r-cli-ast-grep` (tier 1) | Tree-sitter-backed, language-precise rewrites |
|
|
67
|
+
| `hatch3r-cli-sd` (tier 1) | Plain literal-text replacement, no template syntax |
|
|
68
|
+
| semgrep | SAST rule registry, taint analysis, CI integration |
|
|
69
|
+
| `hatch3r-cli-ripgrep` (tier 1) | Read-only inventory before deciding on a rewrite tool |
|
|
70
|
+
|
|
71
|
+
## Detection / Install
|
|
72
|
+
|
|
73
|
+
Verify with:
|
|
74
|
+
```bash
|
|
75
|
+
command -v comby
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Install (mac):
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# brew
|
|
82
|
+
brew install comby
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Homepage: https://comby.dev/
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-csvkit
|
|
3
|
+
description: "csvkit — Python CSV toolkit (csvlook, csvsql, csvjoin, csvstat). Use when Python-powered CSV toolkit covering csvlook, csvsql, csvjoin, csvstat; invoke `csvlook`. Streams records lazily; works on datasets that exceed available RAM."
|
|
4
|
+
tags: ["cli-tools", "data", "opt-in"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: csvkit
|
|
10
|
+
bin: csvlook
|
|
11
|
+
tier: 3
|
|
12
|
+
category: data
|
|
13
|
+
homepage: https://csvkit.readthedocs.io/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# csvkit
|
|
17
|
+
|
|
18
|
+
csvkit — Python CSV toolkit (csvlook, csvsql, csvjoin, csvstat)
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `csvlook` when the task is in the **data** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
csvcut -c name,email records.csv
|
|
33
|
+
```
|
|
34
|
+
Project two named columns from a CSV — column-name addressing instead of positional.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
csvstat records.csv
|
|
38
|
+
```
|
|
39
|
+
One-shot column-by-column summary: type, count, null %, min/max/mean. Drop-in EDA.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
csvgrep -c status -m active records.csv
|
|
43
|
+
```
|
|
44
|
+
Row filter where column `status` matches literal `active`.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
csvjoin -c id a.csv b.csv
|
|
48
|
+
```
|
|
49
|
+
Join two CSVs on column `id` (inner join by default; `--left` / `--outer` available).
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
csvsql --query 'SELECT name FROM data WHERE active = 1' data.csv
|
|
53
|
+
```
|
|
54
|
+
Run SQL directly against a CSV using an in-memory SQLite — no schema file required.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- **Files larger than ~1M rows:** csvkit is Python-startup-heavy; `hatch3r-cli-duckdb` (tier 2) loads and queries the same file in a fraction of the time.
|
|
59
|
+
- **Production SQL workloads:** csvsql is convenient but evaluates against in-memory SQLite — use a real database for anything served.
|
|
60
|
+
- **Single-column slice or count under a few hundred MB:** `hatch3r-cli-xsv` (tier 2) is faster with lower memory pressure.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `hatch3r-cli-duckdb` (tier 2) | Large files, analytical SQL, Parquet, multi-file joins |
|
|
67
|
+
| `hatch3r-cli-xsv` (tier 2) | Fast column slicing, sampling, deduping |
|
|
68
|
+
| `hatch3r-cli-miller` (tier 3) | Streaming put/filter DSL, format conversion |
|
|
69
|
+
|
|
70
|
+
## Detection / Install
|
|
71
|
+
|
|
72
|
+
Verify with:
|
|
73
|
+
```bash
|
|
74
|
+
command -v csvlook
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Install (mac):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# pipx
|
|
81
|
+
pipx install csvkit
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Homepage: https://csvkit.readthedocs.io/
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-delta
|
|
3
|
+
description: "Syntax-highlighting git diff pager. Use when viewing unified git diffs with side-by-side syntax colourised hunks; invoke `delta`. Replaces the legacy `less`-based diff renderer with terminal-native ANSI colour blocks."
|
|
4
|
+
tags: ["cli-tools", "git", "core"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: delta
|
|
10
|
+
bin: delta
|
|
11
|
+
tier: 1
|
|
12
|
+
category: git
|
|
13
|
+
homepage: https://github.com/dandavison/delta
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# delta
|
|
17
|
+
|
|
18
|
+
Syntax-highlighting git diff pager
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `delta` when the task is in the **git** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
git config --global core.pager delta
|
|
33
|
+
git config --global interactive.diffFilter 'delta --color-only'
|
|
34
|
+
```
|
|
35
|
+
Enables delta as the diff pager for `git diff`, `git log -p`, and interactive add/stash.
|
|
36
|
+
|
|
37
|
+
```ini
|
|
38
|
+
# ~/.gitconfig
|
|
39
|
+
[delta]
|
|
40
|
+
side-by-side = true
|
|
41
|
+
line-numbers = true
|
|
42
|
+
syntax-theme = Monokai Extended
|
|
43
|
+
navigate = true
|
|
44
|
+
```
|
|
45
|
+
Side-by-side panes with line numbers and `n`/`N` hunk navigation — the high-signal review layout.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git diff HEAD~5..HEAD -- 'src/**/*.ts' | delta --features=side-by-side
|
|
49
|
+
```
|
|
50
|
+
Pipe a constrained diff range into delta directly when the pager is not globally configured.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
delta --list-syntax-themes | rg -i 'mono\|gruv\|night'
|
|
54
|
+
```
|
|
55
|
+
Inventory available syntax themes — use the output to set `syntax-theme` in `~/.gitconfig`.
|
|
56
|
+
|
|
57
|
+
## Wrong Choice When
|
|
58
|
+
|
|
59
|
+
- Don't pipe `delta` output into another script — it injects ANSI escape sequences that break downstream parsing. Reach for plain `diff -u` or `git diff --no-color` for machine consumers.
|
|
60
|
+
- Don't use `delta` to review semantic refactors (renames across files, signature reshapes); line-by-line color highlight misses tree-level moves. Reach for `difftastic` (`hatch3r-cli-difftastic`).
|
|
61
|
+
- Don't expect `delta` to fix the diff itself — it is a pager, not a merge tool. Reach for `git mergetool` or your editor's diff view.
|
|
62
|
+
|
|
63
|
+
## Alternatives
|
|
64
|
+
|
|
65
|
+
| Tool | When to prefer |
|
|
66
|
+
|------|----------------|
|
|
67
|
+
| `difftastic` (`hatch3r-cli-difftastic`) | Tree-aware diff that understands renames and reshaped expressions. |
|
|
68
|
+
| `diff -u` | Scripted consumers needing plain unified text without ANSI. |
|
|
69
|
+
| GitHub web UI / `gh pr diff 123` | Review on the forge with inline comments. |
|
|
70
|
+
| `git diff --word-diff=color` | Quick word-granularity diff without a separate binary. |
|
|
71
|
+
|
|
72
|
+
## Detection / Install
|
|
73
|
+
|
|
74
|
+
Verify with:
|
|
75
|
+
```bash
|
|
76
|
+
command -v delta
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Install (mac):
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# brew
|
|
83
|
+
brew install git-delta
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Homepage: https://github.com/dandavison/delta
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-difftastic
|
|
3
|
+
description: "Structural diff that understands syntax. Use when syntax-aware diffing that reports semantic edits instead of textual lines; invoke `difft`. Skips whitespace and reordering noise by computing edits over parsed syntax trees."
|
|
4
|
+
tags: ["cli-tools", "git"]
|
|
5
|
+
quality_charter: agents/shared/quality-charter.md
|
|
6
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
|
+
cache_friendly: true
|
|
8
|
+
cli_tool:
|
|
9
|
+
id: difftastic
|
|
10
|
+
bin: difft
|
|
11
|
+
tier: 2
|
|
12
|
+
category: git
|
|
13
|
+
homepage: https://difftastic.wilfred.me.uk/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# difftastic
|
|
17
|
+
|
|
18
|
+
Structural diff that understands syntax
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `difft` when the task is in the **git** category and the agent would otherwise call an MCP tool or read large outputs into context.
|
|
23
|
+
|
|
24
|
+
## Token Cost
|
|
25
|
+
|
|
26
|
+
CLI tools return structured stdout that fits in <1KB for typical queries; equivalent MCP calls regularly exceed 10KB.
|
|
27
|
+
Reference: Anthropic engineering (Nov 4 2025) — code-execution-over-MCP yields 98.7% token reduction.
|
|
28
|
+
|
|
29
|
+
## Recipes
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
difft a.ts b.ts
|
|
33
|
+
```
|
|
34
|
+
Compare two files using a syntax-aware tree diff; rename-of-block does not show as wholesale rewrite.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
git -c diff.external=difft diff HEAD~1 HEAD
|
|
38
|
+
```
|
|
39
|
+
One-shot syntactic git diff for the last commit without mutating global config.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
git config --global diff.external difft
|
|
43
|
+
```
|
|
44
|
+
Wire `difft` as the default git external diff (human setup; agents should prefer the `-c` form above for transparency).
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
difft --background light a.ts b.ts
|
|
48
|
+
```
|
|
49
|
+
Render with a light-background palette — pick to match the terminal theme.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
difft --display side-by-side a.py b.py
|
|
53
|
+
```
|
|
54
|
+
Side-by-side layout for review; fall back to the default inline mode for narrow terminals.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- A script needs stable, parseable diff output — `diff -u` or `git diff --no-color` produce deterministic POSIX output; `difft` is for human reading.
|
|
59
|
+
- You only need a prettier pager for unified diffs — `delta` (Tier 1) renders standard git output with syntax highlighting and is faster.
|
|
60
|
+
- The languages involved are unsupported by tree-sitter parsers `difft` ships — fall back to `diff -u`.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `delta` | Want syntax-highlighted unified diff for git output. |
|
|
67
|
+
| `diff -u` | Script consumes the output; need POSIX stability. |
|
|
68
|
+
| `git diff --word-diff` | Care about prose changes; line-noise from refactors is acceptable. |
|
|
69
|
+
|
|
70
|
+
## Detection / Install
|
|
71
|
+
|
|
72
|
+
Verify with:
|
|
73
|
+
```bash
|
|
74
|
+
command -v difft
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Install (mac):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# brew
|
|
81
|
+
brew install difftastic
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Homepage: https://difftastic.wilfred.me.uk/
|