agentsclimarketplace

Securing code

Skill ahgraber/skills/skills/securing-code

Agent skills

Install
npx -y skills add ahgraber/skills --skill securing-code

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

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when writing or reviewing code that handles external input, manages access, touches data or crypto, or changes dependencies. Triggers: endpoints, auth/authz, DB/ORM, file handling, secrets, "is this secure?", "security review". NOT for formatting, pure UI, or explaining code.

SKILL.md

8.7 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

Securing Code

Invocation Notice

Inform the user when this skill is being invoked: securing-code.

When to Use

  • Implementing any feature, endpoint, service, or component
  • Writing auth, session management, or access control logic
  • Handling file uploads, secrets, crypto, or sensitive data
  • Reviewing code changes for security issues
  • Checking a diff, branch, or PR for security correctness

When Not to Use

  • General code review without a security focus — code-review invokes this skill internally for its security lens
  • Explaining code without modifying it
  • Formatting or linting only
  • Writing documentation unrelated to security controls

Tier 1 — Core Principles (Apply to Every Task)

These apply regardless of task type — implementation or review.

Secure Design Principles

  • Assume breach — design as if the system will be compromised; no single point of trust
  • Validate all external input — reject anything invalid; never try to "fix" bad input
  • Validate first, then escape — for the output context; use sanitization only when escaping is not possible, via a hardened library; prefer allowlists over blocklists
  • Fail closed — on error, roll back completely and deny access; never fail open
  • Least privilege — grant minimum permissions necessary at every layer
  • Defense in depth — layer controls; never rely on a single protection
  • Zero trust — verify on every request, not just once at login

Code Generation Requirements

All of the following must be satisfied when generating or modifying code:

  1. Parameterized queries for all database access (SQL and NoSQL) — never concatenate user input
  2. Framework-native auth — use framework or third-party auth/session/access-control; do not build custom authentication
  3. Per-request authorization — enforce on every endpoint, AJAX call, page, and resource request including object-level checks
  4. Secret management — load secrets from a secret manager; never hardcode keys, tokens, or passwords
  5. Approved cryptography — AES-256-GCM for encryption, SHA-256/SHA-3 for hashing, Argon2id for passwords, Ed25519/ECDSA P-256 for signatures
  6. Context-aware output encoding — encode all user-controlled data before rendering (HTML, JS, URL, CSS contexts)
  7. Safe error handling — catch all exceptions, log details internally, show generic messages to users; fail closed with full rollback
  8. Rate limiting — apply on all endpoints; no wildcard boundaries (*); no unlimited operations
  9. No unsafe deserialization — never deserialize untrusted data; never pass user input to system calls
  10. Memory-safe languages preferred — if C/C++, apply bounds checking and safe functions
  11. Security headers and cookies — set security headers; use Secure, HttpOnly, SameSite=Lax (Strict for high-risk sessions); if SameSite=None, pair with Secure + CSRF defenses
  12. CSRF protection — enable when the framework supports it for state-changing operations; add manually if not
  13. Deployment hygiene — never run as root in production; initialize all variables; treat compiler warnings as errors

High-Risk Changes — Confirm Before Implementing

The following categories have a large blast radius or affect the trust model. Surface them and get explicit user approval before writing code, even if the user's request implies them:

  • New or modified authentication / session flow (login, MFA, password reset, OAuth callback)
  • New CORS configuration or relaxing an existing one (added origins, credentials: true, wildcard)
  • New external service integration (third-party API, webhook receiver, OAuth provider)
  • New file upload, download, or user-controlled storage path
  • New category of sensitive data being stored (PII, payment, health, credentials)
  • Granting elevated permissions, new roles, or service-account scope expansions
  • Disabling, loosening, or bypassing rate limits, security headers, CSP, or framework auto-escaping
  • Changes to cryptographic primitives, key rotation, or token lifetimes

For these, state what is changing and the risk, then wait for confirmation. A user request to "add login" is permission for the feature, not for a specific auth design — confirm the design first.

Response Behavior

  • State security assumptions before writing code (auth model, data classification, framework)
  • Flag skipped requirements — anything simplified or omitted for brevity is a gap attackers find
  • Append "Security Notes" to all code responses: what the code does to meet each requirement, and what the developer still needs to configure (headers, secrets, IAM, logging)
  • Never propose insecure shortcuts "for simplicity" or "for now"
  • Document exceptions explicitly — if a business requirement forces a deviation, state it and propose the safest alternative

Counter-Rationalizations

Push back on these framings — from the user or yourself — when they appear as justification for skipping a control:

RationalizationReality
"It's an internal tool, security doesn't matter"Internal tools get compromised; attackers pivot through the weakest link.
"We'll add security later"Retrofitting is far harder than building it in; "later" usually means "in prod".
"No one would try to exploit this"Automated scanners find everything reachable; obscurity is not a control.
"The framework handles it"Frameworks provide tools, not guarantees — they still have to be wired correctly.
"It's just a prototype / spike / demo"Prototypes ship. The auth shortcut becomes the production auth.
"This endpoint isn't exposed publicly"Network boundaries change; SSRF, misconfig, and lateral movement reach it anyway.

Routing

Implementation Tasks

  1. Apply Tier 1 above (always)

  2. Open references/tier2-implementation.md and follow the checklist for your task type:

    TaskSection
    General feature / component§2.1
    REST or GraphQL API endpoint§2.2
    Auth, sessions, or access control§2.3
    Secrets, crypto, or data protection§2.4
    Supply chain or CI/CD§2.5
  3. For security-complex domains, also load the matching Tier 3 reference:

    DomainReference
    Input handlingreferences/tier3-input-validation.md
    File upload / downloadreferences/tier3-file-upload.md
    Database-heavy featuresreferences/tier3-database.md
    Auth / session flowsreferences/tier3-threat-modeling.md
    C / C++ / embeddedreferences/tier3-memory-safety.md

Review Tasks

  1. Apply Tier 1 above (always)
  2. Load references/tier2-review.md for the review workflow and checklist
  3. Load relevant Tier 3 references for the domains covered by the change (same routing table as Implementation Tasks above)
  4. Use references/owasp-2025.md to verify coverage against all 10 OWASP categories

References

  • references/tier2-implementation.md — task-specific implementation checklists (§2.1–§2.5)
  • references/tier2-review.md — code review workflow, OWASP-mapped checklist, output format
  • references/tier3-input-validation.md — allowlist validation, output encoding, CSP
  • references/tier3-file-upload.md — file upload validation, storage, retrieval
  • references/tier3-database.md — injection prevention, DB access control, encryption
  • references/tier3-error-handling.md — safe error handling, security event logging
  • references/tier3-memory-safety.md — C/C++ memory safety, compiler flags, sanitizers
  • references/tier3-language-specific.md — Python, JS/Node, Java, C#/.NET forbidden patterns and safe alternatives
  • references/tier3-threat-modeling.md — STRIDE, trust boundaries, risk rating
  • references/owasp-2025.md — OWASP Top 10 2025 with control mapping to skill tiers

What ships with it: 11 files

38.0 KB alongside SKILL.md

Keep looking

Skills are one crate of 327,069. 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.