]> git.giacomolli.uk - onechat/blobdiff - .agents/skills/go-code/SKILL.md
Name and order the tool code
[onechat] / .agents / skills / go-code / SKILL.md
index 7de0a405ab7369e8010c1a42c2cff9e558bf73cc..edaf3770e2aee6b0619f27b7f29b00c31e2d0186 100644 (file)
@@ -13,6 +13,16 @@ description: Go style rules. Use before you write or review Go code.
   function. Do not create `main_test.go`.
 - A file carries its own context. Keep each struct and all of its
   methods in one file. Give a separate responsibility its own type.
   function. Do not create `main_test.go`.
 - A file carries its own context. Keep each struct and all of its
   methods in one file. Give a separate responsibility its own type.
+- When code in one file gets a user in another file for an unrelated
+  purpose, move it to a file named for its function in the same change.
+- Start each package-level name that belongs to one feature or
+  integration with the name of that feature. Start the names of its
+  files with the same name. Keep a name generic only when more than one
+  feature uses it.
+- Write type names with a capital letter, so that a variable can have
+  the name of its type. Write all other package-level names in lower
+  case.
+- Write all the letters of an initialism in one case.
 - Put entry points first, then each struct's methods as a group, then
   standalone utility functions. Do not put a utility function between
   the methods of one type.
 - Put entry points first, then each struct's methods as a group, then
   standalone utility functions. Do not put a utility function between
   the methods of one type.
@@ -50,8 +60,11 @@ description: Go style rules. Use before you write or review Go code.
   test callbacks.
 - Do not use short `if` initializers.
 - Use a one-letter receiver name for each method.
   test callbacks.
 - Do not use short `if` initializers.
 - Use a one-letter receiver name for each method.
-- Put each field of a keyed struct literal on its own line when you set
-  more than one field.
+- Use field names in struct literals. Put each field on its own line
+  when you set more than one field. This includes the cases of a
+  table-driven test. A small type of two fields that acts as one value,
+  such as a key or a coordinate pair, can use a positional literal on
+  one line.
 - Put an empty line between logical blocks, also after multiline
   declarations, assignments, literals, and calls. Keep an operation with
   its immediate error or result check. Keep a short declaration with its
 - Put an empty line between logical blocks, also after multiline
   declarations, assignments, literals, and calls. Keep an operation with
   its immediate error or result check. Keep a short declaration with its