← Go: Production EngineeringCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Go: Production Engineering
Snapshot Sep 30, 2026 · 23:15 UTC · version 0.4.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Use for local Go semantics, errors, interfaces, generics, and data. Do not use for exported API evolution.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 263
},
{
"relative_path": "evals.json",
"size_in_bytes": 4545
},
{
"relative_path": "references/decision-record.md",
"size_in_bytes": 954
},
{
"relative_path": "references/memory-ownership-and-aliasing.md",
"size_in_bytes": 3322
},
{
"relative_path": "skill.json",
"size_in_bytes": 2589
}
],
"name": "go-language-engineering",
"skill_md_contents": "---\nname: go-language-engineering\ndescription: \"Use for local Go semantics, errors, interfaces, generics, and data. Do not use for exported API evolution.\"\nlicense: Apache-2.0\ncompatibility: \"Go 1.24 or newer; current guidance targets Go 1.25 and 1.26, with older forms labeled legacy.\"\n---\n\n# Go language engineering\n\nMake the code expose ownership, mutation, failure, and control flow. The specification defines validity; conventions are evidence about clarity, not universal laws.\n\n## Establish the local contract\n\nBefore editing, identify the inputs, zero-value behavior, aliasing, mutation, error identity, concurrency exposure, and exported compatibility. Follow established public behavior unless the request changes it.\n\n## Choose representations from invariants\n\n- Use a value when copying is meaningful and identity is irrelevant; use a pointer when shared identity, mutation, or absence is contractual.\n- Treat slices and maps as descriptors over shared storage. Copy at trust or ownership boundaries when later mutation would violate the contract.\n- Preserve `nil` versus empty only when serialization or API behavior distinguishes them.\n- Use a struct when fields form one invariant; avoid parallel slices and loosely related maps.\n- Introduce generics only when one algorithm genuinely applies across types without erasing domain meaning.\n- Define interfaces at the consumer boundary and keep them as small as the required behavior permits.\n\n## Make failure inspectable\n\n- Add context with `%w` when callers need causal inspection; use `%v` when intentionally hiding the underlying identity.\n- Choose sentinel, typed, or opaque errors from the caller decision, not from habit.\n- Return or log an error at one owning boundary. Never string-match an error contract.\n- Reserve panic for violated internal invariants or startup failure where continuing is unsafe; recover only at an isolation boundary.\n\n## Keep control flow causal\n\nPrefer guard clauses when they make the main path visible. Keep variables in the smallest useful scope, but do not compress logic until shadowing or mixed responsibilities become hard to see. A switch is useful when it represents one classification; chained conditions are fine when they express a sequence.\n\n## Reject universal style claims\n\nDo not require pointers for every struct, interfaces for every dependency, constructors for every type, channels over mutexes, or named returns by default. Each is conditional. Preserve compatible repository conventions when alternatives are equally correct.\n\nRead [references/decision-record.md](references/decision-record.md) for API, generics, and error counterexamples. When a slice, map, view, or pooled buffer crosses a lifetime or trust boundary, read [references/memory-ownership-and-aliasing.md](references/memory-ownership-and-aliasing.md) and name the borrow, transfer, sharing, or snapshot contract.\n\n## Output contract\n\nFor implementation, make the smallest coherent change and keep semantic ownership visible. For review, cite the concrete input or call path that breaks an invariant. Separate correctness from optional style.\n"
}SHA-256 of public snapshot: 20c9327154d2822ba47266cf0bf63413f5d65e897b573dde316b1e007abd42d1