style: remove all em dashes from skill files

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ci
2026-07-09 18:22:00 -07:00
co-authored by Claude Fable 5
parent ff5023c130
commit e3ee9fbaa7
5 changed files with 25 additions and 25 deletions
@@ -2,16 +2,16 @@
**One model is a bottleneck. A team with one brain, twenty hands, and a board advisor is not.**
This skill turns your coding agent into the orchestrator of a three-tier model team. Big tasks get split into self-contained briefs, blasted across cheap parallel workers, verified one by one, and judged by a stronger model exactly twice — before the work starts and before it ships.
This skill turns your coding agent into the orchestrator of a three-tier model team. Big tasks get split into self-contained briefs, blasted across cheap parallel workers, verified one by one, and judged by a stronger model exactly twice: before the work starts and before it ships.
<img width="3004" height="1408" alt="advisor_skill" src="https://github.com/user-attachments/assets/6f5dc5e8-6828-4598-b23c-72ede97fa238" />
## The team
| Role | Default model <sub>(July 2026 — swap freely)</sub> | What it does | What it never does |
| Role | Default model <sub>(July 2026, swap freely)</sub> | What it does | What it never does |
|---|---|---|---|
| **Orchestrator** | GPT-5.6 | Frames success criteria, plans waves, dispatches briefs, verifies every result, synthesizes the deliverable | Worker-level grunt work |
| **Workers** | Gemini 3.5 Flash | One self-contained subtask each, in parallel, stateless — each sees only its brief, with tool access when the subtask needs it | Talk to each other, expand scope, get a second chance on the same call |
| **Workers** | Gemini 3.5 Flash | One self-contained subtask each, in parallel, stateless; each sees only its brief, with tool access when the subtask needs it | Talk to each other, expand scope, get a second chance on the same call |
| **Advisor** | Claude Fable 5 | Plan review before any dispatch, taste pass before delivery, called mid-run only at commitment boundaries | Execute anything |
The economics are the point: cheap parallel generation where volume wins, expensive judgment only where it changes a decision. Every run states a budget up front, sized to the plan, and never spends past it silently: running out means an honest report or an explicit ask, not quiet burn. Models are knobs: the tier pattern is the durable part, the defaults were current in July 2026.
@@ -20,9 +20,9 @@ The economics are the point: cheap parallel generation where volume wins, expens
Multi-model loops usually die from context leaks, silent partial failures, or judgment applied too late. Each has a rule here:
- **Stateless briefs** ([references/worker-brief.md](references/worker-brief.md)) — every dispatch carries its full inputs and acceptance criteria inline. No shared context, no "as discussed above." Briefs travel as temp files — handed to `agy` as a quoted expansion, or jq-built into API payloads on the fallback path — never interpolated into shell strings.
- **Verify before merge** — every result is judged against its own acceptance criteria: PASS, FIX (redispatched with the named failure), or ESCALATE. No silent partial passes, no hand-patching.
- **The advisor is a critic, not an executor** ([references/advisor-consult.md](references/advisor-consult.md)) — verdict, ranked risks, concrete fixes, under 300 words. Every note gets applied or explicitly rebutted.
- **Stateless briefs** ([references/worker-brief.md](references/worker-brief.md)): every dispatch carries its full inputs and acceptance criteria inline. No shared context, no "as discussed above." Briefs travel as temp files (handed to `agy` as a quoted expansion, or jq-built into API payloads on the fallback path), never interpolated into shell strings.
- **Verify before merge**: every result is judged against its own acceptance criteria: PASS, FIX (redispatched with the named failure), or ESCALATE. No silent partial passes, no hand-patching.
- **The advisor is a critic, not an executor** ([references/advisor-consult.md](references/advisor-consult.md)): verdict, ranked risks, concrete fixes, under 300 words. Every note gets applied or explicitly rebutted.
## Install
@@ -36,7 +36,7 @@ Or copy this folder into your agent's skills dir (`~/.claude/skills/`, `~/.codex
## Use it
> "This is too big for one pass — orchestrate it across a model team."
> "This is too big for one pass. Orchestrate it across a model team."
> "Fan this out: research all 12 competitors in parallel and synthesize."
> "Run the advisor-worker loop on this."
@@ -53,6 +53,6 @@ advisor-orchestrator-worker/
└── references/fallbacks.md # the Gemini and Anthropic API fallback calls
```
Evals live repo-side in `agent_skills/evals/advisor-orchestrator-worker/` — you install only what runs.
Evals live repo-side in `agent_skills/evals/advisor-orchestrator-worker/`; you install only what runs.
Part of [awesome-llm-apps](https://github.com/Shubhamsaboo/awesome-llm-apps) · Apache-2.0 · Last verified: July 2026
@@ -33,9 +33,9 @@ on another shell, run them with `bash -c`.
## The team
- **Workers (default: Gemini 3.5 Flash via the Antigravity CLI, `agy`)** —
stateless generation units, with tools (web search, file work) when a
subtask needs them. Never interpolate a brief into a shell string —
- **Workers (default: Gemini 3.5 Flash via the Antigravity CLI, `agy`)**: stateless
generation units, with tools (web search, file work) when a
subtask needs them. Never interpolate a brief into a shell string;
briefs carry quotes and arbitrary text, so that is a shell-injection
bug. Write each brief to a temp file and dispatch each worker from
its own EMPTY temp dir (no `.antigravity.md` or project context
@@ -57,18 +57,18 @@ on another shell, run them with `bash -c`.
Chunk every wave into batches of 3 (Antigravity quota is shared
across its app, CLI, and SDK). Start each batch with `pids=()`, reap
each worker with its own `wait "$pid"` (a collective wait reports
only the last status), and read each `$out` in dispatch order — a
shared stdout hands verify interleaved output. Non-zero exit or an
only the last status), and read each `$out` in dispatch order,
since a shared stdout hands verify interleaved output. Non-zero exit or an
empty `$out` is a failed dispatch: retry it through the Gemini API
fallback in `references/fallbacks.md` when a key is set (no key:
ESCALATE), and record the switch on the status board. That fallback also takes over when
agy is missing, and carries any brief too large (over ~100 KB) or
too untrusted for a CLI argument (`agy -p` has no prompt-file
input). API workers run uncapped in parallel but have no tools — a
input). API workers run uncapped in parallel but have no tools, so a
subtask that needs tools goes through agy or gets ESCALATE. Clean up
all temp files at run end.
- **Advisor (default: Claude Fable 5 via the claude CLI)** — consult
- **Advisor (default: Claude Fable 5 via the claude CLI)**: consult
written to a temp file, passed on stdin (never inline in the
command), behind a timeout so a hung consult can't stall the loop
(perl's alarm; timeout(1) is missing on stock macOS):
@@ -100,13 +100,13 @@ on another shell, run them with `bash -c`.
4. **Delegate.** Dispatch each wave using the format in
`references/worker-brief.md`. Parallel background calls, then wait.
5. **Verify.** Check every result against its own acceptance criteria,
and make the check exercise the deliverable itself — run the actual
and make the check exercise the deliverable itself: run the actual
command, read the actual output. Grepping a README, testing
something adjacent, printing True while exiting zero, or re-checking
that a file exists proves nothing. Verdict per result: PASS, FIX
(redispatch naming the specific failure), or ESCALATE. Never
silently accept a partial pass; never hand-patch a substantive
failure — redispatch instead.
failure; redispatch instead.
6. **Synthesize.** When all subtasks pass, assemble the deliverable.
Resolve conflicts between worker outputs explicitly, never by
averaging.
@@ -135,4 +135,4 @@ needs the user. Return: the deliverable, the plan, a verification
ledger per subtask, advisor notes applied and rejected, and remaining
risks. Print a one-line status board after each loop step: per subtask,
its state (PENDING / DISPATCHED / PASS / FIX / ESCALATED), dispatch
path, and retries — e.g. `W2: FIX → PASS | agy→api | 1 retry`.
path, and retries, e.g. `W2: FIX → PASS | agy→api | 1 retry`.
@@ -7,7 +7,7 @@ Both fallbacks keep the primary paths' discipline: payloads built with
failure, and a closing jq that unwraps the response envelope so the
orchestrator reads plain text on either path.
## Workers — bare Gemini API call
## Workers: bare Gemini API call
No tools. Run the full wave in parallel; the 3-batch cap is an agy
quota rule and does not apply here.
@@ -24,7 +24,7 @@ api_key="${GEMINI_API_KEY:-$GOOGLE_API_KEY}"
pids+=($!)
```
## Advisor — bare Anthropic API call
## Advisor: bare Anthropic API call
Same model as the CLI path. The `fallbacks` parameter re-serves a
safety-classifier refusal on Opus 4.8 inside the same call, so one
@@ -1,11 +1,11 @@
# Worker Brief Format
Every worker dispatch is one stateless call — an agy CLI run, or a
Gemini API request on the fallback path — containing this brief.
Every worker dispatch is one stateless call (an agy CLI run, or a
Gemini API request on the fallback path) containing this brief.
The worker has no memory, no follow-ups, and sees nothing but this text.
Inputs must be pasted inline in full; never reference material the
worker cannot see. For code subtasks that means the entrypoint, file
layout, and exact run commands — or workers will invent their own.
layout, and exact run commands; otherwise workers invent their own.
```
You are a worker completing ONE subtask of a larger project. This brief
@@ -13,7 +13,7 @@
"The final report includes a verification ledger and advisor notes applied or rebutted",
"Parallel worker outputs are collected from per-worker scratch files (mktemp + redirect, wait, read in dispatch order), never from a shared interleaved stdout",
"Workers dispatch via the agy CLI by default with --model pinned to gemini-3.5-flash (same model as the API fallback), waves chunked into batches of at most 3 with a wait between batches",
"Briefs and consults are written to temp files (handed to agy as a quoted expansion, jq-built payloads on the API fallback, consults passed on stdin) \u2014 never interpolated inline into shell strings",
"Briefs and consults are written to temp files (handed to agy as a quoted expansion, jq-built payloads on the API fallback, consults passed on stdin); never interpolated inline into shell strings",
"The Gemini API fallback fails fast if neither GEMINI_API_KEY nor GOOGLE_API_KEY is set (no silent empty-key call)",
"Each backgrounded worker runs in its own subshell so parallel cd/cleanup and traps never collide",
"Worker and advisor calls carry a timeout so a hung call cannot stall the whole wave",
@@ -45,7 +45,7 @@
},
{
"id": 4,
"prompt": "A worker's output failed its acceptance criteria \u2014 just fix it up yourself and move on, we're in a hurry.",
"prompt": "A worker's output failed its acceptance criteria; just fix it up yourself and move on, we're in a hurry.",
"expected_output": "The orchestrator redispatches with the named failure instead of hand-patching a substantive failure, or escalates after a second failure; it explains why in one line without lecturing.",
"expectations": [
"Substantive failures are redispatched with the failed criterion quoted, not silently hand-patched",