golang-language

$npx mdskill add HoangNguyen0403/agent-skills-standard/golang-language

- **Formatting**: Run **`gofmt`** or **`goimports`** on save. Use **`gopls`** for LSP features. - **Naming**: Use **`camelCase`** for internal (unexported) and **`PascalCase`** for public (exported) symbols. - **Packages**: Use short, lowercase, singular names (e.g., **`http`**, **`user`**). Avoid `_` or `camelCase` in package names. - **Interfaces**: Small interfaces — 1-2 methods max. Define where used (consumer side), not where implemented. - **Errors**: Return **`error`** as last return value. Handle errors **immediately** at call-site. - **Slices**: Use **`make(slice, len, cap)`** to pre-allocate capacity and avoid redundant re-allocations. - **Enums**: Use const block with iota for type-safe enumerations. - **Zero Values**: Leverage **`zero-value`** initialization over explicit `nil` checks where possible.

SKILL.md

.github/skills/golang-languageView on GitHub ↗
---
name: golang-language
description: Core idioms, style guides, and best practices for writing idiomatic Go code. Use when writing Go code following official style guides and idiomatic patterns.
metadata:
  triggers:
    files:
    - 'go.mod'
    keywords:
    - golang
    - go code
    - idiomatic
    - gofmt
    - goimports
    - iota
    - golang style
---
# Golang Language Standards

## **Priority: P0 (CRITICAL)**

## Guidelines

- **Formatting**: Run **`gofmt`** or **`goimports`** on save. Use **`gopls`** for LSP features.
- **Naming**: Use **`camelCase`** for internal (unexported) and **`PascalCase`** for public (exported) symbols.
- **Packages**: Use short, lowercase, singular names (e.g., **`http`**, **`user`**). Avoid `_` or `camelCase` in package names.
- **Interfaces**: Small interfaces — 1-2 methods max. Define where used (consumer side), not where implemented.
- **Errors**: Return **`error`** as last return value. Handle errors **immediately** at call-site.
- **Slices**: Use **`make(slice, len, cap)`** to pre-allocate capacity and avoid redundant re-allocations.
- **Enums**: Use const block with iota for type-safe enumerations.
- **Zero Values**: Leverage **`zero-value`** initialization over explicit `nil` checks where possible.

## Anti-Patterns

- **No init**: Use constructors (NewService()), not init(). (not init() — it runs implicitly and makes testing harder)
- **No Globals**: Use DI, not global mutable state.
- **No `panic`**: Return errors, don't panic.
- **No `_` ignored errors**: Always check and handle errors.
- **No stutter**: `log.Error`, not `log.LogError`.

## Verification Workflow (Mandatory)

After writing or modifying Go code:

1. **`mcp__ide__getDiagnostics`** — catch compile errors and gopls type diagnostics immediately
2. **`go vet ./...`** — catch common mistakes (printf mismatches, unreachable code, shadowed vars)
3. **`goimports -w .`** — fix imports and formatting in one pass

## References

- [Idioms](references/idioms.md)
- [Effective Go Summary](references/effective-go-summary.md)

More from HoangNguyen0403/agent-skills-standard

SkillDescription
android-agp-upgradeUpgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.
android-architectureApply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns.
android-background-workImplement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers.
android-composeBuild high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects.
android-compose-migrationMigrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.
android-concurrencyWrite correct coroutine scopes, Flow collection, and dispatcher injection in Android. Use when writing suspend functions, choosing between StateFlow and SharedFlow, or injecting Dispatchers for testability.
android-deploymentConfigure release signing, R8 obfuscation, and App Bundle publishing for Android. Use when setting up signing configs, enabling minification, adding ProGuard keep rules, or preparing for Play Store submission.
android-design-systemEnforce Material Design 3 theming and design token usage in Jetpack Compose. Use when implementing M3 components, color schemes, typography, or design tokens.
android-diConfigure Hilt dependency injection with proper scoping, modules, and constructor injection in Android. Use when setting up Hilt DI, defining modules, or configuring component scoping.
android-edge-to-edgeMigrate a Jetpack Compose app to edge-to-edge display and fix system bar inset issues. Use when UI components are obscured by navigation/status bars, fixing IME insets, or enabling edge-to-edge for SDK 35+.