probo / rules
getprobo/probo/.cursor/rules/go-naming-conventions.mdc
Go naming and conventions — constructors, configs, receivers, context, interfaces
Cursor rule1.4k starsChanged 3 months ago
What's in it
- Go naming and conventions
- Naming patterns
- Receiver names
- Context
- Interfaces
- Functional options
- Pointers
---
description: Go naming and conventions — constructors, configs, receivers, context, interfaces
globs: "**/*.go"
alwaysApply: false
---
# Go naming and conventions
## Naming patterns
- Constructors: `New*` (e.g. `NewService`, `NewServer`, `NewBridge`)
- Config structs: `*Config` suffix (e.g. `APIConfig`, `PgConfig`)
- Request structs: `*Request` suffix (e.g. `UpdateTrustCenterRequest`)
- Unexported internal types: lowercase (e.g. `thirdPartyInfo`, `ctxKey`)
## Receiver names
Short, usually single-letter matching the type:
- `s` for Service, `c` for Client, `p` for Provider, `w` for Worker
## Context
Always the first parameter. Use private struct keys for context values:
```go
type ctxKey struct{ name string }
var compliancePortalIDKey = &ctxKey{name: "compliance_portal_id"}
```
## Interfaces
- Define in the consumer package, not the provider
- Keep them small
- Verify satisfaction at compile time:
```go
var (
_ unit.Configurable = (*Implm)(nil)
_ unit.Runnable = (*Implm)(nil)
)
```
## Functional options
Use `Config` structs for required params. Use `With*` functions for optional config:
```go
type Option func(*Bridge)
func WithDryRun(dryRun bool) Option {
return func(s *Bridge) { s.dryRun = dryRun }
}
```
## Pointers
Use `new(expr)` for pointer-to-value (e.g. `new(1)`, `new("foo")`, `new(time.Now())`).
Use `go.gearno.de/x/ref` only for dereference helpers (`ref.UnrefOrZero`).
More agent context in getprobo/probo
29 other files this repository gives its agents.
AGENTS.md
CLAUDE.md
Cursor rule
- .cursor/rules/code-comments.mdc
- .cursor/rules/config-propagation.mdc
- .cursor/rules/coredata-migrations.mdc
- .cursor/rules/detail-page-back-link.mdc
- .cursor/rules/git-commit-signing.mdc
- .cursor/rules/git-commit-style.mdc
- .cursor/rules/go-authorize-scope.mdc
- .cursor/rules/go-coredata-load-naming.mdc
- .cursor/rules/go-declarations.mdc
- .cursor/rules/go-delete-no-rows-check.mdc
- .cursor/rules/go-error-handling.mdc
- .cursor/rules/go-imports.mdc
- .cursor/rules/go-logging.mdc
- .cursor/rules/go-multiline-params.mdc
- .cursor/rules/go-pg-constraint-check.mdc
- .cursor/rules/go-upsert-returning-id.mdc
- .cursor/rules/go-url-construction.mdc
- .cursor/rules/list-filtering.mdc
- .cursor/rules/no-outlet-context-data.mdc
- .cursor/rules/prompt-style.mdc
- .cursor/rules/react-named-exports-lazy-entry.mdc
- .cursor/rules/relay-connection-item-components.mdc
- .cursor/rules/relay-fragments-not-data-props.mdc
- .cursor/rules/relay-required-directive.mdc
- .cursor/rules/skeleton-width-sync.mdc
- .cursor/rules/template-files.mdc
- .cursor/rules/v2-color-scale.mdc
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

