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.
1.3 KiB
1.3 KiB
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:
- Open a PR with justification (why stdlib is insufficient)
- Package must be well-maintained, widely used, minimal transitive deps
- 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/httptestfor 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.