agentsclimarketplace

Security protocol

Skill NoobyGains/godmode/skills/security-protocol

Use when writing code that processes user input, manages authentication or authorization, constructs database queries, handles file operations, interacts with external data, exposes API endpoints, or manages secrets - any code that crosses a trust boundaryFrom its SKILL.md

Install
npx -y skills add NoobyGains/godmode --skill security-protocol

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

9.3 KB, as published. Nobody here has run it

Security Protocol

Overview

Security is not a phase you bolt on. Every line of code is a security decision.

Core principle: Never trust data from outside your trust boundary. Validate at every boundary crossing.

No exceptions. No workarounds. No shortcuts.

The Prime Directive

NO EXTERNAL DATA REACHES A SYSTEM CALL, QUERY, OR OUTPUT WITHOUT VALIDATION AND SANITIZATION

When data crosses a trust boundary, it must be validated before consumption. This is absolute.

When to Use

Mandatory when writing code that:

  • Accepts user input (forms, URLs, headers, uploaded files)
  • Constructs database queries
  • Renders user-supplied content
  • Manages authentication or authorization
  • Handles secrets or credentials
  • Invokes external APIs
  • Manipulates file paths
  • Executes system commands
  • Sets HTTP response headers
  • Processes file uploads

This is not discretionary. Security awareness is woven into development, not applied afterward.

The Entry Protocol

BEFORE shipping ANY code that handles external data:

1. IDENTIFY: Where does data enter the system? (Trust boundary)
2. VALIDATE: Is input validated at the boundary?
3. SANITIZE: Is output encoded for its target context?
4. AUTHORIZE: Is access control verified before the action?
5. PROTECT: Are secrets, tokens, and keys managed safely?

Omit any step = vulnerability shipped

OWASP Top 10 Condensed Guide

A01: Broken Access Control

Every endpoint must verify: Can THIS user perform THIS action on THIS resource?

# VULNERABLE: Checks authentication but not authorization
GET /api/accounts/456/profile  # User 123 views user 456's private data

# SECURE: Verify resource ownership
if resource.owner_id != authenticated_user.id:
    return 403 Forbidden
VerificationMethod
AuthenticationIs the user who they claim to be?
AuthorizationIs this user permitted to perform this action?
Resource ownershipDoes this user own this specific resource?
Role enforcementServer-side role check; never trust client-provided role claims

Default posture: deny. If no explicit rule grants access, access is denied.

A02: Cryptographic Failures

Required PracticeProhibited Practice
bcrypt/scrypt/argon2 for password hashingMD5, SHA1, SHA256 for passwords
TLS everywhere (HTTPS)HTTP for anything sensitive
Cryptographically secure RNG for tokensMath.random() for security tokens
Encrypt sensitive data at restStore sensitive data in plaintext
Use established cryptographic librariesImplement custom cryptography

A03: Injection

Never concatenate external input into queries, commands, or templates.

Injection VectorPrevention
SQL injectionParameterized queries / prepared statements. Always.
NoSQL injectionType-check inputs; use ODM query builders
Command injectionAvoid shell execution. If unavoidable: allowlist arguments, never interpolate
LDAP injectionEscape special characters; use parameterized queries
Template injectionUse auto-escaping template engines
-- VULNERABLE: String concatenation
SELECT * FROM users WHERE email = '" + userInput + "'

-- SECURE: Parameterized query
SELECT * FROM users WHERE email = $1

This is non-negotiable. There is no scenario where string concatenation in queries is acceptable.

A04: Insecure Design

  • Enforce rate limiting on authentication endpoints
  • Use CAPTCHA or proof-of-work for account creation
  • Validate business logic constraints server-side (never client-side only)
  • Design for abuse scenarios, not just intended usage

A05: Security Misconfiguration

CheckpointAction
Default credentialsReplace all defaults before deployment
Debug featuresDisable debug mode, admin consoles, and verbose errors in production
Error verbosityNever expose stack traces, SQL errors, or internal paths to users
Directory listingDisable on all web servers
Security headersSet them (see Security Headers section)
CORS policyRestrict to specific origins; never * for credentialed requests

A06: Vulnerable Components

BEFORE adding any dependency:

1. Is it actively maintained? (Last commit within 6 months)
2. Are known vulnerabilities published? (npm audit, snyk, dependabot)
3. Is it widely adopted? (Download counts and stars are signals, not guarantees)
4. Is it actually necessary? (Do not add a dependency for a single utility function)

Execute npm audit / pip audit / cargo audit regularly. Remediate critical and high findings immediately.

A07: Authentication Failures

RequirementImplementation
Password storagebcrypt/scrypt/argon2 with unique salts
Session tokensCryptographically random, httpOnly, secure, sameSite flags
Brute-force protectionLock account after 5-10 consecutive failures
Multi-factor authenticationSupport TOTP minimum for sensitive applications
Password policyMinimum 8 characters; cross-reference against breach databases
Session lifecycleExpire sessions; invalidate on password change

A08: Data Integrity Failures

  • Verify integrity of software updates and CI/CD pipelines
  • Use signed artifacts and checksums
  • Never auto-deserialize untrusted data (no eval(), no pickle.loads() on user input)

A09: Logging and Monitoring Failures

LogNever Log
Authentication attempts (success and failure)Passwords or authentication tokens
Authorization denialsComplete credit card numbers
Input validation failuresPersonally identifiable information without purpose
System errorsEncryption keys or secrets

A10: Server-Side Request Forgery (SSRF)

  • Validate and allowlist URLs before server-side requests
  • Never allow users to control URLs for server-side fetches
  • Block requests to internal networks (169.254.x.x, 10.x.x.x, 127.x.x.x, 192.168.x.x)

Security Headers

Set these on every HTTP response:

Content-Security-Policy: default-src 'self'; script-src 'self'
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()

Begin restrictive and relax only when a specific requirement demands it.

Secrets Management

NEVER:
- Embed secrets in source code
- Commit .env files to version control
- Write secrets to log output
- Transmit secrets in URL query parameters
- Store secrets in client-side code

ALWAYS:
- Use environment variables or dedicated secret managers
- Add .env to .gitignore BEFORE the first commit
- Rotate secrets on a defined schedule
- Use distinct secrets per environment
- Audit secret access

Input Validation Checklist

For every input field:

  • Type validated (string, number, email, URL)
  • Length constrained (minimum and maximum)
  • Format validated (regex for structured data)
  • Range checked (numbers, dates)
  • Allowlisted where possible (enum values, known options)
  • Sanitized for output context (HTML, SQL, shell)
  • File uploads: type verified by content inspection (not extension), size limited

Cognitive Traps

RationalizationTruth
"Internal tool, no attacker"Internal tools get compromised. Internal users make mistakes. Insider threats are real.
"We will add security later"Security is not a feature. Retrofitting it costs 10x more than building it in.
"The framework handles it"Frameworks have escape hatches. Know exactly what your framework does and does not protect.
"Input validation is excessive"Every injection attack in history started with unvalidated input.
"It is just a prototype"Prototypes become production systems. Secure from the beginning.
"Too complicated, slows development"Data breaches slow development permanently.
"Nobody would do that"Attackers do exactly that. Assume all input is hostile.

Guardrails -- HALT and Fix

  • String concatenation in SQL queries
  • eval() or exec() on user-provided data
  • Secrets in source code or committed configuration files
  • Missing authorization checks on endpoints
  • User input rendered without encoding
  • Wildcard * CORS policy with credentials
  • HTTP for anything involving authentication or sensitive data
  • Client-side-only validation without server-side counterpart
  • Disabled CSRF protection
  • Default credentials in deployed environments

Every item on this list is a security vulnerability. Remediate before shipping.

Integration

Complementary skills:

  • godmode:system-design -- Authentication strategy and data flow design
  • godmode:quality-enforcement -- Security checks as automated quality gates
  • godmode:completion-gate -- Security verification before shipping
  • godmode:test-first -- Write security-focused test cases

The Bottom Line

Trust boundary crossed -> validate input, sanitize output, verify authorization

No exceptions. No "we will add it later." Security ships with the code or the code does not ship.

Keep looking

Skills are one crate of 620,106. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.