X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/39d1a3fd09f8255298590b4413115ae72e0e3928..HEAD:/.agents/skills/go-code/SKILL.md diff --git a/.agents/skills/go-code/SKILL.md b/.agents/skills/go-code/SKILL.md index 086360a..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 @@ -57,6 +66,22 @@ description: Go style rules. Use before you write or review Go code. - When deferred cleanup can fail, use a named `err` result and join the cleanup error with `errors.Join`. +## Logs + +- Log with the `*slog.Logger` of the part (`daemonLogger`). The handler + formats the line; do not format values into the message. +- Write the message as a short event in plain words, such as "receive + failed" or "subagent done". Do not explain what it means or what the + user must do. +- Put names, IDs, counts, and durations in attributes, with short keys + (`name`, `id`, `after`, `retry`). Put the cause in `err`; the handler + writes it last. +- Use info for normal events, warn for a failure that is retried or + loses nothing, and error for a failure that loses data or stops a + part. +- Never log secrets, tokens, message text, or phone numbers. Redact IDs + as the existing code does. + ## Style - Keep function signatures on one line. Write function bodies on more