Back to skills
Best Practices
Apply consistent security, performance, and accessibility standards across all recommendations. Use when reviewing code, designing features, or validating implementations. Cross-cutting skill for all agents.
127 stars
0 votes
0 copies
0 views
Added 12/19/2025
testing-securitytestingdebuggingapidatabasefrontendbackendsecurityperformance
Works with
cliapi
Install via CLI
$
openskills install rsmdt/the-startupFiles
SKILL.md
---
name: best-practices
description: Apply consistent security, performance, and accessibility standards across all recommendations. Use when reviewing code, designing features, or validating implementations. Cross-cutting skill for all agents.
---
# Best Practices
A cross-cutting skill that enforces consistent security, performance, and quality standards across all agent recommendations. This skill provides actionable checklists aligned with industry standards.
## When to Use
- Reviewing code for security vulnerabilities
- Validating performance characteristics of implementations
- Ensuring accessibility compliance in UI components
- Designing error handling strategies
- Auditing existing systems for quality gaps
## Core Domains
### Security
Covers common vulnerability prevention aligned with OWASP Top 10. Apply these checks to any code that handles user input, authentication, data storage, or external communications.
See: `checklists/security-checklist.md`
### Performance
Covers optimization patterns for frontend, backend, and database operations. Apply these checks when performance is a concern or during code review.
See: `checklists/performance-checklist.md`
### Accessibility
Covers WCAG 2.1 Level AA compliance. Apply these checks to all user-facing components to ensure inclusive design.
See: `checklists/accessibility-checklist.md`
## Error Handling Patterns
All agents should recommend these error handling approaches:
### Pattern 1: Fail Fast at Boundaries
Validate inputs at system boundaries and fail immediately with clear error messages. Do not allow invalid data to propagate through the system.
```
// At API boundary
function handleRequest(input) {
const validation = validateInput(input);
if (!validation.valid) {
throw new ValidationError(validation.errors);
}
// Process validated input
}
```
### Pattern 2: Specific Error Types
Create domain-specific error types that carry context about what failed and why. Generic errors lose valuable debugging information.
```
class PaymentDeclinedError extends Error {
constructor(reason, transactionId) {
super(`Payment declined: ${reason}`);
this.reason = reason;
this.transactionId = transactionId;
}
}
```
### Pattern 3: User-Safe Messages
Never expose internal error details to users. Log full context internally, present sanitized messages externally.
```
try {
await processPayment(order);
} catch (error) {
logger.error('Payment failed', {
error,
orderId: order.id,
userId: user.id
});
throw new UserFacingError('Payment could not be processed. Please try again.');
}
```
### Pattern 4: Graceful Degradation
When non-critical operations fail, degrade gracefully rather than failing entirely. Define what is critical vs. optional.
```
async function loadDashboard() {
const [userData, analytics, recommendations] = await Promise.allSettled([
fetchUserData(), // Critical - fail if missing
fetchAnalytics(), // Optional - show placeholder
fetchRecommendations() // Optional - hide section
]);
if (userData.status === 'rejected') {
throw new Error('Cannot load dashboard');
}
return {
user: userData.value,
analytics: analytics.value ?? null,
recommendations: recommendations.value ?? []
};
}
```
### Pattern 5: Retry with Backoff
For transient failures (network, rate limits), implement exponential backoff with maximum attempts.
```
async function fetchWithRetry(url, maxAttempts = 3) {
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
return await fetch(url);
} catch (error) {
if (attempt === maxAttempts) throw error;
await sleep(Math.pow(2, attempt) * 100); // 200ms, 400ms, 800ms
}
}
}
```
## Best Practices
- Apply security checks before performance optimization
- Make accessibility a default, not an afterthought
- Use checklists during code review, not just at the end
- Document exceptions to standards with rationale
- Automate checks where possible (linting, testing)
## References
- `checklists/security-checklist.md` - OWASP-aligned security checks
- `checklists/performance-checklist.md` - Performance optimization checklist
- `checklists/accessibility-checklist.md` - WCAG 2.1 AA compliance checklist
Attribution
Comments (0)
No comments yet. Be the first to comment!
