0e9ddc3c57
CI / test (pull_request) Successful in 15s
CI / review (anthropic--claude-4.6-sonnet, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 24s
CI / review (gpt-5, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 52s
CI / review (gpt-5, security, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 56s
Updates dependency policy from 'stdlib only' to 'stdlib preferred, approved packages allowed'. Adds initial approved list: - gopkg.in/yaml.v3: YAML parsing for persona files - github.com/google/go-cmp: Test comparisons with readable diffs Includes process for adding new dependencies.
45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# Conventions
|
|
|
|
## Language & Dependencies
|
|
|
|
- Target the latest stable Go release.
|
|
- Prefer Go standard library; approved third-party packages allowed (see below).
|
|
|
|
### Approved Third-Party Packages
|
|
|
|
| Package | Use Case | Notes |
|
|
|---------|----------|-------|
|
|
| `gopkg.in/yaml.v3` | YAML parsing | Persona files, config |
|
|
| `github.com/google/go-cmp` | Test comparisons | `cmp.Diff` for readable diffs |
|
|
|
|
To add a new dependency:
|
|
1. Open a PR with justification (why stdlib is insufficient)
|
|
2. Package must be well-maintained, widely used, minimal transitive deps
|
|
3. Update this table when approved
|
|
|
|
## Error Handling
|
|
|
|
- Return errors; never panic.
|
|
- Wrap errors with context using `fmt.Errorf("context: %w", err)`.
|
|
- Check all error returns.
|
|
|
|
## Testing
|
|
|
|
- Test every exported function.
|
|
- Use `net/http/httptest` for HTTP mocking.
|
|
- Table-driven tests where multiple inputs share the same assertion logic.
|
|
- Integration tests use build tags (`//go:build integration`).
|
|
|
|
## Style
|
|
|
|
- Keep functions short and focused.
|
|
- Prefer early returns over deep nesting.
|
|
- Meaningful variable names — no single-letter names outside loop indices.
|
|
- Comments explain *why*, not *what*.
|
|
|
|
## Process
|
|
|
|
- `go test ./...` must pass before commit.
|
|
- `go vet ./...` must pass before commit.
|
|
- Keep commits atomic and well-described.
|