Skill Quality

Security

Authentication, authorization, input validation, data protection, dependency safety. Use for security review or when handling secrets and user data.

Overview

Security is a reference skill loaded by security analysts, reviewers, architects, and DevOps agents when reviewing code or handling secrets and user data. It provides rules for authentication, data protection, dependency management, and a critical section on distinguishing real compromise from background scanner noise.

Authentication & Authorization

  • Never hardcode secrets or API keys — use .env files and environment variables
  • Validate all inputs on the server side — client-side validation is a UX convenience, not a security measure
  • Apply the principle of least privilege for all API keys and service accounts

Data Protection

  • Sanitize all user inputs to prevent XSS and SQL injection
  • Encrypt sensitive data at rest and in transit
  • Do not log Personally Identifiable Information (PII)

Sensitive Source Context Boundary

Consult existing source classifications before opening or searching task files. A sensitive classification survives role changes, delegation and session handoffs. Every handoff carries the classification, the approved sanitized path, the original source pin, the sanitized digest and the redaction constraints — metadata, never secret values. Recipients verify the approved sanitized copy before reading it; if it is missing or stale they stop and request a corrected handoff instead of falling back to the raw source. Raw originals never enter model context.

Cached Secrets in Hot Data Stores

Secret-bearing payloads cached in Redis, Memcached or an in-process map are recorded in the project's accepted-risk register even with a bounded TTL and a network-isolated bind: TTL and isolation are mitigations, not a cancellation of the residual risk. Re-review on the register's cadence (90 days by default).

Dependency Safety

  • Audit dependencies for known vulnerabilities using the project's package-manager-native audit command at the declared severity threshold
  • Pin dependency versions

Reconnaissance vs Compromise

A 200 response to a suspicious filename is not proof of compromise. Many sites legitimately host files whose names overlap with common webshell filenames. Every public IPv4 is probed daily. Before declaring compromise, verify: file size and content match legitimate patterns, check file ownership and modification dates, compare hashes across sites, and look for true indicators like base64-encoded payloads, eval($_POST[...]) patterns, unexpected cron entries, or outbound connections to unknown IPs.

Tailscale + VPN Coexistence

When a commercial VPN coexists with Tailscale on macOS: reboot after any Tailscale update, use --accept-dns=false if VPN provides DNS, start Tailscale before the VPN, verify the utun interface is up, and note that free auth keys are single-use.

More Recipes

The skill also carries a cross-stack relative-path include recipe for document-root, chroot or mount flips, a post-leak git history scrub recipe, stack-neutral phrasing for dependency-audit references, and two templates: a dependency-upgrade plan and an atomic cutover runbook. The canonical S1–S11 rules live in the security-baseline skill.

When It's Used

Loaded during /dr-design and /dr-qa for security review, and by the security agent during Consilium panels. A reference skill with no model assignment — inherits from the calling agent.