Agent skill · Audited from source
VibeSec-Skill
skill · behisecc/vibesec-skillApache-2.0 licenceAudited 20 Oct 2026 · source 78c175319e25
Is it safe? No — BLOCK, grade D (69/100). We read this skill's source at commit 78c175319e25 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 4 findings, 4 critical or high. What it does: This skill helps Claude write secure web applications. Use this when working on any web application or when a user requests a scan or audit to ensure security best practices are followed.
Cite
Cite this page
ModelsAtlas. “VibeSec-Skill (behisecc/vibesec-skill)”. Retrieved 20 Oct 2026. https://modelsatlas.com/skills/behisecc/vibesec-skill
Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 4 critical or high findings, starting with “Network egress” in SKILL.md:376. Do not install it without reading them.
Trust audit
Audit 0.4.1 · source read 20 Oct 2026
BLOCK means the audit found something that could harm you or your machine. Grade D is shared by 642 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 4 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (4)
HIGHNetwork egressnet.metadata_ip · SKILL.md:376
- AWS: `169.254.169.254`
- Why
- cloud metadata endpoint: the classic SSRF credential grab
- Fix
- —
HIGHNetwork egressnet.metadata_ip · SKILL.md:377
- GCP: `metadata.google.internal`, `169.254.169.254`, `http://metadata`
- Why
- cloud metadata endpoint: the classic SSRF credential grab
- Fix
- —
HIGHNetwork egressnet.metadata_ip · SKILL.md:378
- Azure: `169.254.169.254`
- Why
- cloud metadata endpoint: the classic SSRF credential grab
- Fix
- —
HIGHNetwork egressnet.metadata_ip · SKILL.md:379
- DigitalOcean: `169.254.169.254`
- Why
- cloud metadata endpoint: the classic SSRF credential grab
- Fix
- —
Audit 0.4.1 · source sha 78c175319e25 · 20 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherbehisecc GitHub userOwner of the repository this skill is read from
- Source folderbehisecc/vibesec-skillThe exact folder we audited
- LicenceApache-2.0As the repository states it
- Commit pinned for this verdict78c175319e25A new audit runs when the source changes
- Repository statusNot archivedLast push 244 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: This skill helps Claude write secure web applications. Use this when working on any web application or when a user requests a scan or audit to ensure security best practices are followed.
---
name: VibeSec-Skill
description: This skill helps Claude write secure web applications. Use this when working on any web application or when a user requests a scan or audit to ensure security best practices are followed.
---
# Secure Coding Guide for Web Applications
## Overview
This guide provides comprehensive secure coding practices for web applications. As an AI assistant, your role is to approach code from a **bug hunter's perspective** and make applications **as secure as possible** without breaking functionality.
**Key Principles:**
- Defense in depth: Never rely on a single security control
- Fail securely: When something fails, fail closed (deny access)
- Least privilege: Grant minimum permissions necessary
- Input validation: Never trust user input, validate everything server-side
- Output encoding: Encode data appropriately for the context it's rendered in
---
## Access Control Issues
Access control vulnerabilities occur when users can access resources or perform actions beyond their intended permissions.
### Core Requirements
For **every data point and action** that requires authentication:
1. **User-Level Authorization**
- Each user must only access/modify their own data
- No user should access data from other users or organizations
- Always verify ownership at the data layer, not just the route level
2. **Use UUIDs Instead of Sequential IDs**
- Use UUIDv4 or similar non-guessable identifiers
- Exception: Only use sequential IDs if explicitly requested by user
3. **Account Lifecycle Handling**
- When a user is removed from an organization: immediately revoke all access tokens and sessions
- When an account is deleted/deactivated: invalidate all active sessions and API keys
- Implement token revocation lists or short-lived tokens with refresh mechanisms
### Authorization Checks Checklist
- [ ] Verify user owns the resource on every request (don't trust client-side data)
- [ ] Check organization membership for multi-tenant apps
- [ ] Validate role permissions for role-based actions
- [ ] Re-validate permissions after any privilege change
- [ ] Check parent resource ownership (e.g., if accessing a comment, verify user owns the parent post)
### Common Pitfalls to Avoid
- **IDOR (Insecure Direct Object Reference)**: Always verify the requesting user has permission to access the requested resource ID
- **Privilege Escalation**: Validate role changes server-side; never trust role info from client
- **Horizontal Access**: User A accessing User B's resources with the same privilege level
- **Vertical Access**: Regular user accessing admin functionality
- **Mass Assignment**: Filter which fields users can update; don't blindly accept all request body fields
### Implementation Pattern
```
# Pseudocode for secure resource access
function getResource(resourceId, currentUser):
resource = database.find(resourceId)
if resource is null:
return 404 # Don't reveal if resource exists
if resource.ownerId != currentUser.id:
if not currentUser.hasOrgAccess(resource.orgId):
return 404 # Return 404, not 403, to prevent enumeration
return resource
```
---
## Client-Side Bugs
### Cross-Site Scripting (XSS)
Every input controllable by the user—whether directly or indirectly—must be sanitized against XSS.
#### Input Sources to Protect
**Direct Inputs:**
- Form fields (email, name, bio, comments, etc.)
- Search queries
- File names during upload
- Rich text editors / WYSIWYG content
**Indirect Inputs:**
- URL parameters and query strings
- URL fragments (hash values)
- HTTP headers used in the application (Referer, User-Agent if displayed)
- Data from third-party APIs displayed to users
- WebSocket messages
- postMessage data from iframes
- LocalStorage/SessionStorage values if rendered
**Often Overlooked:**
- Error messages that reflect user input
- PDF/document generators that accept HTML
- Email templates with user data
- Log viewers in admin panels
- JSON responses rendered as HTML
- SVG file uploads (can contain JavaScript)
- Markdown rendering (if allowing HTML)
#### Protection Strategies
1. **Output Encoding** (Context-Specific)
- HTML context: HTML entity encode (`<` → `<`)
- JavaScript context: JavaScript escape
- URL context: URL encode
- CSS context: CSS escape
- Use framework's built-in escaping (React's JSX, Vue's {{ }}, etc.)
2. **Content Security Policy (CSP)**
```
Content-Security-Policy:
default-src 'self';
script-src 'self';
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:;
font-src 'self';
connect-src 'self' https://api.yourdomain.com;
frame-ancestors 'none';
base-uri 'self';
form-action 'self';
```
- Avoid `'unsafe-inline'` and `'unsafe-eval'` for scripts
- Use nonces or hashes for inline scripts when necessary
- Report violations: `report-uri /csp-report`
3. **Input Sanitization**
- Use established libraries (DOMPurify for HTML)
- Whitelist allowed tags/attributes for rich text
- Strip or encode dangerous patterns
4. **Additional Headers**
- `X-Content-Type-Options: nosniff`
- `X-Frame-Options: DENY` (or use CSP frame-ancestors)
---
### Cross-Site Request Forgery (CSRF)
Every state-changing endpoint must be protected against CSRF attacks.
#### Endpoints Requiring CSRF Protection
**Authenticated Actions:**
- All POST, PUT, PATCH, DELETE requests
- Any GET request that changes state (fix these to use proper HTTP methods)
- File uploads
- Settings changes
- Payment/transaction endpoints
**Pre-Authentication Actions:**
- Login endpoints (prevent login CSRF)
- Signup endpoints
- Password reset request endpoints
- Password change endpoints
- Email/phone verification endpoints
- OAuth callback endpoints
#### Protection Mechanisms
1. **CSRF Tokens**
- Generate cryptographically random tokens
- Tie token to user session
- Validate on every state-chanExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 78c1753
git clone https://github.com/behisecc/vibesec-skill git -C vibesec-skill checkout 78c175319e25
The author documents no install command, so this uses the repository directly. Our verdict covers commit 78c175319e25 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Codex | Mentioned in its text, not tested | Skills for Codex · About Codex |
| GitHub Copilot | Mentioned in its text, not tested | Skills for GitHub Copilot · About GitHub Copilot |
| Cursor | Mentioned in its text, not tested | Skills for Cursor · About Cursor |
Audit history
Every audit, every source change
- ✕BLOCK D 69 / 100
first audit · source
78c175319e25
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/behisecc/vibesec-skill/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
affaan-m/ECC
Docker and Docker Compose patterns for local development, container security, networking, volume strategies, and multi-service orchestration. Use when setting up containerized development environments or reviewing…
n8n-io/n8n
Fetch and display the full transcript from a Loom video URL. Use when the user wants to get or read a Loom transcript.
anthropics/skills
Reference for the Claude API / Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration. TRIGGER — read BEFORE opening the target file; don't skip because it…
Add this badge to your README
[](https://modelsatlas.com/skills/behisecc/vibesec-skill/)
<a href="https://modelsatlas.com/skills/behisecc/vibesec-skill/"><img src="https://modelsatlas.com/skills/behisecc/vibesec-skill/badge.svg" alt="ModelsAtlas: BLOCK D"></a>
Questions about VibeSec-Skill
What does the VibeSec-Skill skill do?
Is VibeSec-Skill safe to install?
What can VibeSec-Skill access on my machine?
Which assistants does VibeSec-Skill work with?
How current is this page?
Sources
- github.com/behisecc/vibesec-skill — the audited source at commit 78c175319e25 and every finding aboveObserved · 20 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the VibeSec-Skill skill do?
- Is VibeSec-Skill safe to install?
- What can VibeSec-Skill access on my machine?