关于 configure-makefile
用于按既定规范检查和配置项目 Makefile 的 Skill,适合搭建或审查 Makefile 的团队,可报告问题并按需修复。
主要功能
- 01检测项目类型和服务标识
- 02检查必需及按需目标
- 03报告结构与命令合规情况
- 04创建或更新 Makefile
- 05更新项目规范跟踪信息
适用场景
- 01审查现有 Makefile 是否缺少目标
- 02为检测到的项目类型创建 Makefile
- 03自动应用合规修复
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill configure-makefile安装后在 Claude Code 中输入/configure-makefile确认已加载。
附带文件REFERENCE.md
详细介绍
/configure:makefile
根据项目标准检查并配置项目 Makefile。
何时使用此技能
| 在以下情况下使用此技能…… | 在以下情况下使用其他方法…… |
|---|---|
| 为需要 Make 的项目设置新的 Makefile | 项目可以改用 Just——使用 /configure:justfile(优先) |
| 审核现有 Makefile,检查是否缺少标准目标 | 编写包含依赖项的复杂构建规则——参阅 GNU Make 文档 |
| 确保 Makefile 符合团队约定(帮助目标、PHONY、颜色) | 项目只使用语言原生构建系统(cargo、go build) |
| 对 Makefile 结构运行 CI/CD 合规检查 | 从 Makefile 迁移到 Justfile——使用可处理迁移的 /configure:justfile |
| 为现有 Makefile 添加特定语言的构建/测试/lint 目标 | 调试特定 Make 目标——直接运行 make -n <target> |
上下文
- 项目根目录:!
pwd - Makefile 是否存在:!
find . -maxdepth 1 -name 'Makefile' - Makefile 目标:!
find . -maxdepth 1 -name 'Makefile' -exec grep -E '^[a-zA-Z_-]+:' {} + - 包文件:!
find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' -o -name 'go.mod' \) - Docker 文件:!
find . -maxdepth 1 \( -name 'Dockerfile' -o -name 'docker-compose.yml' -o -name 'compose.yml' \) - 服务文件:!
find . -path '*/src/*' -maxdepth 2 \( -name 'server.*' -o -name 'main.*' \)
参数
从 $ARGUMENTS 中解析:
--check-only:报告 Makefile 合规状态,不进行修改--fix:自动应用修复,无需提示
必需的 Makefile 目标:help、test、build、clean、lint
执行
执行此 Makefile 合规检查:
第 1 步:检测项目类型
读取上下文值,并按以下顺序确定项目类型:
- Python:存在
pyproject.toml或requirements.txt - Node:存在
package.json - Rust:存在
Cargo.toml - Go:存在
go.mod - 通用:以上文件均不存在
检查服务标识(是否需要启动/停止):
- 存在
docker-compose.yml或compose.yml-> Docker Compose 服务 - 存在
Dockerfile+ HTTP 服务端代码 -> 容器服务 - 存在
src/server.*或src/main.*-> 应用服务
第 2 步:分析现有 Makefile 目标
如果 Makefile 存在,请对照必需目标进行检查:
所有项目必需的目标:
| 目标 | 用途 |
|---|---|
help | 显示可用目标(默认目标) |
test | 运行测试套件 |
build | 构建项目产物 |
clean | 删除临时文件和构建产物 |
lint | 运行代码检查工具 |
附加目标(视上下文而定):
| 目标 | 必需条件 |
|---|---|
start | 项目包含可运行的服务 |
stop | 项目包含后台服务 |
format | 项目使用自动格式化工具 |
第 3 步:运行合规检查
| 检查项 | 标准 | 严重级别 |
|---|---|---|
| 文件存在 | 存在 Makefile | 缺失时为 FAIL |
| 默认目标 | .DEFAULT_GOAL := help | 缺失时为 WARN |
| PHONY 声明 | 所有目标均标记为 .PHONY | 缺失时为 WARN |
| 彩色输出 | 定义颜色变量 | INFO |
| 帮助目标 | 根据注释自动生成 | 缺失时为 WARN |
| 特定语言检查 | 命令与项目类型匹配 | 不匹配时为 FAIL |
第 4 步:生成合规报告
打印报告,显示:
- 项目类型(检测结果)
- 每个目标及其 PASS/FAIL 状态和使用的命令
- Makefile 结构检查(默认目标、PHONY、颜色、帮助)
- 缺失目标列表
- 问题数量
如果设置了 --check-only,则在此处停止。
步骤 5:创建或更新 Makefile(如果指定了 --fix 或用户确认)
- 缺少 Makefile:根据检测到的项目类型,从标准模板创建
- 缺少目标:添加使用适当语言专用命令的目标
- 缺少默认项:添加
.DEFAULT_GOAL、.PHONY、颜色变量 - 缺少帮助信息:使用 awk 注释解析自动生成帮助目标
使用以下语言专用命令:
Python(基于 uv):
lint:@uv run ruff check .format:@uv run ruff format .test:@uv run pytestbuild:@docker build -t {{PROJECT_NAME}} .clean:@find . -type f -name "*.pyc" -delete+ 删除缓存目录
Node.js:
lint:@npm run lintformat:@npm run formattest:@npm testbuild:@npm run buildclean:@rm -rf node_modules/ dist/ .next/ .turbo/
Rust:
lint:@cargo clippy -- -D warningsformat:@cargo fmttest:@cargo nextest runbuild:@cargo build --releaseclean:@cargo clean
Go:
lint:@golangci-lint runformat:@gofmt -s -w .test:@go test ./...build:@go build -o bin/{{PROJECT_NAME}}clean:@rm -rf bin/ dist/+@go clean
步骤 6:更新标准跟踪信息
更新 .project-standards.yaml:
components:
makefile: "2025.1"
步骤 7:打印最终报告
打印已应用更改和已添加目标的摘要,并建议运行 make help 进行验证。
通用 Makefile 模板结构请参阅 REFERENCE.md。
Agentic 优化
| 上下文 | 命令 |
|---|---|
| 快速合规检查 | /configure:makefile --check-only |
| 自动修复所有问题 | /configure:makefile --fix |
| 列出现有目标 | grep -E '^[a-zA-Z_-]+:' Makefile |
| 试运行目标 | make -n <target> |
| 显示默认目标 | make -p | grep '.DEFAULT_GOAL' |
标志
| 标志 | 说明 |
|---|---|
--check-only | 报告状态,不提供修复方案 |
--fix | 自动应用修复 |
示例
# Check current Makefile compliance
/configure:makefile --check-only
# Create/update Makefile for Python project
/configure:makefile --fix
# Check compliance and prompt for fixes
/configure:makefile
另请参阅
/configure:all- 运行所有合规检查/configure:workflows- GitHub Actions 工作流/configure:dockerfile- Docker 配置
评论
支持 Markdown