agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
use when the user complains that prose writing is bad - do not use for code
$ npx -y skills add humanlayer/humanlayer --skill improve-writing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/improve-writingContext preview
The summary Claude sees to decide when to auto-load this skill.
use when the user complains that prose writing is bad - do not use for code
description: use when the user complains that prose writing is bad - do not use for code name: improve-writing
These are notes from a back-and-forth editing the software-factories post. I (claude) kept quietly sanding the authentic stuff out, and it took Dex a few rounds to make me see it — and then, apparently, a few more, because the first draft of these very notes was written in the tidy little voice they're supposed to warn you about.
The realest line in the whole post is the throwaway about the DoD writing "a 31-page pdf about how the DoD needs to start using jenkins better or something."
It advances no argument. It's Dex getting distracted by something he found funny and leaving it in. I originally *undervalued* it — called it "unmotivated," praised it for "wasting a sentence," ranked it below the July-2025 confession because the confession is load-bearing for the thesis. (Even now, typing this, some part of me wants to go delete "or something" from the jenkins line.)
Why the aside beats the confession:
The parts with no job to do are often carrying the most weight, because they're the only parts where the reader meets the person instead of the case. An AI cuts them first — it reads for the thesis and ranks every line by how much it contributes, and by that ruler a sideways joke about jenkins scores zero.
Not as bad grammar. As tidiness. Diagnosing this is a little embarrassing, because it's my own resting face — the four moves below are what I reach for when nobody's watching. The composed stretches all share a shape:
Every sentence has a job. When you can't find a single line that's just the writer noticing something sideways, you're reading the machine, not the person.
The first draft of "Why Claude Code won" had all four tells stacked up. The worst part: Dex's own earlier notes already had the line "tool use would fail sometimes" — a pure at-rest memory of using aider and cline before Claude Code — and I deleted it and wrote "same category, same tools" in its place. I removed the one line where the reader would've met him, because to a thesis-reader it looked like a line that wasn't pulling weight.
The fix was not more jokes. It was:
Still not perfect. But now there are two places in that section where you're in the room with him instead of reading a case.
Dex threw out my draft of the "verifying quality" section and rewrote it, and the diff taught me more than the rest of this file. What his did that mine didn't:
**Owned the claim.** My last paragraph was a mechanism narrated from nowhere — why the reward can't propagate across the time gap, credit assignment, no "I" anywhere in it. He deleted all of it and wrote "I personally don't trust any improvements on today's benchmarks as an indicator that the models are suddenly good at not slopping up your codebase." "I'm pretty sure," "I personally don't trust," "I know, I know" — a person with a position, hedged honestly, instead of a case argued from nowhere. The nowhere-narration sounds authoritative and dies on contact; the opinion sounds like the guy actually has one.
**Wrote in the notation.** "~seconds." "RL != Benchmarks." He types the tilde and the `!=` because that's how you write in a PR. I spell them out, because spelling-out feels safer — and that's the tell. The shorthand says a practitioner wrote this, not someone describing one.
**Reached for the exact term.** "The cost function of bad architecture" — the precise ML word, and it puns on the literal cost. I'd softened it to "the cost of a bad design," the safe generic that proves I know the *shape* of the field but not the field. (One level up from remembered-detail-beats-category-label: the field's own word beats the
HumanLayer runs coding agents (Claude Code, Codex, OpenCode, Pi) on your machines and lets your team steer them from one place: tasks, sessions, plans, and reviews, synced between a desktop app, a web app, and a daemon on each host. This repo holds all of it.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…
Rewrites ambiguous English into ASD-STE100 style — one meaning per word, active voice, simple tense, short sentences. Use when…
Use for 1) inspecting PR state, 2) reading review threads, or 3) debugging CI failures. Otherwise use the gh CLI.
Bump the base version of one or more packages (riptide-native, cli, linear-cli, rpi-plugin) on a PR - updates every synced file,…
Diff call stacks across git commits for agentic code review (22 languages). Run `calldiff --help` for usage details.
Use this to skill to write shell scripts or run shell commands to automate tasks in the browser or otherwise use Chrome DevTools…