Skip to content
Back to skills

468 Index 648841ed

ASecurity

A comprehensive skill for configuring clang-format to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
developmentjavascripttypescriptgojavac++c#bashgitdocumentation

Works with

  • cli

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 468-index_648841ed --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 468 Index 648841ed?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 468 Index 648841ed
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-468-index-648841ed/badge)](https://www.skillsdirectory.com/skills/tools-only-468-index-648841ed)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# clang-format Configuration Skill

A comprehensive skill for configuring clang-format to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code.

## Navigation

### Quick Access

- [CLI Usage](cli-usage.md) - Command-line tools, flags, and integrations
- [Quick Reference](quick-reference.md) - Common patterns and complete examples

### Style Options by Category

1. [Alignment Options](01-alignment.md) - Align code elements consistently
2. [Breaking & Line Wrapping](02-breaking.md) - Control line breaks and wrapping
3. [Brace Styles](03-braces.md) - Configure brace placement and wrapping
4. [Indentation](04-indentation.md) - Control indentation behavior
5. [Spacing](05-spacing.md) - Fine-tune whitespace placement
6. [Include Organization](06-includes.md) - Sort and organize include directives
7. [Language-Specific](07-languages.md) - Options for specific languages
8. [Comments & Misc](08-comments.md) - Comment formatting and other options
9. [Advanced Options](09-advanced.md) - Experimental and advanced features

### Complete Reference Documentation

- [Full CLI Reference](complete/clang-format-cli.md) - Complete command-line documentation
- [Full Style Options](complete/clang-format-style-options.md) - Complete style configuration reference

## What is clang-format?

clang-format is a tool that automatically formats source code according to configurable style rules. It ensures consistent code formatting across your project and team.

**Supported Languages:**

- C/C++
- Java
- JavaScript/TypeScript
- JSON
- Objective-C
- Protocol Buffers
- C#
- Verilog
- TableGen

## Quick Start

### 1. Create a Configuration File

Generate a `.clang-format` file based on a predefined style:

```bash
clang-format -style=llvm -dump-config > .clang-format
```

**Available Base Styles:**

- `LLVM` - LLVM coding conventions
- `Google` - Google C++ Style Guide
- `GNU` - GNU coding style
- `Chromium` - Chromium project style
- `Microsoft` - Microsoft coding style
- `Mozilla` - Mozilla coding style
- `WebKit` - WebKit coding style

### 2. Customize Your Configuration

Edit `.clang-format` to customize specific options:

```yaml
# Start with a base style
BasedOnStyle: Google

# Customize specific options
IndentWidth: 4
ColumnLimit: 120
PointerAlignment: Left
```

### 3. Format Your Code

```bash
# Format a single file in-place
clang-format -i src/main.cpp

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

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

# Format only changed lines in git
git clang-format
```

## Configuration File Structure

A `.clang-format` file uses YAML format with key-value pairs:

```yaml
---
# Language-specific settings
Language: Cpp

# Base style to inherit from
BasedOnStyle: LLVM

# Indentation
IndentWidth: 4
UseTab: Never
TabWidth: 4

# Line length
ColumnLimit: 100

# Braces
BreakBeforeBraces: Allman

# Spacing
SpaceBeforeParens: ControlStatements

# Pointer alignment
PointerAlignment: Left

# Include sorting
SortIncludes: true
```

## Common Workflows

### Format on Commit

Format only staged changes before committing:

```bash
git clang-format
```

### Format Entire Project

```bash
find src include -name '*.cpp' -o -name '*.h' | xargs clang-format -i
```

### Check Formatting in CI

```bash
clang-format --dry-run --Werror src/*.cpp include/*.h
```

### Ignore Specific Files

Create `.clang-format-ignore`:

```text
# Ignore third-party code
third_party/**
external/**

# Ignore generated files
*.pb.cc
*.pb.h
```

## Editor Integration

clang-format integrates with popular editors:

- **VS Code**: Install "Clang-Format" extension
- **CLion**: Built-in support (detects `.clang-format`)
- **Vim**: Use clang-format.py script
- **Emacs**: Use clang-format.el

See [CLI Usage](cli-usage.md) for detailed integration instructions.

## Finding Style Options

Options are organized by category:

- **Need to align assignments?** → [Alignment Options](01-alignment.md)
- **Control where lines break?** → [Breaking & Line Wrapping](02-breaking.md)
- **Configure brace placement?** → [Brace Styles](03-braces.md)
- **Adjust indentation?** → [Indentation](04-indentation.md)
- **Fine-tune spacing?** → [Spacing](05-spacing.md)
- **Organize includes?** → [Include Organization](06-includes.md)
- **Language-specific needs?** → [Language-Specific](07-languages.md)

## Example Configurations

See [Quick Reference](quick-reference.md) for complete configuration examples:

- Google C++ style customized
- Linux kernel style
- Corporate/Microsoft style
- Modern C++ style

## Documentation Structure

This skill is organized into:

1. **Navigable sections** - Categorized options for easy browsing
2. **Complete reference** - Full documentation for deep dives
3. **Quick reference** - Ready-to-use configuration examples

## Best Practices

1. **Version control** your `.clang-format` file in the repository root
2. **Start with a base style** that matches your existing conventions
3. **Make minimal changes** to the base style to reduce maintenance
4. **Document deviations** from standard styles in comments
5. **Test on representative code** before applying project-wide
6. **Use git integration** to format only changed lines
7. **Set up editor integration** for automatic formatting
8. **Create `.clang-format-ignore`** for files that shouldn't be formatted

## Troubleshooting

**Configuration not found?**

- clang-format searches for `.clang-format` or `_clang-format` from the source file's directory upward
- Use `-style=file:/path/to/.clang-format` to specify explicitly

**Unknown options warning?**

- Use `--Wno-error=unknown` to allow formatting with unknown (newer) options
- This happens when your config has options not supported by your clang-format version

**Want to check effective config?**

```bash
clang-format -dump-config file.cpp
```

## Next Steps

- Browse [Style Options by Category](#style-options-by-category) to customize formatting
- Check [Quick Reference](quick-reference.md) for complete working examples
- Review [CLI Usage](cli-usage.md) for advanced command-line usage
- Consult full reference documentation for comprehensive details

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.