plugins/go-dev/skills/testing-go/SKILL.md
Writes tests following TDD (using go test, testify, and rapid) best practices. Use when writing unit tests, integration tests, or table-driven tests in Go.
npx skillsauth add qte77/claude-code-utils-plugin testing-goInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Target: $ARGUMENTS
Writes focused, behavior-driven tests following project testing strategy.
TDD methodology (language-agnostic): See tdd-core plugin (testing-tdd skill)
Go-specific documentation: references/
references/testing-strategy.md — Go tools (go test, testify, rapid, gomock)references/tdd-best-practices.md — Go TDD examples (extends tdd-core)go test (default): Use table-driven tests for known cases. Works at unit/integration levels.
rapid (edge cases): Use for invariants that must hold for ALL inputs.
See references/testing-strategy.md for full methodology comparison.
Cycle: RED (failing test / compile error) -> GREEN (minimal pass) -> REFACTOR (clean up)
Structure: Arrange-Act-Assert (AAA)
func TestOrderCalculator_Total_SumsItemPrices(t *testing.T) {
// ARRANGE
calc := NewOrderCalculator()
items := []Item{{Price: 10.00, Qty: 2}, {Price: 5.00, Qty: 1}}
// ACT
total := calc.Total(items)
// ASSERT
assert.Equal(t, 25.00, total)
}
func TestValidateEmail(t *testing.T) {
tests := []struct {
name string
email string
wantErr bool
}{
{name: "valid", email: "[email protected]", wantErr: false},
{name: "missing @", email: "userexample.com", wantErr: true},
{name: "empty", email: "", wantErr: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := ValidateEmail(tt.email)
if tt.wantErr {
require.Error(t, err)
} else {
require.NoError(t, err)
}
})
}
}
High-Value: Business logic, error paths, integration points, contracts
Avoid: Stdlib behavior, trivial getters, default zero values, type existence
See references/testing-strategy.md -> "Patterns to Remove" for full list.
Format: Test{Type}_{Method}_{Behavior}
TestUserService_Create_ReturnsIDOnSuccess
TestValidateEmail_MissingAt
TestCalculateTotal_EmptyItems
go test ./... # All tests
go test -run TestUserService ./... # Filter by name
go test -race ./... # Race detector
go test -v -run TestValidateAge ./... # Verbose single test
go test ./...)var _ Interface = (*fake)(nil) compile checkdevelopment
Analyzes industry websites for design patterns, layout, typography, and content strategies using first-principles thinking. Use when researching website design, UI patterns, or competitive design analysis.
development
Audits website usability for UX optimization, covering forms, navigation, validation, and microcopy. Use when reviewing user experience, task completion flows, or interface friction points.
development
Audits website accessibility for WCAG 2.1 AA compliance, generating findings and code fixes. Use when reviewing accessibility, keyboard navigation, screen reader compatibility, or inclusive design.
development
Writes tests following TDD (using vitest and @testing-library/react) best practices. Use when writing unit tests, integration tests, or component tests in TypeScript.