firebase/firebase-cpp-formatter
Formatting workflow for C++ and Objective-C code in the Firebase C++ SDK. Use when modifying source code and ensuring compliance with the repository's clang-format rules.
npx skills add https://github.com/firebase/firebase-cpp-sdk --skill firebase-cpp-formatter
This skill provides instructions on how to properly format C++ and Objective-C
code before creating a pull request or committing changes in the
firebase-cpp-sdk repository. The primary tool is scripts/format_code.py.
Before running the formatting script, ensure that your Python environment is set up with all required dependencies:
pip install -r scripts/gha/python_requirements.txt to install the required libraries (such as attrs, absl-py, etc.).If you have made code changes locally in a git branch, the easiest way to ensure
all your changes are formatted properly is to use the -git_diff argument. This
automatically detects which files have changed compared to main and formats
them.
python3 scripts/format_code.py -git_diff
_Tip:_ You can also append -verbose for extensive logging about formatting
changes.
If you are working on a feature within a particular Firebase SDK (e.g.,
database), you can recursively format that entire directory:
python3 scripts/format_code.py -d database -r
To target multiple directories (e.g., both database and app):
python3 scripts/format_code.py -d database -d app -r
If you are pressed for time and only want to format specific files rather than
analyzing whole directories, use the -f flag:
python3 scripts/format_code.py -f path/to/file1.cc -f path/to/file2.h
If you only want to detect the number of files that _need_ formatting without
actually modifying them, append the --noformat_file flag:
python3 scripts/format_code.py -git_diff --noformat_file
Take firebase/firebase-cpp-formatter from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.