Community程式設計與開發github.com

clang-format 配置

Configurar clang-format per formatejar el codi. Utilitzeu-lo quan l'usuari menciona clang-format o .clang-format, analitzeu estils/patrons de codi, creeu/modifiqueu la configuració de format, solucioneu problemes, estils de claus, sagnat, espaiat, alineació, alineació de punters o codifiqueu convencions.

clang-format 配置 是什麼?

Aquest skill està dissenyat per a desenvolupadors que utilitzen clang-format per formatejar el codi font. Ofereix plantilles predefinides, scripts d'integració i documentació de referència per simplificar la configuració i la resolució de problemes. Admet una àmplia gamma de plataformes, incloent editors de codi (Vim, Emacs, VS Code, CLion), sistemes de control de versions (Git) i entorns d'integració contínua. El skill es activa mitjançant sis tipus de desencadenants: menció explícita de clang-format, sol·licitud d'anàlisi d'estil de codi, operacions amb fitxers de configuració, investigació de problemes de format, consultes sobre opcions d'estil i sol·licituds de mínima alteració. Per a cada desencadenant, proporciona un flux de treball detallat, com ara la creació de configuracions a partir de plantilles, l'anàlisi sistemàtica de mostres de codi per generar configuracions personalitzades, la configuració d'integracions d'editor i ganxos de Git, i la resolució de problemes consultant guies de categories. Inclou també un mètode per avaluar l'impacte dels canvis de format mitjançant una puntuació ponderada que considera els canvis de línies i els canvis d'espais en blanc, ajudant a minimitzar les alteracions en projectes existents. El skill requereix l'aprovació de l'usuari abans d'aplicar la configuració final.

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jamie-BitFlight/claude_skills/tree/main/plugins/clang-format/skills/clang-format

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Configuració de clang-format

Configureu l'eina de format de codi clang-format mitjançant plantilles ja preparades, scripts d'integració i documentació de referència completa.

Propòsit

Aquest skill proporciona fluxos de treball procedimentals per a tasques de configuració de clang-format:

  • Crear nous fitxers .clang-format a partir de plantilles provades
  • Analitzar l'estil de codi existent i generar configuracions coincidents
  • Configurar la integració d'editor i git amb scripts inclosos
  • Resoldre problemes de comportament de format utilitzant documentació de referència

Enrutament de flux de treball per tipus de desencadenant

Un cop invocat, enruteu al flux de treball adequat segons el desencadenant que s'hagi activat:

Desencadenant 1: Menció explícita de clang-format → Si l'usuari pregunta sobre opcions específiques: Consulteu references/01-09.md per a la categoria rellevant → Si l'usuari necessita una referència completa: Dirigiu-vos a references/complete/clang-format-style-options.md → Si l'usuari pregunta sobre l'ús de la CLI: Consulteu references/cli-usage.md

Desencadenant 2: Sol·licitud d'anàlisi d'estil de codi → Seguiu el flux de treball "Analitzant l'estil de codi existent" a continuació → Examineu les mostres de codi sistemàticament (claus → sagnat → espaiat → salts de línia → alineació) → Mapeu els patrons a la plantilla més propera a assets/configs/ → Genereu una hipòtesi de configuració inicial com a fitxer de configuració temporal "/tmp/<nom_repositori>/hypothesis_.clang-format" → VERIFIQUEU L'IMPACTE: Executeu clang-format --style="/tmp/<nom_repositori>/hypothesis_<nombre>.clang-format" fitxer.cpp | diff - fitxer.cpp en 3-5 mostres representatives → MESUREU L'IMPACTE mitjançant una puntuació ponderada: • Mètrica 1: Canvis en el nombre de línies (línies afegides/eliminades) - pes 10 • Mètrica 2: Canvis d'espais en blanc dins de la línia (espais dins de línies existents) - pes 1 • Puntuació d'impacte = (canvis_nombre_línies × 10) + (canvis_espais × 1) • Puntuació més baixa = menor impacte en conflictes de rebase, anàlisi futura de git-diff i revisions de canvis en sol·licituds de fusió = millor configuració → ITEREU: Ajusteu les opcions de configuració orientades a les configuracions d'alt impacte, torneu a provar, compareu puntuacions → REPETIU fins a assolir la puntuació mínima assolible mantenint un estil coherent → INFORMEU A L'USUARI: Presenteu la configuració guanyadora amb: • Puntuació d'impacte final i desglossament (canvis de línies vs canvis d'espais) • Taula comparativa que mostri totes les hipòtesis provades i les seves puntuacions • Exemples de fragments de diff que mostrin què canviarà, amb ordres perquè l'usuari ho provi ell mateix amb fitxers de la seva elecció. • Raonament per a la configuració seleccionada → ESPEREU L'APROVACIÓ DE L'USUARI abans de finalitzar la configuració → Només després de l'aprovació: proporcioneu el fitxer de configuració final

Desencadenant 3: Operacions amb fitxers de configuració → Si es crea un de nou: Seguiu el flux de treball "Creant una configuració nova a partir d'una plantilla" → Si es modifica un d'existent: Llegiu la configuració actual, identifiqueu els canvis necessaris, consulteu la guia de categoria rellevant → Si es genera a partir de codi: Utilitzeu el flux de treball del Desencadenant 2 (anàlisi d'estil de codi)

Desencadenant 4: Investigació de problemes de format → Seguiu el flux de treball "Resolent problemes de format" a continuació → Verifiqueu la detecció de configuració amb --dump-config → Identifiqueu la categoria afectada, consulteu la guia references/0X.md rellevant → Proveu opcions aïllades amb una configuració mínima

Desencadenant 5: Consultes sobre opcions d'estil → Mapeu la pregunta a una categoria: claus→03, sagnat→04, espaiat→05, alineació→01, salts de línia→02 → Consulteu la guia de categoria específica a references/ → Proporcioneu exemples de quick-reference.md si escau

Desencadenant 6: Sol·licituds de mínima alteració → Utilitzeu el flux de treball "Analitzant l'estil de codi existent" per coincidir amb els patrons actuals → Emfatitzeu començar des de la plantilla més propera per minimitzar els canvis → Proveu amb mostres representatives abans de l'aplicació a tot el projecte → Documenteu quins patrons s'han conservat vs normalitzat

Recursos inclosos

Plantilles de configuració (assets/configs/)

Set plantilles .clang-format preparades per utilitzar, optimitzades per a escenaris habituals:

  • google-cpp-modified.clang-format - Estil Google C++ amb sagnat de 4 espais, límit de 120 columnes
  • linux-kernel.clang-format - Estàndards de codi del kernel Linux (tabuladors, claus K&R)
  • microsoft-visual-studio.clang-format - Convencions Microsoft/Visual Studio
  • modern-cpp17-20.clang-format - Estil modern C++17/20 amb idioms contemporanis
  • compact-dense.clang-format - Estil compacte per a entorns amb espai limitat
  • readable-spacious.clang-format - Estil espaiós que prioritza la llegibilitat
  • multi-language.clang-format - Configuració multiprocés (C++, JavaScript, Java)

Quan utilitzar plantilles: Inicieu projectes nous, establiu estàndards d'equip o proveu ràpidament enfocaments de format.

Scripts d'integració (assets/integrations/)

Tres scripts d'integració d'editor i git:

  • pre-commit - Script de ganxo de Git per al format automàtic de fitxers preparats (funciona amb pre-commit o prek framework)
  • vimrc-clang-format.vim - Configuració de Vim per formatar en desar
  • emacs-clang-format.el - Configuració d'Emacs per a la integració de clang-format

Quan utilitzar integracions: Configureu el format automàtic al flux de treball de desenvolupament.

Nota: L'script de ganxo pre-commit funciona tant amb el framework pre-commit (Python) com amb prek (alternativa Rust). Ambdós frameworks utilitzen .pre-commit-config.yaml amb sintaxi idèntica.

Documentació de referència (references/)

Documentació detallada organitzada per categoria:

Navegació ràpida:

  • index.md - Visió general i centre de documentació
  • quick-reference.md - Configuracions completes de treball amb explicacions
  • cli-usage.md - Ús de la línia d'ordres, configuració de l'editor, integració CI/CD

Categories d'opcions (01-09.md):

  1. 01-alignment.md - Alineació vertical de declaracions, assignacions, operadors
  2. 02-breaking.md - Regles de salts de línia i embolcall
  3. 03-braces.md - Estils de col·locació de claus (K&R, Allman, GNU, etc.)
  4. 04-indentation.md - Regles de sagnat i casos especials
  5. 05-spacing.md - Control d'espais en blanc al voltant d'operadors, paraules clau
  6. 06-includes.md - Organització i ordenació d'inclusions/importacions
  7. 07-languages.md - Opcions específiques per a C++, Java, JavaScript
  8. 08-comments.md - Format i refluix de comentaris
  9. 09-advanced.md - Sistema de penalitzacions, format de cadenes literals, funcions experimentals

Referència completa (complete/):

  • clang-format-cli.md - Documentació completa de la interfície de línia d'ordres
  • clang-format-style-options.md - Totes les 194 opcions d'estil amb exemples

Fluxos de treball habituals

Creant una configuració nova a partir d'una plantilla

Per crear un fitxer .clang-format nou:

  1. Identifiqueu els requisits (guia d'estil, preferències de l'equip, llenguatge)
  2. Seleccioneu la plantilla més propera de assets/configs/
  3. Copieu la plantilla a l'arrel del projecte com a .clang-format
  4. Proveu el format: clang-format --dry-run fitxer.cpp
  5. Personalitzeu opcions específiques utlitzant references/01-09.md segons sigui necessari
  6. Verifiqueu els canvis: clang-format fitxer.cpp | diff - fitxer.cpp

Exemple:

# Copieu la plantilla Google C++
cp assets/configs/google-cpp-modified.clang-format /path/to/project/.clang-format

# Proveu amb un fitxer de mostra
clang-format --dry-run /path/to/project/src/main.cpp

# Apliqueu si esteu satisfet
clang-format -i /path/to/project/src/*.cpp

Analitzant l'estil de codi existent

Per generar una configuració que coincideixi amb el codi existent:

  1. Examineu les mostres de codi per detectar patrons de format
  2. Identifiqueu les característiques clau:
    • Col·locació de claus → consulteu references/03-braces.md
    • Sagnat (espais/tabuladors, amplada) → consulteu references/04-indentation.md
    • Espaiat (operadors, paraules clau) → consulteu references/05-spacing.md
    • Salts de línia (límit de columnes, embolcall) → consulteu references/02-breaking.md
    • Patrons d'alineació → consulteu references/01-alignment.md
  3. Mapeu els patrons a l'estil base més proper a references/quick-reference.md
  4. Comenceu amb aquesta plantilla de assets/configs/
  5. Sobreescriviu opcions específiques per coincidir amb els patrons observats
  6. Proveu amb mostres de codi representatives
  7. Itereu fins que el format coincideixi amb l'estil existent

Aquest flux de treball minimitza els canvis només d'espais en blanc en introduir clang-format a projectes existents.

Configurant la integració d'editor

Per habilitar el format en desar als editors:

Vim:

  1. Copieu el contingut de assets/integrations/vimrc-clang-format.vim a .vimrc
  2. Reinicieu Vim o source la configuració
  3. Deseu qualsevol fitxer C/C++/Java per activar el format

Emacs:

  1. Copieu assets/integrations/emacs-clang-format.el a la configuració d'Emacs
  2. Reinicieu Emacs o avalueu la configuració
  3. Deseu qualsevol fitxer suportat per activar el format

Altres editors: Consulteu references/cli-usage.md per a instruccions de configuració de VS Code, CLion i altres editors.

Configurant un ganxo de Git per al format

Opció 1: Utilitzant el framework pre-commit/prek (Recomanat):

Configureu a .pre-commit-config.yaml:

repos:
  - repo: https://github.com/pre-commit/mirrors-clang-format
    rev: v19.1.7
    hooks:
      - id: clang-format

Després instal·leu: pre-commit install o prek install

Opció 2: Ganxo de Git manual:

  1. Copieu assets/integrations/pre-commit a .git/hooks/pre-commit
  2. Feu-lo executable: chmod +x .git/hooks/pre-commit
  3. Proveu-lo preparant i confirmant canvis

El ganxo només formata els fitxers preparats, conservant els canvis no preparats.

Resolent problemes de format

Quan el format produeix resultats inesperats:

  1. Verifiqueu la detecció de configuració: clang-format --dump-config fitxer.cpp
  2. Comproveu les opcions d'ordres a references/cli-usage.md
  3. Identifiqueu la categoria de format afectada (claus, espaiat, salts de línia, etc.)
  4. Consulteu la guia de categoria rellevant a references/01-09.md
  5. Proveu opcions aïllades: creeu una configuració mínima amb l'opció sospitosa
  6. Per a detalls complets d'opcions, consulteu references/complete/clang-format-style-options.md

Configurant verificacions de format CI/CD

Per imposar el format a la integració contínua:

  1. Reviseu els exemples de CI a references/cli-usage.md
  2. Afegiu una verificació de clang-format al pipeline:
    # Verifiqueu el format sense modificar fitxers
    clang-format --dry-run --Werror src/**/*.{cpp,h}
    
  3. Configureu perquè la compilació falli en cas de violacions de format
  4. Documenteu els requisits de format per als col·laboradors

Conceptes clau

Estils base: Configuracions predefinides (LLVM, Google, Chromium, Mozilla, WebKit, Microsoft, GNU) proporcionen punts de partida. Establiu BasedOnStyle: Google i després sobreescriviu opcions específiques.

Suport multiprocés: Configureu diferents llenguatges per separat en un sol fitxer mitjançant la clau Language:. Vegeu assets/configs/multi-language.clang-format per a un exemple.

Sistema de penalitzacions: clang-format utilitza penalitzacions per triar entre alternatives de format. Valors de penalització més alts desanimen opcions específiques. Vegeu references/09-advanced.md per a més detalls.

Refinament progressiu: Comenceu amb la plantilla més propera als requisits, després personalitzeu incrementalment. Proveu freqüentment amb mostres de codi representatives.

Provant configuracions

# Previsualitzeu els canvis sense modificar el fitxer
clang-format --dry-run fitxer.cpp

# Mostreu el diff dels canvis proposats
clang-format fitxer.cpp | diff - fitxer.cpp

# Apliqueu el format al fitxer
clang-format -i fitxer.cpp

# Formateu tot el projecte
find src include -name '*.cpp' -o -name '*.h' | xargs clang-format -i

# Verifiqueu el format a CI (falla en cas de violacions)
clang-format --dry-run --Werror src/**/*.{cpp,h}

Estratègia de navegació

Per a la majoria de tasques, seguiu aquesta progressió:

  1. Començar amb plantilles: Navegueu per assets/configs/ per a configuracions ja preparades
  2. Referència ràpida: Consulteu references/quick-reference.md per a configuracions completes amb explicacions
  3. Guies de categoria: Consulteu references/01-09.md per a categories d'opcions específiques
  4. Ús de la CLI: Consulteu references/cli-usage.md per a detalls de línia d'ordres i integració
  5. Referència completa: Utilitzeu references/complete/ per a documentació exhaustiva d'opcions

Quan analitzeu codi o resoleu problemes, identifiqueu l'aspecte de format (claus, espaiat, alineació, etc.) i aneu directament a la guia de categoria rellevant a references/.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Jamie-BitFlight/agentskill-kaizen-meta-docs

Agentskill kaizen plugin documentation index. Load when needing to read about cross-platform notes, improvement plans, or DuckDB integration.

Jamie-BitFlight/bash-51-features

Bash 5.1 release features and improvements with practical examples. Use when working with Bash 5.1 features, epoch time variables, redirection enhancements, or when user asks about Bash 5.1 changes, new features, or version-specific capabilities.

Jamie-BitFlight/bash-52-features

Bash 5.2 release features and improvements with practical examples. Use when working with Bash 5.2 features, variable handling enhancements, readline improvements, or when user asks about Bash 5.2 changes, new features, or version-specific capabilities.

Jamie-BitFlight/bash-53-features

Bash 5.3 release features and improvements with practical examples. Use when working with Bash 5.3 features, new command substitution, GLOBSORT, loadable builtins, or when user asks about Bash 5.3 changes, new features, or version-specific capabilities.

Jamie-BitFlight/bash-development

This skill should be used when the user asks to "write a bash script", "create a shell script", "implement bash function", "parse arguments in bash", "handle errors in bash", or mentions bash development, shell scripting, script templates, or modern bash patterns.

Jamie-BitFlight/bash-lint

This skill should be used when the user asks to "lint bash script", "run shellcheck", "format shell script", "use shfmt", "fix shellcheck errors", or mentions shell script linting, formatting, code quality, or pre-commit hooks for bash.

Jamie-BitFlight/bash-logging

This skill should be used when the user asks to "add logging to bash script", "colorize output", "implement log levels", "CI/CD sections", "terminal colors in bash", or mentions logging functions, emoji output, collapsible CI sections, or shlocksmith.

Jamie-BitFlight/bash-portability

This skill should be used when the user asks about "POSIX compatibility", "portable shell scripts", "cross-shell compatibility", "bashisms", "shebang selection", or mentions writing scripts that work on different shells (bash, sh, dash, zsh) or different systems.

Jamie-BitFlight/bash-testing

This skill should be used when the user asks to "test bash script", "write shell tests", "use shunit2", "use shellspec", "create test suite for bash", or mentions unit testing, test frameworks, mocking, or test-driven development for shell scripts.

Jamie-BitFlight/brainstorming-skill

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or when users request help with ideation, marketing, and strategic planning. Explores user intent, requirements, and design before implementation using research-validated prompt patterns.

Jamie-BitFlight/commitlint

When setting up commit message validation for a project. When project has commitlint.config.js or .commitlintrc files. When configuring CI/CD to enforce commit format. When extracting commit rules for LLM prompt generation. When debugging commit message rejection errors.

Jamie-BitFlight/conventional-commits

When writing a git commit message. When task completes and changes need committing. When project uses semantic-release, commitizen, git-cliff. When choosing between feat/fix/chore/docs types. When indicating breaking changes. When generating changelogs from commit history.

Jamie-BitFlight/dasel-reference

Use when querying, modifying, or converting JSON, YAML, TOML, XML, CSV, HCL, or INI with dasel v3. Complete reference for selectors, functions, conditionals, variables, spread operator, type casting, and format-specific patterns.

Jamie-BitFlight/data-exploration

Use when exploring unknown structured data files with dasel v3 — discover schema, list keys, find nested values, sample arrays, identify data types across JSON, YAML, TOML, XML, CSV, HCL, INI formats

Jamie-BitFlight/data-transformation

Use when modifying, converting, or transforming structured data with dasel v3 — in-place mutations, format conversion, batch operations, array manipulation, object construction, and merge patterns across JSON, YAML, TOML, XML, CSV, HCL, INI

Jamie-BitFlight/delegate

Decompose substantive work into phases, dispatch each phase to a sub-agent, and adjudicate what comes back. Use whenever a request asks for implementation, investigation, a fix, a review, or any change to files — including small ones — and whenever you are about to read source or run a diagnostic yourself instead of handing it off. Also use when a report from a sub-agent needs judging, when a phase needs re-dispatching, or when a user names one instance of a pattern. Does not apply when your own prompt begins "Your ROLE_TYPE is sub-agent." — then follow references/sub-agent-contract.md instead.

Jamie-BitFlight/enterprise-hibernate-hbm

Dasel v3 query patterns for Hibernate .hbm.xml mapping files — entity-table binding, Java property-to-column extraction, one-to-many set/list/bag relationship tracing, many-to-one foreign key discovery, batch scanning across 60+ HBM files. Use when querying Hibernate ORM class mappings, extracting schema metadata from Java persistence layer, or auditing entity-column relationships in enterprise legacy codebases.

Jamie-BitFlight/enterprise-installanywhere

Dasel v3 query patterns for InstallAnywhere .iap_xml installer definitions — use when querying action sequences, discovering variables, resolving platform conditions, navigating panels, or comparing installer variants. Files are 2.5+ MB, 65,000+ lines — too large for context reads, requires structural dasel queries.

Jamie-BitFlight/enterprise-maven-pom

Dasel v3 selector patterns for Maven POM XML files — use when querying dependency versions, filtering by groupId or scope, extracting module hierarchy from parent POMs, or detecting version conflicts across enterprise multi-module Java projects. Load this skill when working with pom.xml files using dasel.

Jamie-BitFlight/enterprise-spring-xml

Dasel v3 selectors for Spring bean factory XML — use when querying any Spring ApplicationContext XML for bean discovery, dependency wiring, JMS destination mapping, property injection extraction, or cross-bean reference tracing. Load this skill before writing dasel selectors against Spring bean XML files (applicationContext.xml, *_beans.xml, spring-*.xml).

相關技能