herdr
Skill9 starsChanged 2 months agoApache-2.0View on GitHub
Control Herdr, a terminal multiplexer for coding agents. Use only when the user explicitly mentions Herdr or asks to use Herdr to inspect or control panes, tabs, workspaces, terminals, commands, or communication with another agent. Do not use merely because a task could benefit from a background terminal, delegation, or parallel work. Requires HERDR_ENV=1.
51 other projects use a version of this, 29 of them edited.
Adopted by
Most recently taken up by
- juraj-blahunka/skillstheir own version, first seen Nov 8, 2026
- bepaldes/heimdall-agentedited, first seen Nov 8, 2026
- compozy/compozyedited, first seen Nov 7, 2026
- cormacc/dotagentsedited, first seen Nov 4, 2026
- rhasselle-oddball/claude-skillstheir own version, first seen Nov 1, 2026
- vidluther/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use better-accessibility, wizard and 3 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AnasX7Skillbetter-accessibility
Helps your project comply with accessibility standards and best practices.
Also in 3 projects that use this
AWSSkillwizard
Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.
Also in 5 projects that use this
AnthropicSkilleli5
Explain a topic like I'm a 5 year old. Use when the user types /eli5 <topic> or asks for a dead-simple picture explainer of how something works.
Also in 3 projects that use this
MicrosoftSkillbro
Re-explain the previous assistant message in a much simpler way, for when the reply made you go 'bro what'. Use /bro to get a simpler version of the last answer in Plain Language + Chicago Manual of Style, with diagrams where they help.
Also in 3 projects that use this
AWSSkillretro
Conduct a retrospective on a coding session.
Also in 5 projects that use this
Other versions51 projects use a version of this.
Word for word · 0
None found.
Edited · 29
- ogulcancelik/herdr★ 47k20% same
- herdrdev/herdr★ 47k20% same
- compozy/compozy★ 2.9k22% same
- dmmulroy/skills★ 42828% same
- sammcj/agentic-coding★ 16927% same
- romiluz13/mifal★ 4419% same
- hcchengithub/peforth★ 3715% same
- Mineru98/skills-store★ 1318% same
- Spoon94/skill-vault★ 521% same
- caikiji/skills-lab★ 422% same
19 more not listed
Wrote their own version · 22
- davidondrej/skills★ 4.3ksame name
- ninehills/skills★ 280same name
- ninehills/public-skills★ 86same name
- ulises-jeremias/agent-toolkit★ 19same name
- Suge8/friedbun★ 12same name
- transparent-pegasus/herdr-orchestration★ 8same name
- cypher0n3/dotagents★ 3same name
- yangyang0507/herdr-skill★ 3same name
- bmaltais/skills★ 2same name
- jbaham2/herdr-plugin★ 1same name
12 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository60 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- check-for-updatesSkill
- api-designSkill
- bddSkill
- blueprintSkill
- brainstormingSkill
- browser-usageSkill
- clarify-codeSkill
- cleanupSkill
- codebase-designSkill
- code-contractsSkill
- code-reviewSkill
- commitSkill
- confluence-exportSkill
- database-proSkill
- datadogSkill
- diagnosing-bugsSkill
- diagram-designSkill
- e2e-testSkill
- explain-code-flowSkill
- explain-simplySkill
- frontend-slidesSkill
- glabSkill
- grill-meSkill
- handoffSkill
- i-have-adhdSkill
- impeccableSkill
- implementSkill
- improve-codebase-architectureSkill
- jiraSkill
- loomSkill
- markitdownSkill
- mermaid-skillSkill
- modularity-designSkill
- modularity-reviewSkill
- plannotatorSkill
- ponytailSkill
- prototypeSkill
- qmdSkill
- refactorSkill
- releaseSkill
- researchSkill
- security-reviewSkill
- show-meSkill
- skill-doctorSkill
- stop-the-slopSkill
- tddSkill
- teachSkill
- terraform-engineerSkill
- ticket-overviewSkill
- to-specSkill
- to-ticketsSkill
- update-docstringsSkill
- wayfinderSkill
- write-documentationSkill
- write-readmeSkill
- write-simplySkill
- writing-for-agentsSkill
- wtfSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. 0 are common, 10 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 49 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
Before issuing any control command, check that this agent is running inside a Herdr-managed pane:
- Distinctive: line 17
If the check fails, say that you are not running inside Herdr and stop.
- Very specific: line 19
When the check passes, the herdr binary in PATH talks to the running session.
- Very specific: line 43
Do not run bare herdr for discovery.
- Very specific: line 66
Prefer --current when a pane command should target the calling pane.
- Distinctive: line 81
Use workspace and tab commands for organization.
- Distinctive: line 96
Default to a sibling pane in the current tab and current working directory.
- Very specific: line 112
Read result.pane.pane_id from the JSON response.
- Distinctive: line 119
Use the executable that belongs to the requested agent:
- Distinctive: line 127
Do not pass the task as an argv prompt by default.
- Very specific: line 149
If the user is watching that tab, completion reports idle instead, so wait for idle.
- Very specific: line 151
If a wait times out, inspect herdr pane get <returned-pane-id> and pane read before deciding what to do.
- Very specific: line 167
Read the new pane_id from the JSON response, then run and inspect the command:
- Distinctive: line 177
Use the read source that matches the task:
- Very specific: line 184
Use --format ansi when colors and terminal styling are evidence.
- Distinctive: line 186
If the user explicitly asks for another tab, workspace, or worktree, discover that command group and use returned IDs.
- Very specific: line 190
Use --no-focus for background work unless the user asked to switch context.
- Very specific: line 191
Use --current or an explicit ID.
- Distinctive: line 194
Do not close workspaces, tabs, panes, or sessions you did not create unless the user explicitly asked.
- Very specific: line 195
Never run herdr server stop from an active session unless the user explicitly intends to stop the server and its pane processes.
- Distinctive: line 196
Never kill the main Herdr process.
“Common” is measured: kept by at least 6 in 10 of the 49 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Herdr
Herdr is a terminal multiplexer and runtime for coding agents. It organizes terminals into workspaces, tabs, and panes, detects agent identity and status, and exposes the running session through the herdr CLI.
Before issuing any control command, check that this agent is running inside a Herdr-managed pane:
test "${HERDR_ENV:-}" = 1If the check fails, say that you are not running inside Herdr and stop. Do not inspect or control the focused Herdr session from outside Herdr.
When the check passes, the herdr binary in PATH talks to the running session. Use it to inspect neighboring work, create isolated terminal contexts, start agents and commands, read their output, and wait for state changes.
Learn the current CLI
The installed binary is the authority for command syntax. Begin with:
herdr --helpThen print the relevant command group by running it without a subcommand:
herdr pane
herdr workspace
herdr worktree
herdr tab
herdr wait
herdr terminal
herdr notification
herdr integration
herdr sessionDo not run bare herdr for discovery; it launches or attaches the TUI. Do not probe a mutating nested command by omitting arguments; some commands, including herdr workspace create, are valid with defaults and will execute. Use the command-group output above instead.
Most control commands print JSON. Read identifiers and state from those responses instead of predicting either one.
IDs and current context
Public IDs are short stable handles:
- workspace:
w1 - tab:
w1:t1 - pane:
w1:p1 - terminal:
term_...
The encoded suffix can contain letters and can grow beyond one character. Treat every ID as an opaque string.
Closed tab and pane IDs are not reused and do not retarget later resources. A pane moved into another workspace receives a new public pane ID. Re-read create, split, move, list, or get responses after mutations; never construct an ID from a workspace or display number.
Herdr injects the caller's stable context into every managed pane:
printf '%s\n' "$HERDR_WORKSPACE_ID" "$HERDR_TAB_ID" "$HERDR_PANE_ID"Prefer --current when a pane command should target the calling pane. Omitting a target can use the UI-focused pane, which may belong to the user or another client.
Discover live state with:
herdr workspace list
herdr tab list --workspace "$HERDR_WORKSPACE_ID"
herdr pane current --current
herdr pane list --workspace "$HERDR_WORKSPACE_ID"Control agents through panes
An agent runs inside a pane. Use the pane ID as the control target for agents, shells, servers, tests, and logs. This keeps spawning, input, reads, waits, and cleanup on one stable control surface.
Use workspace and tab commands for organization. Use worktree commands only when you intentionally want Herdr to create, open, or remove a Git checkout.
Pane records expose agent, agent_status, and native session metadata when available. Agent status is idle, working, blocked, done, or unknown.
idle and done are the same underlying semantic state with different attention state:
idle: the agent is waiting and its result is considered seen.done: the agent finished and its result has not been seen.
An agent that first opens at its prompt reports idle, including in a background pane. After a working or blocked agent completes, it reports done when its tab or workspace is in the background. It reports idle when it completes in the active tab while the foreground client is focused. If the foreground client is explicitly unfocused, completion can become done even in the active tab.
Focusing a pane, switching to its tab, or regaining outer terminal focus marks the visible tab as seen, so done becomes idle. Switching away does not turn an existing idle status into done; done is created by a later completion while the pane is unseen. With no foreground client, a new completion in the globally active tab is treated as seen while completions in background tabs still become done.
Start agents interactively
Default to a sibling pane in the current tab and current working directory. Do not create a workspace, tab, worktree, or different cwd unless the user explicitly requests that topology or location.
Honor a direction requested by the user. Otherwise inspect the caller pane's current rectangle:
herdr pane layout --pane "$HERDR_PANE_ID"Split a wide pane to the right and a narrow or tall pane down. Avoid repeated same-direction splits that would create unusably narrow columns or short rows. Keep the user's focus in the calling pane:
herdr pane split --current --direction right --no-focusReplace right with down when the layout calls for it.
Read result.pane.pane_id from the JSON response. Give the pane a useful label, then start the requested agent by running only its normal executable so its interactive TUI opens:
herdr pane rename <returned-pane-id> "reviewer"
herdr pane run <returned-pane-id> "codex"Use the executable that belongs to the requested agent:
- Codex:
codex - Claude Code:
claude - pi:
pi - OpenCode:
opencode - OMP:
omp
Do not pass the task as an argv prompt by default. Do not add non-interactive flags. Only change the normal interactive launch when the user explicitly asks for a different launch mode or command.
Inspect the pane after launch. If agent_status is not yet idle, wait for the idle transition. Once it is idle, submit the task with pane run:
herdr pane get <returned-pane-id>
herdr wait agent-status <returned-pane-id> --status idle --timeout 30000
herdr pane run <returned-pane-id> "Review the current diff and report only actionable findings."Status waits match the current status immediately or wait for a future matching transition.
pane run sends the text and Enter together. Use it for initial prompts and follow-ups instead of coordinating send-text and send-keys separately.
For normal background work, wait for the agent to start working. If the pane remains in a background tab or workspace, wait for done before reading its transcript:
herdr wait agent-status <returned-pane-id> --status working --timeout 30000
herdr wait agent-status <returned-pane-id> --status done --timeout 120000
herdr pane read <returned-pane-id> --source recent-unwrapped --lines 120If the user is watching that tab, completion reports idle instead, so wait for idle. Always treat either idle or done as completed when inspecting pane get; the difference is whether the result has been seen.
If a wait times out, inspect herdr pane get <returned-pane-id> and pane read before deciding what to do. A blocked agent needs input; an unknown pane may not yet contain a detected or integrated agent.
Submit follow-ups the same way:
herdr pane run <returned-pane-id> "Now check the failing test."Run an ordinary command in another pane
Split the calling pane using the same geometry rule without moving the user's focus:
herdr pane split --current --direction right --no-focusRead the new pane_id from the JSON response, then run and inspect the command:
herdr pane run <returned-pane-id> "just test"
herdr wait output <returned-pane-id> --match "test result" --timeout 120000
herdr pane read <returned-pane-id> --source recent-unwrapped --lines 120Inspect existing output before waiting for future output. A wait timeout exits with status 1.
Use the read source that matches the task:
visible: the current rendered viewportrecent: recent scrollback as rendered, including soft wrapsrecent-unwrapped: recent scrollback with soft wraps joined; prefer it for logs and transcriptsdetection: the bottom-buffer snapshot used by agent detection
Use --format ansi when colors and terminal styling are evidence. Otherwise use text.
If the user explicitly asks for another tab, workspace, or worktree, discover that command group and use returned IDs. Do not infer a larger topology from a request to start an agent or command.
Safety and coordination rules
- Use
--no-focusfor background work unless the user asked to switch context. - Use
--currentor an explicit ID. Do not rely on another client's focused pane. - Parse IDs from JSON responses. Do not derive them from sidebar order or examples.
- Inspect before waiting. Read current output first, then wait for the next state or output you expect.
- Do not close workspaces, tabs, panes, or sessions you did not create unless the user explicitly asked.
- Never run
herdr server stopfrom an active session unless the user explicitly intends to stop the server and its pane processes. - Never kill the main Herdr process. Use named test sessions for experiments that need an isolated server.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

