Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions agents/skills/agent-team/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Add an agent when either dimension fails here. Add none when both pass. Drop or

- Default: Opus 5.5 orchestrates and owns architecture; `pi` (DeepSeek V4.1 Flash) writes code; `agy` (Gemini 4 Argon) takes adversarial review and writing.
- Write (`AGENTS.md`, API docs): Gemini 4 Argon via `agy`.
- Adversarial review: Gemini 4 Argon via `agy` (or isolated reviewer; see below).
- Adversarial review: Gemini 4 Argon via `agy` (or isolated reviewer; see below). One review unit per stack touched; see Isolated reviewer.
- Bulk, multimodal, or corpus: `agy` fans out subagents; orchestrator reads `report.md` only.
- Niche (`cursor`): Grok 4.7 or Composer 2.5 only when you need an extra frame or fallback coder.

Expand Down Expand Up @@ -143,12 +143,12 @@ herdr agent prompt impl "Implement <unit>. Write /tmp/agent-team/<slug>/impl.md.
**Confirm that every prompt landed.** A prompt sent right after `agent start` is often
dropped: the agent reports `idle`, `interactive_ready: true`, and its input box is empty.
`agent_prompted` does not mean the agent got the text. After each `herdr agent prompt`,
check that the status turns `working`; if it does not, send the prompt once more:
check that the status turns `working` (or `done`, when a short prompt already finished); if it does not, send the prompt once more:

```bash
for i in 1 2 3; do
sleep 15
[ "$(herdr agent get impl | jq -r .result.agent.agent_status)" = working ] && break
case "$(herdr agent get impl | jq -r .result.agent.agent_status)" in working|done) break ;; esac
herdr agent read impl --source visible | tail -5 # empty input box = dropped
herdr agent prompt impl "<same prompt>"
done
Expand Down Expand Up @@ -187,6 +187,19 @@ Unclear → open question in the brief, do not invent. Same handoff fails twice

Implementer may make local `jj` commits. Nobody pushes unless asked.

Close a worker as soon as its last unit is accepted. Do not keep idle panes for "maybe later".

### 5. Clean up

The outcome is not realized while the team still runs. Clean up before you report done. Do not hand cleanup to the user as a "leftovers" list.

- Close every pane and tab the team created: `herdr pane close <pane-id>`, `herdr tab close <tab-id>`. Then check `herdr pane list --workspace "$HERDR_WORKSPACE_ID"` shows only panes the user had before.
- Worker jj workspaces: check that each worker's commits are in the stack (`jj log -r '<ws>@- & ~::<tip>'` is empty), then `jj workspace forget <ws>` and remove the directory.
- Stop local dev and other long processes the team started, unless the user needs them next. Say which ones you left running, and why.
- Append `orchestrator: team closed` to Handoff.

Something you cannot close safely (unique work, a process the user owns): name it in the final report, with the command to close it.

## Shapes

Default is above: solo, then maybe an implement sibling.
Expand All @@ -197,10 +210,13 @@ Default is above: solo, then maybe an implement sibling.

**Isolated reviewer.** When each cycle must reload fat style skills plus `AGENTS.md`, or the implementer needs an adversarial gate. Reviewer is Gemini 4 Argon (`agy`) or Opus 5.5 (`claude`), not `pi`. Prime it with this skill. Spawn when the first implement unit lands. Load this skill and the stack style skill, read `AGENTS.md` on the touched path, write `review.md`, token `PHASE_COMPLETE` or `BLOCKED`, stop. Orchestrator reads `review.md`; it does not ingest the style corpus. Not for one or two reviews, and not when review is only "matches the brief."

Review each stack apart. A diff that touches backend and frontend gets one review unit per stack, never one review over the mixed diff. Each review unit loads the style skills of its stack and reads every `AGENTS.md` from the repo root down to each touched path. A data stack (dbt, Python, warehouse SQL) is a stack of its own.

## Guardrails

- Do not spawn, and do not start a delegated unit, until Done when is a command or proof this pane can run without the worker. If the outcome is still an open question, ask. Do not staff a team to invent it.
- Do not use Claude's experimental in-process agent teams. This protocol is Herdr panes so pi, agy, and cursor can sit on the same team.
- Agy has no user compact: keep its units short and `/clear` between them.
- After a restart: `herdr agent list`, read the brief, continue from Handoff.
- An orchestrator that ends with idle workers has not finished. Close the team (step 5) before the last report.
- Execution workers (pi, Composer, or agy on bulk): vacuum. One tight unit, an output path, a stop. Do not load this skill into those panes.
9 changes: 4 additions & 5 deletions ghostty/config
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,14 @@ window-title-font-family = Iosevka SS08
# Mouse & Cursor
cursor-style-blink = true
mouse-hide-while-typing = true
# Write to both the primary and system clipboards (osc52 from nvim included)
copy-on-select = clipboard
# Write to both the primary and system clipboards
copy-on-select = both
focus-follows-mouse = true

# Terminal & Integration
command = direct:/home/odsod/.config/ghostty/ghostty-herdr.sh
# Handled by tmux
scrollback-limit = 0
shell-integration-features = cursor,title,path,ssh-env,ssh-terminfo,no-sudo
# Handled by Herdr
scrollback-limit-bytes = 0

# Keybindings
# Release the mouse when a TUI or agent grabs mouse reporting
Expand Down
22 changes: 0 additions & 22 deletions ghostty/themes/Nord

This file was deleted.

1 change: 0 additions & 1 deletion mise/conf.d/ghostty.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[dotfiles]
"~/.config/ghostty/config" = "../../ghostty/config"
"~/.config/ghostty/themes" = "../../ghostty/themes"
"~/.config/ghostty/ghostty-herdr.sh" = "../../ghostty/ghostty-herdr.sh"

[bootstrap.dnf.repos]
Expand Down
Loading