Back to list
calcitem

c-code-formatter

by calcitem

Sanmill is an open-source, UCI-like Mill/Morris/Merrills/Mühle/Malom (and its variants) program with CUI, Flutter GUI and Qt GUI, sharing and freely distributing the code, tools and data needed to deliver this mill game. We do this because we are convinced that open software and open data are key ingredients to make rapid progress.

187🍴 27📅 Jan 20, 2026

SKILL.md


name: "C++ Code Formatter" description: "Format C++ code in Sanmill project to ensure consistent code style; use when formatting C++ code or checking code style compliance."

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

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

Score

Total Score

80/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

+5
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

+5
Issue管理

オープンIssueが50未満

0/5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon