Best for
- Auditing a codebase or module for security risks
- analysis-autonomous-mode routes here after detecting risky patterns
- Reviewing code that handles user input, authentication, or authorization
event4u-app/agent-config/src/skills/security-audit/SKILL.md
ONLY when user explicitly requests: security audit, vulnerability scan, or penetration test review. NOT for regular feature work.
Decision brief
ONLY when user explicitly requests: security audit, vulnerability scan, or penetration test review. NOT for regular feature work.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/security-audit"Inspect the Agent Skill "security-audit" from https://github.com/event4u-app/agent-config/blob/0adf49a8ae84b0ff6e2de8759eea43257e020eff/src/skills/security-audit/SKILL.md at commit 0adf49a8ae84b0ff6e2de8759eea43257e020eff. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Before any finding enters the report, restate it as one falsifiable sentence naming all three of:
Find real security vulnerabilities in code before they are exploited. This skill is proactive — it audits code for security weaknesses, not just responds to incidents.
Writing new auth/policy code — route to security Hunting for functional bugs — route to bug-analyzer (proactive mode) Investigating performance — route to performance-analysis You need a pre-implementation threat model for a new feature — route to threat-modeling You need end-to…
Before any finding enters the report, restate it as one falsifiable sentence naming all three of:
Identify all entry points where untrusted data enters:
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 7 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Find real security vulnerabilities in code before they are exploited. This skill is proactive — it audits code for security weaknesses, not just responds to incidents.
For writing secure code patterns (policies, auth, CSRF), use the security skill instead.
Use this skill when:
analysis-autonomous-mode routes here after detecting risky patternsDo NOT use when:
securitybug-analyzer (proactive mode)performance-analysisthreat-modelingauthz-reviewBefore any finding enters the report, restate it as one falsifiable sentence naming all three of:
If any of the three cannot be named concretely, the item is not a finding yet — trace further or drop it with a one-line reason.
Rationalizations to Reject:
| Rationalization | Reality |
|---|---|
| "It looks dangerous" | Pattern-recognition is not analysis — trace the full data flow from entry to sink first |
| "This is clearly critical" | Complete a devil's-advocate pass — models systematically overrate severity |
| "Report it just in case" | Over-reporting erodes trust; an unverifiable finding is noise, not diligence |
| "Same pattern as a known CVE" | Same pattern ≠ same preconditions — verify the preconditions hold in THIS codebase |
Standard vs. Deep verification routing:
Identify all entry points where untrusted data enters:
For each entry point, trace where user input flows:
User Input → Controller → Validation → Service → DB/File/External
↓ ↓ ↓
Is it sanitized? Complete? Used safely?
| Category | What to look for |
|---|---|
| SQL Injection | Raw queries with concatenation, missing parameter binding |
| XSS | Unescaped template output (Blade {!! !!}, JSX dangerouslySetInnerHTML, Jinja ` |
| CSRF | Missing middleware, API endpoints without token verification |
| Auth bypass | Missing policy checks, broken gate logic, withoutMiddleware() |
| IDOR | Direct object access without ownership verification |
| Mass assignment | Missing $fillable/$guarded, request()->all() in create/update |
| File upload | Missing type validation, path traversal, executable uploads |
| SSRF | User-controlled URLs passed to HTTP client |
| Deserialization | Unserializing user input, unsafe queue payloads |
| Secret exposure | Hardcoded credentials, secrets in logs, .env in public dir |
| Rate limiting | Missing throttle on auth endpoints, password reset, API |
| Header injection | User input in response headers, email headers |
| Insecure defaults / fail-open | Guards that allow on error (catch { return true } in an authz check), default-allow matchers, debug mode defaulting on, permissive CORS/verify=false fallbacks, feature flags whose missing value grants access |
Worked example (fail-open): if (!$gate->check($user)) { … } wrapped in a
try/catch that logs and continues fails open — an exception in the gate
grants access. Finding shape: Category Insecure defaults, Evidence the
catch block file:line, Fix fail closed — rethrow or deny on gate error.
→ Laravel-specific checks: see laravel § Security audit checks.
composer.lock for known vulnerable packagespackage-lock.json for frontend vulnerabilitiesFor each vulnerability:
After the findings, add a Rejected candidates section: one line per look-dangerous-but-benign pattern the Step-0 gate killed, with the traced reason ("raw SQL string is a static migration constant — no user input reaches it"). An audit that rejects nothing has usually skipped the gate.
protect_from_forgery is already handled).docs/threat-model.md — package attack surface and trust boundary documentation.Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
event4u-app/agent-config
Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes — vs mocking-the-mock, production pollution, partial mocks, and overfit/tautological assertions
event4u-app/agent-config
Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more.
event4u-app/agent-config
Use when writing, generating, or improving Pest tests for Laravel — clear intent, good coverage, maintainable structure, and alignment with project testing conventions.