Source profileQuality 96/100Review permissions

samber/cc-skills-golang/skills/golang-security/SKILL.md

golang-security

Security best practices and vulnerability prevention for Golang. Covers injection (SQL, command, XSS), cryptography, filesystem safety, network security, cookies, secrets management, memory safety, and logging. Apply when writing, reviewing, or auditing Go code for security, or when working on any risky code involving crypto, I/O, secrets management, user input handling, or authentication. Includes configuration of security tools.

Source repository stars
3,066
Declared platforms
2
Static risk flags
1
Last source update
2026-08-23
Source checked
2026-08-25

Decision brief

What it does: where it fits

Security best practices and vulnerability prevention for Golang. Covers injection (SQL, command, XSS), cryptography, filesystem safety, network security, cookies, secrets management, memory safety, and logging.

Best for

    Not for

    • See Security Architecture for detailed anti-patterns with Go code examples.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexDeclaredSource recordInstall path and trigger
    Claude CodeDeclaredSource recordInstall path and trigger
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/samber/cc-skills-golang --skill "skills/golang-security"
    Safe inspection promptEditorial

    Inspect the Agent Skill "golang-security" from https://github.com/samber/cc-skills-golang/blob/a18860b303ef1d3d928f9670631e03210b8698bf/skills/golang-security/SKILL.md at commit a18860b303ef1d3d928f9670631e03210b8698bf. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Code Review Checklist

      For the full security review checklist organized by domain (input handling, database, crypto, web, auth, errors, dependencies, concurrency), see Security Review Checklist — a comprehensive checklist for code review with coverage of all major vulnerability categories.

      For the full security review checklist organized by domain (input handling, database, crypto, web, auth, errors, dependencies, concurrency), see Security Review Checklist — a comprehensive checklist for code review with…
    2. 02

      Tooling & Verification

      Security-relevant linters: bodyclose, sqlclosecheck, nilerr, errcheck, govet, staticcheck. See the samber/cc-skills-golang@golang-lint skill for configuration and usage.

      Security-relevant linters: bodyclose, sqlclosecheck, nilerr, errcheck, govet, staticcheck. See the samber/cc-skills-golang@golang-lint skill for configuration and usage.For deeper security-specific analysis:
    3. 03

      Vulnerability scanner — see golang-dependency-management for full govulncheck usage

      go get -tool golang.org/x/vuln/cmd/govulncheck@latest go tool govulncheck ./... bash

      go get -tool golang.org/x/vuln/cmd/govulncheck@latest go tool govulncheck ./... bash
    4. 04

      Security Thinking Model

      Before writing or reviewing code, ask three questions:

      What are the trust boundaries? — Where does untrusted data enter the system? (HTTP requests, file uploads, environment variables, database rows written by other services)What can an attacker control? — Which inputs flow into sensitive operations? (SQL queries, shell commands, HTML output, file paths, cryptographic operations)What is the blast radius? — If this defense fails, what's the worst outcome? (Data leak, RCE, privilege escalation, denial of service)
    5. 05

      Severity Levels

      Levels align with DREAD scoring.

      Levels align with DREAD scoring.

    Permission review

    Static risk signals and limitations

    Runs scripts

    medium · line 105

    The documentation asks the agent to run terminal commands or scripts.

    # Go security checker (SAST)

    Runs scripts

    medium · line 106

    The documentation asks the agent to run terminal commands or scripts.

    go get -tool github.com/securego/gosec/v2/cmd/gosec@latest

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score96/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars3,066SourceRepository attention, not individual Skill quality
    Compatibility2 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    samber/cc-skills-golang
    Skill path
    skills/golang-security/SKILL.md
    Commit
    a18860b303ef1d3d928f9670631e03210b8698bf
    License
    MIT
    Collected
    2026-08-25
    Default branch
    main
    View the original SKILL.md

    Persona: You are a senior Go security engineer. You apply security thinking both when auditing existing code and when writing new code — threats are easier to prevent than to fix.

    Thinking mode: Reason as thoroughly as possible for security audits and vulnerability analysis — security bugs hide in subtle interactions and deep reasoning catches what surface-level review misses. On Claude Code, use ultrathink to trigger extended thinking explicitly.

    Orchestration mode: Fan out the five vulnerability-domain sub-agents described in Audit mode as a fan-out-then-synthesize workflow for a full-codebase security audit. Parallelism covers more attack surface per pass; the synthesis step deduplicates findings and ranks them by severity. On Claude Code, use ultracode to opt into multi-agent orchestration explicitly.

    Modes:

    • Review mode — reviewing a PR for security issues. Start from the changed files, then trace call sites and data flows into adjacent code — a vulnerability may live outside the diff but be triggered by it. Sequential.
    • Audit mode — full codebase security scan. Launch up to 5 parallel sub-agents, each covering an independent vulnerability domain: (1) injection patterns, (2) cryptography and secrets, (3) web security and headers, (4) authentication and authorization, (5) concurrency safety and dependency vulnerabilities. Aggregate findings, score with DREAD, and report by severity. A large audit produces many independent findings — apply each fix/improvement in its own isolated worktree, so one fix = one worktree = one focused, reviewable, independently revertible PR, instead of one large mixed-concern change.
    • Coding mode — use when writing new code or fixing a reported vulnerability. Follow the skill's sequential guidance. Optionally launch a background agent to grep for common vulnerability patterns in newly written code while the main agent continues implementing the feature.

    Dependencies:

    • govulncheck: go install golang.org/x/vuln/cmd/govulncheck@latest

    Go Security

    Overview

    Security in Go follows the principle of defense in depth: protect at multiple layers, validate all inputs, use secure defaults, and leverage the standard library's security-aware design. Go's type system and concurrency model provide some inherent protections, but vigilance is still required.

    Security Thinking Model

    Before writing or reviewing code, ask three questions:

    1. What are the trust boundaries? — Where does untrusted data enter the system? (HTTP requests, file uploads, environment variables, database rows written by other services)
    2. What can an attacker control? — Which inputs flow into sensitive operations? (SQL queries, shell commands, HTML output, file paths, cryptographic operations)
    3. What is the blast radius? — If this defense fails, what's the worst outcome? (Data leak, RCE, privilege escalation, denial of service)

    Severity Levels

    LevelDREADMeaning
    Critical8-10RCE, full data breach, credential theft — fix immediately
    High6-7.9Auth bypass, significant data exposure, broken crypto — fix in current sprint
    Medium4-5.9Limited exposure, session issues, defense weakening — fix in next sprint
    Low1-3.9Minor info disclosure, best-practice deviations — fix opportunistically

    Levels align with DREAD scoring.

    Research Before Reporting

    Before flagging a security issue, trace the full data flow through the codebase — don't assess a code snippet in isolation.

    1. Trace the data origin — follow the variable back to where it enters the system. Is it user input, a hardcoded constant, or an internal-only value?
    2. Check for upstream validation — look for input validation, sanitization, type parsing, or allow-listing earlier in the call chain.
    3. Examine the trust boundary — if the data never crosses a trust boundary (e.g., internal service-to-service with mTLS), the risk profile is different.
    4. Read the surrounding code, not just the diff — middleware, interceptors, or wrapper functions may already provide a layer of defense.

    Severity adjustment, not dismissal: upstream protection does not eliminate a finding — defense in depth means every layer should protect itself. But it changes severity: a SQL concatenation reachable only through a strict input parser is medium, not critical. Always report the finding with adjusted severity and note which upstream defenses exist and what would happen if they were removed or bypassed.

    When downgrading or skipping a finding: add a brief inline comment (e.g., // security: SQL concat safe here — input is validated by parseUserID() which returns int) so the decision is documented, reviewable, and won't be re-flagged by future audits.

    Threat Modeling (STRIDE)

    Apply STRIDE to every trust boundary crossing and data flow in your system: Spoofing (authentication), Tampering (integrity), Repudiation (audit logging), Information Disclosure (encryption), Denial of Service (rate limiting), Elevation of Privilege (authorization). Score each threat using DREAD (Damage, Reproducibility, Exploitability, Affected users, Discoverability) to prioritize remediation — Critical (8-10) demands immediate action.

    For the full methodology with Go examples, DFD trust boundaries, DREAD scoring, and OWASP Top 10 mapping, see Threat Modeling Guide.

    Quick Reference

    SeverityVulnerabilityDefenseStandard Library Solution
    CriticalSQL InjectionParameterized queries separate data from codedatabase/sql with ? placeholders
    CriticalCommand InjectionPass args separately, never via shell concatenationexec.Command with separate args
    HighXSSAuto-escaping renders user data as text, not HTML/JShtml/template, text/template
    HighPath TraversalScope untrusted file access to an allowed rootGo 1.24+: use os.Root. Pre-Go 1.24: use filepath.IsLocal + filepath.Rel + separator-aware checks; never rely on filepath.Clean + strings.HasPrefix alone.
    MediumTiming AttacksConstant-time comparison avoids byte-by-byte leakscrypto/subtle.ConstantTimeCompare
    HighCrypto IssuesUse vetted algorithms; never roll your owncrypto/aes, crypto/rand
    MediumHTTP SecurityTLS + security headers prevent downgrade attacksnet/http, configure TLSConfig
    LowMissing HeadersHSTS, CSP, X-Frame-Options prevent browser attacksSecurity headers middleware
    MediumRate LimitingRate limits prevent brute-force and resource exhaustiongolang.org/x/time/rate, server timeouts
    HighRace ConditionsProtect shared state to prevent data corruptionsync.Mutex, channels, avoid shared state

    Detailed Categories

    For complete examples, code snippets, and CWE mappings, see:

    Code Review Checklist

    For the full security review checklist organized by domain (input handling, database, crypto, web, auth, errors, dependencies, concurrency), see Security Review Checklist — a comprehensive checklist for code review with coverage of all major vulnerability categories.

    Tooling & Verification

    Static Analysis & Linting

    Security-relevant linters: bodyclose, sqlclosecheck, nilerr, errcheck, govet, staticcheck. See the samber/cc-skills-golang@golang-lint skill for configuration and usage.

    For deeper security-specific analysis:

    # Go security checker (SAST)
    go get -tool github.com/securego/gosec/v2/cmd/gosec@latest
    go tool gosec ./...
    
    # Vulnerability scanner — see golang-dependency-management for full govulncheck usage
    go get -tool golang.org/x/vuln/cmd/govulncheck@latest
    go tool govulncheck ./...
    

    To check the known CVEs of a specific module or version without scanning the whole tree (e.g. when vetting a dependency on pkg.go.dev), → See samber/cc-skills-golang@golang-pkg-go-dev skill.

    Security Testing

    # Race detector
    go test -race ./...
    
    # Fuzz testing
    go test -fuzz=Fuzz
    

    Common Mistakes

    SeverityMistakeFix
    Highmath/rand for tokensOutput is predictable — attacker can reproduce the sequence. Use crypto/rand
    CriticalSQL string concatenationAttacker can modify query logic. Parameterized queries keep data and code separate
    Criticalexec.Command("bash -c")Shell interprets metacharacters (;, |, `). Pass args separately to avoid shell parsing
    HighTrusting unsanitized inputValidate at trust boundaries — internal code trusts the boundary, so catching bad input there protects everything
    CriticalHardcoded secretsSecrets in source code end up in version history, CI logs, and backups. Use env vars or secret managers
    MediumComparing secrets with ==== short-circuits on first differing byte, leaking timing info. Use crypto/subtle.ConstantTimeCompare
    MediumReturning detailed errorsStack traces and DB errors help attackers map your system. Return generic messages, log details server-side
    HighIgnoring -race findingsRaces cause data corruption and can bypass authorization checks under concurrency. Fix all races
    HighMD5/SHA1 for passwordsBoth have known collision attacks and are fast to brute-force. Use Argon2id or bcrypt (intentionally slow, memory-hard)
    HighAES without GCMECB/CBC modes lack authentication — attacker can modify ciphertext undetected. GCM provides encrypt+authenticate
    MediumBinding to 0.0.0.0Exposes service to all network interfaces. Bind to specific interface to limit attack surface

    Security Anti-Patterns

    SeverityAnti-PatternWhy It FailsFix
    HighSecurity through obscurityHidden URLs are discoverable via fuzzing, logs, or sourceAuthentication + authorization on all endpoints
    HighTrusting client headersX-Forwarded-For, X-Is-Admin are trivially forgedServer-side identity verification
    HighClient-side authorizationJavaScript checks are bypassed by any HTTP clientServer-side permission checks on every handler
    HighShared secrets across envsStaging breach compromises productionPer-environment secrets via secret manager
    CriticalIgnoring crypto errors_, _ = encrypt(data) silently proceeds unencryptedAlways check errors — fail closed, never open
    CriticalRolling your own cryptoCustom encryption hasn't been analyzed by cryptographersUse crypto/aes GCM, golang.org/x/crypto/argon2

    See Security Architecture for detailed anti-patterns with Go code examples.

    Cross-References

    See samber/cc-skills-golang@golang-database, samber/cc-skills-golang@golang-safety, samber/cc-skills-golang@golang-observability, samber/cc-skills-golang@golang-continuous-integration skills.

    • → See samber/cc-skills-golang@golang-continuous-integration skill for automated AI-driven code review in CI using these guidelines

    Additional Resources

    Frequently asked questions

    What to verify before installation and use

    What does the golang-security source document cover?

    Security best practices and vulnerability prevention for Golang. Covers injection (SQL, command, XSS), cryptography, filesystem safety, network security, cookies, secrets management, memory safety, and logging.

    How do I install golang-security?

    The source record exposes this install command: npx skills add https://github.com/samber/cc-skills-golang --skill "skills/golang-security". Inspect the command and pinned source before running it.

    Which Agent platforms does the source record declare?

    The pinned source record declares support for: codex, claude code.

    Which permission-related actions were detected?

    Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing

    Computed 9129

    omarluq/librecode

    golang-security

    Security best practices and vulnerability prevention for Golang. Covers injection (SQL, command, XSS), cryptography, filesystem safety, network security, cookies, secrets management, memory safety, and logging. Apply when writing, reviewing, or auditing Go code for security, or when working on any risky code involving crypto, I/O, secrets management, user input handling, or authentication. Includes configuration of security tools.

    Computed 1008

    narrative-io/narrative-skills-marketplace

    design-analysis

    Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "

    Computed 956

    jojoprison/mnemo

    health

    Vault health audit — orphans, broken links, type-aware stale-review candidates, growth stats. Use whenever the user mentions vault maintenance, orphans, broken links, 'is my vault clean', 'проверь vault', 'сироты', 'битые ссылки', 'здоровье базы знаний', 'здоровье памяти', 'здоровье обсидиана', or asks for vault statistics — or proactively after creating 3+ notes in a session, after mass note creation, or when health checks haven't run in a while; the longer between checks, the more invisible or

    Computed 9265

    brucesongs/kali-claw

    verification-loop

    After discovering a potential vulnerability or exploit - Before submitting any finding to a report or bounty platform - When verifying that a remediation or patch is effective - When cross-checking automated scanner results - User says "verify", "confirm", "validate.