herdr-comms
Spawn Herdr agents and send them messages, over native Herdr.
Skill by varelaseb
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/varelaseb-herdr-comms
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/herdr-comms
What's inside
- Skill name
herdr-comms- Description
- Spawn Herdr agents and send them messages, over native Herdr.
- License
- Apache-2.0
- Instructions
- 268 lines in SKILL.md · view on GitHub
Files (7)
- SKILL.md
- herdr-await · assets/
- herdr-claude-session · assets/
- herdr-close · assets/
- herdr-say · assets/
- herdr-spawn · assets/
- herdr-wake · assets/
SKILL.md (first lines)
# herdr-comms
Thin wrappers over native Herdr. Herdr itself owns the transport; these
exist only for the failure modes it leaves to the caller, and for parking an
idle Claude agent so it holds no memory while it waits.
Every wrapper acts only in the caller's Herdr session,
`${HERDR_SESSION:-default}`: pane, tab, and space ids repeat across sessions.
`octo-lite-state` prints the caller's session state directory, holding `lanes/`
(lane records, hand-off logs, notes, `archive/`), `operator.toml`, and
`operator.handoffs.jsonl` (spec `#session-state`).
## Spawn an agent
```
herdr-spawn --workspace ID --name NAME --label LABEL --cwd DIR --role ROLE \
-- claude # default
herdr-spawn --workspace ID --name NAME --label LABEL --cwd DIR --role ROLE \
-- codex # non-default alternative
herdr-spawn --workspace ID --name NAME --label LABEL --cwd DIR --role ROLE \
-- pi # non-default alternative
```
A lane worker spawns into its lane space, `--workspace "$HERDR_WORKSPACE_ID"`,
named `<role>-<ticket>` lowercase (`implementer-ann-64`). A pane never moves
between spaces: Herdr rewrites its ids.
Spawn bare, then send the brief with `herdr-say`, or with `herdr-await` to wait
on the agent (below). Nothing follows the runtime:
with an inline prompt, `herdr agent start` times out waiting for readiness.
One tab, one pane, one agent, at an explicit worktree. Prints:
```
name= role= tab= pane= cwd= contract= provider_session_id=
```
The runtime comes from the agent definition and each CLI's own defaults. This
pins no model, effort, or service tier.
`--role` is not just a label. A Claude agent loads its own contract through
`--agent ROLE`, which `herdr-spawn` passes. Codex has no custom-agent file, so
the contract at `~/.claude/agents/ROLE.md` is passed as `-c developer_instructions=...`. It
binds at the developer layer and the agent waits for its brief; a contract sent
as a prompt is worked as a task. Pi has neither, so it gets the contract file
through `--append-system-prompt FILE`. The output reports `contract=` so a
silent miss is visible.
`--operating-model FILE` is optional. It hands that file to the agent at start,
so no global instruction file is needed: Claude gets
`--append-system-prompt-file FILE`, Codex gets it ahead of the contract in
`developer_instructions`, pi gets `--append-system-prompt FILE` ahead of the
contract's. It defaults to `$OCTO_LITE_OPERATING_MODEL`, and the
spawn exports that path into the new tab, so every child inherits the model
without passing the flag. Without either, nothing changes.
A new tab gets the Herdr server's environment, so the spawn always exports the
caller's `HOME` into it. The agent and every child it spawns keep the caller's
home: git identity, consent, and sessions.
Codex runs with `--no-daemon`, so its thread and commands live in the tab's own
process tree, not the shared app-server that outlives the tab.
It wraps `herdr tab create` and `herdr agent start`, and handles three things
those leave to the caller:
- A freshly created pane is not yet at a shell prompt. Herdr reports
`agent_pane_busy`; only that code is retried, with backoff.
- An agent that opens its trusted-folder dialog makes `agent start` report
`agent_not_ready`. That is a started agent waiting on a keystroke, not a
failure.
- The dialog is answered at the **pane**, never blindly. A blocked agent refuses
agent-level input, and the highlighted row may be `No, exit`, where a bare
Enter kills the agent being spawned. The selection is moved onto the trust
option and verified before confirming.
Any failure closes the tab, so a failed spawn never leaves an orphan.
`--resume SESSION` (Claude only) starts a parked agent as it was launched:
Claude gets `--agent ROLE --resume SESSION` and keeps its conversation. An
owner resumes through `octo-lite-start --cwd WORKTREE --name LANE --resume
SESSION`, in a new lane space. `herdr-say` does both for you; see below.
## Close an agent or a lane space
```
herdr-close TAB
herdr-close SPACE
```
The teardown step. An id with a colon (`w5:t2`) is a tab, one without (`w5`) is
a space. Closes it, then sends TERM to every process of the caller's session
whose environ carries `HERDR_TAB_ID=TAB` or `HERDR_WORKSPACE_ID=SPACE`, which
catches detached children that close alone leaves running, and ends whole each
`herdr-await` of the caller's own pane on an agent in it, by name or pane id,
read from `herdr agent list` before the close, waking no one: you closed it, so
no stop message reads as news of an agent spawned again under the same name
(spec `#transport-close-waits`). Another caller's wait on it ends as gone at
its bound. Parking (below) closes the same way. Run it from outside
what it closes: the spawner closes a tab, the operator closes a finished lane's
own space, or only its owner tab when the lane started in a shared space.
Prints one closed hand-off line (`at kind tab|space close_rc killed`; spec
`#transport-close-line`), which an owner closing a consumed worker appends to
the lane's hand-off log, and exits with the close status.
## Park an idle agent
```
herdr-close --park PANE >>"$lanes/<lane>.handoffs.jsonl"
```
`$lanes` is `$(octo-lite-state)/lanes`. Reads the Claude session of PANE, a
pane of the caller's session, by `herdr-claude-session` (below), closes its
tab, or its whole space when that tab is the space's only one (a lane owner in
its own space), and prints one parked line (`at kind pane name role cwd
session`) on stdout, even when the close fails; its closed line goes to
stderr. The role is the session record's, else the one a worker's spawn name
`<role>-<ticket>` carries. The parker appends the line: the operator for an
owner, the owner for a worker. An agent Herdr does not report idle is refusedFrom varelaseb/octo-lite, Apache-2.0.
More from varelaseb/octo-lite
- 0.561score
push
varelaseb
Push the current octo-lite branch and create or update the linked GitHub PR using the target repo's conventions and validation evidence.
SkillAFreshness: AClaude Code +9 - 0.561score
grill-with-docs
varelaseb
Run a docs-backed grilling session for octo-lite issue shaping; stress-test a draft or rough Linear/GitHub issue against target repo specs, ADRs, code, repo…
SkillAFreshness: AClaude Code +9 - 0.561score
repo-health
varelaseb
Run the repo health pass, fired by hand, that files a repo's real architecture and cleanliness issues as ranked health tickets; and file review notes and…
SkillAFreshness: AClaude Code +9 - 0.561score
implement-spec
varelaseb
Dispatch delivery of an accepted spec, or one ticket the existing spec already states, through Herdr workers to one PR.
SkillAFreshness: AClaude Code +9 - 0.561score
octo-lite-github
varelaseb
Use GitHub PRs, branches, reviews, and explicitly requested GitHub issue operations in octo-lite workflows, while respecting Linear-first tracking when the…
SkillAFreshness: AClaude Code +9 - 0.521score
nodejs
varelaseb
Node.js runtime policy for octo-lite implementer work when durable repo signals show a Node.js project and the issue touches runtime scripts, modules, env…
SkillBFreshness: BClaude Code +9 - 0.521score
frontend-design
varelaseb
Apply production-quality frontend design practice during octo-lite implementer work when the shaped issue touches UI, styling, interaction, or visual polish.
SkillBFreshness: BClaude Code +9 - 0.518score
typescript
varelaseb
TypeScript policy for octo-lite implementer work when durable repo signals show TypeScript is in scope.
SkillBFreshness: BClaude Code +9 - 0.518score
python
varelaseb
Python stack policy for octo-lite implementer work when durable repo signals show Python is in scope.
SkillBFreshness: BClaude Code +9 - 0.518score
octo-lite-debug
varelaseb
Diagnose octo-lite workflow blockers in local Codex, git, gh, validation, branch, and PR state.
SkillBFreshness: BClaude Code +9 - 0.499score
tdd
varelaseb
Test-driven development.
SkillBFreshness: BClaude Code +9 - 0.474score
commit
varelaseb
Create a well-formed git commit from current changes using session history, issue scope, and repo conventions; use when asked to commit or finalize staged…
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 28
- Last commit (this folder)
- Oct 22, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/varelaseb/octo-lite
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from varelaseb
- 0.561score
repo-health
varelaseb
Run the repo health pass, fired by hand, that files a repo's real architecture and cleanliness issues as ranked health tickets; and file review notes and…
SkillAFreshness: AClaude Code +9 - 0.561score
push
varelaseb
Push the current octo-lite branch and create or update the linked GitHub PR using the target repo's conventions and validation evidence.
SkillAFreshness: AClaude Code +9 - 0.561score
grill-with-docs
varelaseb
Run a docs-backed grilling session for octo-lite issue shaping; stress-test a draft or rough Linear/GitHub issue against target repo specs, ADRs, code, repo…
SkillAFreshness: AClaude Code +9 - 0.561score
octo-lite-github
varelaseb
Use GitHub PRs, branches, reviews, and explicitly requested GitHub issue operations in octo-lite workflows, while respecting Linear-first tracking when the…
SkillAFreshness: AClaude Code +9 - 0.561score
implement-spec
varelaseb
Dispatch delivery of an accepted spec, or one ticket the existing spec already states, through Herdr workers to one PR.
SkillAFreshness: AClaude Code +9 - 0.521score
nodejs
varelaseb
Node.js runtime policy for octo-lite implementer work when durable repo signals show a Node.js project and the issue touches runtime scripts, modules, env…
SkillBFreshness: BClaude Code +9
Cite this page
herdr-comms skill. Agent Mart. https://agentmart.dev/skills/varelaseb-herdr-comms (last updated 2026-10-24)