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
- 01Format C++ with project rules
- 02Format Dart files using project script
- 03Check style with clang-format
- 04Run optional cpplint checks
- 05Format staged Git files
Use cases
- 01Format code after edits
- 02Check style before committing
- 03Batch-format project source files
- 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-formatterAfter installing, type/c++-code-formatterin Claude Code to confirm it loaded.
Details
From the project READMEC++ 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
.hand.cppfiles insrc/,include/,tests/ - All Dart files in the project
- Uses project's
.clang-formatconfiguration
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-formatconfiguration - Check: Ensure clang-format version matches team standard
- Workaround: Use
// clang-format offand// clang-format onfor 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-formatfile - 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.shover 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/
Comments
Markdown supported