secure-coding

A security guide based on the OWASP Top 10:2025, a list of common web-application security risks, with extra guidance for NestJS, Laravel, and Spring Boot.

In plain words
What is it for?
Use it before writing or reviewing backend and API code. It selects guidance for the project's framework and can also account for known findings recorded in SECURITY-NOTES.md.
Why use it?
It helps developers identify and avoid security problems while changing backend routes, authentication, access rules, queries, configuration, or dependencies.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/joaovicdev/claude-owasp-10/secure-coding
Any agent
npx skills add joaovicdev/claude-owasp-10 --skill secure-coding
Clone the repo
git clone --depth 1 https://github.com/joaovicdev/claude-owasp-10

Made for: Claude Code, Codex.

Per session 90 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,436 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00090 $0.01436
Opus 5 $0.00045 $0.00718
Sonnet 5 $0.00018 $0.00287
Haiku 4.5 $0.00009 $0.00144

Measured 2d ago against content hash 98b61d2f287e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

secure-coding scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/secure-coding/SKILL.md · 81 lines

How it starts

The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Secure coding — OWASP Top 10:2025

These files are the single source of truth for security rules in every project where this skill is installed. Consumers — a review skill, a CI check, a human — read them and cite their ids; they never restate the material. If guidance here conflicts with a memory or a habit, this wins.

The core (owasp/) is language-agnostic on purpose — it is installed in NestJS, Laravel, Spring Boot and other backends. It uses neutral pseudocode and neutral vocabulary (route handler, ORM, filter, DI container). Framework idiom lives only in stacks/.

How to use this

  1. Detect the stack once per session: nest-cli.jsonstacks/nestjs.md · artisan/composer.jsonstacks/laravel.md · pom.xml/build.gradlestacks/spring-boot.md. No match → use the core alone. That is the design, not a degraded mode.
  2. Read the manifest rows below that match what you are about to touch. Read those files. Do not read all ten.
  3. If SECURITY-NOTES.md exists at the project root, read it — it carries that project's known-open findings and accepted risks. If it does not exist and the project has findings worth tracking, templates/SECURITY-NOTES.md beside this file is the blank to copy there.

Every path in this file is relative to this skill's own directory, so the same bytes work whether the skill was installed as a plugin, committed into a project's .claude/skills/, or linked into the user's global skills directory.

Manifest

ID File Load when the change touches
A01:2025 owasp/A01-broken-access-control.md any handler taking an id/slug/key, guards, policies, roles, permissions, tenant scoping, object lookup by user-supplied identifier; an outbound request whose URL/host/port comes from the caller (SSRF); CSRF settings on a cookie-session app
A02:2025 owasp/A02-security-misconfiguration.md app bootstrap, CORS, security headers, TLS options, debug flags, API docs exposure, admin/actuator endpoints, default credentials
A03:2025 owasp/A03-software-supply-chain-failures.md package*.json, composer.json/.lock, pom.xml, build.gradle, requirements.txt, go.mod, Dockerfile, CI workflow, any new dependency or install script
A04:2025 owasp/A04-cryptographic-failures.md password storage, tokens, encryption, hashing, random values, TLS, key management, PII at rest or in transit
A05:2025 owasp/A05-injection.md any query, raw SQL, ORM escape hatch, shell/exec, file path from input, LDAP/XPath/NoSQL filters, deserialization of input; template rendering and any unescaped output construct (XSS)
A06:2025 owasp/A06-insecure-design.md a new feature's shape: workflows, state machines, limits, quotas, money, invitations, password reset, anything where the design carries the risk
A07:2025 owasp/A07-authentication-failures.md login, logout, registration, password reset, MFA, sessions, tokens, refresh, impersonation, API keys
A08:2025 owasp/A08-software-or-data-integrity-failures.md deserialization, auto-update, plugin loading, webhook receivers, signed payloads, CI/CD publish steps, cache/CDN keys
A09:2025 owasp/A09-security-logging-and-alerting-failures.md loggers, interceptors, audit trails, error reporting, anything that writes request data anywhere
A10:2025 owasp/A10-mishandling-of-exceptional-conditions.md exception filters, error handlers, catch blocks, fallback/default branches, timeouts, retries, partial failure
NEST stacks/nestjs.md any NestJS project
LAR stacks/laravel.md any Laravel project
SPR stacks/spring-boot.md any Spring Boot project

Read the full file on GitHub · 81 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 81 lines · 90 tokens per session scan A 98b61d2f287e

Subscribe to this mod's changes

secure-coding is a skill published in the GitHub repository joaovicdev/claude-owasp-10 (2 stars, last pushed 7d ago), licensed MIT. It adds 90 tokens to every session and 1,436 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

owasp-security

Implement secure coding practices following OWASP Top 10. Use when preventing security vulnerabilities, implementing authentication, securing APIs, or conducting security reviews. Triggers on OWASP, security, XSS, SQL injection, CSRF, authentication security, secure coding, vulnerability.

FilippoDeSilva/skills · 57 tokens

migrate-radix-to-base

Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert radix primitives, or switch a shadcn project's base library. Handles single components ("migrate accordion") and whole projects.

shadcn-ui/ui · 61 tokens

laravel-best-practices

Apply this skill whenever writing, reviewing, or refactoring Laravel PHP code. This includes creating or modifying controllers, models, migrations, form requests, policies, jobs, scheduled commands, service classes, and Eloquent queries. Triggers for N+1 and query performance issues, caching strategies, authorization…

laravel/boost · 114 tokens

exploiting-excessive-data-exposure-in-api

Tests APIs for excessive data exposure where endpoints return more data than the client application needs, relying on the frontend to filter sensitive fields. The tester intercepts API responses and analyzes them for leaked PII, internal identifiers, debug information, or sensitive business data that the UI does not…

xalgorix/xalgorix · 114 tokens

performing-api-inventory-and-discovery

Performs API inventory and discovery to identify all API endpoints in an organization's environment including documented, undocumented, shadow, zombie, and deprecated APIs. The tester uses passive traffic analysis, active scanning, DNS enumeration, JavaScript analysis, and cloud resource inventory to build a…

xalgorix/xalgorix · 100 tokens

parse-table

Parse table definition to extract module name, model name, table name, and field definitions. First step of CRUD generation.

JaguarJack/catch-admin · 27 tokens