api-design
REST API design best practices covering versioning, error handling, pagination, and OpenAPI documentation. Use when designing or…
Security best practices covering API key management, input validation, injection prevention, and OWASP patterns. Use when handling secrets, user input, or security-sensitive code. TRIGGER when: security, API key, secret, input validation, injection, OWASP. DO NOT TRIGGER when:
Claude Code
$ npx -y skills add akaszubski/autonomous-dev --skill security-patterns --agent claude-code
Codex
$ npx skills add akaszubski/autonomous-dev --skill security-patterns -a codex -y
Cursor
$ npx skills add akaszubski/autonomous-dev --skill security-patterns -a cursor -y
Gemini CLI
$ npx skills add akaszubski/autonomous-dev --skill security-patterns -a gemini-cli -y
GitHub Copilot
$ npx skills add akaszubski/autonomous-dev --skill security-patterns -a github-copilot -y
OpenCode
$ npx skills add akaszubski/autonomous-dev --skill security-patterns -a opencode -y
Windsurf
$ npx skills add akaszubski/autonomous-dev --skill security-patterns -a windsurf -y
name: security-patterns description: "Security best practices covering API key management, input validation, injection prevention, and OWASP patterns. Use when handling secrets, user input, or security-sensitive code. TRIGGER when: security, API key, secret, input validation, injection, OWASP. DO NOT TRIGGER when: non-security code, styling, documentation, test scaffolding." allowed-tools: [Read]
Security best practices and patterns for secure development.
**See:** [code-examples.md](code-examples.md) for Python implementations **See:** [templates.md](templates.md) for checklists and config templates
---
**Rule:** Never hardcode secrets. Always use environment variables via `.env` files.
# ✅ CORRECT
api_key = os.getenv("ANTHROPIC_API_KEY")
# ❌ WRONG
api_key = "sk-ant-1234567890abcdef" # NEVER!**See:** [code-examples.md#api-keys--secrets](code-examples.md#api-keys--secrets) for full validation code
---
**Rule:** Always validate paths are within allowed directories.
# Use is_relative_to() to prevent ../ attacks
if not file_path.is_relative_to(base_dir):
raise ValueError("Path traversal detected")**Rule:** Never use `shell=True`. Pass arguments as lists.
# ✅ CORRECT
subprocess.run([command] + args, shell=False)
# ❌ WRONG
subprocess.run(f"ls {user_input}", shell=True) # Injection risk!**Rule:** Always use parameterized queries.
# ✅ CORRECT
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
# ❌ WRONG
cursor.execute(f"SELECT * FROM users WHERE username = '{username}'")**See:** [code-examples.md#input-validation](code-examples.md#input-validation) for complete examples
---
| Use Case | Permission | Octal | |----------|------------|-------| | Sensitive files | `rw-------` | 0o600 | | Sensitive dirs | `rwx------` | 0o700 | | Public files | `rw-r--r--` | 0o644 |
**See:** [code-examples.md#file-operations-security](code-examples.md#file-operations-security)
---
**Rule:** Use `secrets` module for security-sensitive random values.
# ✅ CORRECT token = secrets.token_hex(32) # ❌ WRONG token = str(random.randint(0, 999999)) # Not cryptographically secure!
**See:** [code-examples.md#cryptographic-operations](code-examples.md#cryptographic-operations) for password hashing
---
**Rule:** Never log full secrets. Mask sensitive values.
# ✅ CORRECT
masked_key = api_key[:7] + "***" + api_key[-4:]
logging.info(f"Using key {masked_key}")
# ❌ WRONG
logging.info(f"Using key {api_key}") # Exposes full key!---
# Check for vulnerabilities pip install safety && safety check # OR pip install pip-audit && pip-audit
---
1. **Never hardcode secrets** - Use environment variables 2. **Validate all inputs** - User data, file paths, commands 3. **Prevent path traversal** - Use `is_relative_to()` 4. **No shell=True** - Use list arguments with subprocess 5. **Parameterized queries** - Never string interpolation 6. **Secure random** - Use `secrets` module 7. **Restrict permissions** - Files 0o600, dirs 0o700 8. **Mask secrets in logs** - Show only first/last few chars 9. **Scan dependencies** - Use safety/pip-audit 10. **.gitignore secrets** - .env, *.key, *.pem
---
**See:** [templates.md#owasp-top-10-quick-reference](templates.md#owasp-top-10-quick-reference)
A harness that wraps Claude Code with enforcement, specialist agents, and alignment gates to deliver consistent, production-grade software engineering outcomes.
REST API design best practices covering versioning, error handling, pagination, and OpenAPI documentation. Use when designing or…
Subprocess safety, GitHub CLI integration, retry logic, authentication, rate limiting, and timeout handling. Use when integrating…
File-by-file architecture planning with ADR format, dependency ordering, and testability gates. Use when designing system…
10-point code review checklist covering correctness, tests, error handling, type hints, naming, security, and performance. Use…
One topic, one home. Routes content to its canonical store (CLAUDE.md, PROJECT.md, MEMORY.md, docs/, memory/) and audits for…
Systematic debugging methodology — reproduce, isolate, bisect, fix, verify. Use when diagnosing failures, tracing errors, or…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.