home / skills / rsmdt / the-startup / coding-conventions

coding-conventions skill

/plugins/team/skills/cross-cutting/coding-conventions

This skill enforces security, performance, and accessibility standards across your codebase, providing actionable checklists and validations during design and

npx playbooks add skill rsmdt/the-startup --skill coding-conventions

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
4.2 KB
---
name: coding-conventions
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

Overview

This skill enforces consistent security, performance, and accessibility standards across agent recommendations. It supplies actionable checklists and concrete error-handling patterns to use when reviewing code, designing features, or validating implementations. Use it as a cross-cutting guardrail to raise quality and reduce risk across all development activities.

How this skill works

The skill inspects recommendations and code changes against focused checklists for security (OWASP-aligned), performance (frontend, backend, database), and accessibility (WCAG 2.1 AA). It also prescribes proven error-handling patterns—fail-fast, domain-specific errors, user-safe messages, graceful degradation, and retry-with-backoff—to standardize behavior and observability. Agents use these checks during code review, design decisions, and audits, and can return concrete remediation steps when gaps are found.

When to use it

  • Reviewing code for security vulnerabilities before merge
  • Validating performance characteristics during design or PR review
  • Ensuring UI components meet accessibility (WCAG 2.1 AA) requirements
  • Designing or validating error handling and observability strategies
  • Auditing existing systems for quality, compliance, and maintainability

Best practices

  • Run security checks before tuning for performance to avoid optimizing vulnerabilities
  • Treat accessibility as a default design requirement, not an afterthought
  • Apply checklists during code review and CI, not only at release time
  • Document any accepted deviations from standards with a clear rationale and owner
  • Automate checks where possible (static analysis, linters, CI tests) to catch regressions

Example use cases

  • Code reviewer flags input validation and recommends fail-fast at API boundaries
  • Performance audit suggests database indexing and caching per the performance checklist
  • UI review enforces color contrast, keyboard navigation, and ARIA attributes for accessibility
  • Design review prescribes domain-specific error classes and sanitized user-facing messages
  • Reliability engineering adds exponential backoff and retry policies for transient external calls

FAQ

Does this skill replace security audits or penetration tests?

No. It enforces best-practice checks and reduces common risks, but it complements formal security audits and penetration testing rather than replacing them.

How do I handle an exception to a standard in this skill?

Document the exception, include a reason and risk assessment, assign an owner, and schedule a reassessment or mitigation plan.