<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developer Tools on Bruce on AI Engineering</title><link>http://www.heyuan110.com/tags/developer-tools/</link><description>Recent content in Developer Tools on Bruce on AI Engineering</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 18 Apr 2026 10:00:00 +0800</lastBuildDate><atom:link href="http://www.heyuan110.com/tags/developer-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Fish Shell 4.6 Review: Best Interactive Shell, Wrong Default</title><link>http://www.heyuan110.com/posts/linux/2026-04-18-fish-shell-rust-2026/</link><pubDate>Sat, 18 Apr 2026 10:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/linux/2026-04-18-fish-shell-rust-2026/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/linux/2026-04-18-fish-shell-rust-2026/cover.webp"
 alt="Fish shell 4.6 Rust rewrite review 2026"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;Let me open with the contrarian line. &lt;strong&gt;Fish shell 4.6, released March 28, 2026, is the most polished interactive shell I have ever used. It is also the wrong choice for your default shell in the AI agent era.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Those two claims are not in conflict. They are the whole point of this review.&lt;/p&gt;
&lt;p&gt;I have been running fish as a front-end for the last nine months, since the 4.0 Rust rewrite landed in February 2025. I read the release notes for every point release, I moved my zsh configuration over, I watched the Claude Code bug tracker fill up with &lt;code&gt;fish&lt;/code&gt; in the title, and I eventually settled into a dual-shell setup that I think most AI-heavy developers should copy. This article is that conclusion, backed by numbers.&lt;/p&gt;</description></item><item><title>OpenClaw Tools &amp; Skills Reference 2026: Every Built-in Tool and Skill</title><link>http://www.heyuan110.com/posts/ai/2026-04-14-openclaw-tools-skills-reference/</link><pubDate>Tue, 14 Apr 2026 10:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-04-14-openclaw-tools-skills-reference/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-04-14-openclaw-tools-skills-reference/cover.webp"
 alt="OpenClaw Tools and Skills Reference 2026 cover showing ClawHub skill architecture and built-in tool parameters"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;Most OpenClaw tutorials teach you the philosophy. None of them give you the one thing you actually need when the agent misbehaves at 2 AM: &lt;strong&gt;exact parameters, exact file paths, and exact skill loading rules&lt;/strong&gt;. This is that reference.&lt;/p&gt;
&lt;p&gt;After shipping three production OpenClaw agents and contributing two skills to ClawHub, I have learned that 80% of &amp;ldquo;agent is broken&amp;rdquo; tickets come down to three things — wrong tool parameters, malformed SKILL.md frontmatter, or skill directory in the wrong place. The docs scatter this across ten pages. This guide puts every built-in tool signature, every ClawHub skill contract, and every common failure in one place for &lt;strong&gt;OpenClaw 2026&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Lazygit in 2026: The Git TUI That Makes Interactive Rebase Feel Like Cheating</title><link>http://www.heyuan110.com/posts/ai/2026-04-10-lazygit-guide/</link><pubDate>Fri, 10 Apr 2026 14:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-04-10-lazygit-guide/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-04-10-lazygit-guide/cover.webp"
 alt="Lazygit terminal UI for Git commands with interactive rebase and staging"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;To perform an interactive rebase in raw Git, you run &lt;code&gt;git rebase -i HEAD~5&lt;/code&gt;, which opens a temporary TODO file in your editor where you manually rearrange lines, change &lt;code&gt;pick&lt;/code&gt; to &lt;code&gt;squash&lt;/code&gt; or &lt;code&gt;fixup&lt;/code&gt;, save, close, and pray you did not make a typo. To stage individual lines from a file, you run &lt;code&gt;git add -p&lt;/code&gt;, which walks you through hunks one at a time—and if the hunk granularity is wrong, you edit a patch file by hand. To amend an old commit (not the latest, but one from three commits ago), you need to start an interactive rebase, mark the commit as &lt;code&gt;edit&lt;/code&gt;, make your changes, amend, and then continue the rebase.&lt;/p&gt;</description></item><item><title>Claude HUD: The Status Bar That Claude Code Should Have Built In</title><link>http://www.heyuan110.com/posts/ai/2026-04-10-claude-hud-guide/</link><pubDate>Fri, 10 Apr 2026 10:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-04-10-claude-hud-guide/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-04-10-claude-hud-guide/cover.webp"
 alt="Claude HUD adds real-time session monitoring to Claude Code terminal"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;You know that moment when Claude Code starts repeating instructions you gave it ten minutes ago? Or when it produces code that contradicts a decision it made earlier in the same session? That is what context window saturation looks like—and without monitoring, you have zero warning before it happens.&lt;/p&gt;
&lt;p&gt;I have been using Claude Code daily for months, and the single biggest improvement to my workflow was not a new model, not a better prompt strategy, not even a fancier CLAUDE.md file. It was installing &lt;a href="https://github.com/jarrodwatts/claude-hud"&gt;Claude HUD&lt;/a&gt;—a plugin that shows me what is actually happening inside my session. Think of it as &lt;strong&gt;htop for Claude Code&lt;/strong&gt;: where htop shows CPU usage, memory, and running processes, Claude HUD shows context health, active tools, subagent status, and task completion in real time.&lt;/p&gt;</description></item><item><title>Claude Code Buddy: The Terminal Pet Hidden in Your AI Coding Tool</title><link>http://www.heyuan110.com/posts/ai/2026-04-04-claude-code-buddy-terminal-pet/</link><pubDate>Sat, 04 Apr 2026 16:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-04-04-claude-code-buddy-terminal-pet/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-04-04-claude-code-buddy-terminal-pet/cover.webp"
 alt="Claude Code Buddy terminal pet companion showing ASCII art species with stat cards"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;On March 31, 2026, security researcher Chaofan Shou discovered that Claude Code v2.1.88&amp;rsquo;s npm package contained a 59.8 MB source map file that should never have shipped. Inside those 512,000+ lines of exposed TypeScript sat a directory nobody expected: &lt;code&gt;src/buddy/&lt;/code&gt; — five files describing a complete virtual pet system. What Anthropic had planned as their April Fools surprise was out in the open a day early.&lt;/p&gt;</description></item><item><title>OpenCode Review: Can This Open Source AI Coding Agent Replace Claude Code?</title><link>http://www.heyuan110.com/posts/ai/2026-03-13-opencode-ai-coding-agent-review/</link><pubDate>Fri, 13 Mar 2026 10:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-03-13-opencode-ai-coding-agent-review/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-03-13-opencode-ai-coding-agent-review/cover.webp"
 alt="OpenCode open source AI coding agent terminal interface and architecture overview"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;Every developer building with AI coding agents eventually hits the same wall: vendor lock-in. Claude Code only works with Anthropic models. Cursor ties you to their subscription. GitHub Copilot lives inside VS Code. &lt;a href="https://github.com/anomalyco/opencode"&gt;OpenCode&lt;/a&gt; takes a different path — it&amp;rsquo;s MIT-licensed, supports 75+ model providers, and runs anywhere from your terminal to a desktop app. With 121K GitHub stars and a release cadence measured in days, it&amp;rsquo;s the fastest-growing open source AI coding agent in 2026.&lt;/p&gt;</description></item><item><title>Claude Code Hooks: Automate Your AI Workflow (2026)</title><link>http://www.heyuan110.com/posts/ai/2026-03-05-claude-code-hooks-guide/</link><pubDate>Wed, 04 Mar 2026 09:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-03-05-claude-code-hooks-guide/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-03-05-claude-code-hooks-guide/cover.webp"
 alt="Claude Code Hooks guide for automating AI coding workflows"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;Claude Code is probabilistic by nature. Ask it to format your code, and it might. Ask it to never touch &lt;code&gt;.env&lt;/code&gt; files, and it usually respects that &amp;ndash; until it doesn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Claude Code hooks solve this. They are shell commands, HTTP endpoints, or LLM prompts that run automatically at specific points during Claude&amp;rsquo;s operation. Before a file edit happens, after a command runs, when a session starts, when Claude finishes a task. Hooks give you deterministic control over the parts of your workflow that cannot be left to chance.&lt;/p&gt;</description></item><item><title>Best MCP Servers for Claude Code: 18 Tools You Need in 2026</title><link>http://www.heyuan110.com/posts/ai/2026-03-05-best-mcp-servers-claude-code/</link><pubDate>Tue, 03 Mar 2026 14:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-03-05-best-mcp-servers-claude-code/</guid><description>&lt;p&gt;The MCP ecosystem has exploded. Since Anthropic open-sourced the Model Context Protocol in late 2024, the community has built over 10,000 public MCP servers, and the official SDKs have surpassed 97 million downloads across TypeScript and Python. Every major AI tool vendor now supports MCP — Anthropic, OpenAI, Google, and Microsoft have all adopted it as the standard for connecting AI agents to external tools.&lt;/p&gt;
&lt;p&gt;But with thousands of servers available, finding the ones that actually matter is the hard part.&lt;/p&gt;</description></item><item><title>Tmux Complete Guide: From Basics to AI-Powered Multi-Agent Workflows</title><link>http://www.heyuan110.com/posts/ai/2026-03-03-tmux-guide-ai-development/</link><pubDate>Tue, 03 Mar 2026 10:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-03-03-tmux-guide-ai-development/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-03-03-tmux-guide-ai-development/cover.webp"
 alt="Tmux terminal multiplexer for AI development workflows"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1200"
 height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;If you work in the terminal, you&amp;rsquo;ve probably lost an SSH session during a long-running task. Or struggled to juggle multiple terminal windows while debugging. Or watched helplessly as Claude Code&amp;rsquo;s conversation vanished when your laptop went to sleep.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tmux solves all of these problems&lt;/strong&gt; — and in the age of AI-powered development, it has become arguably the most important terminal tool you can learn.&lt;/p&gt;</description></item><item><title>Claude Code Hooks Guide: 12 Ready-to-Use Configs for Automation</title><link>http://www.heyuan110.com/posts/ai/2026-02-18-claude-code-hooks-guide/</link><pubDate>Wed, 18 Feb 2026 11:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-02-18-claude-code-hooks-guide/</guid><description>&lt;p&gt;If you use Claude Code daily, you have probably run into these problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude edits a file and the formatting is a mess &amp;ndash; you have to manually run &lt;code&gt;prettier&lt;/code&gt; every time&lt;/li&gt;
&lt;li&gt;Claude accidentally modifies &lt;code&gt;.env&lt;/code&gt; or &lt;code&gt;package-lock.json&lt;/code&gt;, and you only notice when it is too late&lt;/li&gt;
&lt;li&gt;Claude says &amp;ldquo;done!&amp;rdquo; but the tests were never run&lt;/li&gt;
&lt;li&gt;You step away to grab coffee and have no idea whether Claude is waiting for your input&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The root cause is simple: &lt;strong&gt;Claude is probabilistic, but your workflow needs deterministic guarantees&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Claude Code: 24 Power Tips to Master the AI Terminal</title><link>http://www.heyuan110.com/posts/ai/2025-01-23-claude-code-commands/</link><pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate><guid>http://www.heyuan110.com/posts/ai/2025-01-23-claude-code-commands/</guid><description>&lt;p&gt;Claude Code is Anthropic&amp;rsquo;s command-line AI coding assistant. It&amp;rsquo;s not just a chatbot — it reads your code, writes files, and executes commands directly in your terminal. Here are 24 power tips to help you get the most out of it.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2025-01-23-claude-code-commands/claude-code-homepage.webp"
 alt="Claude Code Homepage"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="871"
 height="192"
/&gt;
&lt;/p&gt;
&lt;h2 id="part-1-getting-started-in-5-minutes"&gt;Part 1: Getting Started in 5 Minutes&lt;a href="#part-1-getting-started-in-5-minutes" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
 &lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="installing-claude-code"&gt;Installing Claude Code&lt;a href="#installing-claude-code" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
 &lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# One-line install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://claude.ai/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="three-ways-to-launch"&gt;Three Ways to Launch&lt;a href="#three-ways-to-launch" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
 &lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Option 1: Start an interactive session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Option 2: Launch with a prompt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude &lt;span class="s2"&gt;&amp;#34;Show me the directory structure of this project&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Option 3: Non-interactive mode (great for scripts)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude -p &lt;span class="s2"&gt;&amp;#34;Generate a .gitignore file&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once launched, you&amp;rsquo;ll see an interactive interface where you can type questions directly. Type &lt;code&gt;/help&lt;/code&gt; for help or &lt;code&gt;/exit&lt;/code&gt; to quit.&lt;/p&gt;</description></item><item><title>Claude Code Skills: Top 20 Most Popular Skills in 2026</title><link>http://www.heyuan110.com/posts/ai/2026-01-20-claude-code-skills-top20/</link><pubDate>Tue, 20 Jan 2026 10:51:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-01-20-claude-code-skills-top20/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-01-20-claude-code-skills-top20/cover.webp"
 alt="Claude Code Skills ecosystem"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1938"
 height="1016"
/&gt;
&lt;/p&gt;
&lt;p&gt;In October 2025, Anthropic launched the &lt;strong&gt;Agent Skills system&lt;/strong&gt; — one of the most significant updates to Claude Code. Three months later, the Skills ecosystem on GitHub has exploded in growth.&lt;/p&gt;
&lt;p&gt;Which Skills are worth installing? Which ones are just hype? This article ranks the &lt;strong&gt;top 20 most popular Skills as of January 2026&lt;/strong&gt; to help you decide.&lt;/p&gt;
&lt;h2 id="what-are-skills"&gt;What Are Skills?&lt;a href="#what-are-skills" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
 &lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Think of Skills as &lt;strong&gt;expert knowledge packs that Claude activates on its own&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>CLAUDE.md Guide: Give Claude Code Persistent Memory</title><link>http://www.heyuan110.com/posts/ai/2026-01-12-claudemd-memory-guide/</link><pubDate>Mon, 12 Jan 2026 00:00:00 +0800</pubDate><guid>http://www.heyuan110.com/posts/ai/2026-01-12-claudemd-memory-guide/</guid><description>&lt;p&gt;&lt;img src="http://www.heyuan110.com/posts/ai/2026-01-12-claudemd-memory-guide/memory-guide.webp"
 alt="Memory Guide"
 
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 width="1059"
 height="556"
/&gt;
&lt;/p&gt;
&lt;h2 id="the-problem-repeating-yourself-every-single-time"&gt;The Problem: Repeating Yourself Every Single Time&lt;a href="#the-problem-repeating-yourself-every-single-time" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
 &lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code is a fantastic coding assistant. But it has one glaring weakness: &lt;strong&gt;it forgets everything between conversations.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Every new session, you find yourself saying the same things:&lt;/p&gt;</description></item></channel></rss>