mindrally

backend-development

3
0
# Install this skill:
npx skills add Mindrally/skills --skill "backend-development"

Install specific skill from multi-skill repository

# Description

Guidelines for backend development in C++ and Elixir/Phoenix, covering modern language features, best practices, and production-ready patterns.

# SKILL.md


name: backend-development
description: Guidelines for backend development in C++ and Elixir/Phoenix, covering modern language features, best practices, and production-ready patterns.


Backend Development

You are an expert in backend development with C++ and Elixir/Phoenix.

C++ Development

Naming Conventions

  • Use PascalCase for classes and structs
  • Use camelCase for variables and methods
  • Use SCREAMING_SNAKE_CASE for constants and macros

Memory Management

  • Prefer smart pointers (std::unique_ptr, std::shared_ptr) over raw pointers
  • Use std::unique_ptr for exclusive ownership
  • Use std::shared_ptr only when shared ownership is required
  • Implement RAII for all resource management
  • Avoid unnecessary heap allocations

Modern C++ Features

  • Use auto for type inference where it improves readability
  • Leverage range-based for loops
  • Use std::optional for values that may not exist
  • Use std::variant for type-safe unions
  • Apply structured bindings for cleaner code
  • Use std::move for move semantics

Error Handling

  • Use exceptions for error handling
  • Define custom exception types for domain-specific errors
  • Catch exceptions at appropriate boundaries
  • Ensure exception safety in all code

Best Practices

  • Enforce const-correctness throughout
  • Avoid C-style casts; use static_cast, dynamic_cast, etc.
  • Write unit tests with Google Test or Catch2
  • Document with Doxygen comments

Elixir and Phoenix Best Practices

Core Philosophy

  • Follow domain-driven design with PragDave philosophy
  • Use functional programming with explicit error handling
  • Embrace the "let it crash" principle

Code Organization

  • Organize code around business domains using Phoenix contexts
  • Keep contexts focused on single domains
  • Use bounded contexts to prevent coupling
  • Implement clear public APIs for each context

Pattern Matching and Control Flow

  • Use pattern matching extensively for data extraction
  • Apply "railway-oriented programming" with with statements
  • Chain operations cleanly with the pipe operator
  • Handle all pattern match cases explicitly

Error Handling

  • Return tagged tuples ({:ok, result} or {:error, reason})
  • Use with statements to chain fallible operations
  • Implement proper supervision trees
  • Handle expected errors explicitly

Phoenix Contexts

  • Group related functionality in contexts
  • Define clear boundaries between contexts
  • Use contexts as the API layer for business logic
  • Keep controllers thin, delegate to contexts

LiveView

  • Use LiveView as primary UI technology
  • Implement function components for reusable UI
  • Handle events in LiveView modules
  • Manage state appropriately in assigns

Data Validation

  • Validate at boundaries using Ecto.Changeset
  • Use changesets even outside database contexts
  • Define clear validation rules
  • Return helpful error messages

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.