
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.
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
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/
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon


