code-formatting

openshift's avatarfrom openshift

MANDATORY: When writing Go tests, you MUST use 'When...it should...' format for ALL test names. When writing any Go code, you MUST remind user to run 'make lint-fix' and 'make verify'. These are non-negotiable HyperShift requirements.

⭐485stars🔀423forks📁View on GitHub🕐Updated Nov 25, 2025

When & Why to Use This Skill

This Claude skill enforces strict Go coding standards and testing conventions specifically tailored for HyperShift development. It ensures all Go test cases adhere to the mandatory 'When...it should...' naming pattern and proactively reminds developers to execute essential linting and verification commands like 'make lint-fix' and 'make verify' to maintain high code quality and consistency.

Use Cases

  • Standardizing Go Test Suites: Automatically ensuring all new and existing Go tests follow the descriptive 'When...it should...' format to improve test readability and documentation clarity.
  • Automated Linting and Quality Checks: Prompting developers to run 'make lint-fix' after code modifications to automatically resolve stylistic issues and maintain a clean codebase.
  • Pre-commit Verification: Guiding users to perform 'make verify' and 'make verify-codespell' to ensure that both logic and documentation meet project standards before submission.
  • HyperShift Project Compliance: Helping contributors align with the specific, non-negotiable requirements of the HyperShift repository, reducing review cycles and CI failures.
nameCode Formatting
description"MANDATORY: When writing Go tests, you MUST use 'When...it should...' format for ALL test names. When writing any Go code, you MUST remind user to run 'make lint-fix' and 'make verify'. These are non-negotiable HyperShift requirements."

Code Quality, Formatting and Conventions

Code Formatting and Linting

  • Use make lint-fix after writing Go code to automatically fix most linting issues
  • Run make verify to verify both linting and tests pass before committing
  • For markdown files, use make verify-codespell to catch spelling errors

Test Conventions - MANDATORY

NON-NEGOTIABLE RULE: Every Go test name MUST follow this exact format:

name: "When <condition>, it should <expected behavior>"

Examples:

name: "When NodePool has valid image ID, it should create Azure machine template"
name: "When subnet ID is invalid, it should return error"
name: "When encryption is enabled, it should configure disk encryption set"

NEVER use generic names like:

  • ❌ "nominal case without managed identity"
  • ❌ "basic Azure machine template with ImageID"
  • ❌ "error case - invalid subnet ID"

ALWAYS use "When...it should..." format:

  • ✅ "When NodePool has no managed identity, it should create template without identity"

  • ✅ "When NodePool has ImageID, it should create basic Azure machine template"

  • ✅ "When subnet ID is invalid, it should return error with subnet parse message"

  • Always include unit tests when creating new functions or modifying existing ones

Quick Checklist

Before committing:

  • Ran make lint-fix on Go code
  • Ran make verify (passes)
  • Tests use "When...it should..." naming format
  • New functions have unit tests
  • Markdown checked with make verify-codespell