← Back to list
🛠️

secure-code-guardian Checked

Use when implementing authentication/authorization, securing user input, or preventing OWASP Top …
🛠️ Developer Tools skills By Jeffallan Version v1.0.0 Added 2026-09-07 Updated 2026-09-07 Source ↗
9.3Overall rating
2Views
12Downloads
11.3kStars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "secure-code-guardian" skill by following the instructions at https://skill123.me/install/secure-code-guardian.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/secure-code-guardian.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 11 KB
📊 Static rating
9.3/10
Trigger
9.5
Structure
9.3
Workflow
8.8
Content
9.0
Engineering
9.0
Security
10.0

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

Use when implementing authentication/authorization, securing user input, or preventing OWASP Top 10 vulnerabilities — including custom security implementations such as hashing passwords with bcrypt/argon2, sanitizing SQL queries with parameterized statements, configuring CORS/CSP headers, validating input with Zod, and setting up JWT tokens. Invoke for authentication, authorization, input validation, encryption, OWASP Top 10 prevention, secure session management, and security hardening. For pre-built OAuth/SSO integrations or standalone security audits, consider a more specialized skill.

Secure Code Guardian

Documentation

Use when implementing authentication/authorization, securing user input, or preventing OWASP Top 10 vulnerabilities — including custom security implementations such as hashing passwords with bcrypt/argon2, sanitizing SQL queries with parameterized statements, configuring CORS/CSP headers, validating input with Zod, and setting up JWT tokens. Invoke for authentication, authorization, input validation, encryption, OWASP Top 10 prevention, secure session management, and security hardening. For pre-built OAuth/SSO integrations or standalone security audits, consider a more specialized skill.

Secure Code Guardian

Core Workflow

1. **Threat model** — Identify attack surface and threats

2. **Design** — Plan security controls

3. **Implement** — Write secure code with defense in depth; see code examples below

4. **Validate** — Test security controls with explicit checkpoints (see below)

5. **Document** — Record security decisions

### Validation Checkpoints

After each implementation step, verify:

  • **Authentication**: Test brute-force protection (lockout/rate limit triggers), session fixation resistance, token expiration, and invalid-credential error messages (must not leak user existence).
  • **Authorization**: Verify horizontal and vertical privilege escalation paths are blocked; test with tokens belonging to different roles/users.
  • **Input handling**: Confirm SQL injection payloads (' OR 1=1--) are rejected; confirm XSS payloads (<script>alert(1)</script>) are escaped or rejected.
  • **Headers/CORS**: Validate with a security scanner (e.g., curl -I, Mozilla Observatory) that security headers are present and CORS origin allowlist is correct.

Reference Guide

Load detailed guidance based on context:

| Topic | Reference | Load When |

|-------|-----------|-----------|

| OWASP | references/owasp-prevention.md | OWASP Top 10 patterns |

| Authentication | references/authentication.md | Password hashing, JWT |

| Input Validation | references/input-validation.md | Zod, SQL injection |

| XSS/CSRF | references/xss-csrf.md | XSS prevention, CSRF |

| Headers | references/security-headers.md | Helmet, rate limiting |

Constraints

### MUST DO

  • Hash passwords with bcrypt/argon2 (never MD5/SHA-1/unsalted hashes)
  • Use parameterized queries (never string-interpolated SQL)
  • Validate and sanitize all user input before use
  • Implement rate limiting on auth endpoints
  • Set security headers (CSP, HSTS, X-Frame-Options)
  • Log security events (failed auth, privilege escalation attempts)
  • Store secrets in environment variables or secret managers (never in source code)

### MUST NOT DO

  • Store passwords in plaintext or reversibly encrypted form
  • Trust user input without validation
  • Expose sensitive data in logs or error responses
  • Use weak or deprecated algorithms (MD5, SHA-1, DES, ECB mode)
  • Hardcode secrets or credentials in code

Code Examples

### Password Hashing (bcrypt)


import bcrypt from 'bcrypt';
View full documentation

const SALT_ROUNDS = 12; // minimum 10; 12 balances security and performance

export async function hashPassword(plaintext: string): Promise<string> {

return bcrypt.hash(plaintext, SALT_ROUNDS);

}

export async function verifyPassword(plaintext: string, hash: string): Promise<boolean> {

return bcrypt.compare(plaintext, hash);

}



### Parameterized SQL Query (Node.js / pg)

// NEVER: SELECT * FROM users WHERE email = '${email}'

// ALWAYS: use positional parameters

import { Pool } from 'pg';

const pool = new Pool();

export async function getUserByEmail(email: string) {

const { rows } = await pool.query(

'SELECT id, email, role FROM users WHERE email = $1',

[email] // value passed separately — never interpolated

);

return rows[0] ?? null;

}



### Input Validation with Zod

import { z } from 'zod';

const LoginSchema = z.object({

email: z.string().email().max(254),

password: z.string().min(8).max(128),

});

export function validateLoginInput(raw: unknown) {

const result = LoginSchema.safeParse(raw);

if (!result.success) {

// Return generic error — never echo raw input back

throw new Error('Invalid credentials format');

}

return result.data;

}



### JWT Validation

import jwt from 'jsonwebtoken';

const JWT_SECRET = process.env.JWT_SECRET!; // never hardcode

export function verifyToken(token: string): jwt.JwtPayload {

// Throws if expired, tampered, or wrong algorithm

const payload = jwt.verify(token, JWT_SECRET, {

algorithms: ['HS256'], // explicitly allowlist algorithm

issuer: 'your-app',

audience: 'your-app',

});

if (typeof payload === 'string') throw new Error('Invalid token payload');

return payload;

}



### Securing an Endpoint — Full Flow

import express from 'express';

import rateLimit from 'express-rate-limit';

import helmet from 'helmet';

const app = express();

app.use(helmet()); // sets CSP, HSTS, X-Frame-Options, etc.

app.use(express.json({ limit: '10kb' })); // limit payload size

const authLimiter = rateLimit({

windowMs: 15 * 60 * 1000, // 15 minutes

max: 10, // 10 attempts per window per IP

standardHeaders: true,

legacyHeaders: false,

});

app.post('/api/login', authLimiter, async (req, res) => {

// 1. Validate input

const { email, password } = validateLoginInput(req.body);

// 2. Authenticate — parameterized query, constant-time compare

const user = await getUserByEmail(email);

if (!user || !(await verifyPassword(password, user.passwordHash))) {

// Generic message — do not reveal whether email exists

return res.status(401).json({ error: 'Invalid credentials' });

}

// 3. Authorize — issue scoped, short-lived token

const token = jwt.sign(

{ sub: user.id, role: user.role },

JWT_SECRET,

{ algorithm: 'HS256', expiresIn: '15m', issuer: 'your-app', audience: 'your-app' }

);

// 4. Secure response — token in httpOnly cookie, not body

res.cookie('token', token, { httpOnly: true, secure: true, sameSite: 'strict' });

return res.json({ message: 'Authenticated' });

});



## Output Templates

When implementing security features, provide:
1. Secure implementation code
2. Security considerations noted
3. Configuration requirements (env vars, headers)
4. Testing recommendations

## Knowledge Reference

OWASP Top 10, bcrypt/argon2, JWT, OAuth 2.0, OIDC, CSP, CORS, rate limiting, input validation, output encoding, encryption (AES, RSA), TLS, security headers

[Documentation](https://jeffallan.github.io/claude-skills/skills/security/secure-code-guardian/)

Score breakdown

Trigger
9.5
Strong What/When plus rare When-Not clause redirecting OAuth/audit cases; rich security keywords.
Structure
9.3
193-line SKILL.md, five focused references with load-when table, no redundancy.
Workflow
8.8
Per-step validation checkpoints test brute force, privilege escalation, SQLi/XSS payloads, and headers.
Content
9.0
Runnable TypeScript with correct/incorrect contrasts and inline security rationale.
Engineering
9.0
Valid frontmatter; all reference paths exist; no scripts.
Security
10.0
Secrets via env vars, safe hashing patterns, no egress or injection text.
Excellent secure-coding skill: explicit validation checkpoints with concrete attack payloads, complete hardened login flow, JWT secret from env, and the only description in this batch that includes a When-Not redirection clause.