Skip to content

Commit 66b9378

Browse files
committed
New Dev Tools tab
1 parent 8a3c40a commit 66b9378

File tree

16 files changed

+754
-333
lines changed

16 files changed

+754
-333
lines changed

scripts/output/podcasts/manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
},
3232
"practical-techniques/lesson-7-planning-execution.md": {
3333
"scriptPath": "practical-techniques/lesson-7-planning-execution.md",
34-
"size": 19597,
35-
"tokenCount": 4821,
36-
"generatedAt": "2025-11-10T08:26:48.551Z"
34+
"size": 11291,
35+
"tokenCount": 2745,
36+
"generatedAt": "2025-12-07T19:20:22.116Z"
3737
},
3838
"practical-techniques/lesson-8-tests-as-guardrails.md": {
3939
"scriptPath": "practical-techniques/lesson-8-tests-as-guardrails.md",

scripts/output/podcasts/practical-techniques/lesson-7-planning-execution.md

Lines changed: 62 additions & 86 deletions
Large diffs are not rendered by default.
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
---
2+
title: Modern CLI Tools
3+
sidebar_position: 3
4+
---
5+
6+
# Modern CLI Tools for Multi-Agent Workflows
7+
8+
Managing parallel agent sessions, rapid context switching across worktrees, and quick file edits without breaking flow—modern CLI tools eliminate friction that accumulates across dozens of daily operations. These tools complement agent workflows with better defaults, richer information, and ergonomic interfaces.
9+
10+
**Four categories:** Text editing (micro), file navigation (eza, yazi, fzf), and git operations (lazygit) address the most frequent CLI tasks in multi-agent development workflows.
11+
12+
## Text Editing
13+
14+
### micro
15+
16+
[**micro**](https://micro-editor.github.io/) is a Go-based terminal text editor that brings GUI-like keybindings to the command line. Single binary, no dependencies, cross-platform support.
17+
18+
**Key differentiators:** Ctrl+S to save, Ctrl+Q to quit, Ctrl+F to find—no modal editing or memorization required. Syntax highlighting for 130+ languages out of box. Multi-cursor support (Sublime-style) for parallel editing. Lua plugin system for extensibility. Integrated terminal and mouse support for hybrid keyboard/mouse workflows.
19+
20+
**Best suited for:** Developers needing quick edits in agent context without switching to IDE. Engineers who find Vim's modal editing overhead for one-line changes. Users wanting terminal editing with familiar modern editor keybindings (coming from VSCode, Sublime, or similar GUI editors).
21+
22+
**Trade-offs:** Feature-minimal compared to IDEs—no LSP integration, limited refactoring tools, basic navigation. Not as powerful as Vim/Neovim for complex multi-file operations or advanced text object manipulation. For large files (1000+ lines) or deep code exploration, IDE remains superior tool choice.
23+
24+
**vs Vim:** No modal editing learning curve enables instant productivity. Trade: less powerful for macro operations and text object manipulation at scale.
25+
26+
**vs Nano:** More sophisticated feature set—multi-cursor editing, plugin ecosystem, better syntax highlighting for code. Better suited for actual development work rather than simple config edits.
27+
28+
**Installation:**
29+
30+
```bash
31+
# macOS
32+
brew install micro
33+
34+
# Linux (binary)
35+
curl https://getmic.ro | bash
36+
37+
# Cross-platform (Go)
38+
go install github.com/zyedidia/micro/cmd/micro@latest
39+
```
40+
41+
Requirements: None (static binary). Optional: clipboard support via xclip/xsel on Linux.
42+
43+
## File Navigation
44+
45+
### eza
46+
47+
[**eza**](https://eza.rocks/) is a Rust-based ls replacement, actively maintained fork of the unmaintained exa project. Fast, feature-rich, with better defaults than traditional ls.
48+
49+
**Key differentiators:** Colors for file types and permissions by default. Git integration shows per-file status (`--git`) or per-directory repository state (`--git-repos`). Human-readable file sizes in long format without flags. Tree view (`--tree`), icons support (`--icons`), and hyperlink support for terminal emulators. Fixes Grid Bug from exa that caused rendering issues.
50+
51+
**Best suited for:** Developers working across git worktrees who need instant branch status visibility. Engineers wanting better ls defaults without heavy configuration overhead. Users comfortable with modern Rust tooling ecosystem and willing to install additional dependencies.
52+
53+
**Trade-offs:** More dependencies than ls (Rust binary, optional Nerd Fonts for icons). Some features need configuration (icon support requires compatible fonts). Slightly longer learning curve for advanced options, though defaults work well immediately.
54+
55+
**vs ls:** Colors, git status visibility, human-readable sizes by default. Better information density without memorizing flags.
56+
57+
**vs exa:** Actively maintained (exa development stopped), security patches, bug fixes (Grid Bug), feature parity plus hyperlinks and bright color support.
58+
59+
**Installation:**
60+
61+
```bash
62+
# macOS
63+
brew install eza
64+
65+
# Cargo (Rust)
66+
cargo install eza
67+
68+
# Linux package managers
69+
sudo apt install eza # Debian/Ubuntu
70+
sudo pacman -S eza # Arch
71+
```
72+
73+
Requirements: None (static binary). Optional: Nerd Fonts for icon support (`--icons`).
74+
75+
### yazi
76+
77+
[**yazi**](https://yazi-rs.github.io/) is a Rust-based terminal file manager with full asynchronous I/O and multi-threaded CPU task distribution. Currently in public beta, suitable as daily driver.
78+
79+
**Key differentiators:** Full asynchronous architecture keeps UI responsive during heavy operations (large directories, remote filesystems). Rich preview support for images (Kitty, Sixel, iTerm2, WezTerm protocols), videos, PDFs, archives, and code with syntax highlighting via built-in integration. Lua-based plugin system with package manager for extensibility. Vim-like keybindings with visual mode, multi-tab support, and auto-completion. Client-server architecture with pub-sub model enables cross-instance communication. Integrates with ripgrep, fd, fzf, and zoxide for enhanced workflows.
80+
81+
**Best suited for:** Developers navigating complex directory structures who need rich file previews without leaving terminal. Engineers working with remote filesystems where responsiveness matters (async I/O prevents UI freezing). Users wanting Vim-like file management with extensive customization (Lua plugins, themes, custom previewers).
82+
83+
**Trade-offs:** Currently in public beta—stable enough for daily use but evolving rapidly. More complex than simpler tools like nnn (which is tiny, nearly 0-config). Learning curve for Vim keybindings if coming from traditional file managers. Lacks "undo" feature that Vifm provides.
84+
85+
**vs Ranger:** Significantly faster (Rust vs Python architecture). Asynchronous I/O prevents UI freezing on heavy operations.
86+
87+
**vs lf:** Both fast and async-capable (lf written in Go). Yazi offers richer built-in preview support and plugin ecosystem.
88+
89+
**vs nnn:** nnn is smaller, faster to start, nearly 0-config. Yazi trades simplicity for rich features (previews, plugins, advanced async task management).
90+
91+
**Installation:**
92+
93+
```bash
94+
# macOS
95+
brew install yazi
96+
97+
# Cargo (Rust)
98+
cargo install --locked yazi-fm yazi-cli
99+
100+
# Linux package managers
101+
sudo pacman -S yazi # Arch
102+
```
103+
104+
Requirements: None (static binary). Optional: Überzug++ or similar for advanced image preview, ffmpegthumbnailer for video thumbnails, fd/ripgrep/fzf/zoxide for enhanced integration.
105+
106+
### fzf
107+
108+
[**fzf**](https://junegunn.github.io/fzf/) is a Go-based fuzzy finder that processes millions of items instantly. Single binary, 11+ years mature (since 2013), widely adopted as the standard fuzzy CLI tool.
109+
110+
**Key differentiators:** Shell integration provides Ctrl+R (history search), Ctrl+T (file search), Alt+C (directory navigation), and `**<TAB>` (fuzzy completion for any command). Vim/Neovim integration via fzf.vim and fzf-lua plugins. Tmux integration via fzf-tmux wrapper for popup windows. Preview window support shows file contents or git diffs during selection. Highly customizable via environment variables (FZF_DEFAULT_OPTS, FZF_DEFAULT_COMMAND). Pipe-friendly architecture works with any command output.
111+
112+
**Best suited for:** Developers navigating large codebases who need instant file/symbol location without IDE context switches. Engineers with heavy shell usage for command history search and script selection. Users wanting fuzzy selection everywhere—git branches, docker containers, kubernetes pods, process lists.
113+
114+
**Trade-offs:** Requires shell setup script for full power (Ctrl+R, Ctrl+T, `**<TAB>` bindings). Learning curve for advanced customization (environment variables, preview commands, custom key bindings). Power comes from integration with other tools—standalone usage provides limited value.
115+
116+
**vs traditional find/grep:** Interactive visual feedback with instant results. Fuzzy matching reduces need for exact pattern specification.
117+
118+
**Installation:**
119+
120+
```bash
121+
# macOS
122+
brew install fzf
123+
$(brew --prefix)/opt/fzf/install # Shell integration
124+
125+
# Git clone
126+
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
127+
~/.fzf/install
128+
129+
# Linux package managers
130+
sudo apt install fzf # Debian/Ubuntu
131+
sudo pacman -S fzf # Arch
132+
```
133+
134+
Requirements: None (static binary). Shell integration script essential for full functionality.
135+
136+
:::tip fzf Shell Integration
137+
Full fzf power requires shell integration. After installation, run:
138+
139+
```bash
140+
$(brew --prefix)/opt/fzf/install # macOS Homebrew
141+
~/.fzf/install # Git installation
142+
```
143+
144+
Enables: Ctrl+R (history), Ctrl+T (files), Alt+C (cd), `**<TAB>` (completion)
145+
:::
146+
147+
## Git Operations
148+
149+
### lazygit
150+
151+
[**lazygit**](https://github.com/jesseduffield/lazygit) is a Go-based Git TUI (terminal user interface) for visual branch management, interactive staging, and commit navigation. Cross-platform with extensive customization options.
152+
153+
**Key differentiators:** Visual branch tree shows repository topology without command memorization. Interactive staging supports hunk selection and individual line staging. Commit navigation browses history with inline diffs. Customizable keybindings via YAML config. Mouse support for clicking to select, scrolling through commits. Multi-worktree awareness for parallel branch development.
154+
155+
**Best suited for:** Developers managing multi-worktree workflows who need visual branch context. Engineers doing complex interactive rebases, cherry-picks, and merges. Users wanting git discoverability via menu-driven interface instead of command memorization.
156+
157+
**Trade-offs:** Performance degrades on massive repositories (Linux kernel: 57s load time, 2.6GB RAM usage). Not a replacement for all git commands—some operations faster via raw CLI. Learning curve for keybindings, though discoverable via built-in help menu.
158+
159+
**vs raw git:** Visual interface reduces command memorization burden. Complex operations (rebase, cherry-pick) easier with interactive UI.
160+
161+
**vs gitui:** More mature ecosystem (plugins, community integrations) but slower on massive repos. gitui benchmarks: 24s load time, 0.17GB RAM on Linux kernel.
162+
163+
**vs tig:** Significantly faster (57s vs 4m20s on Linux kernel). More interactive—tig focuses on browsing, lazygit enables full git workflows.
164+
165+
**Installation:**
166+
167+
```bash
168+
# macOS
169+
brew install lazygit
170+
171+
# Go
172+
go install github.com/jesseduffield/lazygit@latest
173+
174+
# Windows
175+
scoop install lazygit
176+
177+
# Linux package managers
178+
sudo apt install lazygit # Debian/Ubuntu
179+
sudo pacman -S lazygit # Arch
180+
```
181+
182+
Requirements: git. Optional: custom config in `~/.config/lazygit/config.yml`.
183+
184+
## Philosophy: Mix CLI and UI Tools
185+
186+
Don't be dogmatic about terminal-only or GUI-only workflows. IDEs remain the best tools for code navigation, symbol search, and viewing large files. CLI excels at quick edits, git operations, and managing parallel sessions.
187+
188+
**Use the best tool for each task:**
189+
190+
- **Code navigation and exploration:** IDE (VS Code, IntelliJ, etc.) - superior symbol search, go-to-definition, call hierarchies
191+
- **Quick edits in agent context:** CLI (micro, vim) - faster than switching to IDE for one-line changes
192+
- **Git operations across worktrees:** CLI (lazygit, raw git commands) - better visibility into multiple branches
193+
- **Reading large files or complex logic:** IDE - better syntax highlighting, folding, and navigation
194+
195+
Pragmatism beats purism. These are all just tools—choose based on efficiency, not ideology.
196+
197+
---
198+
199+
**Related Course Content:**
200+
201+
- [Lesson 7: Planning & Execution](/docs/practical-techniques/lesson-7-planning-execution) - Multi-worktree workflows leveraging these CLI tools
202+
- [Developer Tools: Terminals](/developer-tools/terminals) - Terminal recommendations for running these CLI tools efficiently
203+
- [Developer Tools: MCP Servers](/developer-tools/mcp-servers) - Extend CLI agents with code research and web grounding
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
---
2+
title: MCP Servers
3+
sidebar_position: 4
4+
---
5+
6+
# MCP Servers
7+
8+
The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) extends CLI agents with specialized capabilities—code research, web grounding, browser automation. While IDE-based assistants (Cursor, Windsurf) often include these features built-in, CLI agents (Claude Code, Copilot CLI, Aider) rely on MCP servers to add functionality beyond basic file operations.
9+
10+
These three MCP servers address the critical gaps in AI-assisted development workflows.
11+
12+
## Code Research
13+
14+
### ChunkHound
15+
16+
[ChunkHound](https://chunkhound.github.io) provides semantic code search and structured sub-agent research for large codebases.
17+
18+
**What it does:**
19+
20+
- Multi-hop semantic search through code relationships
21+
- Hybrid semantic + symbol search (conceptual discovery, then exhaustive regex)
22+
- Map-reduce synthesis with architectural relationships and `file:line` citations
23+
24+
**When to use it:**
25+
26+
- **10,000-100,000 LOC:** Valuable when repeatedly connecting components across the codebase
27+
- **100,000+ LOC:** Highly valuable as autonomous agents show incomplete findings
28+
- **1,000,000+ LOC:** Essential—only approach with progressive aggregation at extreme scale
29+
30+
**Key trade-off:** Higher token cost (1-2x) vs autonomous search, but maintains first-iteration accuracy through context isolation.
31+
32+
**Installation:**
33+
34+
```bash
35+
uv tool install chunkhound
36+
```
37+
38+
Requires Python 3.10+ and the uv package manager. See [ChunkHound on GitHub](https://github.com/chunkhound/chunkhound) for API key configuration and setup details.
39+
40+
**Learn more:** [Lesson 5: Grounding](/docs/methodology/lesson-5-grounding#deep-dive-chunkhound-architecture) covers ChunkHound's architecture, pipeline design, and scale guidance in detail.
41+
42+
## Web Research
43+
44+
### ArguSeek
45+
46+
[ArguSeek](https://github.com/ArguSeek/arguseek) is a web research sub-agent with isolated context and semantic state management.
47+
48+
**What it does:**
49+
50+
- Google Search API (quality vs Bing/proprietary alternatives)
51+
- Query decomposition—3 concurrent variations per query (docs + community + security advisories)
52+
- Semantic subtraction—follow-up queries skip covered content and advance research
53+
- Bias detection—flags vendor marketing, triggers counter-research
54+
55+
**When to use it:**
56+
57+
- Researching best practices and competing approaches
58+
- Finding security advisories and CVEs
59+
- Learning new technologies with current (post-training) information
60+
- Multi-source research (processes 12-30 sources per call, scales to 100+ sources per task)
61+
62+
**Key advantage:** Maintains state across queries—builds on previous research instead of re-explaining basics, keeping your orchestrator context clean.
63+
64+
**Installation:**
65+
66+
```bash
67+
brew install arguseek
68+
```
69+
70+
Requires Go 1.23+ and Google API credentials. See [ArguSeek on GitHub](https://github.com/ArguSeek/arguseek) for detailed setup instructions and configuration options.
71+
72+
**Learn more:** [Lesson 5: Grounding](/docs/methodology/lesson-5-grounding#deep-dive-arguseek-architecture) explains ArguSeek's architecture, semantic subtraction, and research patterns.
73+
74+
## Browser Automation
75+
76+
Two major options for browser automation—both provide comprehensive tooling, differ in maturity and optimization approach.
77+
78+
### Playwright MCP
79+
80+
[Playwright MCP](https://github.com/microsoft/playwright-mcp) is the official browser automation server from Microsoft, built on the Playwright testing framework. Most popular MCP server on GitHub for browser automation.
81+
82+
**What it does:**
83+
84+
- Accessibility tree approach (not screenshots)—LLM-friendly structured data from the DOM
85+
- Full browser automation via Playwright—navigate, click, type, extract data
86+
- Automated testing and exploration—generate tests, reproduce bugs, validate UX from natural language
87+
- Self-verifying workflows—agents modify code, launch browser, interact with UI, confirm expected behavior
88+
89+
**When to use it:**
90+
91+
- Mature ecosystem preference—established Playwright foundation with broad community support
92+
- Testing-focused workflows—leverages Playwright's end-to-end testing patterns
93+
- Accessibility-first automation—semantic DOM structure over visual parsing
94+
95+
**Key advantage:** High popularity and mature testing ecosystem. Accessibility tree provides clean, structured text that LLMs interpret reliably without visual processing overhead.
96+
97+
**Installation:**
98+
99+
```bash
100+
npx @playwright/mcp@latest
101+
```
102+
103+
Requires Node.js 18+. See [Playwright MCP on GitHub](https://github.com/microsoft/playwright-mcp) for MCP client configuration.
104+
105+
### Chrome DevTools MCP
106+
107+
[Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp) is the official browser automation server from the Google Chrome team, purpose-built for MCP workflows with context optimization.
108+
109+
**What it does:** (26+ professional tools)
110+
111+
- Performance analysis—run traces, extract LCP, blocking time, actionable metrics
112+
- Advanced debugging—analyze network requests (CORS, failed loads), inspect console logs, take DOM snapshots
113+
- Reliable automation—simulate user interactions (click, type, navigate) via Puppeteer
114+
- Emulation—CPU throttling, network speed, viewport size for testing under constraints
115+
116+
**When to use it:**
117+
118+
- Performance-focused workflows—deep Chrome DevTools integration for profiling and optimization
119+
- Context-optimized preference—newer tool designed specifically for MCP agent use cases
120+
- Chrome-specific features—leverage proprietary DevTools Protocol capabilities
121+
122+
**Key capability:** Closes the "write code → run → verify" loop—agents test their changes in the browser and iterate based on actual behavior.
123+
124+
**Installation:**
125+
126+
```bash
127+
npx chrome-devtools-mcp@latest
128+
```
129+
130+
See [Chrome DevTools MCP on GitHub](https://github.com/ChromeDevTools/chrome-devtools-mcp) for MCP client configuration.
131+
132+
### Choosing Between Them
133+
134+
**Playwright MCP:** More popular with broader GitHub community, mature testing ecosystem, established Playwright foundation. Best for standard testing workflows and accessibility-first automation.
135+
136+
**Chrome DevTools MCP:** Newer and purpose-built for MCP, context-optimized by the Chrome team, performance analysis focus. Best for Chrome-specific debugging and profiling workflows.
137+
138+
Both provide comprehensive browser automation with similar scope (~26 tools). The choice depends on ecosystem preference and whether you prioritize maturity (Playwright) or MCP-specific optimization (CDP).
139+
140+
:::tip Run Browser Automation in Sub-Agents
141+
Browser automation generates high token volumes—DOM snapshots (5,000-15,000 tokens), screenshots (3,000-8,000 tokens), network traces (2,000-10,000 tokens). Multiple operations quickly fill your context window.
142+
143+
**Best practice:** Delegate browser tasks to sub-agents. The sub-agent processes DOM data and screenshots in its isolated context, then returns a concise synthesis: "Button at selector `.submit-btn` clicked, form submitted successfully, redirected to `/dashboard`" (50 tokens instead of 15,000-token DOM dump).
144+
145+
See [Lesson 5: Sub-Agents for Context Isolation](/docs/methodology/lesson-5-grounding#solution-2-sub-agents-for-context-isolation) for architecture details.
146+
:::
147+
148+
---
149+
150+
**Related Course Content:**
151+
152+
- [Lesson 5: Grounding](/docs/methodology/lesson-5-grounding) - Detailed architecture and use cases for ChunkHound and ArguSeek
153+
- [Lesson 7: Planning & Execution](/docs/practical-techniques/lesson-7-planning-execution) - Multi-agent workflows that leverage MCP capabilities

0 commit comments

Comments
 (0)