关于 make
GNU Make / Makefile 规范、设计与运维的参考 Skill,面向需要查询 Make 行为或审查仓库构建配置的开发者。它区分官方规范、设计建议和示例约定,并提供静态诊断、计划与验证流程。
主要功能
- 01按任务索引 Make 参考资料
- 02区分规范、设计建议与示例约定
- 03静态诊断 Makefile 仓库
- 04规划并验证配置变更
- 05提供安全与可移植性指引
适用场景
- 01检查 Makefile 目标与前置条件
- 02规划 Rust 与 Node 仓库的命令边界
- 03审查 hooks 与 CI 共用的命令约定
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ fandhe-ai/ agent-reference-skills --skill make安装后在 Claude Code 中输入/make确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/architecture/command-contracts.mdREADME.mdresponsibility-boundaries.mdselection-and-migration.mdreferences/execution/diagnostics-and-exit-codes.mdgnu-posix-bsd-compatibility.mdparallel-and-recursive-make.mdREADME.mdspecial-targets-and-defaults.mdreferences/fundamentals/patterns-includes-and-functions.mdREADME.mdrecipes-and-shell.mdrules-and-prerequisites.mdvariables-and-expansion.mdreferences/maintenance/README.mdsources-and-compatibility.mdtroubleshooting.mdreferences/node/package-scripts-and-mixed-repos.mdREADME.mdreferences/operations/parallelism-and-recovery.mdREADME.mdsafety-and-portability.mdreferences/quality/ci-hooks-and-cache.mdREADME.mdreferences/rust/crate-and-workspace-profiles.mdREADME.mdxtask-and-validation.mdsamples/ci.mdsamples/ci/azure-pipelines.yml.examplegithub-actions.yml.example详细介绍
GNU Make / Makefile 参考
涵盖 GNU Make / Makefile 规范、设计、实现、运维与验证的参考 Skill。
来源基准为 GNU Make Manual 4.4.1(Edition 0.77, 2023-02-26)。本地验证使用 GNU Make 3.81(macOS),
3.82+ / 4.x 专属功能(.RECIPEPREFIX、.ONESHELL、.WAIT 等)会在相关页面和示例中注明最低版本。
请注意,这与 Make 自动化 SaaS、CMake、cargo-make 属于不同范畴。
目录结构
skills/make/
SKILL.md
references/
architecture/
README.md
responsibility-boundaries.md
command-contracts.md
selection-and-migration.md
fundamentals/
README.md
rules-and-prerequisites.md
variables-and-expansion.md
patterns-includes-and-functions.md
recipes-and-shell.md
execution/
README.md
special-targets-and-defaults.md
parallel-and-recursive-make.md
diagnostics-and-exit-codes.md
gnu-posix-bsd-compatibility.md
rust/
README.md
crate-and-workspace-profiles.md
xtask-and-validation.md
node/
README.md
package-scripts-and-mixed-repos.md
quality/
README.md
ci-hooks-and-cache.md
operations/
README.md
safety-and-portability.md
parallelism-and-recovery.md
maintenance/
README.md
sources-and-compatibility.md
troubleshooting.md
samples/
README.md
incremental-build.md
rust-crate.md
rust-workspace-xtask.md
node-pnpm.md
mixed.md
ci.md
plans.md
projects/ # 動く例の正本
incremental-build/ # Make がファイル依存関係を直接管理する例
rust-crate/ # 薄い Makefile + Bash help/doctor/check/verify(Node 不要)
rust-workspace-xtask/ # Makefile なし。cargo xtask が正本
node-pnpm/ # pnpm workspace + Turborepo 委譲
mixed/ # Rust + Node の受け渡しのみ Make が仲介
ci/ # 非アクティブな CI テンプレート(.example)
plans/ # 承認前の適用計画サンプル(JSON)
scripts/
README.md
make-commands.md
inspect.md
plan-and-preview.md
verify.md
bin/ # Claude が明示的に実行する補助 CLI(Node.js 標準ライブラリのみ)
inspect-repo.mjs
validate-plan.mjs
preview-sample.mjs
verify-layout.mjs
run-checks.mjs
lib/
tests/
README.md
helpers.mjs
fixtures/
eval-cases.json
*.test.mjs
官方规范与自定义设计的区分
references/ 中的各页面会明确区分以下 3 类内容。
- Source-backed behavior — 基于 GNU Make Manual 4.4.1 等一手资料的规范。附有来源 URL、适用版本和确认日期(列表见 references/maintenance/sources-and-compatibility.md)
- Design guidance — 本 Skill 提出的结构与判断标准,附有采用条件、依据和权衡
- Example contract — 仅在
samples/内定义的命令名称、JSON 格式、退出代码和目录结构
统一 help / doctor / setup / check / fix / verify / clean 等公开命令,以及“入口可以有多个,但实际处理逻辑只定义一次”的设计,均是本 Skill 独有的 Design guidance,并非 GNU Make、Cargo 或 Anthropic 官方规范的要求。
探索步骤
- 如果只需查阅(consult,即默认用法),请在下方映射表中找到与任务对应的类别,然后在该类别的
README.md中定位目标页面并 Read。不要运行外部程序 - 如果需要诊断、规划或验证现有结构,请在“使用模式”表中确认 consult 之外的所处阶段,并遵循相应
scripts/*.md中的步骤 - 安全限制务必通过 references/operations/safety-and-portability.md 确认
任务 → 类别映射
| 任务 | 类别 | 参考 README |
|---|---|---|
| 了解 Make 与 Cargo/xtask/Turborepo/CI 的职责划分、命令契约、是否采用 Make 及迁移的判断标准 | architecture | references/architecture/README.md |
查询 target / prerequisite / recipe、order-only prerequisite、变量展开(= := ?= +=)、自动变量,以及 Make 和 shell 中 $ 的区别 | fundamentals | references/fundamentals/README.md |
查询 pattern rule、include、条件分支,以及 recipe 和 shell(tab / .RECIPEPREFIX / .ONESHELL) | fundamentals | references/fundamentals/README.md |
查询 .PHONY、.DEFAULT_GOAL 等特殊目标、-j 并行与递归 make、-n/-q 诊断,以及 GNU/POSIX/BSD 兼容性 | execution | references/execution/README.md |
| 查询单一 crate / workspace / virtual workspace 的 profile、fmt/clippy/test/doc 的适用场景,以及是否采用 cargo xtask | rust | references/rust/README.md |
| 查询 pnpm workspace、package.json scripts、委托给 Turborepo 的方式,以及 Rust+Node 混合项目的职责边界 | node | references/node/README.md |
| 查询 Git hooks 与 CI 的共用命令契约、流水线定义与合并保护的区别,以及缓存和外部状态的边界 | quality | references/quality/README.md |
| 查询 consult/audit/plan/apply/verify 的安全边界、可重复执行的 setup、并行 worktree 隔离,以及 clean 的目标范围 | operations | references/operations/README.md |
| 查询来源台账、GNU Make 的常见失败模式和诊断步骤 | maintenance | references/maintenance/README.md |
| 查看可运行的示例(增量构建、Rust crate/workspace、Node、混合项目、CI 模板、应用计划) | samples | samples/README.md |
| 了解 Claude 使用的调查、计划验证、预览和验证脚本的运行方法 | scripts | scripts/README.md |
| 了解辅助脚本的回归测试、退出代码契约和 eval-cases | tests | tests/README.md |
使用模式
仅查阅不会修改目标文件,也不会自动运行外部程序。加载 Skill 本身并不代表已批准应用。
| 模式 | 内容 | 使用的 script |
|---|---|---|
| consult | 设计或审查期间查阅(默认) | 无。仅阅读 references / samples / scripts 中的文档 |
| audit | 对用户指定的目标进行静态诊断。不改写文件、不导入依赖、不执行 build | inspect-repo.mjs(必须指定 --root) |
| plan | 提出应用方案、变更目标和验证计划。不修改目标文件 | validate-plan.mjs、preview-sample.mjs(默认不写入) |
| apply | 仅应用用户另行批准的范围。编辑现有文件时使用常规编辑工具,而非 Skill 自有的补丁应用引擎 | 仅导入示例时使用 preview-sample.mjs --apply --plan <计划> --approve <planDigest>(仅当与已批准的计划文件一致时,才会写入明确列出的文件) |
| verify | 执行已批准的验证。将静态一致性检查与实际命令执行分开 | verify-layout.mjs、run-checks.mjs(默认 dry-run。只有在 --approve <planDigest> 与用户确认过的计划相符,且每项 check 均为 approved:true 时,才会执行 --execute) |
安全上の最小ルール
- 不審なリポジトリで
make -n/make -qを安全な静的解析の代わりに使わない(設定読込時のコード実行がありうる) .env等の秘密情報の値を表示・ログ出力・JSON へ混入させない- ツールの自動導入、sudo、hooks / CI の回避を行わない
- 環境不足・未実行・非該当(
BLOCKED/SKIPPED/NOT_APPLICABLE)をPASSに丸めない
詳細は references/operations/safety-and-portability.md を参照。
補助スクリプトのパス
scripts/bin/*.mjs は Skill 設置位置からの相対パスで解決する。導入形態(upstream skills/make/、.agents/skills/make/、.claude/skills/make/ の実体・symlink、グローバル導入)によって Skill 自身の絶対パスは変わるため、実行時は <skill-dir> をその時点の実際の Skill 設置先に置き換える。
node <skill-dir>/scripts/bin/inspect-repo.mjs --root /path/to/target-repo --json
対象 root は必ず --root で明示する。${CLAUDE_SKILL_DIR} のような置換は使わない(外部 shell に常に存在する環境変数ではない)。補助 CLI は Node.js 標準ライブラリのみで動作するが、これは Skill 側の依存であり、利用者プロジェクトに採用するサンプル(rust-crate 等)自体が Node.js を必要とするわけではない。
利用例
- 「make を参考に、この Rust crate の Makefile と検証コマンドの改善計画を作って」
- 「このリポジトリの Makefile を GNU Make の仕様に照らしてレビューして、
.PHONYの抜けがないか教えて」 - 「Rust + Node の混在リポジトリで、Make・Cargo・Turborepo・CI の責務分離が適切か静的に診断して」
関連スキルとの使い分け
- rust — Cargo・rustc・rustdoc 等 Rust 言語・ツールチェーン全体の API リファレンスを担当。
makeのreferences/rust/は Cargo 標準機能と xtask パターンの Make 文脈での使い分けのみを扱い、Rust 言語仕様は複製しない - turborepo — Turborepo 自体のタスクグラフ・キャッシュ・パイプライン定義を担当。
makeのreferences/node/は Turborepo への委譲境界のみを扱う - lefthook — Git hooks の設定・実装を担当。
makeのreferences/quality/は hooks と CI が同じコマンド契約を共有する設計指針のみを扱う
いずれもスキル名による探索を前提とし、単独インストール時に壊れる兄弟ディレクトリへの相対リンクは使わない。