{"id":"27e22ac6-3537-45e4-b9d8-41a5c7dc8e15","shortId":"QBwJ7u","kind":"skill","title":"go-code-review","tagline":"Use when reviewing Go code or checking code against community style standards. Also use proactively before submitting a Go PR or when reviewing any Go code changes, even if the user doesn't explicitly request a style review. Does not cover language-specific syntax — delegates to ","description":"# Go Code Review Checklist\n\n## Review Procedure\n\n> Use `assets/review-template.md` when formatting the output of a code review to ensure consistent structure with Must Fix / Should Fix / Nits severity grouping.\n\n1. Run `gofmt -d .` and `go vet ./...` to catch mechanical issues first\n2. Read the diff file-by-file; for each file, check the categories below in order\n3. Flag issues with specific line references and the rule name\n4. After reviewing all files, re-read flagged items to verify they're genuine issues\n5. Summarize findings grouped by severity (must-fix, should-fix, nit)\n\n> **Validation**: After completing the review, re-read the diff once more to verify every flagged issue is real. Remove any finding you cannot justify with a specific line reference.\n\n---\n\n## Formatting\n\n- [ ] **gofmt**: Code is formatted with `gofmt` or `goimports` → [go-linting](../go-linting/SKILL.md)\n\n---\n\n## Documentation\n\n- [ ] **Comment sentences**: Comments are full sentences starting with the name being described, ending with a period → [go-documentation](../go-documentation/SKILL.md)\n- [ ] **Doc comments**: All exported names have doc comments; non-trivial unexported declarations too → [go-documentation](../go-documentation/SKILL.md)\n- [ ] **Package comments**: Package comment appears adjacent to package clause with no blank line → [go-documentation](../go-documentation/SKILL.md)\n- [ ] **Named result parameters**: Only used when they clarify meaning (e.g., multiple same-type returns), not just to enable naked returns → [go-documentation](../go-documentation/SKILL.md)\n\n---\n\n## Error Handling\n\n- [ ] **Handle errors**: No discarded errors with `_`; handle, return, or (exceptionally) panic → [go-error-handling](../go-error-handling/SKILL.md)\n- [ ] **Error strings**: Lowercase, no punctuation (unless starting with proper noun/acronym) → [go-error-handling](../go-error-handling/SKILL.md)\n- [ ] **In-band errors**: No magic values (-1, \"\", nil); use multiple returns with error or ok bool → [go-error-handling](../go-error-handling/SKILL.md)\n- [ ] **Indent error flow**: Handle errors first and return; keep normal path at minimal indentation → [go-error-handling](../go-error-handling/SKILL.md)\n\n---\n\n## Naming\n\n- [ ] **MixedCaps**: Use `MixedCaps` or `mixedCaps`, never underscores; unexported is `maxLength` not `MAX_LENGTH` → [go-naming](../go-naming/SKILL.md)\n- [ ] **Initialisms**: Keep consistent case: `URL`/`url`, `ID`/`id`, `HTTP`/`http` (e.g., `ServeHTTP`, `xmlHTTPRequest`) → [go-naming](../go-naming/SKILL.md)\n- [ ] **Variable names**: Short names for limited scope (`i`, `r`, `c`); longer names for wider scope → [go-naming](../go-naming/SKILL.md)\n- [ ] **Receiver names**: One or two letter abbreviation of type (`c` for `Client`); no `this`, `self`, `me`; consistent across methods → [go-naming](../go-naming/SKILL.md)\n- [ ] **Package names**: No stuttering (use `chubby.File` not `chubby.ChubbyFile`); avoid `util`, `common`, `misc` → [go-packages](../go-packages/SKILL.md)\n- [ ] **Avoid built-in names**: Don't shadow `error`, `string`, `len`, `cap`, `append`, `copy`, `new`, `make` → [go-declarations](../go-declarations/SKILL.md)\n\n---\n\n## Concurrency\n\n- [ ] **Goroutine lifetimes**: Clear when/whether goroutines exit; document if not obvious → [go-concurrency](../go-concurrency/SKILL.md)\n- [ ] **Synchronous functions**: Prefer sync over async; let callers add concurrency if needed → [go-concurrency](../go-concurrency/SKILL.md)\n- [ ] **Contexts**: First parameter; not in structs; no custom Context types; pass even if you think you don't need to → [go-context](../go-context/SKILL.md)\n\n---\n\n## Interfaces\n\n- [ ] **Interface location**: Define in consumer package, not implementor; return concrete types from producers → [go-interfaces](../go-interfaces/SKILL.md)\n- [ ] **No premature interfaces**: Don't define before used; don't define \"for mocking\" on implementor side → [go-interfaces](../go-interfaces/SKILL.md)\n- [ ] **Receiver type**: Use pointer if mutating, has sync fields, or is large; value for small immutable types; don't mix → [go-interfaces](../go-interfaces/SKILL.md)\n\n---\n\n## Data Structures\n\n- [ ] **Empty slices**: Prefer `var t []string` (nil) over `t := []string{}` (non-nil zero-length) → [go-data-structures](../go-data-structures/SKILL.md)\n- [ ] **Copying**: Be careful copying structs with pointer/slice fields; don't copy `*T` methods' receivers by value → [go-data-structures](../go-data-structures/SKILL.md)\n\n---\n\n## Security\n\n- [ ] **Crypto rand**: Use `crypto/rand` for keys, not `math/rand` → [go-defensive](../go-defensive/SKILL.md)\n- [ ] **Don't panic**: Use error returns for normal error handling; panic only for truly exceptional cases → [go-defensive](../go-defensive/SKILL.md)\n\n---\n\n## Declarations and Initialization\n\n- [ ] **Group similar**: Related `var`/`const`/`type` in parenthesized blocks; separate unrelated → [go-declarations](../go-declarations/SKILL.md)\n- [ ] **var vs :=**: Use `var` for intentional zero values; `:=` for explicit assignments → [go-declarations](../go-declarations/SKILL.md)\n- [ ] **Reduce scope**: Move declarations close to usage; use if-init to limit variable scope → [go-declarations](../go-declarations/SKILL.md)\n- [ ] **Struct init**: Always use field names; omit zero fields; `var` for zero structs → [go-declarations](../go-declarations/SKILL.md)\n- [ ] **Use `any`**: Prefer `any` over `interface{}` in new code → [go-declarations](../go-declarations/SKILL.md)\n\n---\n\n## Functions\n\n- [ ] **File ordering**: Types → constructors → exported methods → unexported → utilities → [go-functions](../go-functions/SKILL.md)\n- [ ] **Signature formatting**: All args on own lines with trailing comma when wrapping → [go-functions](../go-functions/SKILL.md)\n- [ ] **Naked parameters**: Add `/* name */` comments for ambiguous bool/int args, or use custom types → [go-functions](../go-functions/SKILL.md)\n- [ ] **Printf naming**: Functions accepting format strings end in `f` for `go vet` → [go-functions](../go-functions/SKILL.md)\n\n---\n\n## Style\n\n- [ ] **Line length**: No rigid limit, but avoid uncomfortably long lines; break by semantics, not arbitrary length → [go-style-core](../go-style-core/SKILL.md)\n- [ ] **Naked returns**: Only in short functions; explicit returns in medium/large functions → [go-style-core](../go-style-core/SKILL.md)\n- [ ] **Pass values**: Don't use pointers just to save bytes; pass `string` not `*string` for small fixed-size types → [go-performance](../go-performance/SKILL.md)\n- [ ] **String concatenation**: `+` for simple; `fmt.Sprintf` for formatting; `strings.Builder` for loops → [go-performance](../go-performance/SKILL.md)\n\n---\n\n## Logging\n\n- [ ] **Use slog**: New code uses `log/slog`, not `log` or `fmt.Println` for operational logging → [go-logging](../go-logging/SKILL.md)\n- [ ] **Structured fields**: Log messages use static strings with key-value attributes, not fmt.Sprintf → [go-logging](../go-logging/SKILL.md)\n- [ ] **Appropriate levels**: Debug for developer tracing, Info for notable events, Warn for recoverable issues, Error for failures → [go-logging](../go-logging/SKILL.md)\n- [ ] **No secrets in logs**: PII, credentials, and tokens are never logged → [go-logging](../go-logging/SKILL.md)\n\n---\n\n## Imports\n\n- [ ] **Import groups**: Standard library first, then blank line, then external packages → [go-packages](../go-packages/SKILL.md)\n- [ ] **Import renaming**: Avoid unless collision; rename local/project-specific import on collision → [go-packages](../go-packages/SKILL.md)\n- [ ] **Import blank**: `import _ \"pkg\"` only in main package or tests → [go-packages](../go-packages/SKILL.md)\n- [ ] **Import dot**: Only for circular dependency workarounds in tests → [go-packages](../go-packages/SKILL.md)\n\n---\n\n## Generics\n\n- [ ] **When to use**: Only when multiple types share identical logic and interfaces don't suffice → [go-generics](../go-generics/SKILL.md)\n- [ ] **Type aliases**: Use definitions for new types; aliases only for package migration → [go-generics](../go-generics/SKILL.md)\n\n---\n\n## Testing\n\n- [ ] **Examples**: Include runnable `Example` functions or tests demonstrating usage → [go-documentation](../go-documentation/SKILL.md)\n- [ ] **Useful test failures**: Messages include what was wrong, inputs, got, and want; order is `got != want` → [go-testing](../go-testing/SKILL.md)\n- [ ] **TestMain**: Use only when all tests need common setup with teardown; prefer scoped helpers first → [go-testing](../go-testing/SKILL.md)\n- [ ] **Real transports**: Prefer `httptest.NewServer` + real client over mocking HTTP → [go-testing](../go-testing/SKILL.md)\n\n---\n\n## Automated Checks\n\nRun automated pre-review checks:\n\n```bash\nbash scripts/pre-review.sh ./...         # text output\nbash scripts/pre-review.sh --json ./...  # structured JSON output\n```\n\nOr manually: `gofmt -l <path> && go vet ./... && golangci-lint run ./...`\n\nFix any issues before proceeding to the checklist above. For linter setup and configuration, see [go-linting](../go-linting/SKILL.md).\n\n---\n\n## Integrative Example\n\n> Read [references/WEB-SERVER.md](references/WEB-SERVER.md) when building a production HTTP server and want to verify your code applies concurrency, error handling, context, documentation, and naming conventions together.\n\n---\n\n## Related Skills\n\n- **Style foundations**: See [go-style-core](../go-style-core/SKILL.md) when resolving formatting debates or applying the clarity > simplicity > concision priority\n- **Linting setup**: See [go-linting](../go-linting/SKILL.md) when configuring golangci-lint or adding automated checks to CI\n- **Error strategy**: See [go-error-handling](../go-error-handling/SKILL.md) when reviewing error wrapping, sentinel errors, or the handle-once pattern\n- **Naming conventions**: See [go-naming](../go-naming/SKILL.md) when evaluating identifier names, receiver names, or package-symbol stuttering\n- **Testing patterns**: See [go-testing](../go-testing/SKILL.md) when reviewing test code for table-driven structure, failure messages, or helper usage\n- **Concurrency safety**: See [go-concurrency](../go-concurrency/SKILL.md) when reviewing goroutine lifetimes, channel usage, or mutex placement\n- **Logging practices**: See [go-logging](../go-logging/SKILL.md) when reviewing log usage, structured logging, or slog configuration","tags":["code","review","golang","skills","cxuu","agent-skills","ai-agent","ai-assistant","claude","claude-code","codex","cursor"],"capabilities":["skill","source-cxuu","skill-go-code-review","topic-agent-skills","topic-ai-agent","topic-ai-assistant","topic-claude","topic-claude-code","topic-codex","topic-cursor","topic-golang","topic-llm"],"categories":["golang-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cxuu/golang-skills/go-code-review","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cxuu/golang-skills","source_repo":"https://github.com/cxuu/golang-skills","install_from":"skills.sh"}},"qualityScore":"0.497","qualityRationale":"deterministic score 0.50 from registry signals: · indexed on github topic:agent-skills · 95 github stars · SKILL.md body (10,321 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:56:32.602Z","embedding":null,"createdAt":"2026-04-18T20:38:25.664Z","updatedAt":"2026-05-18T18:56:32.602Z","lastSeenAt":"2026-05-18T18:56:32.602Z","tsv":"'-1':313 '/go-concurrency/skill.md':474,490,1284 '/go-context/skill.md':514 '/go-data-structures/skill.md':599,620 '/go-declarations/skill.md':459,671,686,705,722,735 '/go-defensive/skill.md':633,653 '/go-documentation/skill.md':212,230,247,272,1052 '/go-error-handling/skill.md':290,305,327,346,1226 '/go-functions/skill.md':748,764,781,797 '/go-generics/skill.md':1022,1038 '/go-interfaces/skill.md':532,552,576 '/go-linting/skill.md':191,1152,1207 '/go-logging/skill.md':891,909,930,945,1300 '/go-naming/skill.md':364,381,400,423,1245 '/go-packages/skill.md':439,961,975,989,1002 '/go-performance/skill.md':859,873 '/go-style-core/skill.md':819,835,1189 '/go-testing/skill.md':1072,1091,1104,1263 '1':80 '2':92 '3':109 '4':120 '5':136 'abbrevi':407 'accept':785 'across':418 'ad':1214 'add':483,767 'adjac':236 'alias':1024,1030 'also':17 'alway':708 'ambigu':771 'appear':235 'append':452 'appli':1170,1195 'appropri':910 'arbitrari':813 'arg':752,773 'assets/review-template.md':59 'assign':682 'async':480 'attribut':903 'autom':1105,1108,1215 'avoid':432,440,805,964 'band':308 'bash':1113,1114,1118 'blank':242,953,977 'block':665 'bool':322 'bool/int':772 'break':809 'build':1159 'built':442 'built-in':441 'byte':845 'c':391,410 'caller':482 'cannot':172 'cap':451 'care':602 'case':368,649 'catch':88 'categori':105 'chang':31 'channel':1289 'check':11,103,1106,1112,1216 'checklist':55,1141 'chubby.chubbyfile':431 'chubby.file':429 'ci':1218 'circular':994 'clarifi':255 'clariti':1197 'claus':239 'clear':463 'client':412,1097 'close':691 'code':3,9,12,30,53,66,181,731,878,1169,1267 'collis':966,971 'comma':758 'comment':193,195,214,220,232,234,769 'common':434,1080 'communiti':14 'complet':151 'concaten':861 'concis':1199 'concret':525 'concurr':460,473,484,489,1171,1278,1283 'configur':1147,1209,1309 'consist':70,367,417 'const':661 'constructor':740 'consum':520 'context':491,499,513,1174 'convent':1178,1240 'copi':453,600,603,610 'core':818,834,1188 'cover':45 'credenti':936 'crypto':622 'crypto/rand':625 'custom':498,776 'd':83 'data':577,597,618 'debat':1193 'debug':912 'declar':225,458,654,670,685,690,704,721,734 'defens':632,652 'defin':518,538,543 'definit':1026 'deleg':50 'demonstr':1047 'depend':995 'describ':204 'develop':914 'diff':95,158 'discard':278 'doc':213,219 'document':192,211,229,246,271,467,1051,1175 'doesn':36 'dot':991 'driven':1271 'e.g':257,375 'empti':579 'enabl':266 'end':205,788 'ensur':69 'error':273,276,279,288,291,303,309,319,325,329,332,344,448,638,642,924,1172,1219,1224,1229,1232 'evalu':1247 'even':32,502 'event':919 'everi':163 'exampl':1040,1043,1154 'except':284,648 'exit':466 'explicit':38,681,826 'export':216,741 'extern':956 'f':790 'failur':926,1055,1273 'field':561,607,710,714,893 'file':97,99,102,124,737 'file-by-fil':96 'find':138,170 'first':91,333,492,951,1087 'fix':74,76,144,147,853,1134 'fixed-s':852 'flag':110,128,164 'flow':330 'fmt.println':884 'fmt.sprintf':864,905 'format':61,179,183,750,786,866,1192 'foundat':1183 'full':197 'function':476,736,747,763,780,784,796,825,830,1044 'generic':1003,1021,1037 'genuin':134 'go':2,8,23,29,52,85,189,210,228,245,270,287,302,324,343,362,379,398,421,437,457,472,488,512,530,550,574,596,617,631,651,669,684,703,720,733,746,762,779,792,795,816,832,857,871,889,907,928,943,959,973,987,1000,1020,1036,1050,1070,1089,1102,1128,1150,1186,1205,1223,1243,1261,1282,1298 'go-code-review':1 'go-concurr':471,487,1281 'go-context':511 'go-data-structur':595,616 'go-declar':456,668,683,702,719,732 'go-defens':630,650 'go-document':209,227,244,269,1049 'go-error-handl':286,301,323,342,1222 'go-funct':745,761,778,794 'go-gener':1019,1035 'go-interfac':529,549,573 'go-lint':188,1149,1204 'go-log':888,906,927,942,1297 'go-nam':361,378,397,420,1242 'go-packag':436,958,972,986,999 'go-perform':856,870 'go-style-cor':815,831,1185 'go-test':1069,1088,1101,1260 'gofmt':82,180,185,1126 'goimport':187 'golangci':1131,1211 'golangci-lint':1130,1210 'goroutin':461,465,1287 'got':1062,1067 'group':79,139,657,948 'handl':274,275,281,289,304,326,331,345,643,1173,1225,1236 'handle-onc':1235 'helper':1086,1276 'http':373,374,1100,1162 'httptest.newserver':1095 'id':371,372 'ident':1012 'identifi':1248 'if-init':695 'immut':568 'implementor':523,547 'import':946,947,962,969,976,978,990 'in-band':306 'includ':1041,1057 'indent':328,341 'info':916 'init':697,707 'initi':365,656 'input':1061 'integr':1153 'intent':677 'interfac':515,516,531,535,551,575,728,1015 'issu':90,111,135,165,923,1136 'item':129 'json':1120,1122 'justifi':173 'keep':336,366 'key':627,901 'key-valu':900 'l':1127 'languag':47 'language-specif':46 'larg':564 'len':450 'length':360,594,800,814 'let':481 'letter':406 'level':911 'librari':950 'lifetim':462,1288 'limit':387,699,803 'line':114,177,243,755,799,808,954 'lint':190,1132,1151,1201,1206,1212 'linter':1144 'local/project-specific':968 'locat':517 'log':874,882,887,890,894,908,929,934,941,944,1294,1299,1303,1306 'log/slog':880 'logic':1013 'long':807 'longer':392 'loop':869 'lowercas':293 'magic':311 'main':982 'make':455 'manual':1125 'math/rand':629 'max':359 'maxlength':357 'mean':256 'mechan':89 'medium/large':829 'messag':895,1056,1274 'method':419,612,742 'migrat':1034 'minim':340 'misc':435 'mix':572 'mixedcap':348,350,352 'mock':545,1099 'move':689 'multipl':258,316,1009 'must':73,143 'must-fix':142 'mutat':558 'mutex':1292 'nake':267,765,820 'name':119,202,217,248,347,363,380,383,385,393,399,402,422,425,444,711,768,783,1177,1239,1244,1249,1251 'need':486,509,1079 'never':353,940 'new':454,730,877,1028 'nil':314,585,591 'nit':77,148 'non':222,590 'non-nil':589 'non-trivi':221 'normal':337,641 'notabl':918 'noun/acronym':300 'obvious':470 'ok':321 'omit':712 'one':403 'oper':886 'order':108,738,1065 'output':63,1117,1123 'packag':231,233,238,424,438,521,957,960,974,983,988,1001,1033,1254 'package-symbol':1253 'panic':285,636,644 'paramet':250,493,766 'parenthes':664 'pass':501,836,846 'path':338 'pattern':1238,1258 'perform':858,872 'period':208 'pii':935 'pkg':979 'placement':1293 'pointer':556,841 'pointer/slice':606 'pr':24 'practic':1295 'pre':1110 'pre-review':1109 'prefer':477,581,725,1084,1094 'prematur':534 'printf':782 'prioriti':1200 'proactiv':19 'procedur':57 'proceed':1138 'produc':528 'product':1161 'proper':299 'punctuat':295 'r':390 'rand':623 're':126,133,155 're-read':125,154 'read':93,127,156,1155 'real':167,1092,1096 'receiv':401,553,613,1250 'recover':922 'reduc':687 'refer':115,178 'references/web-server.md':1156,1157 'relat':659,1180 'remov':168 'renam':963,967 'request':39 'resolv':1191 'result':249 'return':262,268,282,317,335,524,639,821,827 'review':4,7,27,42,54,56,67,122,153,1111,1228,1265,1286,1302 'rigid':802 'rule':118 'run':81,1107,1133 'runnabl':1042 'safeti':1279 'same-typ':259 'save':844 'scope':388,396,688,701,1085 'scripts/pre-review.sh':1115,1119 'secret':932 'secur':621 'see':1148,1184,1203,1221,1241,1259,1280,1296 'self':415 'semant':811 'sentenc':194,198 'sentinel':1231 'separ':666 'servehttp':376 'server':1163 'setup':1081,1145,1202 'sever':78,141 'shadow':447 'share':1011 'short':384,824 'should-fix':145 'side':548 'signatur':749 'similar':658 'simpl':863 'simplic':1198 'size':854 'skill':1181 'skill-go-code-review' 'slice':580 'slog':876,1308 'small':567,851 'source-cxuu' 'specif':48,113,176 'standard':16,949 'start':199,297 'static':897 'strategi':1220 'string':292,449,584,588,787,847,849,860,898 'strings.builder':867 'struct':496,604,706,718 'structur':71,578,598,619,892,1121,1272,1305 'stutter':427,1256 'style':15,41,798,817,833,1182,1187 'submit':21 'suffic':1018 'summar':137 'symbol':1255 'sync':478,560 'synchron':475 'syntax':49 'tabl':1270 'table-driven':1269 'teardown':1083 'test':985,998,1039,1046,1054,1071,1078,1090,1103,1257,1262,1266 'testmain':1073 'text':1116 'think':505 'togeth':1179 'token':938 'topic-agent-skills' 'topic-ai-agent' 'topic-ai-assistant' 'topic-claude' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-golang' 'topic-llm' 'trace':915 'trail':757 'transport':1093 'trivial':223 'truli':647 'two':405 'type':261,409,500,526,554,569,662,739,777,855,1010,1023,1029 'uncomfort':806 'underscor':354 'unexport':224,355,743 'unless':296,965 'unrel':667 'url':369,370 'usag':693,1048,1277,1290,1304 'use':5,18,58,252,315,349,428,540,555,624,637,674,694,709,723,775,840,875,879,896,1006,1025,1053,1074 'user':35 'util':433,744 'valid':149 'valu':312,565,615,679,837,902 'var':582,660,672,675,715 'variabl':382,700 'verifi':131,162,1167 'vet':86,793,1129 'vs':673 'want':1064,1068,1165 'warn':920 'when/whether':464 'wider':395 'workaround':996 'wrap':760,1230 'wrong':1060 'xmlhttprequest':377 'zero':593,678,713,717 'zero-length':592","prices":[{"id":"a4d6af0f-baeb-4c1f-a154-28d0ff0404b0","listingId":"27e22ac6-3537-45e4-b9d8-41a5c7dc8e15","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cxuu","category":"golang-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:38:25.664Z"}],"sources":[{"listingId":"27e22ac6-3537-45e4-b9d8-41a5c7dc8e15","source":"github","sourceId":"cxuu/golang-skills/go-code-review","sourceUrl":"https://github.com/cxuu/golang-skills/tree/main/skills/go-code-review","isPrimary":false,"firstSeenAt":"2026-04-18T22:13:06.952Z","lastSeenAt":"2026-05-18T18:56:32.602Z"},{"listingId":"27e22ac6-3537-45e4-b9d8-41a5c7dc8e15","source":"skills_sh","sourceId":"cxuu/golang-skills/go-code-review","sourceUrl":"https://skills.sh/cxuu/golang-skills/go-code-review","isPrimary":true,"firstSeenAt":"2026-04-18T20:38:25.664Z","lastSeenAt":"2026-05-07T22:40:45.216Z"}],"details":{"listingId":"27e22ac6-3537-45e4-b9d8-41a5c7dc8e15","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cxuu","slug":"go-code-review","github":{"repo":"cxuu/golang-skills","stars":95,"topics":["agent-skills","ai-agent","ai-assistant","claude","claude-code","codex","cursor","go","golang","llm"],"license":"apache-2.0","html_url":"https://github.com/cxuu/golang-skills","pushed_at":"2026-03-15T19:32:10Z","description":"AI Agent Skills for idiomatic, production-ready Go code, distilled from Google, Uber, Community","skill_md_sha":"89380ed3aadc5c34fb56fa1006f40d05c8137f7b","skill_md_path":"skills/go-code-review/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cxuu/golang-skills/tree/main/skills/go-code-review"},"layout":"multi","source":"github","category":"golang-skills","frontmatter":{"name":"go-code-review","license":"Apache-2.0","description":"Use when reviewing Go code or checking code against community style standards. Also use proactively before submitting a Go PR or when reviewing any Go code changes, even if the user doesn't explicitly request a style review. Does not cover language-specific syntax — delegates to specialized skills.","compatibility":"Web server example in references uses slog (Go 1.21+)"},"skills_sh_url":"https://skills.sh/cxuu/golang-skills/go-code-review"},"updatedAt":"2026-05-18T18:56:32.602Z"}}