Chalk Labs
Need help deploying go-security-audit?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/eduardo-sl-go-security-audit
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/go-security-audit
What's inside
- Skill name
go-security-audit- Description
- None
- License
- MIT
- Instructions
- 230 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- invalid YAML frontmatter: Nested mappings are not allowed in compact mappings at line 13, column 16:
- name: missing
- description: missing
Files (5)
- SKILL.md
- auth-and-transport.md · references/
- crypto.md · references/
- injection.md · references/
- threat-model.md · references/
SKILL.md (first lines)
# Go Security Audit
Security is not a feature — it's a property. Every line of code either
maintains it or degrades it.
## Operating Modes
Pick the mode that matches the request before starting:
- **Targeted check** — a single concern ("is this query injectable?",
"review this auth middleware"). Apply only the relevant sections.
- **Diff audit** — audit the changed lines of a PR or working tree for
every concern below.
- **Full audit** (default for "security review the service") — sweep the
codebase using the parallel passes in "Auditing Large Codebases".
## Research Before Reporting
- Trace each suspicious sink back to an entry point (go-semantic-tools:
references, call hierarchy). A sink fed only by constants or internal
values is not a vulnerability.
- Check what upstream already enforces — type parsing, allowlists,
middleware. It lowers severity; it does not delete the finding.
- 🔴 BLOCKER: exploitable today by whoever controls the input. 🟡 WARNING:
needs a second failure or a privileged caller. 🟢 SUGGESTION: hardening.
- Every finding states file:line, the entry → sink path, a one-sentence
exploit, and the fix.
Trust boundaries, STRIDE checks and the finding template:
`references/threat-model.md`.
## Run the Scanners First
Before manual review, run the automated scanners and fold their output
into the findings (skip any that is not installed and note it):
```bash
govulncheck ./... # known CVEs actually reachable from your code
gosec ./... # static analysis for insecure patterns
go vet ./... # includes some security-relevant checks
```
Scanners find the known patterns; the manual passes below find the
logic flaws they cannot.
## Auditing Large Codebases
Each numbered section below is an independent audit pass. For codebases
beyond ~20 files:
1. Locate the attack surface first: HTTP/gRPC handlers, CLI entry
points, queue consumers, and anything parsing external input.
2. Run one pass per concern: (a) input validation + SQL and other
injection (command, SSRF, paths, archives, templates),
(b) authentication/authorization, (c) secrets + crypto,
(d) TLS + security headers + rate limiting, (e) logging hygiene.
3. If your environment supports delegating work to parallel sub-agents
or tasks, assign each pass to one — the passes don't overlap.
Otherwise run them sequentially.
4. Every finding must cite `file.go:line`, the vulnerable input path,
and a concrete fix. Aggregate into one report sorted by severity.
Detailed reference material, loaded on demand:
- `references/injection.md` — boundary validation, sanitization,
parameterized and dynamic queries, command injection, SSRF, path
traversal, archives, templates, open redirects, log injection.
- `references/auth-and-transport.md` — passwords, JWT, authorization
middleware, secrets, headers, cookies, CSRF, CORS, TLS, rate limiting.
- `references/threat-model.md` — trust boundaries, STRIDE per boundary,
severity definitions, finding template.
- `references/crypto.md` — randomness, constant-time comparison, password
hashing, AEAD encryption, hashes and KDFs, signatures, FIPS mode.
Read a reference file only when the section below is not enough.
## 1. Input Validation
Validate at the boundary, before the value reaches any business code:
- Cap the request body with `http.MaxBytesReader` — an unbounded decoder is
a memory exhaustion vector.
- Decode into a typed struct, then validate it. A decode that succeeds is not
a value that is valid.
- Reject rather than repair. Reply with the status code, not with the
internal error text.
- Sanitize anything rendered back as HTML (`bluemonday`), parse emails with
`net/mail`, and reject URLs whose scheme is not `http`/`https`.
Examples in `references/injection.md`.
## 2. SQL Injection Prevention
ALWAYS pass values as query parameters. There is no safe amount of string
concatenation:
```go
// ✅ Good — parameterized
row := db.QueryRowContext(ctx, "SELECT id, name FROM users WHERE email = $1", email)
// ❌ CRITICAL — SQL injection
query := "SELECT * FROM users WHERE email = '" + email + "'"
query := fmt.Sprintf("SELECT * FROM users WHERE id = %s", id)
```
Dynamic filters are built by appending placeholders (`$1`, `$2`, …) and
collecting the values into an `args` slice — never by interpolating the value
itself. Table and column names cannot be parameterized: allowlist them
against a fixed set.
Examples in `references/injection.md`.
## 3. Injection Beyond SQL
- **Command** — `exec.CommandContext(ctx, "tool", "--", arg)`: no shell,
`--` before input. Input never selects the binary.
- **SSRF** — server-side fetches of caller URLs go through a client whose
dialer rejects loopback, private, link-local and metadata addresses
*after* DNS resolution, with proxies disabled.From eduardo-sl/go-agent-skills, MIT.
More from eduardo-sl/go-agent-skills
- 0.676score
go-cli
eduardo-sl
Build command-line tools in Go: flag handling, subcommands, stdin/stdout discipline, exit codes, signal handling, and when Cobra/Viper earn their weight over…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-modernize
eduardo-sl
Modernize Go code to use current language features and standard library additions, Go 1.21 through 1.27: generics and generic methods, log/slog, errors.Join…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-graphql
eduardo-sl
Build GraphQL servers in Go with gqlgen: schema-first generation, resolver structure, the N+1 problem and dataloaders, complexity and depth limits, error…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-grpc
eduardo-sl
gRPC services in Go beyond the basics: proto design, status codes and error details, interceptors, deadlines, streaming, health checks, and graceful shutdown.
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-interface-design
eduardo-sl
Go interface design patterns: implicit interfaces, consumer-side definition, interface compliance verification, composition, the…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-api-design
eduardo-sl
HTTP/REST API design for Go services: handlers, ServeMux routing, middleware, request validation, pagination, idempotency, health checks, error responses, and…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-coding-standards
eduardo-sl
Go coding standards and style conventions grounded in Effective Go, Go Code Review Comments, and production-proven idioms.
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-context
eduardo-sl
Correct usage of context.Context in Go: propagation, cancellation, timeouts, deadlines, values, and common anti-patterns.
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-data-structures
eduardo-sl
Correct use of Go's built-in data structures: slices (nil vs empty, append semantics, aliasing, preallocation), maps (comma-ok, sets, iteration order)…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-documentation
eduardo-sl
Go documentation conventions: godoc comments, package docs, testable Example functions, deprecation notices, doc links, and project docs (README, CHANGELOG…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-error-handling
eduardo-sl
Go error handling patterns, wrapping, sentinel errors, custom error types, and the errors package.
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-naming
eduardo-sl
Go naming conventions for packages, files, types, functions, methods, receivers, variables, constants, errors, acronyms and tests, grounded in Effective Go…
SkillAFreshness: A★ 82Claude Code +9
Signals
- Stars
- 82
- Forks
- 10
- Open issues
- 0
- Last commit (this folder)
- Oct 14, 2026 (17 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/eduardo-sl/go-agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from eduardo-sl
- 0.676score
go-cli
eduardo-sl
Build command-line tools in Go: flag handling, subcommands, stdin/stdout discipline, exit codes, signal handling, and when Cobra/Viper earn their weight over…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-api-design
eduardo-sl
HTTP/REST API design for Go services: handlers, ServeMux routing, middleware, request validation, pagination, idempotency, health checks, error responses, and…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-graphql
eduardo-sl
Build GraphQL servers in Go with gqlgen: schema-first generation, resolver structure, the N+1 problem and dataloaders, complexity and depth limits, error…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-grpc
eduardo-sl
gRPC services in Go beyond the basics: proto design, status codes and error details, interceptors, deadlines, streaming, health checks, and graceful shutdown.
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-interface-design
eduardo-sl
Go interface design patterns: implicit interfaces, consumer-side definition, interface compliance verification, composition, the…
SkillAFreshness: A★ 82Claude Code +9 - 0.676score
go-coding-standards
eduardo-sl
Go coding standards and style conventions grounded in Effective Go, Go Code Review Comments, and production-proven idioms.
SkillAFreshness: A★ 82Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get go-security-audit running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
go-security-audit skill. Agent Mart. https://agentmart.dev/skills/eduardo-sl-go-security-audit (last updated 2026-10-24)