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,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-docker
|
|
3
|
+
description: "Container runtime and CLI. Use when image build, container run, exec inspection, or registry push commands; invoke `docker`. Talks to a running Docker Engine daemon over a Unix socket; perfect for x86 build hosts."
|
|
4
|
+
tags: ["cli-tools", "container"]
|
|
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: docker
|
|
10
|
+
bin: docker
|
|
11
|
+
tier: 2
|
|
12
|
+
category: container
|
|
13
|
+
homepage: https://docs.docker.com/get-docker/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# docker
|
|
17
|
+
|
|
18
|
+
Container runtime and CLI
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `docker` when the task is in the **container** 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
|
+
docker build -t myapp:dev .
|
|
33
|
+
```
|
|
34
|
+
Build a local tag from the cwd Dockerfile; layer cache hits keep rebuilds under a second.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
docker run --rm -v "$PWD":/app -w /app node:22 npm test
|
|
38
|
+
```
|
|
39
|
+
Run a one-shot test container with the host repo mounted — no image rebuild, no leftover container.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
docker compose up -d --build
|
|
43
|
+
```
|
|
44
|
+
Bring up the multi-service stack from `docker-compose.yml` in the background, rebuilding stale images.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
docker run --rm -e DEBUG=1 myapp:dev sh -c 'env | sort'
|
|
48
|
+
```
|
|
49
|
+
Inspect the runtime environment a container actually sees; useful for diagnosing missing env vars.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
docker inspect myapp:dev --format '{{.Config.Cmd}} {{.Config.Entrypoint}}'
|
|
53
|
+
```
|
|
54
|
+
Extract a single image setting via Go template — avoids piping 10KB of JSON to `jq`.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
docker ps --format '{{.ID}} {{.Names}} {{.Status}}' --filter status=running
|
|
58
|
+
```
|
|
59
|
+
Compact running-container summary; one line per container, easy to grep.
|
|
60
|
+
|
|
61
|
+
## Wrong Choice When
|
|
62
|
+
|
|
63
|
+
- The goal is per-agent isolation only (file scoping, no service runtime) — `container-use` provides that without a long-running daemon.
|
|
64
|
+
- You are deploying to a Kubernetes cluster — go through `kubectl`/`helm`; `docker run` does not understand cluster semantics.
|
|
65
|
+
- The host already has `podman` and rootless containers — prefer it for security; the CLI surface is nearly identical.
|
|
66
|
+
|
|
67
|
+
## Alternatives
|
|
68
|
+
|
|
69
|
+
| Tool | When to prefer |
|
|
70
|
+
|------|----------------|
|
|
71
|
+
| `podman` | Want rootless containers and a daemonless model. |
|
|
72
|
+
| `container-use` | Need lightweight per-agent isolation; no service orchestration. |
|
|
73
|
+
| `nerdctl` | Existing containerd installation; do not need Docker Desktop. |
|
|
74
|
+
|
|
75
|
+
## Detection / Install
|
|
76
|
+
|
|
77
|
+
Verify with:
|
|
78
|
+
```bash
|
|
79
|
+
command -v docker
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Install (mac):
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# brew
|
|
86
|
+
brew install --cask docker
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Homepage: https://docs.docker.com/get-docker/
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-duckdb
|
|
3
|
+
description: "Embedded analytical database with first-class CSV/Parquet support. Use when ad-hoc analytical SQL over local Parquet, CSV, and JSON files; invoke `duckdb`. Streams records lazily; works on datasets that exceed available RAM."
|
|
4
|
+
tags: ["cli-tools", "data"]
|
|
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: duckdb
|
|
10
|
+
bin: duckdb
|
|
11
|
+
tier: 2
|
|
12
|
+
category: data
|
|
13
|
+
homepage: https://duckdb.org/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# duckdb
|
|
17
|
+
|
|
18
|
+
Embedded analytical database with first-class CSV/Parquet support
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `duckdb` 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
|
+
duckdb -c "SELECT count(*) FROM 'data/*.parquet'"
|
|
33
|
+
```
|
|
34
|
+
Count rows across a Parquet glob — no schema declaration, no import step.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
duckdb -c "COPY (SELECT * FROM 'in.csv' WHERE active) TO 'out.parquet' (FORMAT PARQUET)"
|
|
38
|
+
```
|
|
39
|
+
Filter a CSV and emit columnar Parquet in one pass; ideal for downstream `xsv`/`jq` chains.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
duckdb -c "ATTACH 'app.sqlite' AS sqlite; SELECT * FROM sqlite.users LIMIT 10"
|
|
43
|
+
```
|
|
44
|
+
Query a SQLite file without conversion — useful for app debugging from the terminal.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
duckdb -json -c "DESCRIBE 'data.parquet'"
|
|
48
|
+
```
|
|
49
|
+
Emit JSON schema rows for column inspection; pipe to `jq` to extract specific column types.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
duckdb -c "SELECT date_trunc('day', ts) AS d, count(*) FROM 'events/*.csv' GROUP BY 1 ORDER BY 1"
|
|
53
|
+
```
|
|
54
|
+
Aggregate over a CSV directory; DuckDB streams the read so memory stays bounded.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- The CSV has <10k rows and you only need to slice/select columns — `xsv` (Tier 2 sibling) starts faster and has no install dependency in many environments.
|
|
59
|
+
- The workload is transactional (writes from multiple clients, ACID across rows) — use SQLite or Postgres; DuckDB is read-optimized OLAP.
|
|
60
|
+
- A single `jq` filter would do the job (the data is already JSON, the operation is field extraction) — skip the SQL detour.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `xsv` | Single CSV file, <100MB, just need slice/select/sort. |
|
|
67
|
+
| `sqlite3` | Need OLTP writes or row-level updates rather than analytics. |
|
|
68
|
+
| `python -m pandas` | Already in a Python script and the data fits in memory. |
|
|
69
|
+
|
|
70
|
+
## Detection / Install
|
|
71
|
+
|
|
72
|
+
Verify with:
|
|
73
|
+
```bash
|
|
74
|
+
command -v duckdb
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Install (mac):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# brew
|
|
81
|
+
brew install duckdb
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Homepage: https://duckdb.org/
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-fd
|
|
3
|
+
description: "User-friendly find replacement, gitignore-aware. Use when locating filenames or directories by glob with parallel walking; invoke `fd`. Outputs newline-separated hit records; bound results with `-c` or `--max-count`."
|
|
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: fd
|
|
10
|
+
bin: fd
|
|
11
|
+
tier: 1
|
|
12
|
+
category: search
|
|
13
|
+
homepage: https://github.com/sharkdp/fd
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# fd
|
|
17
|
+
|
|
18
|
+
User-friendly find replacement, gitignore-aware
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `fd` 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
|
+
fd '\.test\.ts$' src/
|
|
33
|
+
```
|
|
34
|
+
Regex match against the path tail — locates every test file under `src/` without traversing `node_modules` or `.git` (gitignore-aware by default).
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
fd -e ts -e tsx --exec wc -l
|
|
38
|
+
```
|
|
39
|
+
Extension filter plus parallel `--exec` — one process per match, returns line counts for sizing audits.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
fd -H -E .git -E node_modules 'config'
|
|
43
|
+
```
|
|
44
|
+
Includes hidden files (`-H`) and explicitly excludes vendor trees — useful when scanning dotfiles for stale config.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
fd --changed-within 7d -e md
|
|
48
|
+
```
|
|
49
|
+
Time-windowed query for recent edits — pairs with `gh pr list` to spot undocumented changes.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
fd 'SKILL\.md$' skills/ -x rg -l 'placeholder'
|
|
53
|
+
```
|
|
54
|
+
Pipeline: locate every `SKILL.md`, then `rg`-search each for a marker string in one parallel batch.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- Don't reach for `fd` when the recursive predicate needs POSIX `find` features like `-mtime +N -delete`, `-path` with mixed Boolean operators, or NFS-mount handling. Reach for system `find`.
|
|
59
|
+
- Don't use `fd` as a content searcher — it matches paths, not file bodies. Reach for `ripgrep` (`hatch3r-cli-ripgrep`), optionally piped after `fd` for filename pre-filtering.
|
|
60
|
+
- Don't use `fd` against a system-wide indexed search ("which package owns this file?"); it walks the live filesystem each call. Reach for `locate` / `mlocate`.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `find` (POSIX) | Mixed predicates with `-and`/`-or`, `-mtime`, `-prune`, or actions like `-delete` and `-execdir`. |
|
|
67
|
+
| `locate` | Pre-indexed lookups across the entire filesystem (no live walk). |
|
|
68
|
+
| `ripgrep` (`hatch3r-cli-ripgrep`) | When you want content matches, not path matches — `fd ... -x rg` if both. |
|
|
69
|
+
| `git ls-files` | Restrict to tracked files only; ignores untracked even if not in `.gitignore`. |
|
|
70
|
+
|
|
71
|
+
## Detection / Install
|
|
72
|
+
|
|
73
|
+
Verify with:
|
|
74
|
+
```bash
|
|
75
|
+
command -v fd
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Install (mac):
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# brew
|
|
82
|
+
brew install fd
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Homepage: https://github.com/sharkdp/fd
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-fzf
|
|
3
|
+
description: "Interactive fuzzy finder for TTY pickers. Use when ad-hoc interactive picker over piped stdin streams from another command; invoke `fzf`. Requires a TTY; degrade gracefully to non-interactive batch in CI."
|
|
4
|
+
tags: ["cli-tools", "interactive"]
|
|
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: fzf
|
|
10
|
+
bin: fzf
|
|
11
|
+
tier: 2
|
|
12
|
+
category: interactive
|
|
13
|
+
homepage: https://github.com/junegunn/fzf
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# fzf
|
|
17
|
+
|
|
18
|
+
Interactive fuzzy finder for TTY pickers
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `fzf` when the task is in the **interactive** 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
|
+
fzf --filter 'auth' < paths.txt
|
|
33
|
+
```
|
|
34
|
+
Headless mode — ranks lines by fuzzy match score and prints them in order; no TTY needed. This is the agent-safe entrypoint.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
git branch --format='%(refname:short)' | fzf --filter main
|
|
38
|
+
```
|
|
39
|
+
Score branch names against `main`; pipe to `head -1` to pick the best match deterministically.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
rg -l 'TODO' . | fzf --filter 'src/cli'
|
|
43
|
+
```
|
|
44
|
+
Re-rank a `ripgrep` file list by proximity to a fuzzy hint; combine with `head` for a deterministic top pick.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
fzf --filter 'auth' --print0 < paths.txt | xargs -0 wc -l
|
|
48
|
+
```
|
|
49
|
+
Stream NUL-delimited matches to a downstream pipeline — safe across filenames with spaces.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
fzf < paths.txt
|
|
53
|
+
```
|
|
54
|
+
Interactive picker — only useful in a human TTY; do not call this form from an autonomous agent.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- Running in a non-TTY context (CI, agent loop) — interactive `fzf` will hang on stdin; always use `--filter` headless mode.
|
|
59
|
+
- The ranking needs semantic understanding (synonyms, embeddings) — `fzf` is character-level fuzzy; reach for an embedding-based tool.
|
|
60
|
+
- A simple `grep -F` or `rg --files | head` would already return the right answer — no need to layer scoring on top.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `skim` (`sk`) | Need a Rust binary with similar fuzzy scoring and the same `--filter` headless mode. |
|
|
67
|
+
| `rg --files \| head` | Already filtered; want stable lexicographic order rather than fuzzy ranking. |
|
|
68
|
+
| `grep -F` | Exact substring match; no scoring needed. |
|
|
69
|
+
|
|
70
|
+
## Detection / Install
|
|
71
|
+
|
|
72
|
+
Verify with:
|
|
73
|
+
```bash
|
|
74
|
+
command -v fzf
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Install (mac):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# brew
|
|
81
|
+
brew install fzf
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Homepage: https://github.com/junegunn/fzf
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-gh
|
|
3
|
+
description: "GitHub CLI — repos, issues, PRs, releases, gists. Use when drafting GitHub pull requests, issues, releases, gists, or workflow dispatches; invoke `gh`. Authenticates via the platform's native token mechanism (OAuth / PAT)."
|
|
4
|
+
tags: ["cli-tools", "forge", "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: gh
|
|
10
|
+
bin: gh
|
|
11
|
+
tier: 1
|
|
12
|
+
category: forge
|
|
13
|
+
homepage: https://cli.github.com/
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# gh
|
|
17
|
+
|
|
18
|
+
GitHub CLI — repos, issues, PRs, releases, gists
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `gh` 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
|
+
gh pr view 123 --json title,state,body,reviewDecision
|
|
33
|
+
```
|
|
34
|
+
Targeted JSON projection — pulls just the fields the agent needs, not the whole PR payload.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
gh issue list --label bug --json number,title,author --limit 50
|
|
38
|
+
```
|
|
39
|
+
Label-filtered list with capped page size — avoids paginating the entire issue corpus into context.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
gh api repos/:owner/:repo/contents/path/to/file.ts --jq '.sha'
|
|
43
|
+
```
|
|
44
|
+
Direct REST passthrough with built-in `--jq` filter — single round-trip, no jq install required at call site.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
gh run watch
|
|
48
|
+
```
|
|
49
|
+
Blocks until the most recent CI run finishes — pairs with PR creation flows so the agent doesn't poll.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
gh release create v1.7.5 --notes-from-tag --target release/1.7.5
|
|
53
|
+
```
|
|
54
|
+
Cuts a release using annotated-tag notes; deterministic input avoids hand-edited release bodies.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
gh pr checks 78 --watch
|
|
58
|
+
```
|
|
59
|
+
Live-tail status checks for a PR — return value reflects the worst check state, scripts can branch on it.
|
|
60
|
+
|
|
61
|
+
## Wrong Choice When
|
|
62
|
+
|
|
63
|
+
- Don't reach for `gh` against a GitLab or Azure DevOps remote. Reach for `glab` (`hatch3r-cli-glab`) or `az repos`/`az devops` (`hatch3r-cli-az-devops`).
|
|
64
|
+
- Don't use `gh auth login` flows when an audit trail of who authorized what is required; OAuth scopes granted to the CLI are user-bound. Reach for the GitHub web UI plus org-level SSO logs.
|
|
65
|
+
- Don't use `gh api` for high-volume bulk fetches (>10k records) — rate limits bite. Reach for the GraphQL endpoint via `gh api graphql -F query=@file.gql` with pagination, or a GitHub App token.
|
|
66
|
+
|
|
67
|
+
## Alternatives
|
|
68
|
+
|
|
69
|
+
| Tool | When to prefer |
|
|
70
|
+
|------|----------------|
|
|
71
|
+
| `glab` (`hatch3r-cli-glab`) | GitLab forges — same operations, different vendor. |
|
|
72
|
+
| `az-devops` (`hatch3r-cli-az-devops`) | Azure DevOps forges. |
|
|
73
|
+
| `git` + `curl` against REST | Minimal environment (CI runner) where installing `gh` is blocked; trade convenience for raw HTTP. |
|
|
74
|
+
| GitHub web UI | Operations needing org-level approval flows or SAML re-auth that the CLI cannot proxy. |
|
|
75
|
+
|
|
76
|
+
## Detection / Install
|
|
77
|
+
|
|
78
|
+
Verify with:
|
|
79
|
+
```bash
|
|
80
|
+
command -v gh
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Install (mac):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# brew
|
|
87
|
+
brew install gh
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Homepage: https://cli.github.com/
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-glab
|
|
3
|
+
description: "GitLab CLI — merge requests, issues, pipelines. Use when GitLab merge-request review, pipeline retries, and issue triage; invoke `glab`. 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: glab
|
|
10
|
+
bin: glab
|
|
11
|
+
tier: 2
|
|
12
|
+
category: forge
|
|
13
|
+
homepage: https://gitlab.com/gitlab-org/cli
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# glab
|
|
17
|
+
|
|
18
|
+
GitLab CLI — merge requests, issues, pipelines
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `glab` 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
|
+
glab mr list --assignee=@me --output json | jq '.[] | {iid, title, web_url}'
|
|
33
|
+
```
|
|
34
|
+
List merge requests assigned to the authenticated user; `--output json` keeps stdout structured.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
glab mr view 42 --output json
|
|
38
|
+
```
|
|
39
|
+
Fetch a single MR's metadata as JSON — avoids the HTML-decorated default view.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
glab mr diff 42
|
|
43
|
+
```
|
|
44
|
+
Print the unified diff for an MR to stdout; pipe to `delta` for review or `diff -u` parsing.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
glab issue create --title 'tracking-id mismatch on import' --label bug --label backend
|
|
48
|
+
```
|
|
49
|
+
Open an issue from a script; the URL is printed on stdout for the agent to capture.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
glab ci view --branch main
|
|
53
|
+
```
|
|
54
|
+
Show the pipeline status for `main`; agents should re-run with `--output json` for parseable output.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
glab api projects/:fullpath/jobs --paginate
|
|
58
|
+
```
|
|
59
|
+
Raw API call with auto-pagination for endpoints the high-level commands do not cover.
|
|
60
|
+
|
|
61
|
+
## Wrong Choice When
|
|
62
|
+
|
|
63
|
+
- The repo lives on GitHub, not GitLab — use `gh` (Tier 1) which has parity for issues/PRs/checks.
|
|
64
|
+
- The repo lives in Azure Repos — use `az devops` (Tier 2 sibling) with the same credential model.
|
|
65
|
+
- You only need to read a public file at a known URL — `curl` is one HTTP round-trip versus `glab`'s auth dance.
|
|
66
|
+
|
|
67
|
+
## Alternatives
|
|
68
|
+
|
|
69
|
+
| Tool | When to prefer |
|
|
70
|
+
|------|----------------|
|
|
71
|
+
| `gh` | GitHub-hosted repository. |
|
|
72
|
+
| `az devops` | Azure DevOps / Azure Repos. |
|
|
73
|
+
| `curl` + `GITLAB_TOKEN` | Endpoint not exposed by `glab api`; need explicit retry/timeout control. |
|
|
74
|
+
|
|
75
|
+
## Detection / Install
|
|
76
|
+
|
|
77
|
+
Verify with:
|
|
78
|
+
```bash
|
|
79
|
+
command -v glab
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Install (mac):
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# brew
|
|
86
|
+
brew install glab
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Homepage: https://gitlab.com/gitlab-org/cli
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-jq
|
|
3
|
+
description: "JSON processor and query language. Use when shaping JSON streams via jq-syntax filters and select expressions; invoke `jq`. Reads stdin and emits stdout; integrates seamlessly into shell pipelines."
|
|
4
|
+
tags: ["cli-tools", "json", "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: jq
|
|
10
|
+
bin: jq
|
|
11
|
+
tier: 1
|
|
12
|
+
category: json
|
|
13
|
+
homepage: https://github.com/jqlang/jq
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# jq
|
|
17
|
+
|
|
18
|
+
JSON processor and query language
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `jq` when the task is in the **json** 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
|
+
gh pr list --json number,title,isDraft | jq '.[] | select(.isDraft|not) | .number'
|
|
33
|
+
```
|
|
34
|
+
Pipeline from `gh` JSON into a selector — emits only open non-draft PR numbers.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
jq -r '.[] | .name' inventory.json
|
|
38
|
+
```
|
|
39
|
+
Raw string output (`-r`) drops the JSON quoting — feeds straight into `xargs` or shell loops.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
jq 'group_by(.category) | map({key: .[0].category, value: length}) | from_entries' findings.json
|
|
43
|
+
```
|
|
44
|
+
Group-then-count idiom — produces a `{category: count}` object suitable for direct comparison against a baseline.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
jq --slurp 'add | unique_by(.id)' shard-*.json
|
|
48
|
+
```
|
|
49
|
+
Slurp multiple files into a single array, concatenate, dedupe by `id` — the canonical merge pattern for sharded JSON output.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
jq -c '{id, title, severity}' findings.json
|
|
53
|
+
```
|
|
54
|
+
Compact (`-c`) one-object-per-line projection — perfect input for `xargs -L1` or `grep`-style downstream tools.
|
|
55
|
+
|
|
56
|
+
## Wrong Choice When
|
|
57
|
+
|
|
58
|
+
- Don't use `jq` for bidirectional grep on flattened paths; the inverse (`gron` outputs `obj.foo.bar = …` lines you can `rg` then translate back). Reach for `gron`.
|
|
59
|
+
- Don't use `jq` directly on multi-document YAML or front-matter Markdown. Reach for `yq` (`hatch3r-cli-yq`) and pipe `yq -o=json` into `jq` only if you need jq's filter language.
|
|
60
|
+
- Don't reach for `jq` when the file is a stream of newline-delimited JSON (`.ndjson`); use `jq -c` per line or `jaq`/`fx` for stream-friendly behavior — `jq` without `-c` slurps the whole file.
|
|
61
|
+
|
|
62
|
+
## Alternatives
|
|
63
|
+
|
|
64
|
+
| Tool | When to prefer |
|
|
65
|
+
|------|----------------|
|
|
66
|
+
| `yq` (`hatch3r-cli-yq`) | YAML, TOML, XML input — yq speaks them all, jq is JSON-only. |
|
|
67
|
+
| `gron` | Flatten JSON to `path = value` lines for grep-based exploration and reverse-translation. |
|
|
68
|
+
| `dasel` | Single binary across JSON/YAML/TOML/XML with a path-query DSL — handy in CI where you do not want jq+yq. |
|
|
69
|
+
| `fx` | Interactive JSON browsing in a TTY; jq is the right call in scripts. |
|
|
70
|
+
|
|
71
|
+
## Detection / Install
|
|
72
|
+
|
|
73
|
+
Verify with:
|
|
74
|
+
```bash
|
|
75
|
+
command -v jq
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Install (mac):
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# brew
|
|
82
|
+
brew install jq
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Homepage: https://github.com/jqlang/jq
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-cli-lazygit
|
|
3
|
+
description: "Terminal UI for git with keyboard-driven workflows. Use when keyboard-driven terminal UI for staging, rebasing, branch switching; invoke `lazygit`. Reads `.git/objects` directly without invoking external services or remotes."
|
|
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: lazygit
|
|
10
|
+
bin: lazygit
|
|
11
|
+
tier: 2
|
|
12
|
+
category: git
|
|
13
|
+
homepage: https://github.com/jesseduffield/lazygit
|
|
14
|
+
---
|
|
15
|
+
<!-- HATCH3R-CLI-SKILL-GENERATED v1 -->
|
|
16
|
+
# lazygit
|
|
17
|
+
|
|
18
|
+
Terminal UI for git with keyboard-driven workflows
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Reach for `lazygit` 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
|
+
`lazygit` is a TUI for humans; agents should call plain `git` instead. The recipes below are key bindings inside the running TUI, not shell commands.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
lazygit
|
|
35
|
+
```
|
|
36
|
+
Launch the TUI in the cwd repo — requires an interactive terminal; will hang in a non-TTY context.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
lazygit -p path/to/repo
|
|
40
|
+
```
|
|
41
|
+
Open the TUI on a specific repo without changing directory first.
|
|
42
|
+
|
|
43
|
+
Key bindings inside the TUI (human reference):
|
|
44
|
+
- `a` — stage all changes in the focused file
|
|
45
|
+
- `c` — open the commit message editor
|
|
46
|
+
- `P` — push current branch
|
|
47
|
+
- `p` — pull current branch
|
|
48
|
+
- `?` — show the full keymap
|
|
49
|
+
|
|
50
|
+
## Wrong Choice When
|
|
51
|
+
|
|
52
|
+
- The caller is an autonomous agent (no human at the terminal) — use plain `git status` / `git add` / `git commit` instead; they emit parseable stdout.
|
|
53
|
+
- The task is part of a CI script — `lazygit` cannot run headless; rely on `git` plumbing commands.
|
|
54
|
+
- You need a scriptable diff view — pair `git diff` with `delta` or `difftastic` rather than launching a TUI.
|
|
55
|
+
|
|
56
|
+
## Alternatives
|
|
57
|
+
|
|
58
|
+
| Tool | When to prefer |
|
|
59
|
+
|------|----------------|
|
|
60
|
+
| `git` (plain) | Anything an agent or CI script runs. |
|
|
61
|
+
| `tig` | Prefer a different TUI keymap; broadly similar capability. |
|
|
62
|
+
| `gh` / `glab` | The operation is forge-side (PRs, issues), not local repo state. |
|
|
63
|
+
|
|
64
|
+
## Detection / Install
|
|
65
|
+
|
|
66
|
+
Verify with:
|
|
67
|
+
```bash
|
|
68
|
+
command -v lazygit
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Install (mac):
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# brew
|
|
75
|
+
brew install lazygit
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Homepage: https://github.com/jesseduffield/lazygit
|