code-formatting
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.
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.
| name | Code 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-fixafter writing Go code to automatically fix most linting issues - Run
make verifyto verify both linting and tests pass before committing - For markdown files, use
make verify-codespellto 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-fixon Go code - Ran
make verify(passes) - Tests use "When...it should..." naming format
- New functions have unit tests
- Markdown checked with
make verify-codespell