| name | ring:verifying-code |
| description | Verifying a Go project: runs every quality check (lint, vet, imports, format, docs, unit, integration, E2E) and returns a single MERGE_READY or NEEDS_FIX verdict. Report-only: never fixes anything. Use for a quick pre-merge or pre-PR check outside a full dev-cycle. Skip when not a Go project, when you want a single command, or when already inside ring:running-dev-cycle (use its gates). |
Code Verification
When to use
- Before creating a pull request
- After completing implementation and wanting to confirm everything passes
- When user wants a quick "is this ready?" check
Skip when
- Project is not Go (no go.mod found)
- User only wants to run a single specific command
- Already inside a ring:running-dev-cycle execution (use the cycle gates instead)
Related
Complementary: ring:running-dev-cycle, ring:reviewing-code
Run everything. Get a verdict. This skill only REPORTS โ it does NOT fix anything.
Step 0: Discover Commands
- Verify
go.mod exists โ if not, STOP: "Not a Go project."
- Read
Makefile to discover available targets
- Check tool availability:
goimports, gofmt
Command resolution:
| Check | Default | Makefile Override |
|---|
| Lint | golangci-lint run ./... | make lint if target exists |
| Vet | go vet ./... | make vet |
| Imports | goimports -l . | make imports |
| Format | gofmt -l . | make fmt or make format |
| Docs | make generate-docs | make docs |
| Unit Tests | go test ./... | make test-unit or make test |
| Integration Tests | make test-integration | โ |
| E2E Tests | make test-e2e | โ |
If Makefile target doesn't exist: use default command. If neither exists: SKIP (not a failure).
Phase 1: Static Analysis + Unit Tests (parallel)
Run all 6 in parallel. Capture stdout, stderr, exit code, duration for each.
| # | Check | Fail Condition |
|---|
| 1 | Lint | Non-zero exit |
| 2 | Vet | Non-zero exit |
| 3 | Imports | Any output (files listed need fixing) |
| 4 | Format | Any output (files listed need formatting) |
| 5 | Docs | Files modified (docs were stale) |
| 6 | Unit Tests | Non-zero exit |
Phase 1 gate: ALL pass โ proceed to Phase 2. ANY fails โ still run Phase 2, but verdict will be NEEDS_FIX.
Phase 2: Integration + E2E Tests (sequential)
Run sequentially. Continue even if first fails.
| # | Check | Notes |
|---|
| 7 | Integration Tests | DB, external services, testcontainers |
| 8 | E2E Tests | Full user flows |
If target doesn't exist โ SKIP (not a failure).
Phase 3: Executive Summary
============================================
VERIFICATION SUMMARY
============================================
Phase 1 โ Static Analysis + Unit Tests: PASS / FAIL
Phase 2 โ Integration + E2E Tests: PASS / FAIL / SKIP
Total time: Xs
โโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโ
โ # โ Check โ Status โ Duration โ
โโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโค
โ 1 โ lint โ PASS โ 3.2s โ
โ 2 โ vet โ PASS โ 1.1s โ
โ 3 โ imports โ FAIL โ 0.4s โ
โ 4 โ format โ PASS โ 0.3s โ
โ 5 โ docs โ PASS โ 2.1s โ
โ 6 โ unit tests โ PASS โ 8.5s โ
โ 7 โ integration tests โ PASS โ 22.3s โ
โ 8 โ e2e tests โ SKIP โ - โ
โโโโโดโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโ
ERRORS (first 10 lines per failure):
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
#3 imports:
internal/handler/user.go
internal/service/auth.go
VERDICT: NEEDS_FIX
Verdict Rules
| Condition | Verdict |
|---|
| All commands PASS (or SKIP for unavailable) | MERGE_READY |
| Any command FAIL | NEEDS_FIX |
| Target unavailable | SKIP โ does not count as failure |
Error Display
For each failed command: show first 10 lines of stderr (or stdout if stderr empty).
goimports -l / gofmt -l output = list of files to fix
make generate-docs changed files = list modified files