accessibility-patterns
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
Detect fail-open configurations, hardcoded secrets, weak authentication defaults, permissive CORS, disabled security features, and other insecure-by-default patterns. Adapted from Trail of Bits. Use during security review or when auditing configuration and initialization code.
$ npx -y skills add vibeeval/vibecosystem --skill insecure-defaults --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/insecure-defaultsContext preview
The summary Claude sees to decide when to auto-load this skill.
Detect fail-open configurations, hardcoded secrets, weak authentication defaults, permissive CORS, disabled security features, and other insecure-by-default patterns. Adapted from Trail of Bits. Use during security review or when auditing configuration and initialization code.
name: insecure-defaults description: Detect fail-open configurations, hardcoded secrets, weak authentication defaults, permissive CORS, disabled security features, and other insecure-by-default patterns. Adapted from Trail of Bits. Use during security review or when auditing configuration and initialization code.
Systematic detection of security misconfigurations where the default behavior is insecure. These are the bugs that ship because "it worked in development."
Code that defaults to allowing access when a security check fails.
// BAD: Fail-open -- if auth service is down, everyone gets in
async function checkAuth(token: string): Promise<boolean> {
try {
return await authService.verify(token)
} catch {
return true // INSECURE: fails open
}
}
// GOOD: Fail-closed -- if auth service is down, deny access
async function checkAuth(token: string): Promise<boolean> {
try {
return await authService.verify(token)
} catch {
return false // SECURE: fails closed
}
}**Detection pattern**: Look for `catch` blocks that return truthy/permissive values in auth/authz code.
// BAD patterns -- detect ALL of these
const API_KEY = "sk-proj-abc123"
const DB_PASSWORD = "admin123"
const JWT_SECRET = "super-secret-key"
const ENCRYPTION_KEY = Buffer.from("0123456789abcdef")
// GOOD
const API_KEY = process.env.API_KEY
if (!API_KEY) throw new Error('API_KEY environment variable required')**Detection patterns**:
// BAD: Session without secure flags
app.use(session({
secret: 'keyboard cat', // Hardcoded secret
cookie: {} // Missing secure, httpOnly, sameSite
}))
// GOOD
app.use(session({
secret: process.env.SESSION_SECRET,
cookie: {
secure: true, // HTTPS only
httpOnly: true, // No JS access
sameSite: 'strict', // CSRF protection
maxAge: 3600000 // 1 hour expiry
},
resave: false,
saveUninitialized: false
}))// BAD: Allow everything
app.use(cors()) // Defaults to origin: '*'
app.use(cors({ origin: '*' })) // Explicit wildcard
app.use(cors({ origin: true })) // Reflect any origin
// GOOD: Explicit allowlist
app.use(cors({
origin: ['https://app.example.com', 'https://admin.example.com'],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization']
}))// BAD: Disabling security in code (not just config)
app.disable('x-powered-by') // This one is actually GOOD
// But these are BAD:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' // Disable TLS verification
helmet({ contentSecurityPolicy: false }) // Disable CSP
app.use(csrf({ ignoreMethods: ['POST'] })) // Disable CSRF for POST**Detection pattern**: Look for `false`, `'0'`, `disable`, `skip`, `ignore` near security-related configs.
// BAD: Debug flags that leak info
app.use(errorHandler({ dumpExceptions: true, showStack: true }))
mongoose.set('debug', true)
app.set('env', 'development') // Hardcoded to dev
// GOOD: Environment-aware
if (process.env.NODE_ENV !== 'production') {
mongoose.set('debug', true)
}# BAD chmod 777 /app/config chmod 666 /app/.env # GOOD chmod 600 /app/.env chmod 700 /app/config
// BAD: No rate limit on auth endpoints
app.post('/api/login', loginHandler)
app.post('/api/register', registerHandler)
app.post('/api/forgot-password', forgotPasswordHandler)
// GOOD: Rate limited
const authLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 5, // 5 attempts
message: 'Too many attempts, try again later'
})
app.post('/api/login', authLimiter, loginHandler)// BAD: Deserializing untrusted input
const data = JSON.parse(userInput) // JSON is generally safe
const obj = yaml.load(userInput) // YAML can execute code!
const result = eval(userInput) // Never ever
// GOOD
const obj = yaml.load(userInput, { schema: yaml.FAILSAFE_SCHEMA })Required headers for web applications:
// Minimum security headers
app.use(helmet()) // Sets many headers, but verify:
// Or manually:
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff')
res.setHeader('X-Frame-Options', 'DENY')
res.setHeader('X-XSS-Protection', '0') // Disabled intentionally, CSP replaces it
res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains')
res.setHeader('Content-Security-Policy', "default-src 'self'")
res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin')
res.setHeader('Permissions-Policy', 'camera=(), microphone=(), geolocation=()')
next()
})Authentication: [ ] No hardcoded secrets in source code [ ] Session cookies have secure, httpOnly, sameSite flags [ ] JWT secrets are env vars, not constants [ ] Password hashing uses bcrypt/argon2 (not MD5/SHA1) [ ] Default admin passwords don't exist Authorization: [ ] Fail-closed on error (deny by default) [ ] No wildcard permissions in defaults [ ] Role checks can't be bypassed by omitting headers Network: [ ] CORS is not wildcard in production [ ] TLS ve
Your AI software team. Built on Claude Code. vibecosystem turns Claude Code into a full AI software team — 138 specialized agents that plan, build, review, test, and learn from every mistake. No configuration needed — just install and code.
Repo: vibeeval/vibecosystem
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
axe-core integration, WCAG 2.2 AA checklist, keyboard navigation testing, screen reader testing, and ARIA pattern validation.
Steam-style achievement system with XP, levels, streaks, and skill trees. Gamifies the development workflow. 25 achievements across 5 categories.
Framework for measuring and tracking agent response quality over time. Detects regressions before they reach production. Use when evaluating agent changes,…
Agent ve skill dosyalarinin yapisal dogrulamasi. Frontmatter kontrol, naming convention, zorunlu bolum kontrolu, tutarlilik denetimi. Yeni agent/skill…