diff --git a/agents/skills/agent-team/SKILL.md b/agents/skills/agent-team/SKILL.md index d725d4ce..614b51ea 100644 --- a/agents/skills/agent-team/SKILL.md +++ b/agents/skills/agent-team/SKILL.md @@ -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. @@ -143,12 +143,12 @@ herdr agent prompt impl "Implement . Write /tmp/agent-team//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 "" done @@ -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 `, `herdr tab close `. 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 '@- & ~::'` is empty), then `jj workspace forget ` 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. @@ -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. diff --git a/ghostty/config b/ghostty/config index e7200e8d..dd18ee51 100644 --- a/ghostty/config +++ b/ghostty/config @@ -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 diff --git a/ghostty/themes/Nord b/ghostty/themes/Nord deleted file mode 100644 index d83a55de..00000000 --- a/ghostty/themes/Nord +++ /dev/null @@ -1,22 +0,0 @@ -palette = 0=#3b4252 -palette = 1=#bf616a -palette = 2=#a3be8c -palette = 3=#ebcb8b -palette = 4=#81a1c1 -palette = 5=#b48ead -palette = 6=#88c0d0 -palette = 7=#e5e9f0 -palette = 8=#596377 -palette = 9=#bf616a -palette = 10=#a3be8c -palette = 11=#ebcb8b -palette = 12=#81a1c1 -palette = 13=#b48ead -palette = 14=#8fbcbb -palette = 15=#eceff4 -background = #2e3440 -foreground = #d8dee9 -cursor-color = #eceff4 -cursor-text = #282828 -selection-background = #eceff4 -selection-foreground = #4c566a diff --git a/mise/conf.d/ghostty.toml b/mise/conf.d/ghostty.toml index fa10d175..ae7a3792 100644 --- a/mise/conf.d/ghostty.toml +++ b/mise/conf.d/ghostty.toml @@ -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]