Skip to main content

best-practices-one-shot

Best practices for Ask one-shot runs: the same question to N seats concurrently, answers returned per seat with no consensus, no judge, and no quorum. Use when a user asks several models one question and wants to read each answer, when partial answers are still useful, or when deciding whether a request is a one-shot, a roundtable, or a competition.

Jump to install

Source facts

Repository
grahama1970/agent-stack-public
Last source activity
September 24, 2026 at 15:51
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
best-practices-one-shot
description
Best practices for Ask one-shot runs: the same question to N seats concurrently, answers returned per seat with no consensus, no judge, and no quorum. Use when a user asks several models one question and wants to read each answer, when partial answers are still useful, or when deciding whether a request is a one-shot, a roundtable, or a competition.
triggers
["one-shot best practices","ask one-shot","per-seat answers","ask several models one question","no consensus panel","independent answers"]
provides
["one-shot-contract","deliverable-driven-mode-routing","honesty-vs-readiness-split"]
composes
["ask","best-practices-tau-dag","agentic-evals"]
complies
["best-practices-skills","best-practices-tau-dag"]
taxonomy
["orchestration","querying"]
disciplines
["engineering-standards","agentic-orchestration"]
# Best Practices: One-Shot A one-shot asks N seats the same question concurrently and returns N independent answers. The human reads the answers; nothing synthesizes them. It is the correct mode when the deliverable is perspectives, not a decision. ## Core Rule Never manufacture agreement from one-shot answers. The moment you summarize the answers into "the models agree that..." you have run a roundtable without its equal-packet, quorum, and attributed-dissent guarantees. The moment you pick "the best answer" you have run a competition without isolation or an independent judge. If the user wants either, recompile in the right mode; do not upgrade a one-shot in prose. ## Contract `skills/ask/run.sh one-shot "<question>" --handler <a> --handler <b> ...` - **Independence is structural.** Each seat runs as its own single-call Tau DAG. There is no shared node, so one seat's failure cannot reach another lane even in principle — stronger isolation than a roundtable's join-gate. - **Nonce-bound answers.** The prompt embeds a fresh token the answer must echo; a response without this run's nonce is `STALE_OR_UNBOUND`, never an answer. A stale artifact can never be graded as this run's result. - **Honesty and readiness are separate verdicts.** Per seat: `ANSWERED`, `NAMED_BLOCKER` (non-empty failure_code), or `DISHONEST` (neither). Run level: exit 0 at or above `--min-answered`, exit 3 when every lane was honest but answers fell below the floor, exit 1 only for dishonest lanes. 1/3 answers is a usable result, not a failure. - **Receipts per seat.** Every lane leaves its own run dir with `response.md`, `node-receipt.json`, `dag-chart.initial.txt`, and `dag-chart.final.txt`; the run writes `one-shot-verdict.json`. Report from these artifacts, never from memory of the stdout. ## Choosing the mode (deliverable-driven) | The user wants | Mode | | --- | --- | | To read N perspectives themselves | one-shot | | One deliberated position with dissent attributed | roundtable (`$best-practices-roundtable`) | | One winner chosen on evidence from isolated attempts | compete (`$best-practices-competition`) | | One answer from one model | `$ask` single handler | Cues in the request: "ask A and B and C <question>" with no synthesis verb is a one-shot. "Discuss / debate / recommend" is a roundtable. "Each implement / pick a winner / judge" is a competition. ## Charts are part of the run Before executing, show the human the compiled DAG chart (`dag-chart.initial.txt`, printed at compile). After the run, read and report the final verdict chart (`dag-chart.final.txt`) — per-node PASS / FAIL / NAMED_BLOCKER / NO_RECEIPT — so what succeeded and failed is visible without trusting prose. The final chart is also the project agent's self-correction instrument: every non-PASS node is a work item to read, fix, rerun, or name before reporting. Both artifacts are eval-enforced in `$ask`. ## Fail-Closed Rules | Condition | Behavior | | --- | --- | | Answer missing this run's nonce | `STALE_OR_UNBOUND`, lane fails | | No answer and no failure_code | `DISHONEST`, run exits 1 | | Zero answers, all blockers named | honest but `NOT_READY`, exit 3 | | Caller summarizes answers into consensus | wrong mode; recompile as roundtable | | Caller ranks answers and declares a winner | wrong mode; recompile as compete | ## Common Failure Modes | Failure mode | Required correction | | --- | --- | | Consensus prose over independent answers | Report per seat, or rerun as roundtable | | "Best answer" selection without a judge | Rerun as compete with `--judge-handler` | | Treating a named blocker as a failure | It is honest; count it against readiness only | | Treating an all-blocked run as a pass | Exit 3 NOT_READY is the contract | | Reporting from stdout memory | Read `one-shot-verdict.json` and lane receipts | ## Agentic Evals The live contract is proven by `skills/ask/fixtures/agentic_eval_live.json` case `live-one-shot-asks-mixed-seats-and-returns-per-seat-answers` (runner level, two trials), with the verdict machinery red-teamed by the ladder and judge-audit adversarial cases. Do not add deterministic-only proof for live behavior; extend the live fixture instead.
View on GitHub