]> git.giacomolli.uk - onechat/commitdiff
Derive contexts from the caller and name timeouts
authorAnderson A. Giacomolli <redacted>
Tue, 10 Nov 2026 17:37:54 +0000 (14:37 -0300)
committerAnderson A. Giacomolli <redacted>
Tue, 10 Nov 2026 17:37:54 +0000 (14:37 -0300)
The go-code skill asks for contexts derived from the caller, with
context.WithoutCancel for work that must finish after a cancel and
context.Background only where no caller context exists. It also names
each operation limit after its operation with the Timeout suffix, in the
file that applies it. Handlers with a background context could not be
stopped by the daemon, and limits named only Time did not say what they
limit.

.agents/skills/go-code/SKILL.md

index f9ba075d357131a3f4cb6de7979fda1f19cf935b..213a7d5aacfa004851b75794f38876f5c890b0b2 100644 (file)
@@ -40,6 +40,15 @@ description: Go style rules. Use before you write or review Go code.
   Call `defer cancel()` immediately after you create the context.
 - Reuse `ctx` when a child context replaces its parent. Use a different
   name only when both contexts stay in use. Return `ctx.Err()` directly.
+- Derive each context from the context of the caller. When work must
+  finish even after the caller is cancelled, such as a final write, use
+  `context.WithoutCancel` of the caller's context. Use
+  `context.Background()` only where no caller context exists: in `run`,
+  and in methods that follow `io.Closer`.
+- Name a duration that limits one operation after that operation, and
+  end the name with `Timeout`, so that the name says what it limits
+  without its comment. Define it in the file that applies it, not in the
+  file of another type.
 
 ## Errors