From: Anderson A. Giacomolli Date: Tue, 10 Nov 2026 17:37:54 +0000 (-0300) Subject: Derive contexts from the caller and name timeouts X-Git-Url: https://git.giacomolli.uk/onechat/commitdiff_plain/6915dbdfeb246551bf1132823d820beb321fd58c Derive contexts from the caller and name timeouts 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. --- diff --git a/.agents/skills/go-code/SKILL.md b/.agents/skills/go-code/SKILL.md index f9ba075..213a7d5 100644 --- a/.agents/skills/go-code/SKILL.md +++ b/.agents/skills/go-code/SKILL.md @@ -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