Skip to content
Back to skills

Gz Check

ASecurity

Use for pre-merge or pre-attestation verification; runs the per-change gate, or the full sweep with --full.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
testinggobashgitdocumentation

Works with

  • claude code
  • cli

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add tvproductions/gzkit --skill gz-check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gz Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gz Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tvproductions-gz-check/badge)](https://www.skillsdirectory.com/skills/tvproductions-gz-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: gz-check
persona: main-session
description: Use for pre-merge or pre-attestation verification; runs the per-change gate, or the full sweep with --full.
category: code-quality
lifecycle_state: active
owner: gzkit-governance
last_reviewed: 2026-10-17
model: haiku
metadata:
  skill-version: "1.7.2"
---

# gz check

## Overview

Unified quality gate for all code verification. Replaces the individual
`/lint`, `/test`, `/format`, `/gz-typecheck`, and `/gz-arb` skills.

## Individual Commands

| Command | Purpose |
|---------|---------|
| `uv run gz lint` | Ruff linting + PyMarkdown |
| `uv run gz format` | Ruff auto-formatting |
| `uv run gz typecheck` | Static type checks (ty) |
| `uv run gz smoke` | Smoke/BVT tier — build verification against a 60s budget (GHI #724) |
| `uv run gz test --obpi OBPI-X.Y.Z-NN` | Tests covering one OBPI's REQs (pipeline Stage 3) |
| `uv run gz test` | Full unittest suite |
| `uv run gz test --bdd` | Unit tests + behave (ADR closeout / Heavy-lane) |
| `uv run gz check` | Per-change gate: lint, format, typecheck, every validator, the smoke tier and the tests the change touches (GHI #1191) |
| `uv run gz check --full` | The per-change gate plus the whole unit tier, behave, the docs build, preflight and the guard-canary sweep: CI, release and the `quality-check` chore (GHI #1088, #1191) |

`gz smoke` is the cheapest useful signal: it runs only `@smoke`-marked tests and
fails closed if they exceed the budget in `.gzkit/rules/tests.md`. An empty tier
fails only when `.gzkit.json` declares `smoke.required: true`; otherwise it passes
with an advisory. It proves the build *answers*; it never substitutes for `gz test`,
which proves it is correct.

## When to Use

- **Quick fix-up:** Run individual commands (`gz lint`, `gz format`) after small edits
- **Every change:** Run `gz check`, the per-change gate. Run it once per change, after `git add -A`, so the pre-push hook reuses the pass
- **Before `gz git-sync --apply`:** Run `gz check` first
- **Gate 2:** `gz test` runs the whole unit tier; plain `gz check` runs only the tests the change touches and is not Gate 2 evidence
- **Before a release, at heavy-lane closeout, or to reproduce CI locally:** Run `gz check --full`. The whole unit tier, behave, the docs build and the guard-canary sweep are full-tier work: CI runs them on every code push (`src/gzkit/check_step_scopes.json`, shipped in the package)

## Workflow

1. Run `uv run gz check` with the required options.
2. Summarize results, including evidence and any follow-up gates.
3. **Claude surface check** (Claude Code only): After quality gates pass,
   validate Claude-specific surfaces are healthy. If issues found, invoke
   `@claude-code-guide` to diagnose against current Anthropic documentation.

## Claude Surface Check

When running in Claude Code as a pre-merge or pre-attestation check, run the
following — each item is a concrete tool invocation, not a prose claim:

1. **No hook errors at session start** — review the session start banner for
   hook failures. If any appear, invoke `@claude-code-guide` to diagnose
   against current Anthropic documentation. Do not proceed to attestation
   while hook errors are unresolved.
2. **Generated surfaces match canonical source** — run
   `uv run gz validate --surfaces`. Exit code 0 means `.claude/skills/`
   mirrors `.gzkit/skills/` and `.claude/rules/` mirrors `.gzkit/rules/`.
   Non-zero exit means run `uv run gz agent sync control-surfaces` and
   re-validate.
3. **CLAUDE.md is under budget** — read `CLAUDE.md` with the Read tool and
   check that the final line number reported is ≤ 200. Read returns
   numbered lines so the count is observable without invoking `wc`. If
   over budget, trim before attestation (200-line ceiling for optimal
   adherence).

## Full Quality Evidence Sequence

When deterministic receipts are needed (e.g., for audit evidence):

```bash
uv run gz lint
uv run gz typecheck
uv run gz test --bdd    # full suite including behave — pre-attestation
uv run gz check
```

## Validation

- Verify command output reflects the requested scope.
- If governance state changed, confirm with `uv run gz status` or `uv run gz state`.

## Example

```bash
# Per-change gate (preferred)
uv run gz check

# Full sweep: whole unit tier, behave, docs build, canary sweep (release, closeout, CI parity)
uv run gz check --full

# Individual checks when iterating
uv run gz lint
uv run gz format
uv run gz typecheck
uv run gz test

# If Claude surface issues found, diagnose:
@claude-code-guide look at .claude/settings.json — are all hook
references valid? Any deprecated patterns?
```

## Common Rationalizations

These thoughts mean STOP — you are about to skip the gate that catches drift:

| Thought | Reality |
|---------|---------|
| "I only changed one file — `gz lint` is enough" | `gz check` is the unified gate for a reason: lint passes can hide type, validator or test regressions. It runs in seconds; run it. |
| "`gz check` passed, so the whole unit tier is green" | The per-change gate runs only the tests the change touches, chosen by filename match. The whole tier is `gz test` or `gz check --full`; CI runs it on every code push. |
| "I'll run `gz check --full` after each edit to be safe" | The full sweep is release, closeout, chore and CI work. Running it per edit is the cost the per-change gate exists to remove (operator ruling 2026-10-11, GHI #1191). |
| "Tests pass locally, no need to typecheck" | `ty` catches signature drift that unittest can't. The two checks are complementary, not redundant. |
| "Hook errors at session start are cosmetic" | The Claude surface check is part of `gz check` precisely because hook errors mean an agent is operating against stale governance. Resolve before attestation. |
| "The mirrors look fine, skip the surface check" | Canon/derived drift is silent until it isn't. The mirror parity check is cheap; the bug it prevents is expensive. |
| "I'll run the individual commands instead of `gz check`" | Individual commands skip the Claude surface check and the deterministic ordering. Use them for iterative fix-up, not for pre-merge or pre-attestation. |
| "Coverage is close to 40% — round up" | The coverage floor is fail-closed at 40.00%. Rounding rationalizes a regression. |
| "PyMarkdown warnings are noise" | PyMarkdown is part of `gz lint` because docs are first-class deliverables under the Gate 5 Runbook-Code Covenant. Fix or document the exception. |

## Red Flags

- Closing a brief or attestation without running `gz check`
- Running `gz lint` but not `gz typecheck` or `gz check` before a push
- Citing a plain `gz check` pass as evidence that the whole unit tier passed
- Hook errors in session-start output that were never resolved
- `.claude/skills/` divergent from `.gzkit/skills/` (sync not run)
- CLAUDE.md over 200 lines (budget exceeded, adherence drops)
- Coverage dropped below 40% but the brief was marked complete
- Releasing or closing out an ADR without `gz check --full`

## References

- Command implementation: `src/gzkit/cli/`
- User docs: `docs/user/manpages/index.md`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.