mcpField
C
C++ Code Formatter

C++ Code Formatter

github.com/calcitemDevelopment205123 installsUpdated 7w ago
Repository

About C++ Code Formatter

C++ Code Formatter is a skill for applying Sanmill’s formatting conventions to C++ code and checking style compliance. It covers project-wide and staged-file workflows using the project script or clang-format.

Key features

  1. 01Format C++ with project rules
  2. 02Format Dart files using project script
  3. 03Check style with clang-format
  4. 04Run optional cpplint checks
  5. 05Format staged Git files

Use cases

  1. 01Format code after edits
  2. 02Check style before committing
  3. 03Batch-format project source files
  4. 04Check formatting in CI/CD

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/calcitem/sanmill --skill c++-code-formatter

After installing, type/c++-code-formatterin Claude Code to confirm it loaded.

Details

From the project README

C++ Code Formatter

Purpose

This skill helps format Sanmill's C++ code to ensure code style consistency and maintainability across the codebase.

Use Cases

  • Format C++ code after modifications
  • Check code style compliance
  • Format code before committing
  • Batch format project C++ files
  • Validate code style in CI/CD pipelines

Quick Commands

Using Project Script (Recommended)
# Format all C++ and Dart code (will auto-commit)
./format.sh

# Format without auto-commit
./format.sh s

The script formats:

  • All .h and .cpp files in src/, include/, tests/
  • All Dart files in the project
  • Uses project's .clang-format configuration
Manual Formatting
# Format single file
clang-format -i src/position.cpp

# Format multiple files
clang-format -i src/*.cpp src/*.h

# Check without modifying (dry-run)
clang-format --dry-run --Werror src/position.cpp

Configuration

Project Configuration Files
  • .clang-format - C++ formatting rules (project root)
  • CPPLINT.cfg - Code style checking rules
  • .editorconfig - Editor-specific settings
View Current Configuration
cat .clang-format

Code Style Checking

# Check specific file with cpplint
cpplint --config=CPPLINT.cfg src/position.cpp

# The configuration file defines which checks to enable/disable

Git Integration

Pre-commit Workflow
# 1. Make code changes
# 2. Format code
./format.sh s

# 3. Review changes
git diff

# 4. If correct, commit
git add .
git commit -m "Your commit message"
Format Only Staged Files
git diff --cached --name-only --diff-filter=ACM | \
grep -E '\.(cpp|h|cc|hpp)$' | \
xargs clang-format -i

Common Issues & Solutions

1. Format Breaks Code Structure
  • Check: Verify .clang-format configuration
  • Check: Ensure clang-format version matches team standard
  • Workaround: Use // clang-format off and // clang-format on for special blocks
2. Batch Formatting Creates Large Changes
  • Solution: Format in batches and commit separately
  • Label: Use clear commit message like "style: Format C++ code"
  • Communicate: Notify team members to sync
3. Format Conflicts Between Developers
  • Ensure: All use same .clang-format file
  • Ensure: All use same clang-format version
  • Establish: Team formatting conventions

Best Practices

  1. Format frequently: Format after each significant change
  2. Format before commits: Always format before committing
  3. Review formatting changes: Don't blindly commit formatting
  4. Use project script: Prefer ./format.sh over manual commands
  5. Separate formatting commits: Keep formatting separate from logic changes
  6. Don't hand-edit formatting: Let tools do the work

Tools Required

clang-format
# Check if installed
clang-format --version

# Install on Ubuntu/Debian
sudo apt-get install clang-format

# Install on macOS
brew install clang-format
cpplint (Optional)

For additional style checking beyond formatting.

Output Format

Formatting operations should report:

  • ✓ Files formatted successfully
  • ⚠ Files with style violations
  • ✗ Files that failed to format
  • 📊 Total files processed
  • 💡 Style improvement recommendations

Reference Resources

  • Configuration: .clang-format, CPPLINT.cfg, .editorconfig (project root)
  • Format script: format.sh (project root)
  • clang-format docs: https://clang.llvm.org/docs/ClangFormat.html
  • C++ source locations: src/, include/, tests/

Comments

Markdown supported