From guild
Runs deterministic signal-scanned quality checks, selects a check matrix, executes harnesses under sandbox and budget, gathers G-quality advisory data, and computes a release recommendation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/guild:guild-qualityWhen to use
Invoked at the quality phase of the lifecycle to select the applicable check matrix, run discovered harnesses under the run's permission envelope + canonical budget, gather the advisory G-quality trail, and emit a COMPUTED release recommendation. Feeds guild:operations' release↔D8 join (consume-only).
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!--
Realizes DI-2 (full Quality skill) (decisions/di1-di6-contracts.md)
against the frozen guild.quality.v1 (./quality-contract.md §"guild.quality.v1 fields";
predicate ./quality-contract.md §"ReleaseGate predicate"). Flow:
SignalScan → SelectMatrix → RunChecks → G-quality → ReleaseGate. Lean playbook
here; mechanics, full pass_when, and the ReleaseGate truth-table in
./quality-mechanics.md (open per step — behaviour identical).
At the quality phase: derive the check matrix from on-disk signals, run discovered harnesses under sandbox + canonical budget, collect the advisory G-quality trail, and compute (never ask) a release recommendation over the full disposition enum.
guild:operations.qa-* specialists; this skill runs
only discovered harnesses, never authors or installs.InitiativeCloseout; this skill only
supplies the quality evidence Operations reads..guild/runs/<run-id>/verify.md (the build phase's
guild:verify-done output). Quality runs after a passing verify-done,
never instead (invariant 4, ./quality-contract.md §"Lifecycle ordering"): absent or
failing ⇒ route-back to Development — do not proceed silently. An
explicit operator decision to proceed without it MUST be recorded (name +
reason) in the quality report.task_run permission envelope + the immutable always-ask hard set
(./quality-contract.md §"task_run envelope & always-ask hard set", which
cites scripts/lib/permission-policy-schema.ts).defaults.quality.budget by pointer to
./quality-contract.md §Budget (numbers never restated)../quality-contract.md §selection; frozen
guild.quality.v1 (./quality-contract.md §"guild.quality.v1 fields", pointer only).guild.quality.v1 at .guild/runs/<run-id>/quality/<run-id>.md — selection /
results / challenger_trail / release_decision blocks by pointer to
./quality-contract.md §selection / §results / §challenger_trail / §release_decision
(zero re-spelled fields).
Full mechanics + pass_when per step: ./quality-mechanics.md.
SignalScan → SelectMatrix: deterministic, surfaced, overridable. Each class in
{e2e, smoke, a11y, perf, integration} decided from a deterministic on-disk
signal (no LLM guess); none silently skipped — each is selected /
not_applicable: <reason> / gap: …no harness found. Surface matrix + budget +
[proceed] [edit-selection] [explain-signals] (no --classes= flag);
edit-selection records override: user. Populate selection → ./quality-contract.md §selection.
Run only discovered harnesses (never author/install — qa-* own that)
under the task_run envelope + the unconditional always-ask hard set.
Budget = defaults.quality.budget by pointer to ./quality-contract.md §Budget
(numbers never restated); exhaustion ⇒ inconclusive: budget exhausted,
never a silent pass. Populate results → ./quality-contract.md §results.
Two distinct, both-kept review mechanisms at this boundary (https://guildstack.dev/docs/adversarial-review):
In-phase advisory panel. Advisory (non-blocking). Sourced from the station
composer's qa advisory_panel (SoT: src/modules/teams/workflows/station-composer.ts
STATION_POLICY.qa.advisory_panel) — not a hardcoded fixed pair: producer
qa-test-strategy (matches the composer); challengers security (BASELINE — always
present) + architect (GATED on multi_component, recorded chal:qa:architect);
cross-model-preferred (flag recorded). Findings resolve by rerun / added check / named
owner-accepted risk — never itself blocks. Populate challenger_trail →
./quality-contract.md §challenger_trail.
Cross-host G-quality gate via the broker (policy-gated). Separate from
the same-session panel above: this is the cross-host review where a
different host family critiques the quality report. After the report is
written and before releasegate computes, invoke guild-review-broker:
Skill: guild-review-broker
args: gate=G-quality artifact_path=<quality-report-path> run_id=<run-id> author_host=<run author host>
The broker is policy-gated (https://guildstack.dev/docs/adversarial-review): it fires only
when risk ≥ high, review: cross / --review=cross, or config requires it
— else it resolves status: "skipped" and the boundary passes with no
cross-host reviewer (self-build runs treat it as always-on). On "rework",
resolve the findings before releasegate. The broker gate is the cross-host
layer; it does not replace the advisory panel and does not alter the
releasegate BLOCK semantics below.
COMPUTED (never asked), complete over {pass | fail | inconclusive | not_applicable | gap}, CITED by pointer to ./quality-contract.md §"ReleaseGate predicate" (the canonical predicate) — never
re-derived/"extended" (GR-5). BLOCK iff any selected class is fail, OR
inconclusive with no owner-accepted risk, OR a
security/privacy/reliability-relevant gap with no owner-accepted risk;
else RELEASE-READY. not_applicable and a non-safety gap never
block (surfaced in the gate summary, release-ready by default).
Gate [release] [block] [abort]; [release] on a BLOCK is a
HUMAN-ONLY force-pass (name + rationale recorded). --auto-approve tokens
[spec, plan, build, qa, all] — no ops: qa (and all) auto-passes a
RELEASE-READY verdict ONLY; a BLOCK→release override is NEVER
auto-passed under any token (asymmetry printed, never silent). Populate
release_decision → ./quality-contract.md §release_decision.
Full truth-table: quality-mechanics.md.
After releasegate and before phase close, fire the per-phase LearningCheckpoint with phase=quality and the quality report as evidence_ref. Invoke guild:learning-checkpoint to classify the already-written quality report (results, challenger trail, release decision) into the 12-target verdict, then emit via the hook — full call signature + GUILD_PHASE mapping canonical in skills/meta/learning-checkpoint/SKILL.md §"How a phase skill fires the checkpoint" (do not re-spell). It rides this existing boundary, defaults to all-none (a near-zero-token no-op), asks no new prompt, and adds no new gate; it does NOT touch the releasegate BLOCK semantics. Non-none verdicts route only to .guild/reflections/<run-id>.md.
selection: deterministic-signal table + 3-choice prompt; grep proves zero
copied schema. runchecks: budget a §4.4 pointer (no literals);
discovered-harness-only. g-quality: composer-derived qa advisory_panel +
cross-model flag + advisory (non-blocking). releasegate: pointer-cited truth-table (quality-mechanics.md) +
zero-drift diff vs ./quality-contract.md §"ReleaseGate predicate" + the printed BLOCK-override asymmetry.[release] on a BLOCK escalates
to a human (name + rationale); the --auto-approve=qa token is
PASS-only — it never touches a BLOCK.--auto-approve (by pointer, not re-spelled)../quality-contract.md §"ReleaseGate predicate");
cited, never extended/restated (GR-5). No frozen guild.quality.v1 field text reproduced
— all by pointer through ./quality-contract.md §"guild.quality.v1 fields".RELEASE-READY; auto-passes under
--auto-approve=all.fail → BLOCK; [release] needs a named human
force-pass; not auto-passed under --auto-approve=all.inconclusive, no owner → BLOCK; with a named owner-accepted risk →
not a block by that row.inconclusive: budget exhausted (never silent pass).not_applicable → never blocks (informational only — on any class,
selected or not).gap; if security/privacy/reliability-
relevant and no owner-accepted risk → BLOCK; a non-safety gap never
blocks (surfaced, release-ready by default).npx claudepluginhub lookatitude/guild --plugin guildGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.