mcpField
C
configure-makefile

configure-makefile

github.com/laurigates开发5954 次安装1 天前更新
代码仓库

关于 configure-makefile

用于按既定规范检查和配置项目 Makefile 的 Skill,适合搭建或审查 Makefile 的团队,可报告问题并按需修复。

主要功能

  1. 01检测项目类型和服务标识
  2. 02检查必需及按需目标
  3. 03报告结构与命令合规情况
  4. 04创建或更新 Makefile
  5. 05更新项目规范跟踪信息

适用场景

  1. 01审查现有 Makefile 是否缺少目标
  2. 02为检测到的项目类型创建 Makefile
  3. 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 步:检测项目类型

读取上下文值,并按以下顺序确定项目类型:

  1. Python:存在 pyproject.toml 或 requirements.txt
  2. Node:存在 package.json
  3. Rust:存在 Cargo.toml
  4. Go:存在 go.mod
  5. 通用:以上文件均不存在

检查服务标识(是否需要启动/停止):

  • 存在 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 或用户确认)
  1. 缺少 Makefile:根据检测到的项目类型,从标准模板创建
  2. 缺少目标:添加使用适当语言专用命令的目标
  3. 缺少默认项:添加 .DEFAULT_GOAL、.PHONY、颜色变量
  4. 缺少帮助信息:使用 awk 注释解析自动生成帮助目标

使用以下语言专用命令:

Python(基于 uv):

  • lint:@uv run ruff check .
  • format:@uv run ruff format .
  • test:@uv run pytest
  • build:@docker build -t {{PROJECT_NAME}} .
  • clean:@find . -type f -name "*.pyc" -delete + 删除缓存目录

Node.js:

  • lint:@npm run lint
  • format:@npm run format
  • test:@npm test
  • build:@npm run build
  • clean:@rm -rf node_modules/ dist/ .next/ .turbo/

Rust:

  • lint:@cargo clippy -- -D warnings
  • format:@cargo fmt
  • test:@cargo nextest run
  • build:@cargo build --release
  • clean:@cargo clean

Go:

  • lint:@golangci-lint run
  • format:@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