From sdd-quality-loop
Orchestrate blind parallel cross-model panelist verification for a critical SDD task. Runs prepare-panelist-input (consent + sanitize), invokes panelists blind in parallel (Claude via Agent tool; GPT/Gemini via CLI runners), collects verdict JSONs, then prompts the user to run check-cross-model to gate the result.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdd-quality-loop:cross-model-verifyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when a task's contract has `cross_model: required` and you need
Use this skill when a task's contract has cross_model: required and you need
to collect panelist verdicts before running the deterministic gate.
Never run this skill in CI. Collection is local-only and opt-in (design.md §6).
Cross-Model: enabled in specs/<feature>/tasks.md (or a valid
SDD_SUDO token exists).prepare-panelist-input.{sh,ps1} has been run and produced a sanitized
bundle at specs/<feature>/verification/<task>.panelist-input.txt.codex or gemini),
OR you will provide a manual verdict JSON after running this skill.Panelists MUST be invoked blind. Before calling any panelist:
Implementation Complete reports,
or any specs/<feature>/verification/T-NNN.cross-model.json to panelists.T-NNN.panelist-input.txt) — nothing else from the repository context.These rules are enforced structurally: Claude panelist runs via Agent tool in a
fresh context; GPT/Gemini panelists run via isolated CLI runners with key
isolation (see run-panelist-gpt.{sh,ps1} and run-panelist-gemini.{sh,ps1}).
Run prepare-panelist-input if not already done:
# bash
bash plugins/sdd-quality-loop/scripts/prepare-panelist-input.sh \
--task <T-NNN> --feature <feature> \
--input specs/<feature>/ \
--spec-root specs
# pwsh
pwsh plugins/sdd-quality-loop/scripts/prepare-panelist-input.ps1 \
--task <T-NNN> --feature <feature> \
--input specs/<feature>/ \
--spec-root specs
This will:
Cross-Model: enabled is absent and no SDD_SUDO token exists.specs/<feature>/verification/<T-NNN>.panelist-input.txt.input_digest (64-hex SHA-256) to stdout.Record the input_digest for the --expect-digest gate check later.
bash plugins/sdd-quality-loop/scripts/detect-panel.sh
# or
pwsh plugins/sdd-quality-loop/scripts/detect-panel.ps1
Run ALL panelists simultaneously. Do not wait for one before starting another.
Claude panelist (Anthropic vendor — always included):
Use the Agent tool to invoke sdd-panelist-gpt or sdd-panelist-gemini roles
— actually, Claude itself is the Anthropic panelist. Invoke a fresh Agent with
ONLY the sanitized bundle as input. The agent role is in
plugins/sdd-quality-loop/agents/panelist-gpt.md (for GPT) or
panelist-gemini.md (for Gemini-style structured review).
For the Anthropic (Claude) panelist: create a new Agent tool call with the
sanitized bundle path and the instruction to return a cross-model-verdict/v1
JSON, writing it to
specs/<feature>/verification/<T-NNN>.panelist-anthropic.verdict.json.
GPT panelist (OpenAI vendor — if gpt slug in detect-panel output):
bash plugins/sdd-quality-loop/scripts/run-panelist-gpt.sh \
--task <T-NNN> --feature <feature> \
--input specs/<feature>/verification/<T-NNN>.panelist-input.txt \
--spec-root specs
Gemini panelist (Google vendor — if gemini slug in detect-panel output):
bash plugins/sdd-quality-loop/scripts/run-panelist-gemini.sh \
--task <T-NNN> --feature <feature> \
--input specs/<feature>/verification/<T-NNN>.panelist-input.txt \
--spec-root specs
Each runner writes its verdict to
specs/<feature>/verification/<T-NNN>.panelist-<vendor>.verdict.json.
After all panelists complete, confirm verdict files exist:
ls specs/<feature>/verification/<T-NNN>.panelist-*.verdict.json
Minimum required: one anthropic + one non-Anthropic (openai or google).
If a runner exited non-zero (graceful degrade), that vendor is absent — the
gate will fail diversity unless a manual verdict is provided.
Tell the user to run check-cross-model to apply the deterministic consensus:
bash plugins/sdd-quality-loop/scripts/check-cross-model.sh \
--task <T-NNN> --feature <feature> \
--evaluator <PASS|NEEDS_WORK> \
--expect-digest <input_digest_from_step1>
# or pwsh
pwsh plugins/sdd-quality-loop/scripts/check-cross-model.ps1 \
--task <T-NNN> --feature <feature> \
--evaluator <PASS|NEEDS_WORK> \
--expect-digest <input_digest_from_step1>
The gate writes specs/<feature>/verification/<T-NNN>.cross-model.json and
exits 0 (PASS), 1 (FAIL/NEEDS_HUMAN), or 2 (tool error).
If detect-panel exits 1 (no non-Anthropic CLIs):
specs/<feature>/verification/<T-NNN>.panelist-openai.verdict.json (or
google) following the cross-model-verdict/v1 schema in
references/cross-model-verification-policy.md.Do NOT crash or block — the user may still proceed to manually provide verdicts.
panelist-input.txt must be the ONLY input to each
panelist. Do not add repo context, agent memory, or prior verdicts.SDD_EVIDENCE_KEY and SDD_SUDO_KEY are never passed to panelists.npx claudepluginhub aharada54914/sdd-forge --plugin sdd-quality-loopGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.