mcpField
B
backend-development

backend-development

github.com/mindrallyDevelopment289767 installsUpdated 3w ago
Repository

About backend-development

A development skill for C++ and Elixir/Phoenix backend work, covering code organization, error handling, and resource management practices.

Key features

  1. 01C++ naming and memory practices
  2. 02Guidance on modern C++ features
  3. 03Domain organization with Phoenix contexts
  4. 04Pattern matching and error handling
  5. 05LiveView and Ecto validation practices

Use cases

  1. 01Set C++ code review guidelines
  2. 02Organize Phoenix business contexts
  3. 03Handle backend resources and errors
  4. 04Build LiveView and validation code

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/mindrally/skills --skill backend-development

After installing, type/backend-developmentin Claude Code to confirm it loaded.

Details

From the project README

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

Comments

Markdown supported