c++ code formatter

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "c++ code formatter" with this command: npx skills add calcitem/sanmill/calcitem-sanmill-c-code-formatter

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

  1. 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

  1. Format Conflicts Between Developers
  • Ensure: All use same .clang-format file

  • Ensure: All use same clang-format version

  • Establish: Team formatting conventions

Best Practices

  • Format frequently: Format after each significant change

  • Format before commits: Always format before committing

  • Review formatting changes: Don't blindly commit formatting

  • Use project script: Prefer ./format.sh over manual commands

  • Separate formatting commits: Keep formatting separate from logic changes

  • 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/

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

new rule completeness validator

No summary provided by upstream source.

Repository SourceNeeds Review
General

flutter test runner

No summary provided by upstream source.

Repository SourceNeeds Review
General

arb translation updater

No summary provided by upstream source.

Repository SourceNeeds Review