name: styleguide description: 检测项目语言并将代码风格指南注入到CLAUDE.md中。为所有Claude代码交互提供一致的编码约定。 argument-hint: “[–remove]” allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion disable-model-invocation: true
Styleguide — 代码风格指南注入
检测项目语言,选择匹配的风格指南,并将它们注入到宿主项目的
CLAUDE.md中。
参数
$ARGUMENTS
--remove: 从CLAUDE.md中移除注入的代码风格部分并退出。- 默认(无参数): 检测语言并注入/更新风格指南。
步骤 1: 处理 --remove
如果$ARGUMENTS包含--remove:
- 读取项目的
CLAUDE.md - 查找标记
<!-- maestro:code-styleguides:start -->和<!-- maestro:code-styleguides:end --> - 如果找到,移除标记之间及包括标记的所有内容(加上任何周围的空行)
- 写入更新后的文件
- 报告:“已从CLAUDE.md中移除代码风格指南”
- 停止。
如果标记未找到,报告:"在CLAUDE.md中未找到代码风格指南"并停止。
步骤 2: 检测项目语言
扫描项目根目录以确定使用哪些语言。收集所有匹配项——一个项目可以使用多种语言。
检测规则(检查所有,收集匹配项):
| 配置文件 | 语言 | 指南文件 |
|---|---|---|
package.json |
JavaScript | javascript.md |
tsconfig.json 或 tsconfig*.json |
TypeScript | typescript.md |
pyproject.toml 或 setup.py 或 requirements.txt 或 Pipfile |
Python | python.md |
go.mod |
Go | go.md |
CMakeLists.txt 或 src/中的*.cpp/*.cc/*.cxx |
C++ | cpp.md |
*.csproj 或 *.sln |
C# | csharp.md |
pubspec.yaml |
Dart | dart.md |
根目录或src/中的*.html 或 根目录或src/中的*.css/*.scss |
HTML/CSS | html-css.md |
使用Glob检查每个配置文件。尽可能并行运行这些检查:
Glob(pattern: "package.json")
Glob(pattern: "tsconfig*.json")
Glob(pattern: "pyproject.toml")
Glob(pattern: "setup.py")
Glob(pattern: "requirements.txt")
Glob(pattern: "Pipfile")
Glob(pattern: "go.mod")
Glob(pattern: "CMakeLists.txt")
Glob(pattern: "*.csproj")
Glob(pattern: "*.sln")
Glob(pattern: "pubspec.yaml")
TypeScript细化: 如果找到package.json,也检查tsconfig.json。如果两者都存在,包括JavaScript和TypeScript指南。如果只有package.json存在(无tsconfig),只包括JavaScript。
如果未检测到语言: 询问用户要包括哪些语言:
AskUserQuestion(
questions: [{
question: "未检测到语言配置文件。该项目使用哪些语言?",
header: "选择语言",
options: [
{ label: "JavaScript", description: "Google JavaScript风格指南" },
{ label: "TypeScript", description: "Google TypeScript风格指南" },
{ label: "Python", description: "Google Python风格指南" },
{ label: "Go", description: "Effective Go" },
{ label: "C++", description: "Google C++风格指南" },
{ label: "C#", description: "Google C#风格指南" },
{ label: "Dart", description: "Effective Dart" },
{ label: "HTML/CSS", description: "Google HTML/CSS风格指南" }
],
multiSelect: true
}]
)
步骤 3: 与用户确认
呈现检测到的语言并请求确认:
AskUserQuestion(
questions: [{
question: "检测到的语言:{list}。将这些风格指南注入到CLAUDE.md中吗?",
header: "确认风格指南",
options: [
{ label: "是,注入", description: "添加检测到的语言的风格指南+通用原则" },
{ label: "自定义", description: "让我选择要包括的语言" },
{ label: "取消", description: "不修改CLAUDE.md" }
],
multiSelect: false
}]
)
当选择"自定义"时: 显示步骤2后备中的多选语言选择器。 当选择"取消"时: 停止而不修改任何内容。
步骤 4: 组装风格指南部分
构建注入内容:
- 以开始标记开头:
<!-- maestro:code-styleguides:start --> - 添加节标题:
## 代码风格指南 - 添加注释:
<!-- 由Maestro /styleguide自动生成。请勿手动编辑。重新运行/styleguide以更新。 --> - 添加归属:
> 来源: [conductor风格指南](https://github.com/gemini-cli-extensions/conductor/tree/main/templates/code_styleguides) - 从Maestro插件的风格指南库中读取并附加
general.md - 对于每个检测到的语言,读取并附加相应的指南文件
- 以结束标记结尾:
<!-- maestro:code-styleguides:end -->
定位指南文件: 指南模板位于此技能的references/目录中(.claude/skills/styleguide/references/)。要找到它们:
# 首先尝试项目路径(如果Maestro是当前项目)
ls .claude/skills/styleguide/references/ 2>/dev/null
# 回退到全局插件路径
find ~/.claude/plugins/marketplaces -path "*/maestro/.claude/skills/styleguide/references" -type d 2>/dev/null
首先尝试项目路径,然后回退到全局插件路径。
组装内容示例:
<!-- maestro:code-styleguides:start -->
## 代码风格指南
<!-- 由Maestro /styleguide自动生成。请勿手动编辑。重新运行/styleguide以更新。 -->
> 来源: [conductor风格指南](https://github.com/gemini-cli-extensions/conductor/tree/main/templates/code_styleguides)
{general.md的内容}
{typescript.md的内容}
{python.md的内容}
<!-- maestro:code-styleguides:end -->
步骤 5: 注入到CLAUDE.md中
如果项目根目录中存在CLAUDE.md:
- 读取文件
- 检查标记是否已存在(
<!-- maestro:code-styleguides:start -->和<!-- maestro:code-styleguides:end -->)- 如果找到标记: 用新的组装内容替换标记之间及包括标记的所有内容
- 如果没有标记: 在文件末尾附加组装内容,前面加一个空行
- 写入更新后的文件
如果CLAUDE.md不存在:
- 创建
CLAUDE.md,包含最小头部和组装内容:# 项目 {组装风格指南内容}
步骤 6: 报告
输出摘要:
## 已注入风格指南
**语言**: {语言列表}
**文件**: CLAUDE.md
**包括的指南**:
- 通用代码风格原则
- {语言1}风格指南
- {语言2}风格指南
- ...
要更新:`/styleguide`
要移除:`/styleguide --remove`